2012-01-29 12 views
6

Dire se voglio restituire il risultato "divertendomi" della tripla. Non so come spiegare lo spazio tra le parole. Di seguito c'è una query che ho provato ma non ha funzionato. Fatemi sapere se qualcuno può individuare ciò che faccio maleInterrogazione con Spar 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> }"; 

risposta

9

Risposta breve: non è possibile, almeno non direttamente.

Risposta leggermente più lunga: RDF utilizza i riferimenti URI RDF. Il linguaggio di query SPARQL, d'altra parte, utilizza gli IRI (la ragione è che RDF precede gli IRI e la nozione di riferimenti URI RDF è stata sviluppata in previsione di ciò che gli IRI avrebbero dovuto avere alla fine. Hanno quasi capito bene :)).

Sfortunatamente, vi è una discrepanza tra le definizioni di riferimenti URI RDF e IRI e si è appena raggiunto uno dei casi: mentre i riferimenti URI RDF consentono gli spazi bianchi, gli IRI no. La sintassi SPARQL non può far fronte ai riferimenti URI come quello nell'esempio. Date un'occhiata a this discussion per maggiori dettagli.

La migliore scommessa? Evitare l'uso di spazi nei riferimenti URI. Sostituiscili con caratteri di sottolineatura o semplicemente rimuovili.

Detto questo, c'è una soluzione per rendere il vostro lavoro query:

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

grande risposta probabilmente andando ad evitare gli spazi – Sam

2
  1. Non owl:sameAsowl:sameas. Nota capitale A.
  2. Non è possibile avere spazi negli IRI.
+0

grazie per i consigli – Sam