diff --git a/classes/Utils.php b/classes/Utils.php
index a5116f06df60042e0040171e6f30bb6c48ba400e..41c5f1058326b9baab11369a594663b5d99cb395 100644
--- a/classes/Utils.php
+++ b/classes/Utils.php
@@ -35,11 +35,23 @@ class Utils{
   	global $conf;
   	$ns = $conf['ns'];
   	$curie = $uri;
+  	
+  	$aux = $uri;
   	foreach($ns as $k => $v){
-  	  $curie = preg_replace("|^$v|", "$k:", $uri);
-  	  if($curie != $uri){
+  	  $aux = preg_replace("|^$v|", "", $uri);
+  	  if($aux != $uri){
+  	  	$uriSegments = explode("/", $aux);
+  	  	$lastSegment = array_pop($uriSegments);
+  	  	if(sizeof($uriSegments)>0){
+  	  	  $prefix = $k."_".(implode("_", $uriSegments));
+  	  	  //Adding "new" namespace
+  	  	  $conf['ns'][$prefix] = $v.implode("/", $uriSegments)."/";
+  	  	}else{
+  	  	  $prefix = $k;
+  	  	}
+  	  	$curie = $prefix.":".$lastSegment;
   	  	break;
-  	  }
+  	  }  
   	}
   	return $curie;
   }
