在Node.js中存储三元组

5

我正在使用 Node.js 开发一款应用程序,我的数据使用三元组的json表示方式:

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

我希望能够以相对简单的方式将我的数据存储到[数据|三元组]存储中。
元组中的数据值也需要可搜索。
我正在考虑使用现有的RDF服务器并通过HTTP访问它,但是不想使用Sparql(一个解决方法可能是有一个单独的JavaScript模块包装Sparql)。
是否有任何现有的Node模块处理存储三元组?如果没有,存储三元组的实用解决方案是什么?
4个回答

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}]

2
如果您只需要通过键(例如用户ID)访问数据,请使用Key-Value存储,如Redis,并使用node_redis连接到它。
如果您需要在三元组内对数据进行搜索,则使用MongoDB,并使用类似Mongoose的工具连接到它。

2
诚然,我不知道有哪个数据存储是专门为Node.js优化的用于存储三元组(triples)的。如果不了解你正在解决的问题和相关领域,很难提供具体建议。根据你提供的当前信息,对于每个三元组,我会创建一个键。然后根据你的要求选择MongoDB(可能过于复杂)、Redis(哈希或集合)或JavaScript关联数组。如果你想在许多Node.js客户端中获得性能,则使用Redis会非常出色。

2
首先,你的示例不是有效的RDF三元组,所以如果你真的想使用RDF,你需要更加严格地处理你的数据。
有几种选择可供选择,其中这个框架在Javascript中实现了提议的RDF接口标准。不知道你是否可以将其连接到现有的三元存储或其他什么,但它可能适用于表示你的数据。这个库与jQuery一起工作,为提供一些RDF支持。最后,这个库试图成为Javascript中紧凑的RDF表示。
另一个选择是RDF/JSON LD规范,其JSON表示法相当适合在Javascript中使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接