使用DBpedia中的SPARQL获取属性名称

时间:2016-06-21 09:50:23

标签: 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 <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

例如,我得到了一些结果 SPARQL Result table

但我真正想要的是属性的简单字符串。像

这样的东西
company         industry         revenue         homepage         location
Argonon         Digital media    5.0E7                            United Kingdom

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

1 个答案:

答案 0 :(得分:2)

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

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>/rdfs:label ?industry . 
filter langMatches(lang(?industry),"en")
}
OPTIONAL { 
?company <http://dbpedia.org/ontology/revenue> ?revenue_ . 
}
OPTIONAL { 
?company <http://dbpedia.org/property/homepage> ?homepage_ . 
}
OPTIONAL { 
?company <http://dbpedia.org/ontology/industry>/rdfs:label ?industry_ . 
filter langMatches(lang(?industry_),"en")
}
OPTIONAL { 
?company <http://dbpedia.org/ontology/location>/rdfs:label ?location_ . 
filter langMatches(lang(?location_),"en")
}
}LIMIT 200

SPARQL results