此查询的正确SPARQL版本是什么?
我正试图通过SPARQL在DBPedia.org上运行一个查询。基本上,我想做的是:此查询的正确SPARQL版本是什么?,sparql,dbpedia,Sparql,Dbpedia,我正试图通过SPARQL在DBPedia.org上运行一个查询。基本上,我想做的是: 获取DBPedia资源链接的列表 其中 姓名(http://xmlns.com/foaf/0.1/name)等于参数1 或dbpprop:companyName(http://dbpedia.org/property/companyName)等于参数1 或dbpprop:name(http://dbpedia.org/property/name)等于参数1 和 rdf:类型(http://www.w3
- 获取DBPedia资源链接的列表
- 姓名(http://xmlns.com/foaf/0.1/name)等于参数1
- 或dbpprop:companyName(http://dbpedia.org/property/companyName)等于参数1
- 或dbpprop:name(http://dbpedia.org/property/name)等于参数1
- rdf:类型(http://www.w3.org/1999/02/22-rdf-syntax-ns#type)等于参数2
- 或dbpediaowl:type(http://dbpedia.org/ontology/type)等于参数2
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> .
}
}
SELECT?s
在哪里{
{
“谷歌公司”。
}联合{
“谷歌公司”。
}联合{
“谷歌公司”。
}
{
s
}联合{
s
}
}
您几乎已经拥有了它,唯一的问题是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> .
}
}
选择不同的
在哪里{
{
?s“谷歌公司”@en。
}联合{
?s“谷歌公司”@en。
}联合{
?s“谷歌公司”@en。
}
{
s
}联合{
s
}
}
请注意,我添加了一个
DISTINCT
,以消除当资源具有多个值时出现的重复答案,例如,对于foaf:name
和dbpprop:companyName
,使用值可以更清晰地编写此答案。您可以使用值指定可能标识名称的属性。此外,没有dbpprop:type的资源值(至少不再有);最好坚持使用rdf:type和dbpedia-owl:Company。这意味着您的查询可以变成:
选择不同的位置{
值?名称{foaf:name dbpprop:companyName dbpprop:name}
?是一家数据库猫头鹰公司;
?名称“谷歌公司”@en。
}
你能发布你尝试过的查询吗?嗨,亚历克斯,我发布了一个我一直在处理的查询。