我试图通过SPARQL在DBPedia.org上运行查询。基本上,这就是我想要做的事情:
WHERE
和
我自己尝试过这样做,但完全没有取得任何成功的结果。
任何帮助将不胜感激 - 谢谢!
编辑: 以下是我一直在处理的查询:
SELECT ?s
WHERE {
{
?s <http://xmlns.com/foaf/0.1/name> "Google Inc." .
} UNION {
?s <http://dbpedia.org/property/companyName> "Google Inc." .
} UNION {
?s <http://dbpedia.org/property/name> "Google Inc." .
}
{
?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Company> .
} UNION {
?s <http://dbpedia.org/ontology/type> <http://dbpedia.org/resource/Public_company> .
}
}
答案 0 :(得分:3)
您几乎拥有它,唯一的问题是DBPedia中的属性值使用语言标记,并且您的查询查找具有普通文字值的名称。此查询适用于我:
SELECT DISTINCT ?s
WHERE {
{
?s <http://xmlns.com/foaf/0.1/name> "Google Inc."@en .
} UNION {
?s <http://dbpedia.org/property/companyName> "Google Inc."@en .
} UNION {
?s <http://dbpedia.org/property/name> "Google Inc."@en .
}
{
?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://dbpedia.org/ontology/Company> .
} UNION {
?s <http://dbpedia.org/ontology/type> <http://dbpedia.org/resource/Public_company> .
}
}
请注意,我添加了DISTINCT
以消除资源具有多个值时出现的重复答案,例如foaf:name
和dbpprop:companyName
。
答案 1 :(得分:1)
使用值可以更清晰地编写。您可以使用值指定可能标识名称的属性。此外,Google没有 dbpprop:type 的资源值(至少不再存在);最好坚持使用 rdf:type 和 dbpedia-owl:Company 。这意味着您的查询可以变为:
select distinct ?s where {
values ?name { foaf:name dbpprop:companyName dbpprop:name }
?s a dbpedia-owl:Company ;
?name "Google Inc."@en .
}