2014-01-05 48 views
1

我目前工作的一個自然語言處理項目試圖使用openCYC爲KB使用opencyc貓頭鷹。目前,我只是嘗試加載本體並使用java owl api v3.4.8和HermiT實例化推理器,但每當我嘗試實例化推理器時,我都會得到錯誤DisjointClasses錯誤而在Java

線程「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將讓你解析這一本體論,但隱士會抱怨這個公理,甚至更多。

您可以使用OWL2DLProfile來檢查哪些公理違反OWL 2 DL配置。這將報告其他相同類型的錯誤公理。您將不得不自己決定什麼是正確的解決方案 - OWL API尚未有固定實施。