gpt4 book ai didi

xml - 如何使用 OWL 定义的数据类型?

转载 作者:行者123 更新时间:2023-12-03 18:51:25 27 4
gpt4 key购买 nike

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

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 .
所以在这里我们定义了一个新的数据类型 a:SSN通过限制 xsd:string数据类型通过 xsd:pattern方面。到现在为止还挺好。
但是规范说了一些我不明白的事情:

The datatypes defined by datatype definition axioms … have empty lexical spaces and therefore they must not occur in literals.


为什么会 a:SSN这里有一个空的词法空间?它是通过约束 xsd:string 的值空间来定义的。通过 xsd:pattern方面。栏目 4.3.4 pattern XSD 1.1 Part 2: Datatypes 说

pattern is a constraint on the ·value space· of a datatype which is achieved by constraining the ·lexical space· to ·literals· which match each member of a set of ·regular expressions·.


所以我们限制了 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 规范说

… there can be no literals of datatype 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 的声明范围推断实际数据类型是什么,因此值是否有效?

最佳答案

Why would a:SSN have an empty lexical space here?


众所周知,数据类型和文字值在符号推理中很难处理。当您拥有符号逻辑(例如一阶逻辑或描述逻辑)时,符号表示任意集合中的任意元素。你不需要知道符号代表什么来执行正确和完整的推理(例如, 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 相同.它们可能是恰好具有相同值空间的不同数据类型。
关于您的其他问题:

So why does the OWL spec say that the lexical space of a:SSN is empty, rather than the the set of finite-length sequences of zero or more characters (as defined in XML) that match the regular expression [0-9]{3}-[0-9]{2}-[0-9]{4}?


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

So does that mean that a:SSN cannot be used as follows?


确切地。

If so, how is one supposed to use the a:SSN datatype?


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

关于xml - 如何使用 OWL 定义的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66859624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com