2016-10-26 3 views
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) 
     } 
    } 
+2

もしそれらが何かのサブクラスである必要があれば、** rdfs:subClassOf **トリプルを追加しないでください。 –

+0

@JoshuaTaylorそうです、それはもっと明白で正式な方法です。しかし、ここではDBpediaカテゴリ 'dbc:Dog_breeds'が使われています。これもOKでなければなりません。唯一考慮すべきことは、' dct:subject'を 'rdf:type'ではなく' predicate'として使用しなければならないということです。さらに、これは通常、それらがクラスではなくDBpediaのインスタンスであることを意味しますが、それはそれについて考えるもう一つのポイントです。 – AKSW

答えて

1

リソースは、プロパティdct:subjectなくrdf:type(カメで別名a)によってDBpediaのカテゴリに接続されています。その手段、

?x dct:subject dbc:Dog_breeds . 

?x a dbc:Dog_breeds . 

からのトリプルパターンを変更するには、(その後、実際に発生する可能性のある剰余その他の問題を)動作するはずです。

関連する問題