4

我正在查看 Freebase 数据转储中包含的一些三元组,其中一些日期时间如下所示:

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

一些三联商店可以摄取,但其他人不能摄取。

那么,这是一个有效的日期时间吗?如果是这样,为什么它有效?

4

2 回答 2

7

它不是一个有效的 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的词法到值的映射应用于词法形式的结果。
    • 湾。否则,文字是错误类型的,并且没有文字值可以与文字相关联。这种情况会产生语义上的不一致,但在句法上并不是错误的。实现必须接受错误类型的文字并从中生成 RDF 图。遇到错误类型的文字时,实现可能会产生警告。
  3. 如果文字的数据类型 IRI 不在可识别的数据类型 IRI 集合中,则此规范未定义文字值。

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

于 2014-08-06T19:45:34.617 回答
4

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

RDF 文字由一个词法值 - the T12:00- 和一个可选的数据类型/语言说明符组成。在您的情况下,它具有可选数据类型xsd:dateTime

因此,您在商店之间看到的行为差异取决于商店是否对字面量的词法形式强制执行数据类型限制,即它们是否要求数据类型的词法值与XML Schema Part 2: Datatypesxsd:中规定的规则相匹配

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

于 2014-08-07T07:31:59.610 回答