2017-01-28 7 views
2

프로젝트에 OWLAPI를 사용하고 있는데 두 가지 온톨로지를 비교해야합니다. 예를 들어 두 OTL 제한이 동일한 온톨로지에 있는지를 결정할 수 있도록 공백 노드를 무시합니다. 차이점이 있는지를 알아야 할뿐만 아니라 그 차이점을 찾아야합니다. 그러한 기능이 OWLAPI에 존재합니까? oz는 이것을 수행하는 상대적으로 간단한 방법입니까?owlapi의 온톨로지 비교

답변

2

익명 클래스 표현식 사이의 동일성은 빈 노드 ids를 기반으로하지 않습니다. 익명 클래스 표현식은 텍스트 출력에서 ​​빈 노드 만 가지며 메모리에서는 해당 ID가 무시됩니다. 따라서 온톨로지에 공리가 있는지 확인하는 것은 기본적으로 diff에 대한 표현을 정확하게 일치시킵니다.

이것은 개인에게 사실이 아닙니다. 익명의 개인은 온톨로지에서 동일하지 않은 것으로 판명되었습니다. 이는 사양 별입니다. 익명의 개별 id가 포함 온톨로지에 속하기 때문에 한 온톨로지의 익명 개체는 다른 개체에서 찾을 수 없습니다.

참고 : OWLAPI의 단위 테스트는 온톨로지를 변경하지 않고 (즉, 입력 구문과 출력 구문 사이에서 라운드 트립 된) 온톨로지를 다시 구문 분석하고 쓰고 파싱 할 수 있는지 확인하기 위해 매우 유사한 작업을 수행해야합니다. 당신이 영감을 얻기 위해 볼 수있는 코드. 자세한 내용은 TestBase.java - equal() method을 참조하십시오. 여기에는 익명의 사용자에 대해 다른 ID를 처리하는 코드가 포함됩니다.

+0

온톨로지를 비교할 때, 익명의 사용자는 ID가 없다는 것을 이해합니다 (내부 ID는 중요하지 않습니다). 그래서 제 의도는 익명 노드의 구조를 비교하는 것입니다. 예를 들어 그것의 컨텍스트에서 제한은 서브 클래스입니다. 두 온톨로지에 나타나는 명명 된 서브 클래스가 주어지면 각 온톨로지에서 클래스가 제한의 서브 클래스가됩니다. 이로써 제한은 동일한 트리플 (속성 및 객체)의 대상입니다. 두 경우 모두. 그것이 내가 결정할 필요가있는 것입니다. –

+0

당신의 경우에 서브 클래스의 공리는 서로에 대한 equals()가 될 것입니다. 따라서 첫 번째 온톨로지에서 공리를 받아 두 번째 온톨로지에 포함되어 있는지 확인할 수 있습니다. – Ignazio