当对象是 bNode 时,rdf 具体化如何工作?
How does rdf reification work when the object is a bNode?
RDF 具体化非常简单,只要主语、谓语和宾语是 IRI(或对象是文字)。但是当对象是一个空白节点(bNode)时,rdf:Statement 是什么样子的呢?
一个例子("I saw a man in a dirty raincoat"):
ex:I ex:saw [
a ex:Man ;
ex:wore ex:dirtyRaincoat ];
我可以想象两种情况:
1)对象中只有bNode标识符(要求我知道它是什么或者我自己创建一个。
[ a rdf:Statement ;
rdf:subject ex:I ;
rdf:predicate ex:saw ;
rdf:object _:b1 ] .
_:b1 a ex:Man ;
ex:wore ex:dirtyRaincoat .
2) 把所有的bNode放到rdf:object
的object位置:
[ a rdf:Statement ;
rdf:subject ex:I ;
rdf:predicate ex:saw ;
rdf:object [
a ex:Man ;
ex:wore ex:dirtyRaincoat .
] ] .
没有区别:您的两个场景实际上是完全相同的模型。您在第二种情况下使用的方括号符号只是一种语法快捷方式,您可以将其用于具有多个属性的空白节点。所以它是 Turtle 中的语法变体,但它们是相同的 RDF 模型。
RDF 具体化非常简单,只要主语、谓语和宾语是 IRI(或对象是文字)。但是当对象是一个空白节点(bNode)时,rdf:Statement 是什么样子的呢? 一个例子("I saw a man in a dirty raincoat"):
ex:I ex:saw [
a ex:Man ;
ex:wore ex:dirtyRaincoat ];
我可以想象两种情况: 1)对象中只有bNode标识符(要求我知道它是什么或者我自己创建一个。
[ a rdf:Statement ;
rdf:subject ex:I ;
rdf:predicate ex:saw ;
rdf:object _:b1 ] .
_:b1 a ex:Man ;
ex:wore ex:dirtyRaincoat .
2) 把所有的bNode放到rdf:object
的object位置:
[ a rdf:Statement ;
rdf:subject ex:I ;
rdf:predicate ex:saw ;
rdf:object [
a ex:Man ;
ex:wore ex:dirtyRaincoat .
] ] .
没有区别:您的两个场景实际上是完全相同的模型。您在第二种情况下使用的方括号符号只是一种语法快捷方式,您可以将其用于具有多个属性的空白节点。所以它是 Turtle 中的语法变体,但它们是相同的 RDF 模型。