2016-08-10 4 views
0

Ich benutze HermiT »1.3.8.1 von Maven und OWL API 5.0.2 von Maven auch. Ich versuche fast 2 Tage, Rückschlüsse zu ziehen. Ich habe alle Beispiele überprüft, nichts funktioniert für mich. Es ist wirklich frustrierend, dass es so viele Versionen von Reasonern und APIS gibt. `Einsiedler-Inferenz alle Personen einer Klasse

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()); 
      } 
     } 
    } 

Ich habe 3 Klassen mit Gleichwertigkeit reltations: A, B, C. A enthält 4 Individuen und C 2. Wenn ich diese Methode erhalte, um mir alle Instanzen von B zurückzugeben, sollte sie 6 Instanzen in einer dieser Klassen zurückgeben. Ich machte ein Experiment und machte C Subklasse von B und A gleichwertig B. A bekam alle Instanzen von A und C mit Reasoner Logik. Aber Äquivalenz funktioniert irgendwie nicht mit Einsiedler. Hilfe wird wirklich geschätzt!

bearbeiten: Ich sah, dass ich den Hermit-Reasoner nicht benutze, indem ich Reasoner reasoner = new Reasoner nicht anrufe. Ich kann ein Beispiel nicht finden, das allen Individuen von einer spezifischen Klasse gibt, auch das Inferencing (equivalentTo, Subclass). Bitte geben Sie die Eulen-Api-Version an, in der Sie die Version von Einsiedler oder einen anderen Denker verwenden. Eine Pom-Datei mit Depandancen wäre auch super. Nur ein Arbeitsbeispiel mit Pom. Ich bin wirklich frustriert, dass keines der Beispiele für mich funktioniert.

Meine pom-Datei:

`<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>` 

Antwort

1

Eremit 1.3.8.1 ist nicht kompatibel mit owlapi 5. Es gibt eine kompatible Version auf Maven, Version 1.3.8.500 verfügbar ist. Es ist eine Abzweigung der Haupt-HermiT-Codebasis, es aktualisiert 1.3.8.x, um mit owlapi 5 zu arbeiten (ich behalte sowohl owlapi 5 als auch diese Gabel).

+0

danke! es funktioniert jetzt. Die Abhängigkeiten machen mich verrückt. – Peter

+0

Es gibt einige Versionsdokumentation hier https://github.com/owlcs/owlapi/wiki – Ignazio

Verwandte Themen