问题标签 [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 - 耶拿的自定义内置
这是我写的代码,但新的内置似乎不起作用。我得到错误:
线程“主”com.hp.hpl.jena.reasoner.rulesys.impl.LPRuleSyntaxException 中的异常:后向规则中的语法错误:matematica 未知的内置操作 mysum
谁能告诉我错误在哪里?这是我的代码:
java - 将数组作为参数提供给 Jena 内置
我需要为 Jena 创建一个新的内置插件。有了这个,我希望能够从中提取最小日期。我只是想知道是否可以将一类数据提供给内置而不是一个参数。
这是我的函数的 bodyCall :
这是我的简单规则:
我给了内置的三个参数。两个用于输入,一个用于输出。我的想法是使用两个变量:?c 和?d。他们俩都有生日日期。我想从 ?c 获取第一条记录,从 ?d 获取下一条记录。但是,看起来耶拿每次都拿第一张唱片。
是否有可能通过 Java 告诉我想要第二条记录并滚动结果?
比如我的本体由两个日期组成:1)1992-04-13T00:00:00.0;2)1988-04-25T00:00:00.0
我想在 ?c 中有 1) 和 2) 在 ?d 中,然后制定一个算法来获得它们之间的最小值。
ps:在上面的“bodyCall”中,我尝试获得我给规则的日期之间的最大值。它可以很好地用于此目的。
谢谢你们。
java - 为新的内置函数 Jena 创建一个库
我为 Jena 制作了一些新的内置插件。我想创建一个图书馆,我可以把它们都放在那里。
我怎样才能做到这一点 ?在这种情况下如何创建我的规则?我需要在规则文件中导入一些文件吗?
java - 在 Jena 的规则推理器中记录先前断言的三元组的推导?
我在文档中创建了一个 Jena Rule Reasoner
一切正常,我可以检查推断模型中三元组的推导,但是rawData
推理器不会重新推断已经存在的三元组,即使它们可以,这意味着不会有推导的记录这样的三元组。有没有办法强制推理器重新推断和记录原始数据中已经存在的三元组的推导?
jena - OWL 推理:NOT 的替代方案
我正在使用 OWL 规则在 JENA 做一个项目。
在我的本体中,我有一个名为PEGI_RATING
. 一个PEGI_RATING
可以有多个描述符。
例子:
现在,我想在 OWL 中编写一个规则,为每个PEGI_RATING
. 我知道它已经存在,但需要证明我知道如何使用推理器。
现在,内容描述符附加了一个年龄。我使用以下规则执行此操作:
所以最后我有一个VIDEO_GAME
有PEGI_RATING
id的。例子:
我想创建一个规则来确定PEGI_CONTENT_DESCRIPTOR
s 附加到 的PEGI_RATING
最大年龄VIDEOGAME
。
在 Prolog 我会做这样的事情:
但由于 OWL 似乎并没有被失败否定,所以我不知道如何解决它。
到目前为止,我已经尝试了以下规则但没有成功:
最后结果
所以最后我们有了一个工作函数。它确实做了应该做的事情。然而..
首先,我们有许多 Jena 格式的规则,它们为每个PEGI_CONTENT_DESCRIPTOR
. 这纯粹是出于教学原因(即,表明我们可以使用推理器)。这行得通。当我添加这些规则时,我可以对我的模型执行 SPARQL 查询并获得正确的值。当我写我的模型时(正如 Rob Hall 在他的例子中指出的那样),PEGI_CONTENT_DESCRIPTOR
s 确实有一个年龄。它们看起来像这样:
请记住,视频游戏具有 PEGI 评级 ID ?game vocab:VIDEOGAME_pegiRatingRatingId ?pegiId
:。
我们要执行 Jena Builtin 如下:
为此,我们有以下功能。它确实有效。然而,出于某种奇怪的原因,context.find(pegiID, has_descriptor.asNode(), Node.ANY);
似乎没有迭代两个特定PEGI_DESCRIPTOR
的 s。即Sex
和Violence
。如前所述,它们存在于推断模型中,并且是从 SPARQL 查询返回的。我们可以处理一个错误吗?还是我们错过了什么?
java - 如何将规则的结果写入模型(在耶拿)?
我正在做一个项目,我需要使用 Jena framwork 创建一些规则。
我已经制定了规则,它们按应有的方式工作。我可以在屏幕上看到输出,但我想做的是将结果存储到我拥有的本体模型中。
我有这个代码:
在此示例中,我使用的是我之前创建的自定义内置插件。它返回两个日期之间相差的年数。由于以下代码,我可以在屏幕上看到输出:
如何在我的模型中写入数据属性“anni_persona”的结果(而不仅仅是作为输出)?
谢谢你。
jena - 如何在 GenericRuleReasoner 的 Datalog 规则中使用空白节点?
我正在使用 GenericRuleReasoner 来推断我的本体中的虚拟事实。GenericRuleReasoner 将推理规则作为输入中的 Datalog 规则作为jena inference support中的解释。这是附加到通用推理器的 DatalogRule 的示例:
当我在我的数据上测试此代码时,它运行良好并推断出 2000 个虚拟事实。但是,当我更改 Datalog 规则以创建这样的空白节点时
我只得到推断的虚拟事实。
GenericRuleReasoner 的数据记录规则中的空白节点表示是否有问题?
java - Jena 规则:将文字属性测试为字符串
我正在研究对耶拿的推论。我会测试一个属性是一个特定的字符串。我有一个关于服务器的本体,像这样的个人:
我将向具有属性的服务器添加新信息(新属性)
所以,为此我写了一个这样的耶拿规则:
但显然,测试(?S data:identifiant-reseau "POLO")
不起作用。你有这样做的想法吗?
谢谢你。
jena - 如何将 Datalog 规则添加到 Jena 中的 Pellet 推理机?
我在 Datalog Form 中有多个个人推理规则。我可以扩展 JenaGenericRuleReasoner
以便在推理步骤中将它们考虑在内。这是执行此操作的代码示例:
实际上,我想使用Pellet
推理器,因为它很容易插入 Jena。我想知道是否Pellet
可扩展为GenericRuleReasoner
?如果是,如何在其中添加我的 Datalog 规则?
java - 来自 Apache Jena 框架的推理示例问题
我有一个严重的问题要让任何推理器启动并运行。此外,文档中的示例:https ://jena.apache.org/documentation/inference/ 在这里不起作用。我将示例转移到单元测试中,以便更容易重现问题。
推理是否仅限于某些环境,如空间 JDK 等,还是我出错了?
谢谢
这里的示例代码(作为java单元测试):