【问题标题】:Loading owl file with Jena使用 Jena 加载 owl 文件
【发布时间】:2015-06-10 21:18:44
【问题描述】:

我使用 Jena 作为OntModel 加载了几个 OWL 文件(RDF/XML 序列化)。 对于某些文件,我在使用ontoModel.read() 读取它们时会出错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpMessage.

我在类路径中有org.apache.httpcore-sources.jar

目前出现问题的文件是:ontologydesignpatterns.org/cp/owl/timeindexedpersonrole.owl

我使用 Protege 将其保存为 RDF/XML,尝试使用扩展名 .owl.rdf

代码:

public static OntModel getOntologyModel(String ontoFile)
{   
    OntModel ontoModel = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
    try 
    {
        InputStream in = FileManager.get().open(ontoFile);
        try 
        {
            ontoModel.read(in, null);
        } 
        catch (Exception e) 
        {
            e.printStackTrace();
        }
        LOGGER.info("Ontology " + ontoFile + " loaded.");
    } 
    catch (JenaException je) 
    {
        System.err.println("ERROR" + je.getMessage());
        je.printStackTrace();
        System.exit(0);
    }
    return ontoModel;
}

非常感谢您的帮助。

【问题讨论】:

  • 请插入项目结构,lib文件夹
  • 我可以使用您的代码加载您的文件。确保您正在传递具有正确名称的 owl 文件。代码正确。
  • 谢谢。我三重检查,文件名正确,文件存在。错误实际上来自org.apache.jena.riot.system.stream.LocatorHTTP.performOpen(LocatorHTTP.java:41)。我还尝试将基本名称作为读取方法的 arg,但同一文件的错误相同。可能是某个地方的愚蠢错误,但我没有发现它。
  • 链接的文件已导入到其他本体——其中一个可能是问题所在。我会尝试加载每一个,看看是否有任何有用的东西出现。
  • 谢谢,你说得对,可能是进口。实际上有一个进口链;其他文件也有问题,这使得整个事情变得非常麻烦。我想我只会硬编码我初始文件的几个类...

标签: java jena owl ontology


【解决方案1】:

如果您使用的是二进制下载,请将所有 jars 放在类路径的 lib/ 目录中。 org.apache.httpcore-sources.jar 不是正确的 jar。您似乎至少缺少 httpclient-4.2.6.jar 和 httpcore-4.2.5.jar。

如果你使用maven,使用神器:

<dependency>
 <groupId>org.apache.jena</groupId>
 <artifactId>apache-jena-libs</artifactId>
 <type>pom</type>
 <version>X.Y.Z</version>
</dependency> 

获得相同的集合,但由 maven 或您使用的任何构建器管理。

【讨论】:

  • 您好,谢谢,就是这样!只是缺少处理导入的好库。现在它可以工作了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多