2016-08-10 20 views
0

MavenからHermiT 1.3.8.1を、MavenからOWL API 5.0.2を使用しています。私は推論を得るのにほぼ2日間努力しています。私はnothingsが私のために働くすべての例をチェックした。それは、非常に多くのバージョンの推論とAPISがあるということを本当に不満を抱かせています。 `Hermit Inferenceクラスのすべての人物を取得する

OWLOntologyManager manager = OWLManager.createOWLOntologyManager(); 
     File file = new File(PATH_MODEL_ALL_OWL); 
     OWLOntology ontology = manager.loadOntologyFromOntologyDocument(file); 

     OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory(); 
     OWLReasonerConfiguration config = new SimpleConfiguration(); 
     OWLReasoner reasoner = reasonerFactory.createReasoner(ontology, config); 
     reasoner.precompute(); 
    private void printIndividualsByclass(OWLOntology ontology, OWLReasoner reasoner, String owlClass) { 
    for (OWLClass c : ontology.getClassesInSignature()) { 
     if (c.getIRI().getShortForm().equals(owlClass)) { 
      NodeSet<OWLNamedIndividual> instances = reasoner.getInstances(c, false); 
      System.out.println("Class : " + c.getIRI().getShortForm()); 
      for (OWLNamedIndividual i : instances.getFlattened()) { 
       System.out.println(i.getIRI().getShortForm()); 
      } 
     } 
    } 

私は、等価関係を持つ3つのクラス:A、B、Cを持っています。 Aには4人の個人とC 2が含まれています。このメソッドにBのすべてのインスタンスを返すように依頼すると、これらのクラスのいずれかで6つのインスタンスが等価関係で返されます。私は実験を行い、BとAと同等のBのCサブクラスを作った。Aは、推論ロジックでAとCのすべてのインスタンスを得た。しかし、平等には何とか隠喩を使うことはできません。ヘルプは本当に感謝しています!

edit:Reasoner reasoner = new Reasonerを呼んでいないことで隠れた推論を使用しませんでした。 1つの特定のクラスのすべての人に、推論(equivalentTo、Subclass)を与える例を見つけることはできません。あなたが隠者または他の推理者のバージョンを使用しているowl apiバージョンを提供してください。 depandanciesのpomファイルも本当に素晴らしいでしょう。 pomを使った1つの実例です。私の事例のどれも私のために働いていないということは、本当にイライラしています。

マイポンポンファイル:

`<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 
     <groupId>Exporter</groupId> 
     <artifactId>Exporter</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <build> 
      <sourceDirectory>src</sourceDirectory> 
      <plugins> 
       <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.5.1</version> 
        <configuration> 
         <source>1.8</source> 
         <target>1.8</target> 
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
     <dependencies> 
      <dependency> 
       <groupId>net.sourceforge.owlapi</groupId> 
       <artifactId>owlapi-distribution</artifactId> 
       <version>5.0.2</version> 
      </dependency> 
      <dependency> 
     <groupId>net.sourceforge.owlapi</groupId> 
     <artifactId>org.semanticweb.hermit</artifactId> 
     <version>1.3.8.500</version> 
    </dependency> 
    <!-- https://mvnrepository.com/artifact/com.github.ansell.pellet/pellet-owlapiv3 --> 

      <dependency> 
       <groupId>net.sourceforge.owlapi</groupId> 
       <artifactId>owlapi-apibinding</artifactId> 
       <version>5.0.2</version> 
      </dependency> 
      <dependency> 
       <groupId>net.sourceforge.owlapi</groupId> 
       <artifactId>owlapi-api</artifactId> 
       <version>5.0.2</version> 
      </dependency> 
     </dependencies> 
    </project>` 

答えて

1

隠者1.3.8.1はMavenのバージョン1.3.8.500で利用可能な互換性のあるバージョンがありowlapi 5と互換性がありません。これは、メインのHermiTコードベースのフォークで、1.3.8.xをowlapi 5(私はowlapi 5とこのフォークの両方を維持しています)で動作するように更新します。

+0

ありがとうございます!それは今働く。扶養は私を夢中にさせている。 – Peter

+0

ここにいくつかのバージョンのドキュメントがあります。https://github.com/owlcs/owlapi/wiki – Ignazio

関連する問題