从DBpedia使用SPARQL获取属性名

从DBpedia使用SPARQL获取属性名,sparql,owl,dbpedia,Sparql,Owl,Dbpedia,我有一个获取一些对象和属性的查询。 比如说 PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> SELECT DISTINCT * { ?company a <http://dbpedia.org/ontology/Company> . OPTIONAL { ?company <ht

我有一个获取一些对象和属性的查询。 比如说

PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs:<http://www.w3.org/2000/01/rdf-schema#> 
SELECT DISTINCT * {
?company a <http://dbpedia.org/ontology/Company> . 
OPTIONAL { 
?company <http://dbpedia.org/ontology/industry> ?industry . 
}
OPTIONAL { 
?company <http://dbpedia.org/ontology/revenue> ?revenue_ . 
}
OPTIONAL { 
?company <http://dbpedia.org/ontology/homepage> ?homepage_ . 
}
OPTIONAL { 
?company <http://dbpedia.org/ontology/industry> ?industry_ . 
}
OPTIONAL { 
?company <http://dbpedia.org/ontology/location> ?location_ . 
}
}LIMIT 200

如何创建查询以获取属性名称?

听起来您只是想获取其中一些值的rdfs:label。您可以通过遵循属性,然后使用属性路径rdfs:label来实现这一点。您可能还希望根据标签的语言进行筛选。查询的另一个问题是主页属性实际上应该dbp:property,而不是dbo:property。完成此操作后,您将得到以下查询:

前缀rdf:
前缀rdfs:
选择不同的*{
?a公司。
可选{
?公司/rdfs:标签?行业。
过滤语言匹配(语言(?行业),“en”)
}
可选{
?公司?收入。
}
可选{
公司主页。
}
可选{
?公司/rdfs:标签?行业。
过滤语言匹配(lang(?industry_),“en”)
}
可选{
?公司/rdfs:标签?位置。
筛选器语言匹配(语言(?位置_),“en”)
}
}限制200

据我从您的示例中了解,您想要的是值(三元组的对象)的“名称”,而不是属性。如果我理解正确,你可以通过
/rdfs:label
获得它们,但是如果有些没有标签,你会在结果中错过它们。谢谢@IvoVelitchkov,这正是我想要的。如果你把它作为一个答案发表,我可以投票表决,如果没有人发表更好的答案,我可以接受它。
company         industry         revenue         homepage         location
Argonon         Digital media    5.0E7                            United Kingdom