繁体   English   中英

是否可以将RDF存储也用作面向文档的数据库?

[英]Is it possible to use RDF storage also as a document-oriented database?

假设我有大量的异构JSON文档(即,键-值映射)和这些文档所附加的类的层次结构(即,命名集)。 我需要建立一个数据结构,以允许:

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

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

但是后来我发现,RDF存储实际上可以完成按ID检索JSON文档的面向文档的部分。 乍一看,这似乎是对的,但我仍然担心23 是否存在能够以面向文档的db的服务文档速度快速检索文档(节点)的RDF存储? 它会以多快的速度处理类似3的查询? 我听说过一些有关RDF存储速度慢,修复问题等的信息。

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

您最初是针对图数据库(例如Neo4j )问这个问题的。 这就是为什么我想添加一些注释。

  1. 图数据库对节点(和关系)使用集成索引 ,因此可以通过文档(外部索引或在图索引中)快速完成文档根节点的初始查找
  2. 可以为路径(实际上是到根的树)的图形索引中的其他模型建模,使其更清洁,仅是键值查找)
  3. 如果您将文档建模为具有属性的节点树,则可以执行任何简单和复杂的CRUD操作(也可以是结构化的)
  4. 再次可以通过索引(要键入的索引根节点)或在图类别节点中检索“类型”或“类”的所有文档
  5. 您可以将这些“类型或类”类别节点放入层次结构(或图形)中,然后可以使用常规图形数据库API对其进行编辑
  6. 遍历图可以使用遍历器 /集成的图查询语言(例如Neo4j的cypher )完成
  7. 可以通过自定义导入器或更通用的子图导入器(例如GEOFF )完成加载分层数据

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

http://yourdomain/files/rdf_file_1

要么

file:///home/myrdffiles/file1

4store是四方商店。 Quad存储支持命名图,而4store是专门设计来处理此问题的。

使用4store,您可以运行以下命令在命名图中声明三元组:

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

/data/您可以将GRAPH标识符(IRI)放在要声明三元组的位置。 有关更多详细信息,请参见4store sparql服务器4store客户端库

断言数据后,使用SPARQL,您还可以使用命名图将查询定向到该图:

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

此外,4store还支持JSON,因此您可以直接在JSON中检索SPARQL结果集。

如果您决定使用4store,则会在此处找到有价值的支持:http: //4store.org/contact

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM