我从一本书中读到了
容器和集合之间的区别在于容器始终是开放的(即,可以通过其他RDF语句添加新成员),并且可以关闭集合。
我不明白这个区别。它说没有新成员可以添加到集合中。如果我将上一个rdf:rest
属性的值从rdf:nil
更改为_:xyz
并添加
_:xyz rdf:first <ex:aaa> .
_:xyz rdf:rest rdf:nil .
因此我可以添加新成员_:xyz
。那么为什么说集合已经关闭呢?
答案 0 :(得分:14)
关键区别在于,在Container中,只需断言新的RDF三元组,就可以继续添加新项目。在集合中,您首先必须删除语句,然后才能添加新项目。
这对于RDF推理尤其重要。这很重要,因为RDF推理采用了开放世界假设(OWA),简单地说,只是因为某个事实未知,这并不意味着我们可以认为这个事实是不真实的。
如果你将这个原则应用到容器中,并且你问“容器有多少项”,那么答案必须始终是“我不知道”,因为没有办法确定有多少 unknown 项可能在容器中。但是,如果我们有一个集合,我们会为最后一个项目提供一个明确的标记,因此我们可以肯定地说明该集合包含多少项目 - 可能没有未知的其他项目。