问题标签 [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.
rdf - 如何编写有效匹配字符串文字同时忽略大小写的 SPARQL 查询
我正在使用 Jena ARQ 针对从 Jena TDB 读取的大型本体编写 SPARQL 查询,以便根据 rdfs 标签查找与概念关联的类型:
这工作得很好,实际上非常快(<1 秒)。不幸的是,对于某些术语,我需要以不区分大小写的方式执行此查询。例如,因为标签"Tylenol"
在本体中,但不是"tylenol"
,所以以下查询为空:
我可以使用 FILTER 语法编写此查询的不区分大小写版本,如下所示:
但是现在查询需要一分钟才能完成!有没有办法以更有效的方式编写不区分大小写的查询?
java - Jena TDB 插入语句导致空字段
我正在使用 Jena API 在 Jena TDB 中插入和更新三元组。我的设计是这样的,每个插入操作都在事务控制中。例如:
之后,当我使用 READ transaction 查询 TDB 时,我注意到一些条目(主题、谓词或宾语)是空的。即使我没有使用嵌套事务,为什么它会以这种方式运行?
插入代码
查询代码
jena - Jena/TDB 档案的大小限制
我们正在使用 Jena TDB 开展一个大型项目(包含大量元数据)。大约一个月前,突然出现了一个关于内存的问题——程序已经正常运行了几个月,但没有进行任何更改——我们无法上传更多数据。
我们已经在这个问题上工作了几个星期,我们认为这个问题是由于我们的一些.dat
文件的大小大于 16Gb 而引起的。我们已经了解到,用于 TDB 的索引系统为每个索引使用 64 位:8 位用于类型 + 44 位用于磁盘分配 + 12 位用于 vnode。使用 44 位我们可以管理 16GB,我们认为这就是内存问题出现的地方。
你能告诉我们我们是否正确吗?如果是这样,你能告诉我们最好的解决方案吗?
java - 带有 TDB 的 Jena 规则引擎
我正在将我的数据加载到 TDB 模型中,并使用 Jena 编写了一些规则以应用于 TDB。然后我将推断的数据存储到一个新的 TDB 中。
我在一个约 200kb 的小数据集中应用了上面的案例,并且措辞很好。但是,我的实际 TDB 是 2.7G,计算机已经运行了大约一周,实际上它仍在运行。
这是正常的,还是我做错了什么?耶拿规则引擎的替代品是什么?
这是一小段代码:
jena - 为现有的 Apache Jena TDB 创建 Lucene 索引以实现文本搜索
我有一个大型 Apache Jena TDB,我想使用 Apache Jena 2.10.2 构建一个 Lucene 索引,以用于新的文本搜索功能。我发现文档很难遵循。
我首先尝试在代码中使用配置,但遇到了依赖问题。lecene-core 和 solr-solrj 的任何组合都会导致某些“classNotFound”错误或“StandardAnalyzer overrides final method tokenStream”错误。代码示例:
我认为唯一的解决方案可能是创建一个文本数据集汇编器,但如果有人对在代码中创建它有建议,我更愿意这样做。
rdf - 奇怪的 Apache Jena 可选行为
我正在使用来自 maven 存储库的 Jena(TDB 0.10.1,CORE/ARQ 2.10.1)。我导入了这个文件:
我现在正尝试像这样查询这个模型:
不幸的是,这将返回一个空结果集。如果我现在将 wgs 模式移动到单独的 OPTIONAL 中,我会得到正确的结果。
这是 Jena 中的错误还是我的查询错误?干杯,丹尼尔
java - Jena ARQ/TDB 查询优化
我有一个相当小的图表,其中包含大约 500k 三元组。我还生成了 stats.opt 文件并在相当快的计算机(四核、16gb 内存、ssd 驱动器)上运行我的代码。但是对于我在 OP 接口的帮助下构建的查询,它需要永远遍历结果集。结果集大约有15000行,迭代需要4s,这对于最终用户来说是无法接受的。执行查询只需要 90 毫秒(我猜真正的工作是由游标迭代完成的?)。为什么这么慢,我该怎么做才能加快结果集迭代?
这是查询:
(有没有更好的方法来查询这些 bnode:?hasNearbyPark,?hasNearbySupermarket)
以及执行查询的代码:
owl - 猫头鹰:Fuseki中的进口
我是新来的,虽然我搜索过类似的东西,但我找不到答案。所以这是我的问题:Fuseki 如何处理 owl:imports?
详细信息:我在不同的 owl 文件中定义了一组本体。让我们称其中两个为subDomainA.owl
和subDomainB.owl.
为了“加入”这些本体,我定义了一个单独的 owl 文件来导入其他本体。我们称之为completeDomain.owl
owl:importssubDomainA.owl
和subDomainB.owl
. 有一些明确声明的语句completeDomain.owl
。如果不清楚,则sweetAll.owl
类似于SWEET。
我需要使用 Fuseki 将这些 owl 文件(使用 RDF/XML 语法)导入 TDB。这些进口将如何处理?我的意思是,我是否应该将其加载completeDomain.owl
到默认图表和subDomainA.owl
它们subDomainB.owl
各自的图表中,并且 Fuseki 会“理解”导入并让我一次查询所有这些?
使用tdb:unionDefaultGraph
是一样的吗?completeDomain.owl
使用 subDomain 本体中声明的实体声明的语句会发生什么?另外,我看不出tdb:unionDefaultGraph
和Union Model的区别。
如您所见,我有点困惑,任何帮助将不胜感激!
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 导入的数据丢失了?这个查询有什么问题?如何从两个导入中获取结果?
multithreading - 是否可以同时写入同一个数据集文件但写入不同的命名图(每个线程写入不同的命名图)?
在 Jena 的 TDB 中,数据似乎是由一个“数据集”(由一个目录指定)组织的,它可以包含多个“命名图”。
关于查询此类数据的并发策略,我发现的唯一与并发相关的文档是 TDB 文档TDB Java API中的以下句子:
可以使用用于并发访问的多读取器或单写入器 (MRSW) 策略直接对数据集进行操作而无需事务。
但是,我不确定这种 MRSW 政策的粒度。它是在整个数据集上,还是在数据集中的单个命名图上?
编辑:更具体地说,我的要求是我想在没有任何读取操作的情况下对不同的命名图(每个线程写入不同的命名图)进行只写更新,这可能吗?还是我必须一次让一个线程更新。