Protege에서 생성 된 온톨로지를 추론하기 위해 OWL API를 사용하고 있습니다. OWL API 예제 DL 쿼리를 다루고 있습니다 : http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java. 이 예제는 Protege의 DL Query Tab과 동일한 기능을 제공합니다. 그러나 사실 몇 가지 중요한 차이가 있습니다. 개인 집합 (ex {Member1, Member2 ...}) 또는 다른 집합 (예 : {Member1, Member2 ...})에 의해 정의 된 익명 클래스의 정보 방법. Protege에서이 쿼리는 올바른 결과를 반환하지만 OWL API Dl Query Example의 이러한 쿼리는 [NOTHING]을 반환합니다. OWL API에서 익명 클래스를 조작하는 방법이 있습니까? 응답 해 주셔서 미리 감사드립니다.OWL API에서 익명 클래스를 맨체스터와 쿼리 구문
답변
수정하지 않고 the classDLQueryExample
을 그대로 사용한다고 가정합니다.
기본값과 다른 reasoner를 사용해야합니다. 151 번 라인을 보면 구현시 OWL-API에 내장 된 구조적 추론자가 사용됩니다. 이 추론 도구는 제한되어 있으며 복잡한 클래스 식을 처리 할 수 없습니다.
어떻게 그것을 해결하기 위해 :이 Hermit 같은 고급 추론을 사용합니다. 그 다음으로 라인 (151)의 코드를 대체, 다운로드하여 클래스 패스에 항아리를 넣어 :
OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();
당신은 패키지 org.semanticweb.HermiT.Reasoner
을 가져와야합니다. 이제 Hermit을 사용하여 쿼리를 처리 할 것입니다. Pizza and (hasTopping some CheeseTopping)
을 사용해보세요. 제대로 작동합니다.
고맙습니다 !!!!!! 이제 작동합니다! 너는 나를 구했어! – user1823541
OWL API는 이제이 문제와 관련된 문서를 제공합니다. https://github.com/owlcs/owlapi/wiki/DL-Queries-with-a-real-reasoner – FBB
'DLQueryExample'은 (Protege에서와 같이) 익명 클래스 표현식을 입력으로 처리해야합니다. 사용중인 온톨로지에 대한 스 니펫이나 링크를 포함하여 정확한 표현식을 정확하게 사용할 수 있습니까? – loopasam
@loopasam, 답변 주셔서 감사합니다. 피자 샘플을 보았습니다. http://www.co-ode.org/ontologies/pizza/pizza.owl. 쿼리는 간단합니다 : 피자 및 (일부 치즈 CheppingTopping) 결과는 다음과 같습니다.로드 된 온톨로지 : OntologyID (OntologyIRI () 맨체스터 구문에서 클래스 식을 입력하고 Enter 키를 누릅니다 (또는를 눌러 X 는 종료) : 피자와 QUERY (일부 CheeseTopping에게 hasTopping) : 피자와 슈퍼 [NONE] EquivalentClasses [NONE] (일부 CheeseTopping hasTopping) 하위 클래스 [NONE] 인스턴스 [NONE] –
user1823541
문제가있는 DL 쿼리 예제로 연결되는 링크 : https://github.com/owlcs/owlapi/blob/version3/contract/src/te st/java/org/coode/owlapi/examples/DLQueryExample.java – FBB