首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rdf:Bag,rdf:Seq和rdf:Alt在使用时有什么不同?

rdf:Bag,rdf:Seq和rdf:Alt在使用时有什么不同?
EN

Stack Overflow用户
提问于 2015-03-12 03:35:54
回答 1查看 5K关注 0票数 4

我正在阅读RDF模式1.1建议,其中包括以下内容(重点是添加的):

5.1.2 rdf:Bag rdf:Bag类是RDF‘袋’容器的类。它是rdfs:容器的子类。虽然形式上与rdf:Seq或rdf:Alt没有什么不同,但rdf:袋类通常用于向人类读者表明容器的意图是无序的。 5.1.3 rdf:Seq rdf:Seq类是RDF 'Sequence‘容器的类。它是rdfs:容器的子类。在形式上与rdf:或rdf:Alt没有什么不同,rdf:Seq类通常用于向人类读者表明容器的容器成员属性的数字排序是有意义的。 5.1.4 rdf:备选案文 rdf:Alt类是RDF 'Alternative‘容器的类。它是rdfs:容器的子类。在形式上与rdf:Seq或rdf:没有什么不同,rdf:Alt类通常用于向人类读者表示典型的处理将选择容器的一个成员。容器的第一个成员,即rdf:_1属性的值,是默认的选择.

我试着理解他们每一行的最后一行(用黑体显示)。谷歌也能很好地理解它。但是他们无法在人/逻辑级别上区分所有3个容器()。还有如何在rdf:Seq中维护订单。

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

代码语言:javascript
复制
<rdf:Alt rdf:about="http://eresources.nlb.gov.sg/ID/NLBDM/entity/XYZContainer">
     <rdf:li>http://eresources.nlb.gov.sg/ID/NLBDM/resource/c85a5e82-b357-4168-a31e-1c8fd7f46101</rdf:li>
     <rdf:li>http://eresources.nlb.gov.sg/ID/NLBDM/vocab/tqS1cM1h</rdf:li>
     <rdf:li>http://eresources.nlb.gov.sg/ID/NLBDM/vocab/rQhlIgDw</rdf:li>
     <rdf:li>http://eresources.nlb.gov.sg/ID/NLBDM/vocab/AaNRoEP6</rdf:li>
</rdf:Alt>

使用rdf:Bag或rdf:Seq或rdf:Alt,都为rdf:li提供了相同的有序Uris。

例如:Www.w3.org/1999/02/22-RDF-语法-ns#1,www.w3.org/1999/02/22-RDF-语法-ns#2,www.w3.org/1999/02/22-RDF-语法-ns#3等等

我想通过明确的例子来理解,如何在不同的场景中以不同的方式使用这些容器,以及什么是维护rdf顺序的特殊条件:Seq。

EN

回答 1

Stack Overflow用户

发布于 2015-03-12 14:48:43

规范还说:

D.2 RDF集装箱 容器词汇表没有特殊的语义条件: RDF假定容器具有的唯一结构是从使用这个词汇表和一般的RDF语义条件中可以推断出什么。这等于知道容器的类型,并对容器中的项进行部分枚举。预期的使用模式是,rdf:Bag类型的东西被认为是无序的,但允许重复的;rdf:Seq类型的东西被认为是有序的,而rdf:Alt类型的东西被认为是一组可供选择的东西,可能带有偏好排序。如果容器是有序类型的,那么容器中项的排序将由容器成员属性的数值排序来表示,这些属性假定为单值。然而,这些非正式条件没有反映在卢旺达国防军的任何正式要求中。

使用rdf:Bag或rdf:Seq或rdf:Alt,都为rdf:li提供了相同的排序Uris。 例如:Www.w3.org/1999/02/22-RDF-语法-ns#1,www.w3.org/1999/02/22-RDF-语法-ns#2,www.w3.org/1999/02/22-RDF-语法-ns#3等等

是的,这些集装箱之间没有形式上的区别。注意,rdf:li不是RDF属性。它是在RDF/XML序列化中使用的一个特殊URI,当从RDF/XML文档中提取三元组时,它们实际上使用了rdf:_n属性,即RDF属性。您可以得到相同的rdf:_n属性序列,因为这是它们在RDF/XML文档中出现的顺序。

对于Bag,订单并不重要,这意味着您忽略了rdf:_i中i的特定值,而只是将它们作为成员来处理。对于Seq,顺序确实很重要,因此您应该注意rdf:_i中I的值。order在Alt中可能很重要;它将取决于应用程序。

我想通过一个明确的例子来理解,如何在不同的场景中以不同的方式使用这些容器,以及什么是维护rdf顺序的特殊条件:Seq。

不同之处在于消费者打算如何处理数据。实际数据并没有真正改变,但目的是:

  • 如果你看到一个袋子,那么你就把它当作一个数学集合。它有很多元素,没有特殊的顺序。当然,当它被写入一个RDF/XML文件中时,元素必须按某种顺序写入,但这只是偶然的。
  • 如果您看到一个Alt,那么它的意图是,它是一个集合的项目,但你真的只需要其中之一,可能有,也可能没有订单。例如,如果某人喜欢红色和蓝色的颜色,但不喜欢黄色或橙色,你需要知道要给他们买什么颜色的衬衫,你可以从只有红色和蓝色的alt中选择任意的颜色。
  • 如果您看到一个seq,那么排序是很重要的。

现在假设我们使用的不是RDF,而是一种带有数组的编程语言。我可以使用数组来表示所有这些结构。不同之处在于使用者如何处理数组。但在形式上,它们都只是数组。

尽管如此,人们似乎并没有那么多地使用这些收藏品。它们没有明确的语义,因此它们没有明确的用例。如果您需要它们,您可以使用它们,但是工具通常不会对它们做什么特别的事情;您可能需要考虑其他的选择。

相关

这些不是重复的问题,但它们是相关的,可能是有用的或有趣的阅读:

D.2 RDF集装箱D.3 RDF收藏RDF语义W3C推荐部分也是很好的资源。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29001433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档