[英]Getting DBPedia Infobox categories
我目前正在尋找一種通過SPARQL端點查詢DBPedia的Infobox Onyology數據庫的方法,以獲取類的列表,所選類的子類以及給定類的屬性。 據我所知,您要么需要知道您正在尋找的屬性,要么搜索特定的內容 - 我發現的所有示例似乎都基於您想要搜索特定內容的想法(比如某個高度以上的城市人口等),而我想建立一些可以有效“瀏覽”類別的東西。 例如,從此類層次結構圖上的“owl:Thing”的子類列表開始,向用戶顯示所選子類的子類列表。 似乎可以通過映射wiki瀏覽這樣的東西,但最好直接查詢SPARQL端點。
是否有一些簡單的SPARQL查詢會返回這些類的可用類和屬性?
SELECT ?subject WHERE {
?subject rdfs:subClassOf owl:Thing
}
這返回了owl的子類列表:Thing,如果我用其中一個子類替換owl:Thing,我得到它的子類列表,直到沒有子類,此時我可以選擇所有的資源由所選子類給出的類型。 不過,我仍然不太確定如何獲得子類共有的所有屬性。
更新2現在就越來越近了。 此查詢為我提供了所有屬性(dbpedia:property的子項),它們也是一個國家/地區,以及它們的標題:
SELECT DISTINCT ?prop ?title WHERE {
?country ?prop ?value.
?country a <http://dbpedia.org/ontology/Country>.
?prop rdf:type rdf:Property.
?prop rdfs:label ?title
}
這實際上是我真正要求的。 我現在要做的最后一件事是嘗試按照它們出現的頁數來排序(可能最常見的屬性是最感興趣的屬性)。
好的,所以我實際上已經或多或少地想出了如何做到這一點,所以我提交這個作為答案而不僅僅是編輯。 什么似乎給我正是我正在尋找的是從使用此查詢迭代類heirarchy開始:
SELECT ?class ?label WHERE {
?class rdfs:subClassOf owl:Thing.
?class rdfs:label ?label.
FILTER(lang(?label) = "en")
}
將所選結果送入查詢而不是貓頭鷹:每次都是。
一旦用戶選擇了他們想要的最低級別的類,要顯示屬性列表,按照它們出現的條目數的降序排列,我使用此查詢 :
SELECT ?prop ?title WHERE {
?country ?prop [].
?country a <http://dbpedia.org/ontology/Country>.
?prop rdf:type rdf:Property.
?prop rdfs:label ?title
} ORDER BY DESC(COUNT(DISTINCT ?country))
當然,如果你真的看看那些結果,那里有一些時髦的屬性,沒有非常具有描述性的標簽(“s”?什么?),但這至少是我首先要尋找的東西。
(1)查詢所有現有類:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?class
WHERE {
?s rdf:type ?class .
}
(2)查詢C類任何實例中使用的所有屬性:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?property
WHERE {
?s rdf:type <C> .
?s ?property ?o
}
這將獲得rdfs:domain
為SpaceMission
的所有屬性:
select ?property where {
?property rdfs:domain <http://dbpedia.org/ontology/SpaceMission>
}
這些屬性都接受SpaceMission
作為主題。
請注意,在RDF(S)中,不需要為每個屬性都有一個顯式的rdfs:domain
語句,因為屬性的使用可以隱含rdfs:domain
。 因此,您可能會發現此查詢將為您提供已使用SpaceMission
域定義的所有屬性的列表,但不會為您提供實際與SpaceMission
所有實例一起使用的所有屬性的列表。
很可能某些屬性實際上並未如此定義:
?p a rdf:Property .
但根據定義,中間位置的任何術語都是屬性。 所以你可能會得到更多結果:
SELECT ?prop ?title WHERE { ?country a <http://dbpedia.org/ontology/Country>. ?country ?prop [] . ?prop rdfs:label ?title . } ORDER BY DESC(COUNT(DISTINCT ?country))
(稍微重新排序,在開始時有選擇性可能會提高性能)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.