问题标签 [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.
java - 早先打印 InfModel 会在以后更改打印表示?
我在使用推理 API 的 Jena 2.5.5(在 Linux 上)中得到了一种奇怪的效果。以下代码是精简版。我正在创建一个最初为空的模型和一个通用规则推理器。我为某个陈述添加了反身性规则。我将推理器附加到模型以获得 InfModel。然后我创建匹配语句并将其添加到模型中。
结果:InfModel 包含语句及其反向语句。到目前为止一切顺利,这就是它应该做的。
现在,当我System.out.println()
在将匹配语句添加到 Model 之前的 InfModel 时,结果完全不同:规则似乎没有触发,因此,InfModel 最终将不包含原始语句的反向。
将模型写入控制台会如何改变代码的功能?这种行为是否记录在案?
jena - 如何更改推理规则
我正在使用 Eclipse 和 Jena 框架来开发 Web 应用程序。我的应用程序执行以下操作:
使用姓名、电子邮件、兴趣(C语言、Java等)、职业、用户名和密码等信息注册新用户。
此信息存储在名为 user.rdf 的 rdf 文件中。
使用新的所需用户名和密码创建一个新的用户帐户。新用户的登录根据用户的兴趣打开数据库中的所有相关书籍。
现在我需要向新用户推荐以下内容:
如果他/她对 C 语言感兴趣,则会向他推荐 C++ 书籍,并且可以将列表填充到屏幕上。
我知道这需要一个需要事实和规则的推理引擎。事实将在存储用户兴趣的 rdf 文件中。规则文件将根据推荐完成时的规则显示。
我有一个包含以下内容的 user.rdf 文件。
用户 Suresh 和 Anvika 实际上是在 Protege 中创建的,然后文件将通过应用程序使用其他用户详细信息进行更新。
test.rules 文件具有以下内容:
随之而来的推论是
现在由于线路有
inference 给用户 Anvika 推荐 LikeC++。但是对于同样对 C 语言感兴趣的用户 Raj 来说也是如此。我知道该行仅导致推断出用户 Anvika。但是这条线是通过 Protege 自动添加的。我的程序不这样做。那么如何通过我的应用程序添加该行。如果这不可能,请告诉我如何更改规则以推断正确的结果。
请帮我。我被这件事震惊了很长时间。
java - 我如何确定耶拿推理者是否是具有规则能力的推理者
Jena 在返回模型的推理器时提供了一个通用的推理器接口。如何确定它是否基于规则,以便将其转换为 aGenericRuleReasoner
并使用操作规则的方法?
注意:不使用instanceof
:)
例子
所以现在推理器是由 acom.hp.hpl.jena.reasoner.rulesys.OWLMicroReasoner
决定的,.getClass()
但我想GenericRuleReasoner
通过确定它是否是一个规则能力来将其转换为 a 。
sparql - 有什么方法可以在不将所有数据加载到内存的情况下使用 Jena 进行推理?
我有大量的 RDF 数据要推断,我需要开发自己的推断规则。我的问题是,是否有任何方法可以做到这一点?可以使用 Jena 规则和 SPARQL 这样做吗?Jena 规则和 sparql 查询是否必须将所有数据加载到内存中?希望尽快得到答案,并提前感谢!
rdf - Jena 规则:如何执行从 float 到 double 的文字值类型转换(反之亦然)?
我有以下耶拿规则来执行加法:
该规则几乎可以正常工作以执行所需的加法结果。我遇到的问题是传递给 sum 函数的值都是浮点数,但返回的值 (?somme) 以双精度形式返回。
出乎意料的结果是它在结果中添加了一个小的十进制数(我认为这与类型转换有关)。
例如,如果我想求三个值 2.2、2.5 和 2.7 的总和;我得到的结果是 7.1000000953674316 (接近但不太正确)。
有没有办法使用这个 Jena 规则,我可以将我的浮点值 (?valeur & ?oldValeur) 转换为 double 类型,然后使用这些新的 double 值执行 sum 函数,然后最终转换输出 (?somme)变成浮点值?
我认为这样做可能不会将额外的小数位添加到我的输出中。
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 :)
jena - Jena 使用内置的自定义规则
我目前正在搞乱耶拿试图创建规则以添加到我的通用推理器中。我创建了以下简单规则:
这工作正常,并且可以正确触发,给了我所期望的一切。完成此操作后,我想为 分配一个时间戳?x
,以便我知道何时得出结论,我想Now
按如下方式使用内置函数。
不幸的是,这不起作用,它也不会抛出错误,它似乎没有绑定任何时间值,?x
而且它似乎阻止了规则像第一种情况一样被正确触发。我正在使用的本体如下。有任何想法吗?
rdf - 反向链接 Jena 推理器
我一直在阅读 Jena 文档,以尝试创建一个简单的纯反向链接推理器。我有一个简单的反向链接规则,我将其应用于一个小型本体。我想知道是否无论如何都要在每个查询的基础上进行反向链接,这样当我得到我的 InfModel 时,并不是所有的蕴涵都被计算出来:
而是仅在被请求时。因此,对于以下规则:
我可以注册一个查询以查找特定类的所有类型,然后触发上述规则吗?
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.
java - 带有 TDB 的 Jena 规则引擎
我正在将我的数据加载到 TDB 模型中,并使用 Jena 编写了一些规则以应用于 TDB。然后我将推断的数据存储到一个新的 TDB 中。
我在一个约 200kb 的小数据集中应用了上面的案例,并且措辞很好。但是,我的实际 TDB 是 2.7G,计算机已经运行了大约一周,实际上它仍在运行。
这是正常的,还是我做错了什么?耶拿规则引擎的替代品是什么?
这是一小段代码: