【问题标题】:How are blank nodes used in the context of understanding RDF triple statements?在理解 RDF 三元组语句的上下文中如何使用空白节点?
【发布时间】:2023-03-06 18:22:01
【问题描述】:

我了解 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,其中两个是空白的(node1e2d5tndrx60node1e2d5tndrx61

此链接 - https://lists.w3.org/Archives/Public/public-esw-thes/2004Nov/0061.html - 似乎是关于 rdf:aboutrdf:IDrdf:nodeID 主题的旧 w3.org 提到通过 rdf:nodeID 属性指示空白节点。

如果这两个节点都是此特定 API 端点的“资源”(我假设它们是 - 如果不正确,请告诉我),据我所知,我永远无法直接查询空白节点,但在在这个特定的 RDF 文档中,空白节点用于限制允许哪些对象(通过 rdf:range 属性)用于指定 hasObjectClass 属性/谓词的三元组:

<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 谓词 (&lt;subj&gt; &lt;pred&gt; &lt;obj&gt;) 的三元组将:

  1. 包括/只能包括属于rdf:type“SomeObject”的主题
  2. 包括/只能包括空白节点node1e2d5tndrx60的“子类型”对象

最后,在空白节点node1e2d5tndrx60 中,我看到有一个owl 约束——任何允许的对象都可以被视为列表的一部分。大概是共享特定类的对象列表?

问题

查看hasSomeObjectClass资源的域属性,我可以找到:

  1. 代表SomeObject 类的节点
  2. 许多具有rdfs:subClassOf 属性并将SomeObject 引用为资源的节点

因此,就如何解析三重规范(其中谓词指定此类型的域)而言,我从概念上理解如何强制/解决它。

但是,我看不到空白节点与如何强制/解决范围约束之间的联系。 在概念层面上解释如何使用空白节点来解析指定的三元组是否容易?

我对关联数据的世界非常非常陌生。请让我知道如何改进这个问题!

【问题讨论】:

  • 将空白节点视为存在变量。此外,如果是复杂的 OWL 公理,则在 RDF 列表和 RDF 序列化中使用空白节点。
  • 什么是“存在变量”?
  • 存在变量是一阶逻辑公式中用符号∃存在量化的变量,例如在FOL公式∃x P(x)中,变量x是存在变量。它们表明事物的存在。同样,在 RDF 图中,空白节点表示事物的存在。

标签: rdf rdfs blank-nodes


【解决方案1】:

空白节点标识符是本地标识符,而不是 IRI。空白节点与 RDF 规范中的 IRI 和文字 as defined 不相交。

空白节点的几个流行应用是:

  1. 描述多组件结构,例如列表或三元组的分组,例如三元组的对象是地址的情况,它不是用 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" .
  1. 关于陈述的陈述

    2.1。随着物化

    2.2。替代方法,例如 Wikidata 中使用的方法。

例如,在这个查询中

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:P39statement“持仓”的属性,而ps:P39value“持仓”的属性 空白不是这样的语句,这是?president p:P39 ?statement?statement ps:P39 wd:Q11696?statement pq:P580 ?start 的三元组模式的值(对象),并询问语句的特定特征,在这种情况下为“开始时间”(带有限定符pq:P580

  1. OWL 中的匿名类 示例:
:Vegetarian rdf:type owl:Class ;
        owl:equivalentClass [ rdf:type owl:Restriction ;
                              owl:onProperty :eats ;
                              owl:allValuesFrom :Vegetable
                            ] .
  1. 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 ;
.

【讨论】:

  • "空白节点是本地标识符" -> 小心,规范没有这样说。它说“空白节点标识符是本地标识符”。空白节点本身根本不是标识符。
  • 确实如此。已更正。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-07-27
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多