使用FileManager加载资源在Jena 2.10.1中不起作用

时间:2013-08-09 09:58:12

标签: java jena

以下代码适用于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(我对此发表评论,但我没有足够的声誉)

2 个答案:

答案 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>

我希望对您有帮助