5

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

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

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

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

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

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

4

4 回答 4

2

首先,您的示例不是有效的 RDF 三元组,因此如果您真的想使用 RDF,您将不得不对数据更加严格。

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

另一种选择是RDF/JSON LD 规范,它的 JSON 表示非常适合在 Javascript 中使用。

于 2012-03-15T23:13:42.530 回答
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}]
于 2014-12-23T11:59:14.310 回答
2

如果您只需要通过键(例如用户 id)访问数据,请使用Redis之类的 Key-Value 存储,并使用node_redis连接到它。

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

于 2012-03-15T17:21:46.623 回答
2

诚然,我不知道有任何数据存储经过优化以存储 Node.js 的 3 元组(三元组)。在不了解您正在解决的问题和相关领域的更多信息的情况下,很难提供具体的建议。根据您提供的当前信息,对于每个三元组,我会创建一个密钥。然后根据您的要求选择MongoDB(可能是多余的)、Redis (Hash 或 Set)或 JavaScript 关联数组。

如果您正在寻找许多 Node.js 客户端的性能,那么将 Redis 与 结合使用会非常出色。

于 2012-03-15T17:22:23.467 回答