2016-08-10 11 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의 모든 인스턴스를 가졌습니다. 그러나 평등은 어떻게 든 은둔자와 함께 작동하지 않습니다. 도움말 정말 고맙습니다!

편집 : 저는 Reasoner reasoner = new Reasoner를 호출하지 않아 은둔 추론을 사용하지 않습니다. 하나의 특정 클래스에서 모든 개인에게 추론 (equivalentTo, Subclass)을 제공하는 한 가지 예제를 찾을 수 없습니다. 은둔자 또는 다른 추론 자의 버전을 사용하고있는 올빼미 API 버전을 제공하십시오. depandancies와 함께 POM 파일도 정말 좋을 것입니다. POM을 사용한 한 가지 작업 예제. 임씨는 실망스러워서 예제 중 어느 것도 나를 위해 일하지 않고있다.

내 치어 파일 :

`<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 받는다는에서 사용할 수있는 호환 가능한 버전, 버전 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