2014-10-07 2 views
1

두 개의 온톨로지가있는 Jena를로드합니다. 둘 다 Person 클래스가 정의되어 있습니다. 두 사람 모두 존이라는 인물이 있습니다. 그들은 "같은"요한이 아닙니다. 다른 사람, 다른 접두사, 다른 IRI. 원래의 온톨로지를 변경하지 않고도 동일한 시스템을 사용할 수 있습니다 (매장에 트리플 추가). rdfs : subClassOf 내장?온톨로지 간의 Sparql 쿼리

+2

질문 SPARQL에 대한 요청의 제목을하지만, 문제는 OWL에 대해 것 같다 또는 RDFS. OWL에서 john1 owl : sameAs john2라고 말할 수 있습니다. SPARQL 쿼리에서 이들을 "동급"으로 처리하려면 더 많은 컨텍스트를 제공해야합니다. 예를 들어, owl : sameAs 트리플을 추가 한 다음 owl : sameAs를 포함하는 일부 속성 경로를 사용자가 사용할 수 있으므로 john1과 john2를 같은 종류로 취급 할 수 있습니다. –

+1

연결할 데이터의 예를 추가 할 수 있습니까? 거기에 일치시킬 수있는 레이블이나 공통 정보가 있습니까? 이렇게하면 @JoshuaTaylor가 제안한 것을 수행하는 데 도움이되며 문제를 해결하는 가장 좋은 방법입니다. – magnudae

답변

0

설명에서 언급했듯이 한 가지 해결책은 owl : sameAs를 통해 자원을 동등한 것으로 정의하고 추론자를 실행하는 것입니다. 이렇게하면 각각에 대해 적절한 속성 조합이 정의됩니다. 즉, 각 리소스는 동일한 속성과 값을 갖습니다. 이 구성되는 트리플의 집합을 반환

CONSTRUCT { 
    <person1> ?p2 ?o2 
    <person2> ?p1 ?o1 . 
} 
WHERE { 
    <person1> ?p1 ?o1 . 
    <person2> ?p2 ?o2 . 
} 

, 즉 할 자들을 :

추론을 실행하는 것은 당신이 당신의 데이터를 삽입하기 위해 해당 SPARQL을 실행할 수 있습니다 무엇을 찾고 있는지없는 경우

이미 존재하지 않으므로 OWL 추론자가하는 노조와 동일한 노조를 제공합니다.

당신은 단지 다음, 데이터로드에서이 하나를 수행해야하는 경우 단순히 동일한 쿼리 패턴을 사용하여 해당 데이터를 삽입 :

INSERT { 
    GRAPH <graph-uri> { 
     <person1> ?p2 ?o2 
     <person2> ?p1 ?o1 . 
    } 
} 
WHERE { 
    <person1> ?p1 ?o1 . 
    <person2> ?p2 ?o2 . 
}