java - Jena:使用输入流读取模型

标签 java file inputstream jena stripping

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

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

线程“main”org.apache.jena.riot.RiotException 中出现异常:{E202} 需要 XML 开始或结束元素。不允许字符串数据“元数据”。也许应该有一个 rdf:parseType='Literal' 用于在 RDF 中嵌入混合 XML 内容。可能是 strip 错误。

(“元数据”是 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 支持。

最佳答案

问题可能已经解决了,但这对我来说是如何工作的。该代码只是使用 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();
    }

关于java - Jena:使用输入流读取模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723533/

相关文章:

java - 基于注释的 Spring bean 验证

java - 动态调度、重载和泛型

java - 在.txt文件java中的不同行中写入问题

python - python多久刷新一次文件?

java - 在java中解析文本文件(大数据集)

java - 将 long 转换为 int 以切断溢出

java - java中根据参数连接多个字符串

python - 比较python中的两个文本文件

java - 从 InputStream 读取所有字节

Java ObjectInputStream java.io.EOFException