【问题标题】:How to convert RDF to string如何将RDF转换为字符串
【发布时间】:2012-04-11 21:17:09
【问题描述】:

我用 JENA 库创建了一些 RDF 文件:Model model = ModelFactory.createDefaultModel();... 现在我怎样才能将其转换为字符串?

谢谢

【问题讨论】:

    标签: java rdf jena


    【解决方案1】:

    试试这样的:

    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");
    

    【讨论】:

      【解决方案2】:

      RDF 模型是一组语句。每次向模型添加属性时,都会创建一个语句......RDF 模型中的语句也称为“Triple”,因为它有 3 个部分:主题(资源),谓词(属性)和对象(RDFNode - 可以是资源)。您可以在这些对象上调用 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 方法会很有用。顺便说一句,你能解释一下资源和文字之间的不同吗?
      • 这不是将模型序列化为 RDF 的合适方式。正如 cygri 所示,模型可以使用任何支持的 RDF 语法将自己写入输出流/写入器,不要手动进行。
      • 该代码来自 JENA 框架的文档。上面的帖子有一个参考,你可以在那里查看。
      • 嗯,这是一个教程中的一个例子,它展示了如何使用 Jena API。我同意@Michael 的观点,这不是你应该手工做的事情——你可以使用model.write() 在一行中做同样的事情。
      猜你喜欢
      • 1970-01-01
      • 2011-12-31
      • 2018-04-30
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      相关资源
      最近更新 更多