rdf:Bag、rdf:Seq和rdf:Alt在使用它们时有何不同?

rdf:Bag、rdf:Seq和rdf:Alt在使用它们时有何不同?,rdf,semantic-web,w3c,rdfs,Rdf,Semantic Web,W3c,Rdfs,我正在阅读该建议,其中包括以下内容(重点补充): rdf:Bag类是rdf“Bag”容器类。这是一个 rdfs的子类:容器虽然在形式上与 对于rdf:Seq或rdf:Alt,rdf:Bag类通常用于 向人类读者指示容器的用途 无序。 5.1.3 rdf:序号 rdf:Seq类是rdf“Sequence”容器的类。这是一个 rdfs的子类:容器虽然在形式上与 对于rdf:Bag或rdf:Alt,rdf:Seq类通常用于 向人类读者指出 容器的容器成员资格属性旨在 重要。 5.1.4 rdf:Alt

我正在阅读该建议,其中包括以下内容(重点补充):

rdf:Bag类是rdf“Bag”容器类。这是一个 rdfs的子类:容器虽然在形式上与 对于rdf:Seq或rdf:Alt,rdf:Bag类通常用于 向人类读者指示容器的用途 无序。

5.1.3 rdf:序号 rdf:Seq类是rdf“Sequence”容器的类。这是一个 rdfs的子类:容器虽然在形式上与 对于rdf:Bag或rdf:Alt,rdf:Seq类通常用于 向人类读者指出 容器的容器成员资格属性旨在 重要。

5.1.4 rdf:Alt Alt类是rdf“可选”容器的类。它是 rdfs的一个子类:容器虽然正式,但也不例外 从rdf:Seq或rdf:Bag中,使用rdf:Alt类 通常向人类读者表明典型的处理过程 将选择容器的一个成员。第一 容器的成员,即rdf:_1属性的值,是 默认选择。

我试着理解每一行的最后一行(以粗体显示)。谷歌也很好地理解了这一点。但无法了解他们想要如何在人/逻辑层面区分所有3个容器。以及如何在rdf:Seq中维护订单

为了理解顺序,我还尝试使用rdf解析器从rdf文件中读取它们,如下所示:


http://eresources.nlb.gov.sg/ID/NLBDM/resource/c85a5e82-b357-4168-a31e-1c8fd7f46101
http://eresources.nlb.gov.sg/ID/NLBDM/vocab/tqS1cM1h
http://eresources.nlb.gov.sg/ID/NLBDM/vocab/rQhlIgDw
http://eresources.nlb.gov.sg/ID/NLBDM/vocab/AaNRoEP6
使用rdf:Bag或rdf:Seq或rdf:Alt,它们都为rdf:li

例如:www.w3.org/1999/02/22 rdf语法ns#u1、www.w3.org/1999/02/22 rdf语法ns#u2、www.w3.org/1999/02/22 rdf语法ns#u3等等


我想通过一个清晰的例子来理解如何在不同的场景中不同地使用这些容器,以及维护rdf:Seq订单的特殊之处。

规范还说明:

容器词汇表上没有特殊的语义条件: RDF假定其容器具有的唯一结构是什么 可以从这个词汇表和一般RDF的使用中推断出来 语义条件。这相当于知道容器的类型, 以及对容器中的项目进行部分枚举。这个 预期使用模式是将rdf:Bag类型的物品视为 无序,但允许重复;rdf类型的事物:Seq是 被认为是有序的,rdf:Alt类型的东西被认为是有序的 表示备选方案的集合,可能带有偏好 订购。如果容器是有序类型,则 容器中的物品应以数字表示 容器成员属性的排序,假定为 必须是单值的。然而,这些非正式条件没有得到反映 在任何正式的RDF蕴涵中

使用rdf:Bag或rdf:Seq或rdf:Alt都给出相同的结果 rdf:li的已订购URI

例如。 www.w3.org/1999/02/22 rdf syntax ns#u 1、www.w3.org/1999/02/22 rdf syntax ns#u 2、www.w3.org/1999/02/22 rdf syntax ns#u 3 等等

是的,这些容器之间没有正式的区别。请注意,rdf:li不是rdf属性。它是RDF/XML序列化中使用的一个特殊URI,当从RDF/XML文档中提取三元组时,它们实际上使用RDF:\ n属性,即RDF属性。您将获得相同的rdf:_n属性序列,因为这是它们在rdf/XML文档中出现的顺序

对于Bag,顺序无关紧要这一事实意味着您忽略了rdf:_i中i的特定值,而只是将它们都视为成员。对于Seq,顺序确实很重要,因此您应该注意rdf中i的值:_i。顺序在Alt中可能很重要;这将取决于应用程序

我想用清楚的例子来理解如何使用这些 容器在不同的场景中会有所不同,它们的特殊之处是什么 维护rdf的订单:Seq

区别在于消费者打算如何处理数据。实际数据实际上没有改变,但目的是:

  • 如果你看到一个袋子,你就把它当作一个数学集合。它有一堆元素,没有特殊的顺序。当然,当它写在RDF/XML文件中时,元素必须按一定顺序写入,但这只是偶然的
  • 如果您看到一个Alt,那么意图是它是一个项目的集合,但是您实际上只需要其中一个项目,并且可能有也可能没有订单。例如,如果某人喜欢红色和蓝色,但不喜欢黄色或橙色,并且您需要知道为他们选择什么颜色的衬衫,您可以从只包含红色和蓝色的alt中选择任意颜色
  • 如果您看到一个seq,那么排序很重要
现在想象一下,我们使用的不是RDF,而是一种带有数组的编程语言。我可以使用数组来表示所有这些结构。区别在于使用者对数组的操作。不过,从形式上讲,它们都只是数组

尽管如此,人们似乎并没有太多地使用这些收藏。它们没有明确的语义,因此也没有明确的用例。如果你需要它们,你可以使用它们,但是工具通常不会对它们做任何特殊的处理;你可能想考虑其他替代品。