如何将Apache Any23 RDF语句添加到Apache Jena?

时间:2013-02-28 16:24:37

标签: parsing rdf jena rdfa any23

基本上,我使用Any23蒸馏器从嵌入RDFa的文件中提取RDF语句(由DBpedia Spotlight使用xhtml + xml输出选项创建的实际文件)。通过使用Any23 RDFa蒸馏器,我可以提取RDF语句(我也尝试使用Java-RDFa,但我只能提取前缀!)。但是,当我尝试将语句传递给Jena模型并将结果打印到控制台时,没有任何反应!

这是我正在使用的代码:

File myFile = new File("T1");
Any23 runner= new Any23();

DocumentSource source = new FileDocumentSource(myFile); 
ByteArrayOutputStream outA = new ByteArrayOutputStream();
InputStream decodedInput=new ByteArrayInputStream(outA.toByteArray()); //convert the output stream to input so i can pass it to jena model
TripleHandler writer = new NTriplesWriter(outA);

try {
    runner.extract(source, writer);
} finally {
    writer.close();
}

String ttl = outA.toString("UTF-8");
System.out.println(ttl);
System.out.println();
System.out.println();

Model model = ModelFactory.createDefaultModel();
model.read(decodedInput, null, "N-TRIPLE");

model.write(System.out, "TURTLE"); // prints nothing!  

谁能告诉我我做错了什么?可能是多件事!
有没有简单的方法可以直接从任何23(绕过耶拿)提取RDF语句的主题? 由于我在编程方面缺乏经验,任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:3)

您正在致电

InputStream decodedInput=new ByteArrayInputStream(outA.toByteArray()) ;

在调用any23之前插入三元组。在通话时,它是空的。

在try-catch块之后移动它。