1

我正在使用 Jena 读取 RDFa 文件。创建模型后,我将 RDFa 文件读入模型。(耶拿的基本用法)

当我在线存储文件并将 URL 传递给模型时,一切都按预期工作,并且文件内容以及 RDFa 信息可用于进一步处理。当我在本地存储文件时,我可以使用路径名“file:///Users/Piejero/file.xhtml”访问该文件,这里一切正常。但是当我使用 InputStream(从文件)访问同一个文件(本地)时,我收到以下错误:

Exception in thread "main" org.apache.jena.riot.RiotException: {E202} Expecting XML start or end element(s). String data "Metadata" not allowed. Maybe there should be an rdf:parseType='Literal' for embedding mixed XML content in RDF. Maybe a striping error.

(“元数据”是 xhtml 页面的。使用 Unicode (UTF-8) 编码)

我认为我们正在处理一个 IO 问题,但是您如何解决呢?从我的实验中我可以得出结论,文件本身没有问题?

失败案例的代码是

JenaRdfaReader.inject();
Model model = ModelFactory.createDefaultModel();
File f = new File("/Users/Piejero/file.xhtml");
model.read(new FileInputStream(f), "RDFA");

我正在使用 Semargl 向 Jena 添加 RDFa 支持。

4

1 回答 1

1

问题可能已经解决了,但这就是它对我的工作方式。该代码只是使用 FileReader 而不是 InputStream

     JenaRdfaReader.inject();
     Model m = ModelFactory.createDefaultModel();  
     try {
        m.read(new FileReader("C:\\data\\workspaces\\websites\\bla.htm"), "", "RDFA");
    } catch (FileNotFoundException e) { 
        e.printStackTrace();
    }
于 2014-09-15T23:20:40.103 回答