首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RDF中复制三元组,权威视图?

在RDF中复制三元组,权威视图?
EN

Stack Overflow用户
提问于 2009-12-08 14:12:21
回答 3查看 1.6K关注 0票数 3

如果一个三元组存储包含两个相同的三元组,那么关于这种冗余的权威立场(如果存在)是什么?

此外,是否应该允许一个三元组存储在同一上下文中存储两个相同的三元组?

我之所以这样问,是因为在rdflib中,显然你可以将同一个三元组存储两次(或更多)。这就是读者

代码语言:javascript
复制
import rdflib
from rdflib import store

s = rdflib.plugin.get('MySQL', store.Store)('rdfstore')

config_string = "host=localhost,password=foo,user=foo,db=foo"
rt = s.open(config_string,create=False)
if rt != store.VALID_STORE:
    s.open(config_string,create=True)

graph = rdflib.ConjunctiveGraph(s, identifier = rdflib.URIRef("urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52"))
rows = graph.query("SELECT ?id ?value { ?id <http://localhost#ha> ?value . }")
for r in rows:
    print r[0], r[1]

这就是作者

代码语言:javascript
复制
import rdflib
from rdflib import store

s = rdflib.plugin.get('MySQL', store.Store)('rdfstore')

config_string = "host=localhost,password=foo,user=foo,db=foo"
rt = s.open(config_string,create=False)
if rt != store.VALID_STORE:
    s.open(config_string,create=True)

graph = rdflib.ConjunctiveGraph(s, identifier = rdflib.URIRef("urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52"))
graph.add( ( rdflib.URIRef("http://localhost/1000"), rdflib.URIRef("http://localhost#ha"), rdflib.Literal("18")) )
graph.commit()

这就是我所得到的

代码语言:javascript
复制
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py 
table kb_7b066eca61_relations Doesn't exist
table kb_7b066eca61_relations Doesn't exist
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py 
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py 
sbo@dhcp-045:~/tmp/gd $ python ./writer2.py 
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py 
http://localhost/1000 18
sbo@dhcp-045:~/tmp/gd $ python ./writer2.py 
sbo@dhcp-045:~/tmp/gd $ python ./reader2.py 
http://localhost/1000 18
http://localhost/1000 18

对我来说,它看起来像是一个bug。修改后的版本显示这两个三元组属于相同的上下文,而且确实也有两个三元组

代码语言:javascript
复制
len : 2
http://localhost/1000 18
http://localhost/1000 18
(rdflib.URIRef('http://localhost/1000'), rdflib.URIRef('http://localhost#ha'), rdflib.Literal(u'18'), <Graph identifier=urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52 (<class 'rdflib.Graph.Graph'>)>)
(rdflib.URIRef('http://localhost/1000'), rdflib.URIRef('http://localhost#ha'), rdflib.Literal(u'18'), <Graph identifier=urn:uuid:a19f9b78-cc43-4866-b9a1-4b009fe91f52 (<class 'rdflib.Graph.Graph'>)>)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-08 14:35:17

RDF三元组存储是一组三元组,因此根据定义,相同的三元组不能出现两次。但是,大多数rdf存储实际上是四元存储( rdf图的集合,也称为数据集),在这种情况下,三元组可能会多次出现。这有时被称为上下文,取决于商店(例如我的,Redland)。权限实际上是由用户来定义特定的图形名称/上下文名称的含义。

票数 7
EN

Stack Overflow用户

发布于 2012-01-20 13:28:22

应该记住,任何特定的三元组可能具有与其他相同的三元组不同的元数据。诸如三元组的原始源、连接信息的可能强度等元数据。为了与其他可能的矛盾连接相比,判断连接的相对强度,仅计算三元组的拷贝数也可能是可行的。因此,一如既往,这完全取决于您打算如何处理数据。

票数 2
EN

Stack Overflow用户

发布于 2011-09-06 16:10:56

RDF是一种用于表达事实声明的语言,它被组织和分组到图形中。如果一个图包含两次"Alice is a Person“,那就是多余的。因此,在图中,三元组是标准化的;没有必要重复它们。然而,应用程序、商店和SPARQL可查询系统通常会从不同的来源收集事实声明。SPARQL语言有'GRAPH‘关键字,用于从多图透视图的角度,在不同的源中查找相同的三元组。

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

https://stackoverflow.com/questions/1864941

复制
相关文章

相似问题

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