0

以下代码在 Jena 2.10.0 中有效,但在 Jena 2.10.1 中失败:

model = FileManager.get().loadModel(uri, base, "RDF/XML");

堆栈跟踪是:

com.hp.hpl.jena.n3.turtle.ParserTurtle.parse(ParserTurtle.java:67), 
com.hp.hpl.jena.n3.turtle.TurtleReader.readWorker(TurtleReader.java:33), 
com.hp.hpl.jena.n3.JenaReaderBase.readImpl(JenaReaderBase.java:116), 
com.hp.hpl.jena.n3.JenaReaderBase.read(JenaReaderBase.java:81), 
com.hp.hpl.jena.rdf.model.impl.ModelCom.read(ModelCom.java:274), 
com.hp.hpl.jena.util.LocationMapper.initFromPath(LocationMapper.java:158), 
com.hp.hpl.jena.util.LocationMapper.get(LocationMapper.java:71), 
com.hp.hpl.jena.util.FileManager.makeGlobal(FileManager.java:122), 
com.hp.hpl.jena.util.FileManager.get(FileManager.java:88), 
...

从我可以调试的情况来看,ParserTurtle 类的初始化中有一个 NPE,在某个静态块中。但是确切的位置没有出现在堆栈跟踪中,我无法通过自己初始化这个类来重现它。

修复将是最好的,但我会感谢任何关于如何在 Jena 2.10.1 中使用 FileManager 的提示。我需要 FileManager 来加载 location-mapping.n3 文件。

彼得


这与 https://stackoverflow.com/questions/16196069/jena-filemanager-readmodel-cannot-find-file有关(我会对此发表评论,但我没有足够的声誉)

4

2 回答 2

0

进一步调试后发现,在 2.10.0 中有效但在 2.10.1 中无效的实际代码与初始化 LocationMapper 有关,请参阅http://issues.apache.org/jira/browse/JENA-505。在那里我附上了一个演示问题的最小示例。

实际错误仅通过警告消息发出信号:

2013.08.09 14:21:00 [main] LocationMapper WARN: Error in configuration file: null

但是如果您稍后尝试加载在位置映射器中映射的文件,您可能会收到类似于

com.hp.hpl.jena.shared.NotFoundException: Not found: (...)

这就是为什么我将此问题与 16196069 相关联的原因。

于 2013-08-09T19:48:15.973 回答
0

我通过加载 IRI 而不是 URI 解决了这个问题。以下示例:

IRI iri = IRI.create(this.getClass().getResource("/dataset_rdf.owl"));
Model model = FileManager.get().loadModel(iri.getFragment());

使用这个 Maven 依赖项:

<!-- https://mvnrepository.com/artifact/net.sourceforge.owlapi/owlapi-apibinding -->
        <dependency>
            <groupId>net.sourceforge.owlapi</groupId>
            <artifactId>owlapi-apibinding</artifactId>
            <version>3.4</version>
        </dependency>

我希望它有帮助

于 2020-04-20T22:26:36.340 回答