Rdf 重复三元组

Rdf 重复三元组,rdf,Rdf,我有一个关于RDF和重复三元组的问题。从互联网上看,重复的三元组似乎在某种程度上是“坏的”或违反了某些规则 但在我看来,从表面上看,重复的三元组似乎是有意义的 假设我想代表一个事实: Susy(主语)提到(谓语)Bob(宾语) 假设我还想表示Susy五次提到Bob。Susy提到Bob时,会不会有5个三元组的请允许我来表示这一点 稍后的一个查询想知道Susy提到Bob多少次,可以只要求计算这个重复三元组的计数 所以我的问题是:Susy五次提到Bob这一事实的表述有什么不对吗。如果是这样的话,Sus

我有一个关于RDF和重复三元组的问题。从互联网上看,重复的三元组似乎在某种程度上是“坏的”或违反了某些规则

但在我看来,从表面上看,重复的三元组似乎是有意义的

假设我想代表一个事实: Susy(主语)提到(谓语)Bob(宾语)

假设我还想表示Susy五次提到Bob。Susy提到Bob时,会不会有5个三元组的
请允许我来表示这一点

稍后的一个查询想知道Susy提到Bob多少次,可以只要求计算这个重复三元组的
计数


所以我的问题是:
Susy五次提到Bob这一事实的表述有什么不对吗。如果是这样的话,Susy提到Bob五次这一事实的最佳表达方式是什么?理论上,RDF图是一组三元组,也就是说每个三元组只能出现一次。当然,你可以有一个文档,比如说在Turtle中,它包含三元组或四元组的副本,但是在加载到内存/存储后,这些三元组应该被视为一个。毕竟,任何文档都只是文本

也就是说,我见过不同的行为取决于三联店。例如,默认情况下AllegroGraph加载并处理重复的三元组。有一个手动选项来修剪重复项

不,查询不会告诉您有重复的问题,因为SPARQL聚合处理的是节点,而不是整个三元组


关于你的例子,有多种方法

TL/DR您需要一种方法来添加关于语句的语句。请参阅了解各种方法,我在下面简要介绍了其中一些方法

完整答案

最简单的方法是引入某种人工中间图节点,它可以被称为提及或其他什么。比如说

:Susan :mentions [
  rdf:type :Mention ;
  :mentionsWhom :Bob ;
  :times 5 
]
问题是,如果您将这种结构引入现有数据,这会破坏现有的语义


一种简单且广泛支持的方法是使用四元组而不是三元组。下面的示例增强了turtle语法,使其成为TriG。请注意,名称图只是另一个资源。命名图也很容易用任何SPARQL处理器查询

# :susanMentionsBob is the named graph
:susanMentionsBob {
   :Susan :mentions :Bob
}

# we can say more about that graph
:susanMentionsBob :times 5

另一个传统的解决方案是使用的形式。通过具体化,您可以创建一个rdf:Statement对象,在其中可以添加额外的数据。缺点是您需要重复原来的三重s/p/o

:Susan :mentions :Bob . # actual triple intact
_:reifiedStatement
   rdf:type rdf:Statement ;
   rdf:subject :Susan ;
   rdf:predicate :mentions ;
   rdf:subject :Bob ;
   :times 5 . # extra statement about the mention

最近,人们引入了更简洁的具体化方法。您可以使用。您引入了一个额外的谓词,该谓词替换了:针对单个用法提及了,并向该属性添加了额外的语句:

:Susan :mentions#1 :Bob .
:mentions#1 rdf:singletonPropertyOf :mentions .
:mentions#1 :times 5 .
请注意,您可以为:references#1属性使用任何名称以避免冲突。请查看上面链接的sildeshare,了解更多示例和SPARQL用法


最后但并非最不重要的一个非标准方法是。使用RDR,您可以编写

<<:Susan :mentions :Bob>> :times 5
:乘以5

通过添加双尖括号,可以将语句添加到语句外。这也适用于BigData的SPARQL处理器。

还可以看到类似的问题:和另一个:非常有用。谢谢,回答得很好,谢谢。对具体化陈述的小修正;它应该是
rdf:object:Bob
# :susanMentionsBob is the named graph
:susanMentionsBob {
   :Susan :mentions :Bob
}

# we can say more about that graph
:susanMentionsBob :times 5