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

mar*_*ext 7 database rdf semantic-web document-oriented-db nosql

假设我有大量的异构JSON文档(即命名的键值映射)和这些文档附加到的类的层次结构(即命名集).我需要设置一个允许以下内容的数据结构:

  1. JSON文档上的CRUD操作.
  2. 很快就能通过ID检索JSON文档.
  3. 检索所有附加到某个类的JSON文档非常快.
  4. 编辑类层次结构:添加/删除类,重新排列它们.

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

但后来我认为RDF存储实际上可以通过ID检索JSON文档的文档导向部分.乍一看这似乎是真的,但我仍然关心23.是否有一个RDF存储能够以速度面向文档的db的服务文档检索文档(节点)?它的服务速度有多快3?我听说过RDF存储缓慢,具体化问题等等.

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

Mic*_*ger 5

您最初是为图形数据库(如Neo4j)提出此问题.这就是为什么我想添加一些笔记.

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


Man*_*res 1

在 RDF 数据库中可以使用的最接近的东西是命名图。在命名图中,您可以放置​​一组 RDF 三元组。根据您的需要,可以从一个或多个 RDF 文档断言这组三元组。假设您希望每个 RDF 文档都有一个命名图。您可以使用反映文件位置的 URI(URL 或 IRI)来命名该图。例如 ...

http://yourdomain/files/rdf_file_1
Run Code Online (Sandbox Code Playgroud)

或者

file:///home/myrdffiles/file1
Run Code Online (Sandbox Code Playgroud)

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

使用 4store,您可以运行以下命令来断言命名图中的三元组:

curl -T your_file.rdf http://your_4store_database/data/http://yourdomain/files/rdf_file_1
Run Code Online (Sandbox Code Playgroud)

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

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

SELECT * WHERE {
   GRAPH <http://youdomain/files/rdf_file_1> {
        .... some triple patterns in here ....
   }
}
Run Code Online (Sandbox Code Playgroud)

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

如果您决定使用 4store,您将在这里找到宝贵的支持: http: //4store.org/contact