2011-11-30 59 views
7

假设我有大量的异构JSON文档(即命名键值映射)和这些文档所附带的类(即命名集)的层次结构。我需要设置一个允许的数据结构:也可以将RDF存储用作面向文档的数据库吗?

  1. 对JSON文档的CRUD操作。
  2. 通过ID检索JSON文件真的很快
  3. 检索连接到某个类别的所有JSON文档真的很快
  4. 编辑类层次结构:添加/删除类,重新排列它们。

我最初想出了在面向文档的数据库(如CouchDB或MongoDB)中存储JSON文档并将类层次结构存储在RDF存储中(如4store)的想法。 1,24然后自然计算出来,并且3通过维护存储器中每个类的附加文档ID的列表来解决。

但后来我发现RDF存储实际上可以完成按ID检索JSON文档的面向文档的部分。乍一看这似乎是真的,但我仍然关注23。是否有一个RDF存储能够以面向文档的db的服务文档的速度检索文档(节点)?它将如何快速服务3 -like查询?我听说过一些关于RDF存储缓慢,物化问题等。

有没有一种RDF存储也适用于通过ID随意检索对象,例如CouchDB?使用面向文档和RDF存储来存储,检索和编辑类似JSON的对象有什么区别?

+0

你是什么意思的“物化问题”的意思是做什么? –

回答

1

您可以在RDF数据库中使用的最接近的东西是命名图。在一个命名图中,可以放置一组RDF三元组。根据您的需要,可以从一个或多个RDF文档中声明这组三元组。假设你想为每个RDF文档命名一个图。您可以使用反映URL或IRI文件位置的URI来为图表命名。例如...

http://yourdomain/files/rdf_file_1 

file:///home/myrdffiles/file1 

4store是一款四店。四商店支持命名图形和4store是专门设计来处理这个。

随着4store可以运行下面的命令来断言三元在名为图表:

curl -T your_file.rdf http://your_4store_database/data/http://yourdomain/files/rdf_file_1 

/data/后,你可以把其中的三元组将要断言GRAPH标识符(IRI)。有关更多详细信息,请参阅4store sparql server4store Client Libs

一旦你的数据断言,随着SPARQL您还可以使用名为graph到您的查询直接向图:

SELECT * WHERE { 
    GRAPH <http://youdomain/files/rdf_file_1> { 
     .... some triple patterns in here .... 
    } 
} 

此外,4store还支持JSON这样你就可以直接在检索SPARQL结果集JSON。

如果你决定使用4store你会发现这里的宝贵支持:http://4store.org/contact

5

您最初要求图形数据库这个问题(如Neo4j)。这就是为什么我想添加一些笔记。

  1. 格拉夫数据库使用集成indexing为节点(和关系),以便为文档的根节点的快速初始查找经由该(外部或图中的索引)来完成
  2. 附加在图表索引路径(实际上树根就可以建模得更干净,只是一个键值查找)
  3. 如果您将文档建模为具有属性的节点树,则可以执行任何简单且复杂的CRUD操作(也是结构化的)
  4. 检索“类型”或“类”的所有文档可以再次通过索引(索引根节点到类型)o来完成中的R图形类别节点
  5. 可以把那些“类型或类”类别节点中,然后可使用通常的图形数据库API
  6. 遍历图编辑的分层结构(或图形)可使用traversers来完成/集成图形查询语言(例如, cypher for Neo4j
  7. 加载分层数据可以通过自定义的进口商或更一般的子图进口商(例如GEOFF
相关问题