2017-10-11 114 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 *域。 –