首页 > 解决方案 > DBpedia 中等效的 Wikidata 查询

问题描述

我正在尝试将我的 SPARQL 查询从 Wikidata 转换为 DBpedia(仅用于教育目的),但它不起作用。有人可以帮助我并告诉我我做错了什么吗?谢谢!

http://query.wikidata.org

SELECT ?musician ?musicianLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
    ?musician wdt:P31 wd:Q5 .
    ?musician wdt:P136 ?genre .
    FILTER(?genre IN (wd:Q383982, wd:Q206159))
}
GROUP BY ?musician ?musicianLabel
ORDER BY ASC(?musicianLabel)

在职的

...并在http://lod.openlinksw.com/sparql

SELECT ?musician WHERE {
    ?musician a <http://dbpedia.org/resource/Person> .
    ?musician <http://dbpedia.org/resource/Genre> <http://dbpedia.org/resource/Genre> .
    FILTER(<http://dbpedia.org/resource/Genre> IN (<http://dbpedia.org/resource/Psychedelic_Pop>, <http://dbpedia.org/resource/Psychedelic_Rock>))
}
GROUP BY ?musician
ORDER BY ASC(?musician)

不工作

标签: sparqldbpediawikidata-query-service

解决方案


我不确定你为什么从改编的查询中删除标签......试试这个结果

SELECT DISTINCT ?musician ?musicianlabel 
WHERE
 { ?musician a <http://dbpedia.org/ontology/Person> . 
   ?musician <http://dbpedia.org/ontology/genre> ?genre .
   OPTIONAL { ?musician <http://www.w3.org/2000/01/rdf-schema#label> ?musicianlabel . 
              FILTER ( LANGMATCHES ( LANG ( ?musicianlabel ), 'en' ) ) 
            }
   FILTER (?genre IN ( <http://dbpedia.org/resource/Psychedelic_pop> , 
                       <http://dbpedia.org/resource/Psychedelic_rock>
                     )
          )
 } 
ORDER BY ASC ( ?musician )

推荐阅读