2011-04-28 22 views
6

Estoy tratando de consultar los datos RDF de linkedgeodata.org para los estados de un país. En RDF se representa como tal:SPARQL Query con dos puntos en el predicado

<http://linkedgeodata.org/triplify/node1055351027> <http://linkedgeodata.org/property/is_in%3Acountry> "LT" . 

Como se puede notar, el predicado contiene un colon escapado, por lo que "% 3A" en lugar de ":" yo no era capaz de encontrar una consulta SPARQL adecuado para este , estos son algunos de mis intentos

?node lgdp:is_in "LT". 
?node lgdp:is_in:country "LT". 
?node lgdp:is_in%3Acountry "LT". 
?node lgdp:is_in\u003Acountry "LT". 
?node lgdp:is_in"\u003A"country "LT". 

estoy utilizando la versión de código abierto del virtuoso como mi triple de la tienda, esta es la ErrorMessage recibo con todos excepto la primera forma:

Virtuoso 37000 Error SP030: SPARQL compiler, line 0: Invalid character in SPARQL expression at '\' 

SPARQL query: 
define sql:big-data-const 0 
#output-format:text/html 
define input:default-graph-uri PREFIX lgdo: 
PREFIX lgdp: 
PREFIX lgd: 
PREFIX pos: 
PREFIX rdf: 

SELECT ?node, ?label 
Where { 
?node a lgdo:State . 
?node lgdp:is_in\u003Acountry "LT". 
?node rdfs:label ?label . 
} 

Respuesta

7

Los caracteres codificados con % no están permitidos cuando se usan espacios de nombres, en este caso tendrá que usar el predicado completo directamente (sin el espacio de nombres). La siguiente consulta funciona:

Prefix lgdo:<http://linkedgeodata.org/ontology/> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?node, ?label 
Where { 
?node a lgdo:State . 
?node <http://linkedgeodata.org/property/is_in%3Acountry> "LT". 
?node rdfs:label ?label 
} 

ver los resultados here.

+2

Como Manuel dice que hay algunos URI que simplemente no puede comprimir en notación de estilo QName y para estos siempre tendrá que usar URI completos. Lo ideal es que las personas que crean datos eviten crear URI que tendrán este problema – RobV