我正在Node.js开发一个应用程序,我的数据用json表示三元组,如下所示:
{
subject:"Hello",
predicate:"Knows",
object:"World"
}
我希望能够以相对简单的方式将我的数据存储到[data | triple]商店。
元组中的数据值也需要搜索。
我正在考虑使用现有的RDF服务器并通过HTTP访问它,但是希望避免使用Sparql(一种解决方法可能是使用一个单独的javascript模块来包装Sparql)。
是否存在任何处理存储三元组的Node模块?如果没有,那么存储三元组的实用解决方案是什么?
答案 0 :(得分:2)
如果您只需要通过密钥(例如用户ID)访问数据,请使用像Redis这样的键值存储,并使用node_redis连接到它。
答案 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}]