0

I am beginier in SPARQL / Linked Data. I have question about querying DBpedia. I understand how to select data where filtering condition is URI. Now, I need to query about data, when key factor is not a resource. It is string.

I want select instuments used by Joan Jett. I am using this endpoint: http://dbpedia.org/snorq

Query: - with error

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

Another version: - with no data

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

I am trying to do it by myself. However, If someone help me with that, I will be wonder.

Cezary
  • 5
  • 2

2 Answers2

1

If you want to match an RDF literal, you have to follow it's definition, i.e. basically (in RDF 1.0)

"LEXICAL_FORM"^^<DATATYPE_URI>

resp. if a language tag exists

"LEXICAL_FORM"@LANGUAGE_TAG

SELECT distinct ?instrument WHERE 
{
?person a dbo:MusicalArtist ;
        dbp:instrument ?instrument ;
        dbo:alias "Joan Jett"@en .
}
UninformedUser
  • 8,397
  • 1
  • 14
  • 23
0

First version

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

Second 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 is not the same as dbo:instrument.

Stanislav Kralin
  • 11,070
  • 4
  • 35
  • 58