Rdf Can';无法使此SPARQL查询正常工作

Rdf Can';无法使此SPARQL查询正常工作,rdf,sparql,semantic-web,dbpedia,Rdf,Sparql,Semantic Web,Dbpedia,好的,我正在学习使用SPARQL从dbpedia.org查询数据,我正在使用dbpedia运行我的查询。我试图通过三个字段搜索相同的字符串来获得音乐艺术家列表,如下所示: SELECT ?subject ?artistRdfsLabel ?artistFoafName ?artistDbpedia2Name WHERE { ?subject rdf:type <http://dbpedia.org/ontology/MusicalAr

好的,我正在学习使用SPARQL从dbpedia.org查询数据,我正在使用dbpedia运行我的查询。我试图通过三个字段搜索相同的字符串来获得音乐艺术家列表,如下所示:

SELECT ?subject 
       ?artistRdfsLabel 
       ?artistFoafName 
       ?artistDbpedia2Name
WHERE {
    ?subject rdf:type <http://dbpedia.org/ontology/MusicalArtist> .
    OPTIONAL { ?subject rdfs:label ?artistRdfsLabel . }
    OPTIONAL { ?subject foaf:name ?artistFoafName . }
    OPTIONAL { ?subject dbpedia2:name ?artistDbpedia2Name . }
    FILTER ( str(?artistRdfsLabel) = "Stevie Nicks" || 
             str(?artistFoafName) = "Stevie Nicks" || 
             str(?artistDbpedia2Name) = "Stevie Nicks" )
}
LIMIT 10
SELECT?主题
?艺人标签
?艺人姓名
?ArtistDB2Name
在哪里{
?主题rdf:类型。
可选{?主题rdfs:label?artistRdfsLabel.}
可选{?主题foaf:name?artistFoafName.}
可选{?主题dbpedia2:name?artistDbpedia2Name.}
过滤器(str(?artistRdfsLabel)=“Stevie Nicks”|
str(?artistFoafName)=“Stevie Nicks”|
str(?artistDbpedia2Name)=“Stevie Nicks”)
}
限制10
这是因为“stevienicks”包含所有三个字段(rdfs:label、foaf:name、dbpedia2:name)。但是,当我尝试由另一位没有三种模式的音乐艺术家(例如“depche模式”)进行查询时,我没有得到任何结果

我尝试过各种方法,比如绑定(COALESCE(?field,…)AS?artistName)以按?artistName进行过滤,我也尝试过联合,但似乎没有任何效果。有人能指出我SPARQL方式的错误吗?:)

谢谢! Jason

好的,我不知道使用rdf:type的无法选择“depche模式”。这似乎有效:

SELECT ?subject 
       ?artistName 
WHERE {
  { 
    ?subject rdf:type <http://dbpedia.org/ontology/MusicalArtist> .
    ?subject rdfs:label ?artistName .
    FILTER ( str(?artistName) = "Depeche Mode" )
  } 
  UNION 
  {
    ?subject rdf:type <http://dbpedia.org/ontology/Band> .
    ?subject rdfs:label ?artistName .
    FILTER ( str(?artistName) = "Depeche Mode" )
  }
}
SELECT?主题
?艺人姓名
在哪里{
{ 
?主题rdf:类型。
?主题rdfs:标签?艺术家姓名。
过滤器(str(?artistName)=“依赖模式”)
} 
联合
{
?主题rdf:类型。
?主题rdfs:标签?艺术家姓名。
过滤器(str(?artistName)=“依赖模式”)
}
}