如何将RDF转换为字符串

4
我使用JENA库创建了一些RDF文件:Model model = ModelFactory.createDefaultModel();... 现在,我该如何将它转换为字符串? 谢谢。
2个回答

14

试试这样:

String syntax = "RDF/XML-ABBREV"; // also try "N-TRIPLE" and "TURTLE"
StringWriter out = new StringWriter();
model.write(out, syntax);
String result = out.toString();

这里使用了Jena内置的写入器,它们可以将RDF图以各种支持的RDF语法输出,例如RDF/XML、Turtle和N-Triples。如果你只想将其转储到System.out中,则更加简单:

model.write(System.out, "RDF/XML-ABBREV");

0
一个RDF模型是一组语句。每次向模型添加属性时,都会创建一个语句...在RDF模型中,语句也被称为'三元组',因为它有三个部分:主语(资源)、谓语(属性)和宾语(RDF节点-可以是资源)。您可以在这些对象上调用toString方法,如下面的代码所示:
// list the statements in the Model
StmtIterator iter = model.listStatements();

// print out the predicate, subject and object of each statement
while (iter.hasNext()) {
    Statement stmt      = iter.nextStatement();  // get next statement
    Resource  subject   = stmt.getSubject();     // get the subject
    Property  predicate = stmt.getPredicate();   // get the predicate
    RDFNode   object    = stmt.getObject();      // get the object

    System.out.print(subject.toString());
    System.out.print(" " + predicate.toString() + " ");
    if (object instanceof Resource) {
       System.out.print(object.toString());
    } else {
        // object is a literal
        System.out.print(" \"" + object.toString() + "\"");
    }

    System.out.println(" .");
} 

请注意上述代码中的'toString'方法。
来源/参考:Jena - RDF(请检查“语句”部分)。

rdf 是一种 XML,而 XML 是一些字符串,因此某些 toString 方法将非常有用。顺便问一下,你能解释一下资源和字面量之间的区别吗? - hudi
这不是将模型序列化为RDF的适当方式。正如cygri所示,模型可以以任何支持的RDF语法自行编写输出流/编写器,不要手动执行此操作。 - Michael
那段代码来自JENA框架的文档。上面的帖子有一个参考,您可以在其中进行查看。 - bchetty
2
这是一个教程中展示如何使用Jena API的示例。我同意@Michael的观点,这不是你应该手动完成的事情 - 你可以使用model.write()一行代码实现同样的功能。 - cygri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接