2017-02-13 49 views
0

請幫我出這一點:無法使用OWL API來加載OWL文件

曾用Maven和嘗試使用OWL API加載Ontology文件.. 得到錯誤在運行該文件:

1錯誤:

爲 java.util.Set中沒有執行是 界。同時在uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.setOntologyStorers(OWLOntologyManagerImpl.java:1279) at uk.ac.manchester.cs.owl.owlapi上爲參數0定位 java.util.Set 。 OWLOntologyManagerImpl.setOntologyStorers(OWLOntologyManagerImpl.java:1279) 在uk.ac.manchester.cs.owl.owlapi.OWLAPIImplModule.configure(未知 來源)

第二個錯誤:

的異常被捕獲和回購rted。消息: org.semanticweb.owlapi.manchestersyntax.parser.ManchesterOWLSyntaxOntologyParserFactory 不能轉換到javax.inject.Provider在 org.semanticweb.owlapi.OWLAPIServiceLoaderModule.configure(未知 來源)

我的代碼如下像這樣:

File selectedFile = new File("E:\\Pallavi\\Ontology\\Food.owl"); 
      OWLOntologyManager m = OWLManager.createOWLOntologyManager(); 
      IRI inputDocumentIRI = IRI.create(selectedFile); 

      /* Load an ontology from a document IRI */ 
      OWLOntology ontology = m.loadOntologyFromOntologyDocument(inputDocumentIRI); 
      /* Report information about the ontology */ 
      System.out.println("Ontology Loaded..."); 
      System.out.println("Document IRI: " + inputDocumentIRI); 
      System.out.println("Logical IRI : " + ontology.getOntologyID()); 
      System.out.println("Format  : " + m.getOntologyFormat(ontology)); 
      m.removeOntology(ontology); 
      System.out.println("Done"); 

My pom.xml looks like: 

<?xml version="1.0" encoding="UTF-8"?> 
<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>com.mycompany</groupId> 
    <artifactId>TestOWL</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.felix</groupId> 
     <artifactId>maven-bundle-plugin</artifactId> 
     <version>2.5.3</version> 
     <extensions>true</extensions> 
     <configuration> 
      <instructions> 
      <Implementation-Title>${project.name}</Implementation-Title> 
      <Implementation-Vendor>${project.organization.name}</Implementation-Vendor> 
      <Implementation-Version>${project.version}.${maven.build.timestamp}</Implementation-Version> 
      <Bundle-SymbolicName>org.semanticweb.owl.owlapi</Bundle-SymbolicName> 
      <Bundle-Version>${project.version}</Bundle-Version> 
      <excludeDependencies>groupId=com.google.guava;scope=compile|runtime|provided, 
          groupId=com.google.inject*;scope=compile|runtime|provided, 
          groupId=org.slf4j*;scope=compile|runtime|provided</excludeDependencies> 
      </instructions> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-shade-plugin</artifactId> 
     <version>2.3</version> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <configuration> 
       <artifactSet> 
       <excludes> 
        <exclude>org.apache.felix:org.osgi.core</exclude> 
        <exclude>org.openrdf.sesame:*</exclude> 
        <exclude>com.fasterxml.jackson.core:*</exclude> 
        <exclude>com.github.jsonld-java:*</exclude> 
        <exclude>com.fasterxml.jackson.core:*</exclude> 
        <exclude>org.apache.httpcomponents:*</exclude> 
        <exclude>commons-codec:commons-codec:*</exclude> 
        <exclude>org.slf4j:*</exclude> 
        <exclude>org.semarglproject:*</exclude> 
        <exclude>com.google.guava:*</exclude> 
        <exclude>com.google.inject:*</exclude> 
        <exclude>javax.inject:*</exclude> 
        <exclude>aopalliance:*</exclude> 
        <exclude>com.google.inject.extensions:*</exclude> 
        <exclude>com.google.code.findbugs:*</exclude> 
        <exclude>org.slf4j:slf4j-api</exclude> 
        <exclude>commons-io:*</exclude> 
        <exclude>org.tukaani:*</exclude> 
        <exclude>net.sf.trove4j:*</exclude> 
       </excludes> 
       </artifactSet> 
       <transformers> 
       <transformer/> 
       </transformers> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>com.github.ansell.owlapi</groupId> 
      <artifactId>owlapi-api</artifactId> 
      <version>3.4.6.2-ansell</version> 
     </dependency> 
     <dependency> 
      <groupId>net.sourceforge.owlapi</groupId> 
      <artifactId>owlapi-apibinding</artifactId> 
      <version>5.0.5</version> 
     </dependency> 
     <dependency> 
      <groupId>net.sourceforge.owlapi</groupId> 
      <artifactId>owlapi-osgidistribution</artifactId> 
      <version>5.0.5</version> 
     </dependency> 
    </dependencies> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 
</project> 

請幫我擺脫這些錯誤的

回答

0

您的除n owlapi的依賴關係,這解釋了所有與注入有關的錯誤。

最重要的是,你使用owlapi 5和owlapi 3.這些的安塞爾叉將在許多領域發生衝突。

如果不使用OSGi(好像沒有)放棄所有的依賴,除了owlapi-apibinding爲5.0.5,並刪除所有排除。如果這不能解決問題,請用新的事態更新問題。