@@ -52,8 +64,15 @@ class Utils{
   	if(preg_match('|^//|', $parts[1])){
   	  return $curie;
   	}  	
-  	if(sizeof($parts)>1 && isset($ns[$parts[0]])){
-  	  return $ns[$parts[0]].$parts[1];
+  	if(sizeof($parts)>1 ){
+  	  if(!isset($ns[$parts[0]])){
+  		$prefixSegments = explode("_", $parts[0]);
+  		$realPrefix = array_shift($prefixSegments);
+  		$conf['ns'][$parts[0]] = $ns[$realPrefix].join("/", $prefixSegments);
+  		return $ns[$realPrefix].join("/", $prefixSegments)."/".$parts[1];
+  	  }else{
+  	  	return $ns[$parts[0]].$parts[1];
+  	  }
   	}else{
   	  return $curie;
   	}
@@ -67,7 +86,7 @@ class Utils{
   	if(preg_match('|^//|', $parts[1])){
   	  return $curie;
   	}  	
-  	return array('ns' => $ns[$parts[0]], 'prefix' => $parts[0]);;
+  	return array('ns' => $ns[$parts[0]], 'prefix' => $parts[0]);
   }
   
   public static function getTemplate($uri){
@@ -468,10 +487,18 @@ class Utils{
   	  	}*/
   	  }else{
   	  	if(isset($value['uri']) && $value['uri'] == 1){
-  	  	  if($conf['mirror_external_uris']){
+  	  	  if(isset($conf['mirror_external_uris']) && $conf['mirror_external_uris'] != false){
   	  	  	$value['mirroredUri'] = $value['value'];
+  	  	  	
+  	  	  	if(is_bool($conf['mirror_external_uris'])){
+  	  	  	  $value['value'] = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $value['value']);
+  	  	  	}elseif(is_string($conf['mirror_external_uris'])){
+  	  	  	  $value['value'] = preg_replace("|^".$conf['mirror_external_uris']."|", $conf['basedir'], $value['value']);
+  	  	  	}else{
+  	  	  	  Utils::send500("Error in mirroring configuration");
+  	  	  	  exit(1);
+  	  	  	}
   	  	  }
-  	  	  $value['value'] = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $value['value']);
   	  	  $value['curie'] = Utils::uri2curie($value['value']);
   	  	  $array[$key] = $value;
   	  	}  	  	  	  	
diff --git a/classes/modules/serviceModule.php b/classes/modules/serviceModule.php
index a791cf233adc06c943404a109bbf867de90c66aa..261930b75af94eba44bbd3870ac512c32a6ba6b5 100644
--- a/classes/modules/serviceModule.php
+++ b/classes/modules/serviceModule.php
@@ -64,7 +64,7 @@ class ServiceModule extends abstractModule{
   	  $prefixHeader = array();
   	  
   	  for($i=0;$i<sizeof($params);$i++){
-  	  	if($conf['mirror_external_uris']){
+  	  	if($conf['mirror_external_uris'] != false){
   	  	  $altUri = Utils::curie2uri($params[$i]);
   	  	  $altUri = preg_replace("|^".$conf['basedir']."|", $conf['ns']['local'], $altUri);
   	  	  $params[$i] = Utils::uri2curie($altUri);
@@ -73,6 +73,8 @@ class ServiceModule extends abstractModule{
   	  
   	  $segmentConnector = "";
   	  for($i=0;$i<sizeof($params);$i++){  
+  	  	Utils::curie2uri($params[$i]);
+  	  	//echo $params[$i]." ".Utils::curie2uri($params[$i]);exit(0);
   	  	$auxPrefix = Utils::getPrefix($params[$i]);
   	  	if($auxPrefix['ns'] != NULL){
   	  	  $prefixHeader[] = $auxPrefix;
diff --git a/classes/modules/typeModule.php b/classes/modules/typeModule.php
index 02f6433cd5740c10b3835898e77291374cf83099..fd13cc9e2ec0b297edf4e9ac0dd63221bbb80b06 100644
--- a/classes/modules/typeModule.php
+++ b/classes/modules/typeModule.php
@@ -47,7 +47,7 @@ class TypeModule extends abstractModule{
   	}
   	
   	$uri = $res;
-  	if($conf['mirror_external_uris']){
+  	if($conf['mirror_external_uris'] != false){
   	  $localUri = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $res);
   	}
   	
diff --git a/classes/modules/uriModule.php b/classes/modules/uriModule.php
index 1bb02a68ec757ad892b9c33a64c9cf0591f0d37f..e9c222555154bec014f10ee19e16e5ab03e68b6c 100644
--- a/classes/modules/uriModule.php
+++ b/classes/modules/uriModule.php
@@ -67,7 +67,7 @@ class UriModule extends abstractModule{
   	}
   	
   	$uri = $res;
-  	if($conf['mirror_external_uris']){
+  	if($conf['mirror_external_uris'] != false){
   	  $localUri = preg_replace("|^".$conf['ns']['local']."|", $conf['basedir'], $res);
   	}
   	
diff --git a/index.php b/index.php
index 7bd8b7fc1fcb446a7347d0fa4b3a20fa89138cbe..e710d64fb061c4616cf6fcf3c9a8d55c16940696 100755
--- a/index.php
+++ b/index.php
@@ -59,9 +59,18 @@ if($uri == $conf['basedir']){
 }
 
 //Configure external URIs if necessary
-if($conf['mirror_external_uris']){
-  $uri = $conf['ns']['local'].$_GET['q'];
+if(isset($conf['mirror_external_uris']) && $conf['mirror_external_uris'] != false){
   $localUri = $conf['basedir'].$_GET['q'];
+  
+  if(is_bool($conf['mirror_external_uris'])){
+  	$uri = $conf['ns']['local'].$_GET['q'];
+  }elseif(is_string($conf['mirror_external_uris'])){
+  	$uri = $conf['mirror_external_uris'].$_GET['q'];
+  }else{
+  	Utils::send500("Error in mirroring configuration");
+  	exit(1);
+  }
+  
 }
 
 
diff --git a/install.sh b/install.sh
index 65619b531916770ace037327479e9035d10e0e1e..1c142215d16706d26998360ec2fe25c53d8ed8a0 100755
--- a/install.sh
+++ b/install.sh
@@ -53,7 +53,7 @@ while [ "$everything_ok" != "y" ]; do
   if [[ "$basedir" =~ ^"$ns" ]]; then
     external="false"
   else
-    external="true"
+    external=$ns
     extra="\$conf['ns']['base']   = '$basedir';"
   fi
   
@@ -94,7 +94,7 @@ LODSPEAKR_HOME=`pwd`/
 \$conf['home'] = '$LODSPEAKR_HOME';
 \$conf['basedir'] = '$basedir';
 \$conf['debug'] = false;
-\$conf['mirror_external_uris'] = $external;
+\$conf['mirror_external_uris'] = '$external';
 
 /*ATTENTION: By default this application is available to
  * be exported and copied (its configuration)
diff --git a/models/service.classes/html.queries/main.query b/models/service.classes/html.queries/main.query
index 1dd0704ec5e74ac232ef38d8fff359458e075247..0157430d87fd46e5665a7bfd17a72b9122102cbb 100644
--- a/models/service.classes/html.queries/main.query
+++ b/models/service.classes/html.queries/main.query
@@ -2,7 +2,11 @@
 PREFIX {{h.prefix}}: <{{h.ns}}>
 {%endfor%}
 SELECT DISTINCT ?resource WHERE {
-  {%if base.args.arg0 %}GRAPH <{{base.args.arg0}}>{%else%} GRAPH ?g {%endif%} {
-  	?x a ?resource .
+  {
+    {%if base.args.arg0 %}GRAPH <{{base.args.arg0}}>{%else%} GRAPH ?g {%endif%} {
+    	?x a ?resource .
+    }
+  }UNION{
+    ?x a ?resource .
   }
-}
+}order by ?resource
diff --git a/models/service.instances/html.queries/main.query b/models/service.instances/html.queries/main.query
index f50a15c6cd2f549779ca29478dfbe21bb6c6996a..a93cf3679adc9bede7577cb91870bc0cfdb7a600 100644
--- a/models/service.instances/html.queries/main.query
+++ b/models/service.instances/html.queries/main.query
@@ -2,7 +2,12 @@
 PREFIX {{h.prefix}}: <{{h.ns}}>
 {%endfor%}
 SELECT DISTINCT ?resource WHERE {
-  GRAPH ?g{
-    ?resource a {{lodspk.args.arg0}}
+  {
+    GRAPH ?g{
+      ?resource a {{lodspk.args.arg0}}
+    }
+  }UNION{
+      ?resource a {{lodspk.args.arg0}}
   }
-}
+}order by ?resource
+limit 1000
diff --git a/models/service.namedGraphs/html.queries/main.query b/models/service.namedGraphs/html.queries/main.query
index 3c0f060c416a4a36a8ecc8d21ad23581ab05f660..c0ec090ec217ee8faced00975ed230a19e57aa43 100644
--- a/models/service.namedGraphs/html.queries/main.query
+++ b/models/service.namedGraphs/html.queries/main.query
@@ -3,3 +3,4 @@ SELECT DISTINCT ?g WHERE {
   	[] ?p ?resource .
   }
 }
+ order by ?g