问题标签 [jena-rules]

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 投票
3 回答
540 浏览

java - 早先打印 InfModel 会在以后更改打印表示?

我在使用推理 API 的 Jena 2.5.5(在 Linux 上)中得到了一种奇怪的效果。以下代码是精简版。我正在创建一个最初为空的模型和一个通用规则推理器。我为某个陈述添加了反身性规则。我将推理器附加到模型以获得 InfModel。然后我创建匹配语句并将其添加到模型中。

结果:InfModel 包含语句及其反向语句。到目前为止一切顺利,这就是它应该做的。

现在,当我System.out.println()在将匹配语句添加到 Model 之前的 InfModel 时,结果完全不同:规则似乎没有触发,因此,InfModel 最终将不包含原始语句的反向。

将模型写入控制台会如何改变代码的功能?这种行为是否记录在案?

0 投票
1 回答
771 浏览

jena - 如何更改推理规则

我正在使用 Eclipse 和 Jena 框架来开发 Web 应用程序。我的应用程序执行以下操作:

  1. 使用姓名、电子邮件、兴趣(C语言、Java等)、职业、用户名和密码等信息注册新用户。

  2. 此信息存储在名为 user.rdf 的 rdf 文件中。

  3. 使用新的所需用户名和密码创建一个新的用户帐户。新用户的登录根据用户的兴趣打开数据库中的所有相关书籍。

  4. 现在我需要向新用户推荐以下内容:

如果他/她对 C 语言感兴趣,则会向他推荐 C++ 书籍,并且可以将列表填充到屏幕上。

我知道这需要一个需要事实和规则的推理引擎。事实将在存储用户兴趣的 rdf 文件中。规则文件将根据推荐完成时的规则显示。

我有一个包含以下内容的 user.rdf 文件。

用户 Suresh 和 Anvika 实际上是在 Protege 中创建的,然后文件将通过应用程序使用其他用户详细信息进行更新。

test.rules 文件具有以下内容:

随之而来的推论是

现在由于线路有

inference 给用户 Anvika 推荐 LikeC++。但是对于同样对 C 语言感兴趣的用户 Raj 来说也是如此。我知道该行仅导致推断出用户 Anvika。但是这条线是通过 Protege 自动添加的。我的程序不这样做。那么如何通过我的应用程序添加该行。如果这不可能,请告诉我如何更改规则以推断正确的结果。

请帮我。我被这件事震惊了很长时间。

0 投票
0 回答
291 浏览

java - 我如何确定耶拿推理者是否是具有规则能力的推理者

Jena 在返回模型的推理器时提供了一个通用的推理器接口。如何确定它是否基于规则,以便将其转换为 aGenericRuleReasoner并使用操作规则的方法?

注意:不使用instanceof:)

例子

所以现在推理器是由 acom.hp.hpl.jena.reasoner.rulesys.OWLMicroReasoner决定的,.getClass()但我想GenericRuleReasoner通过确定它是否是一个规则能力来将其转换为 a 。

0 投票
2 回答
1895 浏览

sparql - 有什么方法可以在不将所有数据加载到内存的情况下使用 Jena 进行推理?

我有大量的 RDF 数据要推断,我需要开发自己的推断规则。我的问题是,是否有任何方法可以做到这一点?可以使用 Jena 规则和 SPARQL 这样做吗?Jena 规则和 sparql 查询是否必须将所有数据加载到内存中?希望尽快得到答案,并提前感谢!

0 投票
1 回答
568 浏览

rdf - Jena 规则:如何执行从 float 到 double 的文字值类型转换(反之亦然)?

我有以下耶拿规则来执行加法:

该规则几乎可以正常工作以执行所需的加法结果。我遇到的问题是传递给 sum 函数的值都是浮点数,但返回的值 (?somme) 以双精度形式返回。

出乎意料的结果是它在结果中添加了一个小的十进制数(我认为这与类型转换有关)。

例如,如果我想求三个值 2.2、2.5 和 2.7 的总和;我得到的结果是 7.1000000953674316 (接近但不太正确)。

有没有办法使用这个 Jena 规则,我可以将我的浮点值 (?valeur & ?oldValeur) 转换为 double 类型,然后使用这些新的 double 值执行 sum 函数,然后最终转换输出 (?somme)变成浮点值?

我认为这样做可能不会将额外的小数位添加到我的输出中。

0 投票
1 回答
597 浏览

jena - rdf reasoning rules via Jena

I want to express this relation: if article X has author Y, and the author has the influenceFactor medium or high(3 classes: low , medium, high) then this article is regarded as highly recommended.

is my thought right?

here is some snippet of the ontology

sincere thanks to any viewer of my question :)

0 投票
1 回答
476 浏览

jena - Jena 使用内置的自定义规则

我目前正在搞乱耶拿试图创建规则以添加到我的通用推理器中。我创建了以下简单规则:

这工作正常,并且可以正确触发,给了我所期望的一切。完成此操作后,我想为 分配一个时间戳?x,以便我知道何时得出结论,我想Now按如下方式使用内置函数。

不幸的是,这不起作用,它也不会抛出错误,它似乎没有绑定任何时间值,?x而且它似乎阻止了规则像第一种情况一样被正确触发。我正在使用的本体如下。有任何想法吗?

0 投票
1 回答
1135 浏览

rdf - 反向链接 Jena 推理器

我一直在阅读 Jena 文档,以尝试创建一个简单的纯反向链接推理器。我有一个简单的反向链接规则,我将其应用于一个小型本体。我想知道是否无论如何都要在每个查询的基础上进行反向链接,这样当我得到我的 InfModel 时,并不是所有的蕴涵都被计算出来:

而是仅在被请求时。因此,对于以下规则:

我可以注册一个查询以查找特定类的所有类型,然后触发上述规则吗?

0 投票
1 回答
396 浏览

rdf - Jena rule not firing when expected

I've started to use Jena and tested its rules-based reasoners, but I'm not seeing the results that I expect. I listed all of individual statement and these are from my OWL files:

I want to select to select CreditCardPayment, so I wrote this rule:

but the rule doesn't fire. What I did wrong with rule file? (I've already tested on

and it works.

0 投票
2 回答
1450 浏览

java - 带有 TDB 的 Jena 规则引擎

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

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

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

这是一小段代码: