2012-01-29 18 views
6

Di si quiero devolver el resultado "divirtiéndome" del triple. No sé cómo explicar el espacio entre las palabras. Debajo hay una consulta que probé pero no funcionó. Avíseme si alguien puede detectar lo que estoy haciendo malConsultar con espacios Sparql

<rdf:Description rdf:about="http://website.com/urls/playing games"> 
    <owl:sameAs rdf:resource="http://website.com/urls/having fun"/> 
</rdf:Description> 

"PREFIX owl: <http://www.w3.org/2002/07/owl#> SELECT * WHERE { ?y owl:sameAs+ <http://website.com/urls/playing fun> }"; 

Respuesta

9

Respuesta corta: No puede, al menos no directamente.

Respuesta un poco más larga: RDF usa referencias RDF URI. El lenguaje de consulta SPARQL, por otro lado, usa IRI (la razón es que RDF es anterior a los IRI y la noción de referencias de RDF URI se desarrolló en anticipación de cómo se espera que se vean los IRI. Casi lo hacen bien :)).

Desafortunadamente, hay una discrepancia entre las definiciones de referencias de URI de RDF y IRI, y acaba de golpear uno de los casos: mientras que las referencias de RDF URI permiten espacios en blanco, los IRI no. La sintaxis de SPARQL no puede hacer frente a las referencias de URI como la de su ejemplo. Eche un vistazo al this discussion para más detalles.

¿Tu mejor apuesta? Evite usar espacios en referencias URI. Reemplázalos con guiones bajos o simplemente quítelos.

dicho todo esto, hay una solución para hacer su trabajo de consulta:

PREFIX owl: <http://www.w3.org/2002/07/owl#> 
SELECT ?y 
WHERE { 
    ?y owl:sameAs+ ?x 
    FILTER (str(?x) = "http://website.com/urls/playing fun") 
} 
+0

gran respuesta probablemente va a evitar los espacios – Sam

2
  1. Es owl:sameAs no owl:sameas. Nota capital A.
  2. No puede haber espacios en IRI.
+0

aplausos gracias por los consejos – Sam