问题标签 [triplestore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
performance - 三重存储写入性能和锁定
我见过很多专注于读取和查询性能的三元存储基准。但是,我正在考虑迁移到三重存储的应用程序具有非常动态的数据,我非常关心写入性能和锁定。
例如,我听说 Jena/TDB 只能用于一次写入、多次读取的锁定模型。这允许多个阅读器 SPARQL 查询可以同时运行。但是,当发生写入操作以创建/更新三元组时,在任何现有的正在运行的 SPARQL 查询完成之前,无法为写入操作提供服务。此外,在写入操作进行时,不会发生读取操作(在模型中的任何三元组上)。您可以想象一个批量数据复制操作会长时间阻塞任何 SPARQL 查询。
好吧,您可以想象这种锁定模型会对我的应用程序产生严重后果!
有没有人对这个级别的不同三联店进行过比较?
即使您可以评论自己正在使用的三联商店,这对我来说仍然非常有用。
rdf - 基于“三重不存在”使用 sparql 进行选择
我需要一些帮助来从我的商店中选择合适的三元组......
我只想选择 type/1 而不是 type/2 的元素
使用 sparql 选择查询实现此目的的最佳方法是什么?
我正在寻找类似的东西:
谢谢,
:)
php - 最佳数据存储 - 三重存储/关系数据库/其他?
我正在 Apache 服务器上使用 PHP 构建 Web 应用程序。
该应用程序包含许多有关人员的可选数据。根据人员的类别(一个人可以属于多个类别),他们可以选择是否指定数据:家庭地址(街道、城市、国家/地区等 5 个字段)、工作地址(又是 5 个字段)、年龄、电话号码……当然,该应用程序也存储了一些额外的数据(创建、上次更新、用户名、密码、用户级别……)。
该应用程序的当前/过时版本在“用户”表中有 86 个字段,并且(取决于人员的类别)扩展了一个包含另外 23 个字段(1-1 关系)的附加表。
所有这些都存储在 Postgresql 数据库中。
我想知道这是否是处理此类数据的最佳方式。大多数记录有(很多)空字段,使数据库更大并且查询更慢。是否值得研究像三重商店这样的其他解决方案,还是我太担心它了,我应该只保留当前的设置吗?为网站的每个新目的只添加字段到表中似乎很奇怪并且感觉很尴尬。另一方面,我的印象是三合店还没有那么普遍。任何指示或建议如何解决这个问题?
我读过 Toby Segaran 和其他人的“Programming the semantic web”,但从那本书我得到的印象是三重存储和 RDF 的主要优势是通过网络交换信息(这不是我的应用程序的目标)
sql - 实现 Triplestore Atom
我正在尝试在 SQL 数据库上实现我自己的三重存储(是的,我知道那里已经完成了项目),并且我正在尝试确定实现符号“原子”的最佳方式。
在一个简单的设计中,我们可能会在 SQL 中实现一个三元存储,方法是创建一个“三元”表,其中包含三个 varchar 列,分别称为主题、谓词、对象。为了节省空间,我将创建一个“原子”表,它将存储在任何主题/谓词/宾语字段中使用的唯一文本,并将这些字段更改为链接回包含其文本的原子的外键。
但是,我看到了几种实现 Atom 表的方法。
将文本存储为 varchar。
- 优点:易于索引和强制文本的唯一性。
- 缺点:它不能存储任意大的文本。
将文本存储为文本 blob,以及在查询和强制唯一性时使用的文本哈希。
- 优点:可以存储任意大的文本。
- 缺点:稍微复杂一些。根据散列算法(md5、sha 等),可能会发生散列冲突,尽管很少见。
就性能、长期可靠性和存储任何类型数据的能力而言,哪种方法更好?如果我使用哈希,是否有关于冲突的有效担忧?即使冲突很少见,它也只需要发生一次就可以破坏三元存储。
rdf - SPARQL 选择可选的语言
我有一些看起来像这样的三元组:
我想形成一个 sparql 查询,如果有的话,它会给我“非语言标签”和“法语标签”。
我试过这个,它不工作:
提前致谢!
java - 关系数据库到三重存储
我正在尝试编写一个 java 程序来将 MySQL 表中的信息转换为三元组,以便稍后将它们导入三元组存储。是否可以在不创建辅助 RDF/XML
文件的情况下这样做?如何?
python - 如何像 Freebase 一样存储数据?
我承认这基本上是在本地服务器上使用 freebase 数据的重复问题?但我需要比那里已经给出的更详细的答案
我已经完全爱上了 Freebase。我现在想要的是创建一个非常简单的 Freebase 克隆,用于存储可能不属于 Freebase 本身但可以使用 Freebase 模式描述的内容。本质上,我想要的是一种简单而优雅的方式来存储像 Freebase 本身那样的数据,并且能够在 Python (CherryPy) Web 应用程序中轻松使用该数据。
MQL 参考指南的第 2 章指出:
Metaweb 基础的数据库与您可能熟悉的关系数据库根本不同。关系数据库以表格的形式存储数据,但Metaweb 数据库将数据存储为节点图和这些节点之间的关系。
我猜这意味着我应该使用三重存储或图形数据库,例如 Neo4j?这里有没有人有使用 Python 环境中的其中一个的经验?
(到目前为止,我实际上尝试的是创建一个能够轻松存储 Freebase 主题的关系数据库模式,但我在配置 SQLAlchemy 中的映射时遇到了问题)。
我正在调查的事情
更新 [28/12/2011]:
我在 Freebase 博客上发现了一篇文章,描述了 Freebase 自己使用的专有元组存储/数据库(图表):http ://blog.freebase.com/2008/04/09/a-brief-tour-of-graphd/
rdf - SPARQL DELETE 查询错误:解析时出现 EOF
我正在尝试使用此查询删除一些三元组:
deleteQuery = """DELETE { ?a ?b ?c } WHERE { mynamespace:List mynamespace:Item ?c.
?a ?b ?c }"""
我的命名空间已经定义,所以这不是问题。我不确定我是否使用了正确的查询语法。当我发出查询时,我收到此错误:
400 EOF while parsing.
Expected terminals:
(prefix describe sum correlation select average modify insert median
load ask construct clear count stats delete).
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "triple_store_methods_v2.py", line 40, in query
myResults = myTupleQuery.evaluate()
File "/usr/local/agraph-fse-3.3/python/franz/openrdf/query/query.py", line 358, in evaluate
response = self.evaluate_generic_query()
File "/usr/local/agraph-fse-3.3/python/franz/openrdf/query/query.py", line 239, in evaluate_generic_query
checkVariables=self.checkVariables, accept=accept)
File "/usr/local/agraph-fse-3.3/python/franz/miniclient/repository.py", line 80, in evalSparqlQuery
accept=accept)
File "/usr/local/agraph-fse-3.3/python/franz/miniclient/request.py", line 114, in jsonRequest
else: raise RequestError(status, body)
franz.miniclient.request.RequestError: Server returned 400: EOF while parsing.
Expected terminals:
(prefix describe sum correlation select average modify insert median
load ask construct clear count stats delete).
我不明白我做错了什么。顺便说一句,我正在使用 AllegroGraph 3.3。
python - TripleStore - 没有这样的模块
我已经在 python 中安装了 rdflib,当我这样做时它是 3.2 版:
import rdflib
print rdflib.__ version__
3.2.0
from rdflib.TripleStore import TripleStore
Traceback(最近一次调用最后):文件“”,第 1 行,在 ImportError:没有名为 TripleStore 的模块
请有人帮我解决这个问题。:)