这是有效的xsd:dateTime吗?如果是,为什么呢?



我正在查看Freebase数据转储中包含的一些三元组,其中一些日期时间看起来像这样:

"T12:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>

可以被某些三元体吸收,但不能被其他三元体吸收。

那么,这是有效的dateTime吗?如果是,为什么它是有效的?

它不是一个有效的xsd:dateTime,但它是一个语法上有效的RDF文字术语,但是在语义上不一致。

首先,让我们看看为什么T12:00不在xsd:dateTime的词法空间中。标准的xsd:dateTime表示:

dateTime的词法空间由的有限长度序列组成'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?

形式的字符

T12:00匹配其中的一部分,但缺少年、月、日和第二部分。

然而,正如RobV指出的那样,即使词法形式不在数据类型的词法空间中,RDF文字术语在语法上仍然是有效的。在RDF 1.1概念和抽象语法中,我们有这个(注释2.b):

3.3文字

RDF图中的文字由两个或三个元素组成:

  • 一个词法形式,是一个Unicode字符串,应该是标准形式C,
  • 一个数据类型IRI,作为一个IRI,用于标识确定词法形式如何映射到文字值的数据类型,并且
  • 当且仅当数据类型IRI为http://www.w3.org/1999/02/22-rdf-syntax-ns#langString,非空由[BCP47]定义的语言标签。语言标签必须是
  • 符合[BCP47]第2.2.9节。
字面值与字面值相关联的是:
  1. 如果文字是一个带有语言标记的字符串,那么文字值是由它的词法形式和它的语言标记组成的一对秩序。
  2. 如果字面值的数据类型IRI在可识别的数据类型IRI集合中,则设d为数据类型IRI的引用。
    • 。如果字面值的词法形式在d的词法空间中,则该字面值是应用词法到值的结果d映射到词汇形式。
    • b。否则,字面值是错误类型的,并且不能与字面值关联任何字面值值。这种情况产生语义不一致,但在语法上不是病态的。实现必须接受错误类型的文字并从中生成RDF图。实现可能在遇到错误类型时产生警告文字。
  3. 如果文本的数据类型IRI不在可识别的数据类型IRI集合中,则该文本值不是由此定义的规范。

因此,"T12:00"^^<http://www.w3.org/2001/XMLSchema#dateTime>是一个RDF文字术语,但它在语义上是不一致的。仅这一点并不能使Freebase转储的RDF无效。实现必须处理它并从中创建RDF图,但可以对它发出警告。这意味着RDF解析器必须能够处理它。我不确定三重存储是否算作"实现"。如果是,那么它应该存储结果值。如果不是,那么我想它只存储只有语义一致的文字的RDF图是可以的。

正如Joshua所说,它不是有效的xsd:dateTime但它仍然是有效的RDF文字

一个RDF文字由一个词法值(T12:00)和一个可选的数据类型/语言说明符组成。在您的示例中,它具有可选的数据类型xsd:dateTime

不同存储之间的行为差异取决于存储是否对字面量的词法形式实施数据类型限制即是否要求xsd:数据类型的词法值符合XML Schema第2部分:数据类型

中规定的规则

强制执行此操作的存储将只允许有效值,而那些不允许混合或有效和无效值的存储将只允许有效值。一些严格的存储可能有允许无效值的选项,在这种情况下,请与您的供应商/社区检查是否存在这种情况。

相关内容

最新更新