2017-10-11 119 views
1

当我用下面的SPARQL查询我得到的DBpedia中类国家的所有属性:如何查询OWL的所有属性:使用SPARQL的dbpedia的事情?

select ?range ?domain ?prop ?label 
Where{ 
    ?class rdfs:subClassOf{0,1} ?domain. 
    ?prop rdfs:domain ?domain. 
    ?prop rdfs:range ?range. 
    ?prop rdfs:label ?label. 
    FILTER(lang(?label) = 'en') 
    FILTER(?class = <http://dbpedia.org/ontology/Country>) 
} 

当我试着使用“东西”或“OWL:事”做这做“一件事”或任何等价而不是国家,我得到一个空的结果。

我想通过DBpedia中的猫头鹰的本体论:事情,所以我想要检索的http://mappings.dbpedia.org/server/ontology/classes/owl%3AThing所有属性(包括labela和范围)。

有谁知道我该如何做到这一点?

回答

1

没有在DBpedia中属性与域owl:Thing

select * { 
    ?prop rdfs:domain owl:Thing 
} 

这样做的原因可能是,如果没有明确的域给出owl:Thing是微不足道的域。如果您查看您引用列表中的特定属性,您也可以查看此内容,例如dbo:abbreviation

解决方法查询:

SELECT ?range (owl:Thing as ?domain) ?prop ?label { 
VALUES ?type {owl:DatatypeProperty owl:ObjectProperty} 
?prop a ?type 
OPTIONAL {?prop rdfs:range ?range } 
?prop rdfs:label ?label. 
FILTER(langmatches(lang(?label), 'en')) 
FILTER NOT EXISTS {?prop rdfs:domain ?domain} 
} 
+0

(冲着OP,不回答者:)另外,还要注意的是猫头鹰:事情** **是每OWL属性的域。在OWL中,“p rdfs:domain C”表示从一个语句“p(x,y)”意味着“x rdf:type C”。当C是猫头鹰:事情,这是“x rdf:类型猫头鹰:事情”,它总是*真。这意味着对于* any *属性p,“p(x,y)意味着rdf:type(x,owl:Thing)”为真,所以owl:Thing是每个属性的* a *域。 –