2016-10-26 8 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'가 아닌'pred : dct : subject'를 사용해야한다는 점만 고려해야합니다. 또한, 이것들은 보통 클래스가 아닌 DBpedia의 인스턴스이지만 그 점도 고려해야 할 또 다른 포인트입니다. – AKSW

답변

1

자원은 재산 dct:subject하지 rdf:type (거북 일명 a)에 의해 DBpedia 범주에 연결되어 있습니다. 즉, 작동해야

?x dct:subject dbc:Dog_breeds . 

?x a dbc:Dog_breeds . 

에서 (실제로 이후에 발생할 수있는 모듈로 다른 문제를) 트리플 패턴을 변경할 것을 의미한다.