0
私たちはdbpediaからProtégéのオントロジーにクラスをリンクしようとしているので、sparqlに関する質問があります。私たちの保護者はペットのことです。以下のクエリを使用して、dbpediaからすべての犬種を取得し、それらをProtégéクラスの 'Dog'クラスのサブクラスとして実装しようとしています。sparqlを使ってオントロジーの特定のクラスにクラスを追加する方法は?
このクエリでは、すべての犬の品種が通常のクラスのオントロジーになりますが、それをクラス 'Dog'のサブクラスにしたいとします。
ありがとうございます!
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX umbelrc: <http://umbel.org/umbel/rc/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX ex: <http://data.kingcounty.cov/resource/yaai-7rfk/>
PREFIX dbc: <http://dbpedia.org/resource/Category:>
CONSTRUCT {
?x a owl:Class .
?x owl:equivalentClass [
rdf:type owl:Restriction ;
owl:onProperty ex:animal_type ;
owl:hasValue ?xls ;
] .
} WHERE {
SELECT ?x ?xls WHERE {
?x a dbc:Dog_breeds .
?x rdfs:label ?xl .
FILTER(lang(?xl) = 'en')
BIND(str(?xl) as ?xls)
}
}
もしそれらが何かのサブクラスである必要があれば、** rdfs:subClassOf **トリプルを追加しないでください。 –
@JoshuaTaylorそうです、それはもっと明白で正式な方法です。しかし、ここではDBpediaカテゴリ 'dbc:Dog_breeds'が使われています。これもOKでなければなりません。唯一考慮すべきことは、' dct:subject'を 'rdf:type'ではなく' predicate'として使用しなければならないということです。さらに、これは通常、それらがクラスではなくDBpediaのインスタンスであることを意味しますが、それはそれについて考えるもう一つのポイントです。 – AKSW