关于RDF,"reify"和"reification"是什么意思?

11

我确实理解编程语言中这些单词的含义,但对于RDF和三元组而言并不太清楚。能否提供一个例子帮助我理解呢?

谢谢


你理解这些词语的含义是什么? - Pete Wilson
在编程语言领域中,具体化的对象是指其类型不会在编译时丢失,而是保留到运行时。我不确定这对我有什么帮助。 :( - Eli Schneider
2个回答

24

标准的RDF语句包括:

 SUBJECT PREDICATE OBJECT

把它想象成断言一个事实。

 ROVER IS-A DOG

现在,如果你手头的情况确实是这样的,

  GEORGE SAYS-THAT 'ROVER IS-A DOG'

在RDF中,你应该这样写

  STMTID  IS-A STATEMENT
  STMTID  HAS-SUBJECT ROVER
  STMTID  HAS-PREDICATE IS-A
  STMTID  HAS-OBJECT DOG
  GEORGE  SAYS-THAT STMTID
这里的前四个三元组是对第一个三元组的正式且官方的实体化。请注意,原始语句并不在模型中,因为实体化的目的是抑制其断言,而是间接地谈论它。此外,请注意,我已经省略了ROVER和其它朋友的IRI以便更加清晰易懂。对于观众中的专家们:使用实体化可以进行各种操作。如上所述,您可以使用它描述一个陈述而不声明它,从而将其远离推理。您还可以使用它添加其他事实(例如出处)到一个陈述中。在这种情况下,您有原始的三元组和实体化。然而,我刚刚从一位似乎非常了解RDF(SPARQL规范的主管之一)的人那里得到了一份详细的解释。他的解释是,形式化的实体化(包括第四个三元组,它说这件事是一个陈述)不应与断言三元组本身一起使用。如果您查看此答案的评论,您会发现他的观点并不是普遍适用的,但您可能仍然需要记住它。

(+1) 小注:您的示例似乎反了,按照惯例,具体化最常用于溯源,而在这种情况下,具体化将用于溯源,而不是事实“Rover是一个狗”。 - harschware
2
我刚刚在办公室里见到了SPARQL标准的一位主要负责人,他非常坚持我所表达的观点 :-) - bmargulies
不,当然你是完全正确的,我读得太快并且混淆了。 :-) 很难相信我犯了这个错误。在这里,你的来源是 GEORGE 说这必须以某种方式应用于三元组,因此必须对三元组进行实体化。 噢,我现在要去睡觉了。 - harschware
如果需要的话,原始语句也可以在模型中。这在使用具体化来进行溯源等操作时很常见。 - DNA
@bmargulies 这里的前四个三元组,在正式和官方上,是第一个三元组的具体化,这让我感到困惑 - 你是真的这么说还是打错字了,你是指最后一个三元组的具体化吗? - alelom

0

另一个例子:

考虑这个语句

music:Symph3 music:dedicatedTo music:Napoleon

为了使上述语句可以在另一个RDF语句中引用,它被重新表述,即使用以下RDF语法进行重述。
_:s1  rdf:type       rdf:Statement.
_:s1  rdf:subject    music:Symph3.
_:s1  rdf:predicate  music:dedicatedTo.
_:s1  rdf:object     music:Napoleon.

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