在Node.js中存储三元组

时间:2012-03-15 13:52:55

标签: node.js triplestore

我正在Node.js开发一个应用程序,我的数据用json表示三元组,如下所示:

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

我希望能够以相对简单的方式将我的数据存储到[data | triple]商店。

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

我正在考虑使用现有的RDF服务器并通过HTTP访问它,但是希望避免使用Sparql(一种解决方法可能是使用一个单独的javascript模块来包装Sparql)。

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

4 个答案:

答案 0 :(得分:2)

如果您只需要通过密钥(例如用户ID)访问数据,请使用像Redis这样的键值存储,并使用node_redis连接到它。

如果您需要对三元组中的数据进行搜索,请使用MongoDB并使用类似Mongoose的内容进行连接。

答案 1 :(得分:2)

不可否认,我不知道任何为Node.js存储3元组(三元组)而优化的数据存储。如果不了解您正在解决的问题以及相关领域,则很难提供具体的建议。根据您提供的当前信息,对于每个三元组,我都会创建一个密钥。然后根据您的要求选择MongoDB(可能是矫枉过正),Redis(哈希或设置)或JavaScript关联数组。

如果您正在寻找许多Node.js客户端中的性能,那么使用Redis可以很好地工作。

答案 2 :(得分:2)

首先,您的示例不是有效的RDF三元组,因此如果您真的想要使用RDF,那么您将需要更加严格地处理数据。

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

另一个选项是RDF/JSON LD spec,它的JSON表示非常适合在Javascript中使用。

答案 3 :(得分:2)

我只是制作了一个非常轻量级的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}]
相关问题