2014-01-05 7 views
1

현재 OpenCYC를 KB로 사용하려고 시도하는 자연어 처리 프로젝트를 진행하고 있습니다. 현재 온톨로지를로드하고 추론기를 인스턴스화하려고 할 때마다 Java owl API v3.4.8 및 HermiT를 사용하여 추론자를 인스턴스화하려고 시도하고 있습니다.Java에서 opencyc owl을 사용하는 중에 DisjointClasses 오류가 발생했습니다.

스레드 "main"java의 예외 .lang.IllegalArgumentException : 오류 : 파싱 된 DisjointClasses (http://sw.opencyc.org/concept/Mx4rEHSj4Q0sQVGnAmZNRRJ20Q).

현재 코드 :

File ontology = new File("owl-export-unversioned.owl"); 

    OWLOntologyManager m = OWLManager.createOWLOntologyManager(); 

    System.out.println("Loading..."); 
    OWLOntology o = m.loadOntologyFromOntologyDocument(ontology); 
    System.out.println("Loaded"); 

    Reasoner hermit=new Reasoner(o); 
    System.out.println(hermit.isConsistent()); 

이이 opencyc 온톨로지 자체에 문제가있는 것을 의미 하는가? 아니면 내가 잘못하고있는거야?

답변

1

문제는 openCyc에 인수가 하나만있는 DisjointClasses이라는 잘못된 공리가 있다는 것입니다. OWL 스펙은 DisjointClasses가 둘 이상의 인수를 가져야한다고 지정합니다.

OWL API를 사용하면이 온톨로지를 구문 분석 할 수 있지만 HermiT는이 공리와 아마도 더 많은 것에 대해 불평 할 것입니다.

OWL2DLProfile을 사용하여 O'LL 2 DL 프로파일을 위반하는 공리를 확인할 수 있습니다. 동일한 유형의 다른 잘못된 공리를보고합니다. OWL API에는 아직 구현이 구현되어 있지 않지만 정확한 해결책은 무엇인지 직접 결정해야합니다.