SPARQL - Select 其中非 uri - 过滤非 uri

SPARQL - Select where non uri - Filtred non uri

我是 SPARQL / 关联数据的初学者。我对查询 DBpedia 有疑问。我了解如何 select 过滤条件为 URI 的数据。现在,当关键因素不是资源时,我需要查询数据。是字符串。

我想要select Joan Jett 用过的乐器。 我正在使用这个端点:http://dbpedia.org/snorq

查询: - 有错误

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

另一个版本: - 没有数据

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

我正在尝试自己做。但是,如果有人帮助我,我会很奇怪。

第一个版本

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

第二个版本

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

注意。 dbp:instrumentdbo:instrument 不同。

如果你想匹配一个 RDF 文字,你必须遵循它 definition,即基本上(在 RDF 1.0 中)

"LEXICAL_FORM"^^<DATATYPE_URI>

分别。如果存在语言标签

"LEXICAL_FORM"@LANGUAGE_TAG

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