【问题标题】:How are OWL defined datatypes intended to be used?OWL 定义的数据类型打算如何使用?
【发布时间】:2021-03-29 18:27:50
【问题描述】:

OWL 2 Web Ontology Language Structural Specification 的9.4 Datatype Definitions 部分展示了如何定义自定义数据类型,并给出以下示例:

a:SSN rdf:type rdfs:Datatype .

a:SSN owl:equivalentClass [
  rdf:type rdfs:Datatype ;
  owl:onDatatype xsd:string ;
  owl:withRestrictions (
    [ xsd:pattern "[0-9]{3}-[0-9]{2}-[0-9]{4}" ]
  )
] .

a:hasSSN rdfs:range a:SSN .

因此,我们在这里通过xsd:pattern facet 限制xsd:string 数据类型来定义一个新的数据类型a:SSN。到目前为止一切顺利。

但是规范说明了一些我不明白的内容:

由数据类型定义公理定义的数据类型......具有空的词法空间,因此它们不得出现在文字中。

为什么a:SSN 在这里有一个空的词法空间?它是通过xsd:pattern facet 约束xsd:string 的值空间来定义的。 XSD 1.1 第 2 部分的 4.3.4 pattern 部分:数据类型说明了这一点

... pattern 是对数据类型的·值空间· 的约束,通过将·词汇空间· 约束为匹配一组·正则表达式· 的每个成员的·文字空间来实现.

所以我们限制了xsd:string 的值空间,但是我们通过将xsd:string (the set of finite-length sequences of zero or more characters … that ·match· the Char production from XML) 的词法空间限制为与正则表达式匹配的文字来做到这一点。那么为什么 OWL 规范说 a:SSN 的词法空间是空的,而不是匹配正则表达式 [0-9]{3}-[0-9]{2}-[0-9]{4} 的零个或多个字符(如 XML 中定义)的有限长度序列集?

OWL 规范更务实地说

... 不能有数据类型为 a:SSN 的文字。

那么这是否意味着a:SSN不能如下使用?

a:Jane a:hasSSN "123-45-6789"^^a:SSN .

如果是这样,应该如何使用a:SSN 数据类型?是应该写的想法吗

a:Jane a:hasSSN "123-45-6789"^^xsd:string .

并从a:hasSSN 的声明范围推断实际数据类型是什么,从而推断值是否有效?

