2015-02-03 1 views
1

제 질문은 슈퍼 클래스 상속에 관한 것입니다. 내 이해에 따르면 클래스 B에 속하는 인스턴스가있는 경우 클래스 B의 상위 클래스 인 클래스 A도 이러한 인스턴스를 갖게됩니다. 예를 들어, Car라는 수퍼 클래스와 Sedan 및 SUV라는 두 개의 하위 클래스 클래스가 있다고 가정합니다. 세단과 SUV 클래스의 인스턴스도 클래스 클래스의 인스턴스입니다. 맞습니까? 그렇다면 클래스 카의 모든 인스턴스를 나에게 줄 때 내 sparql 쿼리의 반환을 볼 수 없습니다. 내가 여기서 아무것도 놓치고 있니?온톨로지 - 수퍼 클래스가 서브 클래스의 인스턴스를 가져 옵니까?

Topbraid 편집기를 사용하고 있습니다.

+0

다형성으로 말하자면, 세단 형 자동차와 SUV 형은 자동차 유형이지만 자동차 유형은 아닙니다. –

답변

3

실제로 이것은 수퍼 클래스/서브 클래스의 정의입니다. 서브 클래스의 모든 인스턴스는 수퍼 클래스의 인스턴스입니다.

sparql 쿼리가 작동하지 않는 이유를 모르겠다. 그러나 엔진이 추론되는 경우에만 작동 할 것입니다.

SELECT * 
WHERE { 
    ?cls rdfs:subClassOf* :ClassA . 
    ?inst a ?cls . 
} 

첫 번째 트리플 패턴은 모든 서브 클래스를 가져옵니다 당신이 추론 엔진을 실행하는 부담없이 SPARQL 쿼리에 대한 서브 클래스 entailments를 원하는 경우

+0

감사합니다. 나는 또한 같은 생각. TopBraid는 추론을 수행 할 수있는 다양한 방법 (엔진)을 제공합니다. 나는 어느 것을 사용할 지 알 수 없었다. 주로 TopSpin, Jena Rules, Jena Built-in Reasoner 및 SwiftOWLIM이 있습니다. – user1894963

+0

음, rdfs 추론 만 있으면됩니다. 나는 특별히 TopBraid의 전문가는 아닙니다. –

0

, 당신은 표준 SPARQL 속성 경로, 특히 전이 연산자를 사용할 수 있습니다 of : ClassA에서 루트까지. 두 번째 트리플 패턴은 모든 클래스의 인스턴스를 가져 와서 추론자가 수행하는 것과 동일한 포함 작업을 효과적으로 제공합니다.

관련 문제