2012-03-15 46 views
4
存储三元

我正在开发中Node.js一个应用程序,我有我的数据在三重的JSON表示,像这样:在Node.js的

{ 
    subject:"Hello", 
    predicate:"Knows", 
    object:"World" 
} 

我希望能够存储我的数据以相对直接的方式进入[数据|三重]商店。

元组内的数据值也需要可搜索。

我在寻找使用现有的RDF服务器并通过HTTP访问它,但想避免使用Sparql(一种解决方法可能是有一个单独的JavaScript模块,它围绕Sparql)。

是否有任何现有的处理存储三元组的节点模块?如果不是,那么存储三元组的实用解决方案是什么?

回答

2

如果您只需要通过密钥(例如用户ID)访问数据,请使用Key-Value商店,如Redis,然后使用node_redis连接到该商店。

如果您需要对三元组中的数据执行搜索,请使用MongoDB并使用类似Mongoose的东西连接到它。

2

不可否认,我不知道任何经过优化的数据存储区,用于存储Node.js的三元组(三元组)。在不了解你正在解决的问题和相关领域的情况下,很难提供具体的建议。利用您提供的当前信息,对于每个三元组,我都会创建一个密钥。然后根据您的要求选择MongoDB(可能是一种矫枉过正),Redis(哈希或集合)或JavaScript关联数组。

如果您正在寻找当中许多Node.js的客户端的性能,然后使用Redis的与将工作出色的。

2

要开始,你的例子不是一个有效的RDF三元,所以如果你真的想要去瓦特/ RDF,你将必须与您的数据更严格。

说了这么多,我知道有几个选项,this框架在Javascript中实现了建议的RDF 接口标准。不知道你是否可以将它连接到现有的三重商店或什么,但它可能适用于表示数据。 This library与jQuery一起提供一些RDF支持。最后是this library,它试图在Javascript中成为一个紧凑的RDF表示。

另一种选择是RDF/JSON LD spec这与其JSON表示十分适合在JavaScript中使用。

1

我刚刚作出了一个非常轻量级的JS框架,不正是你想要的:

https://www.npmjs.com/package/hexastore

添加三元:

mydb.putAll([ 
    ["hexastore","is","nice"], 
    ["hexastore","speed","fast"], 
    ["javascript","is","nice"] 
]); 

查询三元组:

var result = db.search([ 
    [["what"],"is","nice"] 
]); 
// result == [{what:hexastore},{what:javascript}]