【问题讨论】:

    标签: xml xsd owl


    【解决方案1】:

    为什么a:SSN 在这里有一个空的词法空间?

    众所周知,数据类型和文字值在符号推理中难以处理。当您有符号逻辑时,例如一阶逻辑或描述逻辑,符号表示 arbitrary 集合中的 arbitrary 元素的事物。您无需知道符号表示什么即可执行正确和完整的推理(例如,http://dbpedia.org/resource/France 可能表示任何东西,就推理者而言,不可能约束此 IRI 以表示 FOL 或 DL 中的特定事物)。

    对于文字,这是一个完全不同的故事,因为它们是量化的。它们表示特定集合中的特定值。例如"10"^^xsd:integer 表示数字“十”,仅此而已。这对推理者很重要,因为它必须了解这与 "10"^^xsd:string 所表示的不同,但与 "10.0"^^xsd:decimal 所表示的相同。这意味着无论您如何实现推理器,都必须有一部分代码专门用于处理数据类型为 IRI xsd:integer 的文字。由于这个专用代码,OWL 推理器能够推断:

    <s> <o> "10"^^xsd:int .
    

    来自:

    <s> <o> "10.0"^^xsd:decimal .
    

    如果一个本体可以引入可用于文字的新数据类型 IRI,那么您就没有专门针对这些类型的文字的专用代码。现在,考虑以下几点:

    ex:one  a  rdfs:Datatype;
      owl:equivalentClass  [
        a  rdfs:Datatype ;
        owl:onDatatype  xsd:positiveInteger ;
        owl:withRestrictions ( [ xsd:maxInclusive 1 ] )
      ] .
    

    那么,在给定这个数据类型定义的情况下,以下是否应该是格式良好的文字?

    "1.0"^^ex:one
    

    你看,"1.0"xsd:decimal 的词法空间中,并映射到此数据类型中的数值“one”。值“one”也是xsd:positiveInteger 值空间的一部分,但"1.0" 不是xsd:positiveInteger 的有效词法形式。您可能会争辩说ex:one 只能使用xsd:positiveInteger 的词汇形式,因为它被定义为对它的限制。但问题是你有一个语义描述(一个本体),它定义了一个句法约束(允许你用特定的数据类型 IRI 编写文字的方式)。逻辑学家知道,允许人们用语义来约束句法的逻辑是邪恶的。

    由于 OWL 2 规范中 ex:one 的词法空间为空,因此可以说 ex:oneex:oneD 的数据类型相同,定义如下:

    ex:oneD  a  rdfs:Datatype;
      owl:equivalentClass  [
        a  rdfs:Datatype ;
        owl:onDatatype  xsd:decimal ;
        owl:withRestrictions ( [ xsd:minInclusive 1 ] [ xsd:maxInclusive 1 ] )
      ] .
    

    还有一点,不过:我在这里所说的只有当您考虑OWL 2 Direct Semantics 时才有效。如果您考虑OWL 2 RDF-based semantics,那么还有其他事情需要考虑。特别是在基于 RDF 的语义中,ex:one 不一定与ex:oneD 相同。它们可能是恰好具有相同值空间的不同数据类型。

    关于您的其他问题:

    那么为什么 OWL 规范说 a:SSN 的词法空间是空的,而不是匹配正则表达式 [0-9]{3}-[0-9]{2}-[0-9]{4} 的零个或多个字符(如 XML 中定义)的有限长度序列集?

    在这里,您正在考虑xsd:string 数据类型,其中值空间和词法空间是相同的。词法到值的映射是身份。所以看起来有一种简单的方法可以让数据类型 IRI 用于文字。但请考虑一下我之前向您展示的更广泛的问题。

    那么这是否意味着a:SSN不能如下使用?

    没错。

    如果是这样,应该如何使用a:SSN 数据类型?

    您可以使用以这种方式定义的数据类型作为属性的范围,例如,或在allValuesFromsomeValuesFrom 限制中。但是,当涉及到附加到实例的具体值时,您必须使用 OWL 2 推理器本机支持的数据类型,正如您在上一个代码 sn-p 中所建议的那样。

    【讨论】:

      【解决方案2】:

      在我看来,a:SSN 在示例中的词法空间为空,因为它本身不是“与正则表达式 [0-9] 匹配的零个或多个字符的有限长度序列集{3 }-[0-9]{2}-[0-9]{4}。”相反,这是a:SSN 的定义。定义本身是通过限制 not 具有空词法空间的数据类型 (xsd:string) 做出的,这就是您引用的模式部分适用的原因。也就是说,该示例使用模式来约束具有非空词法空间的数据类型,以定义具有空词法空间的数据类型。因此,由于“不能有数据类型为 a:SSN 的文字”,您将不得不通过使用 a:hasSSN 或断言 "123-45-6789"^^xsd:stringa:SSN 的实例来推断 "123-45-6789"^^xsd:string 是 SSN .

      【讨论】:

      • 我不确定您所说的“……它本身不是”一组与正则表达式 [0-9] 匹配的零个或多个字符的有限长度序列{3} -[0-9]{2}-[0-9]{4}.'” 如果数据类型由值空间、词法空间和构面组成,我可以理解为什么 a:SSN 的值空间可能是此处未定义。我可以理解为什么它没有刻面。但似乎为a:SSN 定义的词汇空间与为xsd:string 定义的一样多。
      • 如何断言"123-45-6789"^^xsd:stringa:SSN 的一个实例而不是通过类型化文字?
      • 在回答第一个问题时(我希望——这也让我感到困惑),a:SSN 的词汇空间尚未定义。相反,xsd:stringa:SSN 中的词法空间是在DatatypeRestriction 中定义的。至于第二个问题,你不能这样做吗:ClassAssertion ( a:SSN a:123-45-6789 )?我不确定为什么要这样做,因为a:hasSSN 足以推断出文字“123-45-6789”是 SSN。
      • 我认为这意味着“新数据类型的值空间由属于受限数据类型的词法空间的词法值表示。”我不确定这种区别在大多数用例中是否重要。
      • Ignazio 更优雅地说出了我想说的话。
      【解决方案3】:

      但是,当涉及到附加到实例的具体值时,您必须使用 OWL 2 推理器本机支持的数据类型,正如您在上一个代码 sn-p 中所建议的那样。

      还可以为您的应用程序增强推理器的功能。但不要期望这些功能在“通用”OWL 推理器处理数据时可用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-19
        • 1970-01-01
        • 2017-06-23
        • 2016-02-01
        • 2017-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多