【问题标题】:Duplicate namespace (prefixes) in RDF resourceRDF 资源中的重复命名空间(前缀)
【发布时间】:2013-05-23 10:32:08
【问题描述】:

我有一个 RDF,其中包含我从数据模型生成的多个资源。因为每个资源都是单独添加(连接)的,所以我有多个前缀(在 N3 中时)。它看起来像这样:

@prefix dc: <someURL>.

<someURL/Tony_Benn>
     dc:title "Tony Benn";
     dc:publisher "Wikipedia".

@prefix dc: <someURL>.

<someURL/Someone_Else>
     dc:title "Someone Else";
     dc:publisher "Wikipedia".

我正在使用 Jena API 创建 RDF,但我已经围绕 API 编写了一个包装器以使其不相交。有没有更好的方法来解决这个问题,或者有没有办法删除重复的前缀?

【问题讨论】:

    标签: rdf jena prefixes n3


    【解决方案1】:

    如果您使用实用程序(例如,Jena 的 rdfcat 来连接 RDF 文档,那么您无需担心。前缀只是让阅读和编写更容易一些,但 RDF 感知工具并没有真正做到关心。如果能够使用基于文本的工具(即不支持 RDF 的工具)连接数据很重要,那么您可能应该使用 N-Triples 格式。它非常简单,只需

    subject predicate object .
    

    每行一个三倍。由于没有前缀的规定,文本连接很简单。 N-Triples 还具有(更好的)功能,如果您需要拆分文档,例如,为了分布式处理,您可以只拆分文件,只要您在换行符处拆分即可。这对于 N3、RDF/XML 和其他更复杂的格式是不可能的。

    【讨论】:

    • 感谢您的快速回复。是的,我知道 N-Triples 格式。我的错;应该提到工作的整个上下文,即能够在 JSON 中可视化 RDF。目前,使用 RDF/XML 和生成 JSON 的工具(javascript)没有标准化,因此 Notation3 的可读性更好。是的,我同意 N-Triple 比 N3 更容易阅读,我希望您能提供任何有助于将 RDF 转换为 JSON 的工具或 API 的指针。 P.S:我必须以编程方式进行转换,因此不能使用 rdfcat。
    • @narayanankrish --help 选项没有提到它,但是您可以将 -out RDF/JSON 与 rdfcat 一起使用,所以这是一个非常简单的解决方案。我不明白为什么以编程方式做某事会排除使用 rdfcat,但是如果你不能使用 rdfcat,Jena 是开源的,所以你仍然可以查看 rdfcat 的源代码以获取一些示例。 Jena 支持writing RDF/JSON (distinct from JSON-LD),所以如果你只是读入 RDF,你可以将它写回为 RDF/JSON。
    • @NarayananKrishnan 我看到你几天前接受了这个答案,只是不接受。您是否遇到过无法满足您需求的问题?
    【解决方案2】:

    感谢@Joshua。我想过这个问题。我认为与其删除重复的条目,不如一开始就没有它。与其连接两个 RDF 文档,我发现合并各个模型更好。因此,这就是我所做的:

  • 将文档读入模型
  • 合并了模型。这可以使用union(Model model) 方法或更好的方法来完成
  • 使用 read(.. ,.. ,..) 方法将第一个 RDF 文件(因为我将其作为字符串,将其作为输入流读取)读取到模型中,然后添加第二个 RDF 文件中的语句。正如@Joshua 在下面的评论中所建议的那样,它在内存使用方面效率更高。
  • 取出统一模型
  • 我发现这更容易、更可预测并且更好地处理前缀。我也可以使用 Notation3。

    【讨论】:

    • 啊,所以你接受了评论中的建议并决定做 rdfcat 所做的事情(参见rdfcat.java),即读取模型,然后编写组合模型。请注意,除了使用union(Model),您可以考虑仅使用一个模型和Model#read(…) 将文件中的内容添加到该单个模型中。那应该使用大约一半的内存(联合创建一个完全 模型)。如果出于其他原因需要单独的模型,则可以将 OntModel 与子模型一起使用。很高兴您找到了解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多