以下代码适用于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(我对此发表评论,但我没有足够的声誉)
答案 0 :(得分: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相关联。
答案 1 :(得分: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>
我希望对您有帮助