无法使用OWL API

时间:2017-02-13 05:51:51

标签: owl-api

请帮我解决这个问题:

使用过Maven并尝试使用OWL API加载Ontology文件。 运行文件时出错:

第一次错误:

  

没有实施   java.util.Set是   界。找到位置   为java.util.Set       对于参数0,请访问uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.setOntologyStorers(OWLOntologyManagerImpl.java:1279)   在   uk.ac.manchester.cs.owl.owlapi.OWLOntologyManagerImpl.setOntologyStorers(OWLOntologyManagerImpl.java:1279)   at uk.ac.manchester.cs.owl.owlapi.OWLAPIImplModule.configure(Unknown   源)

第二次错误:

  

发现并报告了一个例外。信息:   org.semanticweb.owlapi.manchestersyntax.parser.ManchesterOWLSyntaxOntologyParserFactory   无法转换为javax.inject.Provider at   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>

请帮我摆脱这些错误

1 个答案:

答案 0 :(得分:0)

您排除了owlapi的必要依赖项,这解释了所有与注入相关的错误。

最重要的是,你正在使用owlapi 5和owlapi 3的Ansell分支。这些将在很多方面发生冲突。

如果你没有使用OSGi(似乎没有)删除除了5.0.5的owlapi-apibinding之外的所有依赖项并删除所有排除项。如果这不能解决问题,请用新的事态更新问题。