0

我有一个 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 编写了一个包装器以使其不相交。有没有更好的方法来解决这个问题,或者有没有办法删除重复的前缀?

4

2 回答 2

1

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

subject predicate object .

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

于 2013-05-23T13:06:24.533 回答
1

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

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

    于 2013-05-24T14:10:43.073 回答