2017-05-02 1 views
0

Je suis débutant dans SPARQL/Linked Data. J'ai une question sur l'interrogation de DBpedia. Je comprends comment sélectionner les données où la condition de filtrage est URI. Maintenant, je dois interroger sur les données, lorsque le facteur clé n'est pas une ressource. C'est une chaîne.SPARQL - Sélectionnez où non uri - Filtred non uri

Je veux des instruments choisis utilisés par Joan Jett. J'utilise ce critère d'évaluation: http://dbpedia.org/snorq

Requête: - avec l'erreur

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

Une autre version: - sans données

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

Je suis en train de le faire par moi-même . Cependant, si quelqu'un m'aide avec ça, je serai émerveillé.

Répondre

0

Première version

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

Deuxième 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 n'est pas la même que dbo:instrument.

+0

Alors, j'étais proche. Je vous remercie. – Cezary

1

Si vous voulez faire correspondre un RDF littéral, vous devez suivre est definition, à savoir essentiellement (en RDF 1,0)

"LEXICAL_FORM"^^<DATATYPE_URI>

resp. si une étiquette de langue existe

"LEXICAL_FORM"@LANGUAGE_TAG

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

Merci encore. – Cezary