假设我有大量的异构JSON文档(即命名的键值映射)和这些文档附加到的类的层次结构(即命名集)。我需要设置一个允许的数据结构:
我最初提出了将JSON文档存储在面向文档的数据库(如CouchDB或MongoDB)中并将类层次结构存储在RDF存储(如4store)中的想法。然后,1
,2
和4
会自然地得到解决,3
通过维护存储中每个类的附加文档ID列表来解决。
但后来我认为RDF存储实际上可以通过ID检索JSON文档的文档导向部分。乍一看这似乎是对的,但我仍然关注2
和3
。是否有一个RDF存储能够以速度面向文档的db的服务文档检索文档(节点)?它的速度有多快3
- 像查询一样?我听说过RDF存储缓慢,具体化问题等等。
是否有一个RDF存储对于通过ID进行临时检索对象也很舒服,例如CouchDB?使用面向文档和RDF存储来存储,检索和编辑类似JSON的对象有什么区别?
答案 0 :(得分:5)
您最初是为图形数据库(例如Neo4j)提出此问题。这就是为什么我想添加一些笔记。
答案 1 :(得分:1)
您可以在RDF数据库中使用的最接近的内容是命名图。在命名图中,您可以放置一组RDF三元组。可以根据您的需要从一个或多个RDF文档中声明这组三元组。假设您希望每个RDF文档都有一个命名图。您可以使用反映文件位置URL或IRI的URI命名图形。例如......
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 server和4store Client Libs。
使用SPARQL确认数据后,您还可以使用命名图将查询定向到该图:
SELECT * WHERE {
GRAPH <http://youdomain/files/rdf_file_1> {
.... some triple patterns in here ....
}
}
此外,4store还支持JSON,因此您可以直接在JSON中检索SPARQL结果集。
如果你决定使用4store,你会在这里找到有价值的支持:http://4store.org/contact