【问题标题】:is this a valid xsd:dateTime? if so, why?这是一个有效的 xsd:dateTime 吗?如果是这样,为什么?
【发布时间】:2014-09-29 16:30:33
【问题描述】:

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

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

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

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

【问题讨论】:

标签: datetime xsd sparql freebase triples


【解决方案1】:

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

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

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

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

然而,正如RobV pointed out 一样,RDF 文字术语在语法上仍然有效,即使词法形式不在数据类型的词法空间中。在RDF 1.1 Concepts and Abstract Syntax,我们有这个(注2.b):

3.3 Literals

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

  • 一个词法形式,是一个Unicode字符串,应该是Normal Form C,
  • 一个datatype 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 的词法空间中,那么字面量值就是应用 lexical-to-value 的结果 d 到词法形式的映射。
    • 乙。否则,文字是错误类型的,并且没有文字值可以与文字相关联。这种情况会产生语义 不一致,但不是句法上格式错误。实现 必须接受错误类型的文字并从中生成 RDF 图。 遇到错误类型时,实现可能会产生警告 字面量。
  3. 如果文字的数据类型 IRI 不在可识别的数据类型 IRI 集合中,则文字值不是由此定义的 规范。

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

【讨论】:

  • 感谢@JoshuaTaylor。在其他新闻中,该死的,你今年获得了很多积分。 =D
【解决方案2】:

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

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

因此,您在商店之间看到的行为差异取决于商店是否对文字的词法形式强制执行数据类型限制,即它们是否要求 xsd: 数据类型的词法值与 @ 中列出的规则相匹配987654321@

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

【讨论】:

  • 非常好!强制字面量具有合法词汇形式的商店也很有趣。请注意,3.3 Literals in RDF 1.1 表示“如果文字的数据类型 IRI 在可识别的数据类型 IRI 的集合中,……[如果词法形式不在词法空间中,则] 文字是错误类型的并且……
  • … 没有文字值可以与文字相关联。这种情况会产生语义上的不一致,但在句法上并不是错误的。实现必须接受错误类型的文字并从中生成 RDF 图。当遇到类型错误的文字时,实现可能会产生警告。”
  • 所以,它在语法上绝对是有效的;我不确定三重商店是否被视为“实现”。我猜 RDF 解析器必须处理它们以使其符合,但如果存储不是“实现”,则可以声明它不允许语义上不一致的字面术语。
猜你喜欢
  • 2017-06-04
  • 2016-04-01
  • 2021-08-26
  • 2021-04-06
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多