在理解 RDF 三重语句的上下文中如何使用空白节点?
How are blank nodes used in the context of understanding RDF triple statements?
我理解 RDF 中的 named node
是一个有名称的节点(即可以通过 IRI 识别),而 blank node
是一个没有命名的节点(即未通过 IRI 描述)。
在 RDF 中节点表示资源是否正确?在这种情况下,命名节点和空白节点都将被视为资源。
查看 RDF 模式时,我看到许多 XML 标记似乎代表节点(空白和命名)。例如:
<rdf:Description rdf:about="http://.../SomeObject">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="http://.../OtherClass"/>
<rdfs:subClassOf rdf:nodeID="node1e2d5tndrx143"/>
</rdf:Description>
和
<rdf:Description rdf:nodeID="node1e2d5tndrx60">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
<owl:oneOf rdf:nodeID="node1e2d5tndrx61"/>
</rdf:Description>
(因为这个节点引用了另一个空白节点)
<rdf:Description rdf:nodeID="node1e2d5tndrx61">
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"/>
<rdf:first>1</rdf:first>
<rdf:rest rdf:nodeID="node1e2d5tndrx62"/>
</rdf:Description>
在我看来,这个特定 API 端点的可用资源包括这三个节点,其中一个名为 http://www.w3.org/2001/XMLSchema#float
,其中两个为空白(node1e2d5tndrx60
, node1e2d5tndrx61
)
这个 link - https://lists.w3.org/Archives/Public/public-esw-thes/2004Nov/0061.html - 似乎是关于 rdf:about
vs rdf:ID
vs rdf:nodeID
的旧 w3.org 提到空白节点通过 rdf:nodeID
属性指示。
如果这两个节点在这个特定的 API 端点都是 'resources'(我假设它们是 - 如果不正确请告诉我),据我所知我永远无法查询直接是空白节点,但在这个特定的 RDF 文档中,空白节点用于限制指定 hasObjectClass
[的三元组允许的对象(通过 rdf:range
属性) =84=]:
<rdf:Description rdf:about="http://.../hasSomeObjectClass">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:label>Some Object Class</rdfs:label>
<rdfs:domain rdf:resource="http://..../SomeObject"/>
<rdfs:range rdf:nodeID="node1e2d5tndrx60"/>
</rdf:Description>
我的理解是使用 :hasSomeObjectClass 谓词 (<subj> <pred> <obj>
) 的三元组将:
- Include/can 仅包括
rdf:type
"SomeObject" 的主题
- Include/can 仅包含空白节点
node1e2d5tndrx60
的 'subtyped' 对象
最后,在空白节点 node1e2d5tndrx60
中,我看到有一个 owl
约束 - 任何允许的对象都可以被视为列表的一部分。大概是共享特定 class?
的对象列表
问题
查看 hasSomeObjectClass
资源的域 属性,我可以找到:
- 代表
SomeObject
class 的节点
- 许多节点具有
rdfs:subClassOf
属性 并且引用 SomeObject
作为资源
因此,就如何解析谓词指定此类域的三重规范而言,我从概念上理解它是如何 enforced/resolved。
但是我看不到空白节点之间的 link 和范围约束如何 enforced/resolved。 是否容易从概念层面解释如何使用空白节点来解析指定的三元组?
我对关联数据的世界非常非常陌生。请让我知道如何改进这个问题!
空白节点标识符是本地标识符,不是 IRI。空白节点与 RDF 规范中的 IRI 和文字 as defined 不相交。
空白节点的一些流行应用是:
- 描述多组件结构,例如列表或三元组分组,例如当三元组中的一个对象是地址时,它不是用 IRI 标识的,而是用一组描述它的三元组标识的。
locn:address [
rdf:type locn:Address ;
locn:addressArea "Amsterdam"@en ;
locn:fullAddress "Oudekerksplein 23"@en ;
locn:postCode "1012 GX" .
] .
这是最流行的表示空白节点的方式,但也可以显示它们:
ex:AdddressDeOudeKerk locn:address _:b1 .
_:b1 rdf:type locn:Address .
_:b1 locn:addressArea "Amsterdam"@en .
_:b1 locn:fullAddress "Oudekerksplein 23"@en .
_:b1 locn:postCode "1012 GX" .
关于陈述的陈述
2.1。具体化
2.2。替代方法,例如维基数据中使用的方法。
例如,在这个查询中
SELECT ?president ?presidentLabel ?image ?start
WHERE {
?president wdt:P31 wd:Q5 ;
p:P39 [ ps:P39 wd:Q11696;
pq:P580 ?start ];
wdt:P18 ?image .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
p:P39
是 语句 "position held" 的 属性,而 ps:P39
是 value "position held" 空格不是这样的语句,它是三元组模式 ?president p:P39 ?statement
for which ?statement ps:P39 wd:Q11696
and ?statement pq:P580 ?start
and 的值(对象)要求语句的特定特征,在本例中为 "start time"(带有限定符 pq:P580
)
- OWL 中的匿名 类
示例:
:Vegetarian rdf:type owl:Class ;
owl:equivalentClass [ rdf:type owl:Restriction ;
owl:onProperty :eats ;
owl:allValuesFrom :Vegetable
] .
- SHACL 中的形状
示例:
:Contract
rdf:type sh:NodeShape ;
sh:property [
rdf:type sh:PropertyShape ;
sh:path :hasParty ;
sh:minCount 2 ;
sh:name "has party" ;
] ;
sh:targetSubjectsOf :hasParty ;
.
我理解 RDF 中的 named node
是一个有名称的节点(即可以通过 IRI 识别),而 blank node
是一个没有命名的节点(即未通过 IRI 描述)。
在 RDF 中节点表示资源是否正确?在这种情况下,命名节点和空白节点都将被视为资源。
查看 RDF 模式时,我看到许多 XML 标记似乎代表节点(空白和命名)。例如:
<rdf:Description rdf:about="http://.../SomeObject">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="http://.../OtherClass"/>
<rdfs:subClassOf rdf:nodeID="node1e2d5tndrx143"/>
</rdf:Description>
和
<rdf:Description rdf:nodeID="node1e2d5tndrx60">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Datatype"/>
<owl:oneOf rdf:nodeID="node1e2d5tndrx61"/>
</rdf:Description>
(因为这个节点引用了另一个空白节点)
<rdf:Description rdf:nodeID="node1e2d5tndrx61">
<rdf:type rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#List"/>
<rdf:first>1</rdf:first>
<rdf:rest rdf:nodeID="node1e2d5tndrx62"/>
</rdf:Description>
在我看来,这个特定 API 端点的可用资源包括这三个节点,其中一个名为 http://www.w3.org/2001/XMLSchema#float
,其中两个为空白(node1e2d5tndrx60
, node1e2d5tndrx61
)
这个 link - https://lists.w3.org/Archives/Public/public-esw-thes/2004Nov/0061.html - 似乎是关于 rdf:about
vs rdf:ID
vs rdf:nodeID
的旧 w3.org 提到空白节点通过 rdf:nodeID
属性指示。
如果这两个节点在这个特定的 API 端点都是 'resources'(我假设它们是 - 如果不正确请告诉我),据我所知我永远无法查询直接是空白节点,但在这个特定的 RDF 文档中,空白节点用于限制指定 hasObjectClass
[的三元组允许的对象(通过 rdf:range
属性) =84=]:
<rdf:Description rdf:about="http://.../hasSomeObjectClass">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#FunctionalProperty"/>
<rdfs:label>Some Object Class</rdfs:label>
<rdfs:domain rdf:resource="http://..../SomeObject"/>
<rdfs:range rdf:nodeID="node1e2d5tndrx60"/>
</rdf:Description>
我的理解是使用 :hasSomeObjectClass 谓词 (<subj> <pred> <obj>
) 的三元组将:
- Include/can 仅包括
rdf:type
"SomeObject" 的主题
- Include/can 仅包含空白节点
node1e2d5tndrx60
的 'subtyped' 对象
最后,在空白节点 node1e2d5tndrx60
中,我看到有一个 owl
约束 - 任何允许的对象都可以被视为列表的一部分。大概是共享特定 class?
问题
查看 hasSomeObjectClass
资源的域 属性,我可以找到:
- 代表
SomeObject
class 的节点
- 许多节点具有
rdfs:subClassOf
属性 并且引用SomeObject
作为资源
因此,就如何解析谓词指定此类域的三重规范而言,我从概念上理解它是如何 enforced/resolved。
但是我看不到空白节点之间的 link 和范围约束如何 enforced/resolved。 是否容易从概念层面解释如何使用空白节点来解析指定的三元组?
我对关联数据的世界非常非常陌生。请让我知道如何改进这个问题!
空白节点标识符是本地标识符,不是 IRI。空白节点与 RDF 规范中的 IRI 和文字 as defined 不相交。
空白节点的一些流行应用是:
- 描述多组件结构,例如列表或三元组分组,例如当三元组中的一个对象是地址时,它不是用 IRI 标识的,而是用一组描述它的三元组标识的。
locn:address [
rdf:type locn:Address ;
locn:addressArea "Amsterdam"@en ;
locn:fullAddress "Oudekerksplein 23"@en ;
locn:postCode "1012 GX" .
] .
这是最流行的表示空白节点的方式,但也可以显示它们:
ex:AdddressDeOudeKerk locn:address _:b1 .
_:b1 rdf:type locn:Address .
_:b1 locn:addressArea "Amsterdam"@en .
_:b1 locn:fullAddress "Oudekerksplein 23"@en .
_:b1 locn:postCode "1012 GX" .
关于陈述的陈述
2.1。具体化
2.2。替代方法,例如维基数据中使用的方法。
例如,在这个查询中
SELECT ?president ?presidentLabel ?image ?start
WHERE {
?president wdt:P31 wd:Q5 ;
p:P39 [ ps:P39 wd:Q11696;
pq:P580 ?start ];
wdt:P18 ?image .
SERVICE wikibase:label {
bd:serviceParam wikibase:language "en" .
}
}
p:P39
是 语句 "position held" 的 属性,而 ps:P39
是 value "position held" 空格不是这样的语句,它是三元组模式 ?president p:P39 ?statement
for which ?statement ps:P39 wd:Q11696
and ?statement pq:P580 ?start
and 的值(对象)要求语句的特定特征,在本例中为 "start time"(带有限定符 pq:P580
)
- OWL 中的匿名 类 示例:
:Vegetarian rdf:type owl:Class ;
owl:equivalentClass [ rdf:type owl:Restriction ;
owl:onProperty :eats ;
owl:allValuesFrom :Vegetable
] .
- SHACL 中的形状 示例:
:Contract
rdf:type sh:NodeShape ;
sh:property [
rdf:type sh:PropertyShape ;
sh:path :hasParty ;
sh:minCount 2 ;
sh:name "has party" ;
] ;
sh:targetSubjectsOf :hasParty ;
.