2017-05-02 9 views
0

Ich bin in SPARQL/Linked Data. Ich habe eine Frage zum Abfragen von DBpedia. Ich verstehe, wie man Daten auswählt, wo Filterbedingung URI ist. Jetzt muss ich nach Daten fragen, wenn der Schlüsselfaktor keine Ressource ist. Es ist eine Zeichenfolge.SPARQL - Wählen Sie, wo nicht uri - Filtred non uri

Ich möchte ausgewählte Instrumente von Joan Jett verwendet werden. Ich bin mit diesem Endpunkt: http://dbpedia.org/snorq

Abfrage: - mit Fehler

SELECT ?instrument WHERE 
{ 
?person a dbo:MusicalArtist . 
?person dbp:instrument ?instrument . 
?person dbo:alias : 'Joan_Jett'. 
} 

Eine andere Version: - ohne Daten

SELECT distinct ?instrument WHERE 
{ 
?person a dbo:MusicalArtist . 
?person dbp:instrument ?instrument . 
?person dbo:alias ?alias. 
FILTER regex(str(?alias), "Joan_Jett") . 
} 

Ich versuche, es selbst zu tun . Wenn mir jedoch jemand dabei hilft, werde ich mich wundern.

Antwort

0

Erste Version

SELECT ?instrument WHERE 
{ 
?person a dbo:MusicalArtist . 
?person dbp:instrument ?instrument . 
?person dbo:alias "Joan Jett"@en. 
} 

Zweite Version

SELECT distinct ?instrument WHERE 
{ 
?person a dbo:MusicalArtist . 
?person dbo:instrument ?instrument . 
?person dbo:alias ?alias. 
FILTER regex(str(?alias), "Joan Jett") . 
} 

NB. dbp:instrument ist nicht dasselbe wie dbo:instrument.

+0

Also, ich war in der Nähe. Vielen Dank. – Cezary

1

Wenn Sie ein RDF wörtlichen übereinstimmen soll, müssen Sie folgen es ist definition, das heißt im Grunde genommen (in RDF 1,0)

"LEXICAL_FORM"^^<DATATYPE_URI>

resp. wenn ein Sprach-Tag vorhanden

"LEXICAL_FORM"@LANGUAGE_TAG

SELECT distinct ?instrument WHERE 
{ 
?person a dbo:MusicalArtist ; 
     dbp:instrument ?instrument ; 
     dbo:alias "Joan Jett"@en . 
} 
+0

Nochmals vielen Dank. – Cezary