问题标签 [tdb]

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.

0 投票
2 回答
14501 浏览

rdf - 如何编写有效匹配字符串文字同时忽略大小写的 SPARQL 查询

我正在使用 Jena ARQ 针对从 Jena TDB 读取的大型本体编写 SPARQL 查询,以便根据 rdfs 标签查找与概念关联的类型:

这工作得很好,实际上非常快(<1 秒)。不幸的是,对于某些术语,我需要以不区分大小写的方式执行此查询。例如,因为标签"Tylenol"在本体中,但不是"tylenol",所以以下查询为空:

我可以使用 FILTER 语法编写此查询的不区分大小写版本,如下所示:

但是现在查询需要一分钟才能完成!有没有办法以更有效的方式编写不区分大小写的查询?

0 投票
1 回答
991 浏览

java - Jena TDB 插入语句导致空字段

我正在使用 Jena API 在 Jena TDB 中插入和更新三元组。我的设计是这样的,每个插入操作都在事务控制中。例如:

之后,当我使用 READ transaction 查询 TDB 时,我注意到一些条目(主题、谓词或宾语)是空的。即使我没有使用嵌套事务,为什么它会以这种方式运行?

插入代码

查询代码

0 投票
0 回答
186 浏览

jena - Jena/TDB 档案的大小限制

我们正在使用 Jena TDB 开展一个大型项目(包含大量元数据)。大约一个月前,突然出现了一个关于内存的问题——程序已经正常运行了几个月,但没有进行任何更改——我们无法上传更多数据。

我们已经在这个问题上工作了几个星期,我们认为这个问题是由于我们的一些.dat文件的大小大于 16Gb 而引起的。我们已经了解到,用于 TDB 的索引系统为每个索引使用 64 位:8 位用于类型 + 44 位用于磁盘分配 + 12 位用于 vnode。使用 44 位我们可以管理 16GB,我们认为这就是内存问题出现的地方。

你能告诉我们我们是否正确吗?如果是这样,你能告诉我们最好的解决方案吗?

0 投票
2 回答
1450 浏览

java - 带有 TDB 的 Jena 规则引擎

我正在将我的数据加载到 TDB 模型中,并使用 Jena 编写了一些规则以应用于 TDB。然后我将推断的数据存储到一个新的 TDB 中。

我在一个约 200kb 的小数据集中应用了上面的案例,并且措辞很好。但是,我的实际 TDB 是 2.7G,计算机已经运行了大约一周,实际上它仍在运行。

这是正常的,还是我做错了什么?耶拿规则引擎的替代品是什么?

这是一小段代码:

0 投票
1 回答
1246 浏览

jena - 为现有的 Apache Jena TDB 创建 Lucene 索引以实现文本搜索

我有一个大型 Apache Jena TDB,我想使用 Apache Jena 2.10.2 构建一个 Lucene 索引,以用于新的文本搜索功能。我发现文档很难遵循。

我首先尝试在代码中使用配置,但遇到了依赖问题。lecene-core 和 solr-solrj 的任何组合都会导致某些“classNotFound”错误或“StandardAnalyzer overrides final method tokenStream”错误。代码示例:

我认为唯一的解决方案可能是创建一个文本数据集汇编器,但如果有人对在代码中创建它有建议,我更愿意这样做。

0 投票
1 回答
151 浏览

rdf - 奇怪的 Apache Jena 可选行为

我正在使用来自 maven 存储库的 Jena(TDB 0.10.1,CORE/ARQ 2.10.1)。我导入了这个文件

我现在正尝试像这样查询这个模型:

不幸的是,这将返回一个空结果集。如果我现在将 wgs 模式移动到单独的 OPTIONAL 中,我会得到正确的结果。

这是 Jena 中的错误还是我的查询错误?干杯,丹尼尔

0 投票
1 回答
1753 浏览

java - Jena ARQ/TDB 查询优化

我有一个相当小的图表,其中包含大约 500k 三元组。我还生成了 stats.opt 文件并在相当快的计算机(四核、16gb 内存、ssd 驱动器)上运行我的代码。但是对于我在 OP 接口的帮助下构建的查询,它需要永远遍历结果集。结果集大约有15000行,迭代需要4s,这对于最终用户来说是无法接受的。执行查询只需要 90 毫秒(我猜真正的工作是由游标迭代完成的?)。为什么这么慢,我该怎么做才能加快结果集迭代?

这是查询:

(有没有更好的方法来查询这些 bnode:?hasNearbyPark,?hasNearbySupermarket)

以及执行查询的代码:

0 投票
1 回答
709 浏览

owl - 猫头鹰:Fuseki中的进口

我是新来的,虽然我搜索过类似的东西,但我找不到答案。所以这是我的问题:Fuseki 如何处理 owl:imports?

详细信息:我在不同的 owl 文件中定义了一组本体。让我们称其中两个为subDomainA.owlsubDomainB.owl.

为了“加入”这些本体,我定义了一个单独的 owl 文件来导入其他本体。我们称之为completeDomain.owlowl:importssubDomainA.owlsubDomainB.owl. 有一些明确声明的语句completeDomain.owl。如果不清楚,则sweetAll.owl类似于SWEET

我需要使用 Fuseki 将这些 owl 文件(使用 RDF/XML 语法)导入 TDB。这些进口将如何处理?我的意思是,我是否应该将其加载completeDomain.owl到默认图表和subDomainA.owl它们subDomainB.owl各自的图表中,并且 Fuseki 会“理解”导入并让我一次查询所有这些?

使用tdb:unionDefaultGraph是一样的吗?completeDomain.owl使用 subDomain 本体中声明的实体声明的语句会发生什么?另外,我看不出tdb:unionDefaultGraphUnion Model的区别。

如您所见,我有点困惑,任何帮助将不胜感激!

0 投票
1 回答
666 浏览

sparql - tbloader vs SPARQL INSERT - 为什么命名图的行为不同?

ARQ、TDB 和 Named Graphs 的命令行工具的连接有一个奇怪的行为。如果在命名图中通过 tdbloader 导入数据,则无法通过 SPARQL SELECT 查询中的 GRAPH 子句进行查询。但是,当使用 SPARQL INSERT 在同一个图中插入数据时,可以进行此查询。

我有以下汇编器描述文件tdb.ttl

文件data.ttl中有一个数据集:

现在,我使用 tdbloader 插入这些数据,然后使用 SPARQL INSERT 插入另一个三元组,两者都在命名的图形数据中:

现在,可以通过以下方式使用 SPARQL 查询数据:

一切似乎都很完美。但现在我只想查询这个名为 graph data的特定名称:

为什么从 tdbloader 导入的数据丢失了?这个查询有什么问题?如何从两个导入中获取结果?

0 投票
3 回答
485 浏览

multithreading - 是否可以同时写入同一个数据集文件但写入不同的命名图(每个线程写入不同的命名图)?

在 Jena 的 TDB 中,数据似乎是由一个“数据集”(由一个目录指定)组织的,它可以包含多个“命名图”。

关于查询此类数据的并发策略,我发现的唯一与并发相关的文档是 TDB 文档TDB Java API中的以下句子:

可以使用用于并发访问的多读取器或单写入器 (MRSW) 策略直接对数据集进行操作而无需事务。

但是,我不确定这种 MRSW 政策的粒度。它是在整个数据集上,还是在数据集中的单个命名图上?

编辑:更具体地说,我的要求是我想在没有任何读取操作的情况下对不同的命名图(每个线程写入不同的命名图)进行只写更新,这可能吗?还是我必须一次让一个线程更新。