簡體   English   中英

SPARQL DBpedia過濾掉特定結果

[英]SPARQL DBpedia filter out specific results

我正在做一小部分,我會收到所有類型的資源。 關鍵是:我不想擁有所有類型,只有“ http://dbpedia.org/ontology ”類型。 如何在SPARQL查詢中過濾它們? 只要我只收到本體,我就不在乎。

在此查詢中,我僅需要dbpedia-Ontologies“國家/地區”,“位置”,“ PopulatedPlace”和“地方”。

SPARQL端點: http : //de.dbpedia.org/sparql

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?type WHERE {
?i rdfs:label "Deutschland"@de ; a ?type .
}

我設置了一個FILTER器,用於過濾本體。 但這不是解決方案,因為它是靜態的,僅適用於此示例。 它也重復。 但這是一個小問題。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?type WHERE {
?i rdfs:label "Deutschland"@de ; a ?type .
FILTER (?type = <http://dbpedia.org/ontology/Country> ||
?type = <http://dbpedia.org/ontology/PopulatedPlace> ||
?type = <http://dbpedia.org/ontology/Place> ||
?type = <http://dbpedia.org/ontology/Location>)
}

需要一些建議或幫助。 提前謝謝。

好吧,我以為我不應該問這個,但是這花了我一些時間才能意識到...當字符串以相同字母開頭時,有一個過濾功能...

 strstarts

解。 希望我至少可以幫助某人。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?type WHERE {
?i rdfs:label "Deutschland"@de ; a ?type .
FILTER (strstarts(str(?type), "http://dbpedia.org/ontology/"))
}

好吧,您所做的很好,但可能不是正確的方法。 您正在尋找的被稱為貓頭鷹類。 因此,您只需要檢查要查找的類型是否為owl:Class

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
SELECT ?type WHERE {
?i rdfs:label "Deutschland"@de ; a ?type .
?type a owl:Class .
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM