问题标签 [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 投票
1 回答
602 浏览

java - 如何通过推理在 Apache Jena 中实现名称空间之间的映射?

目标:

我不想在本体之间实现基于规则的映射以完成数据迁移的常见任务。

实现目标的方法:

为了实现这一点,我开发了一种抽象数据结构,它能够存储任何数据类型的 xml 表示提供的所有信息。然后我编写了一个解析器,它从目标文档类型定义中构建了一个本体。现在,当我读取其中的数据时,它首先与abstractDatatype命名空间相关联,我们将其称为aS目标数据结构位于命名空间tS中。

问题:

如果我尝试通过这样的规则在具有相同名称但不同命名空间的两个资源之间表达类型平等:

推理者不明白。也许规则有错误,应该解释为:如果有相同的类型名映射到不同的命名空间 tS,就像它在 aS 中一样,那么 aS 的所有个体tS中也得到相同的类型 另一个问题是,这如果没有某种类型的个体,那么某种规则可能不起作用,并且有人告诉我,这样表达它可能还不够。几乎或者,我也可以创建在所有组合之间进行映射的 SubClassOf 规则,但这会在模型中产生很多污垢,我希望能够添加更多过滤条件而不是更通用。

但是,如果有人对基于规则的本体映射有一些经验,我将很高兴获得一些见解。

这是一个 java 单元测试,它演示了不工作的映射问题:

0 投票
1 回答
824 浏览

sparql - Jena TDB 原因后更新

我正在使用 Jena,我想将新的本体更新到我的 tdb 中。例如。我的本体中有 100 行,在我添加一些规则并运行推理器后,现在有 105 行。而且我需要在我的 tdb 中更新这 5 个额外的行。我怎样才能做到这一点?

我尝试用谷歌搜索它,我发现了两种方法。一个是使用 sparql 来更新,另一个是截断 tdb 并将新模型添加到其中。

还有其他更好的解决方案吗?

谢谢

--

代码

再说一次,我的问题是如何处理我的 tdb 的新“infmodel”。我只想更新新的事实。

这是我从 tdb 获取模型的方法。

0 投票
2 回答
1067 浏览

java - Using Jena Rules File on inferred model to create a validator for an ontology

What I want to do: Create a validator for an ontology in Java. For this I want to use Jena Rules on a inferred model. Unfortunately I can't use both the standard reasoner (ReasonerRegistry.getOWLReasoner()) and after this my own reasoner (new GenericRuleReasoner(Rule.rulesFromURL("file:rulefile.txt"))). Is this possible somehow?

0 投票
0 回答
355 浏览

java - 创建函数并从 Jena Rule 调用它

我创建了一个在节点之间执行一些计算的函数。我想从耶拿规则中调用这个函数?这可能吗?我发现可以从耶拿规则调用内置函数,但我想调用我自己的函数。如何编写内置函数?

0 投票
2 回答
1355 浏览

rdf - 本体验证的耶拿规则

我想验证一个本体,如果有任何不正确的地方就抛出一个错误。

我要做的最验证看起来像这样:我有一个这样的类:

(有趣的部分是第二个 subClassOf。)在 Protege 中,这意味着ExampleClass is subClass of myProperty exactly 1 OtherClass.

因此,我想验证是否存在一个具有值的 myProperty:OtherClass 类型的个体。

是否可以验证这样的规则?完美的情况是,如果有一个规则可以为所有具有这种建模的类执行此操作(也许还有至少 1 个,正好 2 个,......)

另一个问题是:是否有一个现成的封闭世界推理器正在为我做这件事?

0 投票
1 回答
199 浏览

jena - Jena GenericRuleReasoner

如果我们将一个变量放在 GenericRuleReasoner 的头部,而该变量没有出现在规则的主体中,会发生什么?

例如,如果我们有以下规则:

规则说每个人都有一个父亲。假设我们有一个三元组:a rdf:type :Person ,推理器在这里表现如何?它会创建一个带有空白节点的新三元组_x :father :a吗?

0 投票
0 回答
570 浏览

java - 耶拿没有使用通用规则推理器的规则输出

我在 Protege 中创建了一个本体,并使用 Jena 在 Eclipse 中导入了该本体。我在规则文件中编写了规则,并希望规则的输出显示在 Jena 中,但它不显示输出。程序正在执行而没有错误。本体的细节是

事情
孩子

  • 0-12个月
  • 1-3年
  • 4-7年
  • 7-12年

玩具

  • 自行车
  • 建筑模块
  • 娃娃
  • 冰鞋
  • 毛绒玩具

添加了一种数据类型属性 playWith 域子项和范围玩具,其反向播放通过添加了四个个人

  • 0-12月的Jhon实例
  • 1-3年的玛丽实例
  • 4-7 年的 sam 实例
  • 史密斯实例7-12年
    • Stuffed_toy 的 teddy 实例编写了一条规则,用于使用属性 playWith 作为 stuffed_toys teddy 的实例来分配 0-12Months 类的实例

代码是;

RDF/xml 代码是


我想要规则执行的输出,并且子类的所有语句都不会打印,请帮助我找到我多年来一直在苦苦挣扎的解决方案。

非常感谢您在我的问题上花费时间很抱歉没有以正确的格式提出问题。我已更新,请让我知道我想使用儿童本体的错误,并通过使用推理器设计一组规则来进行个性化以根据儿童的年龄组预测他们喜欢的玩具,请帮助我找到解决方案。

0 投票
1 回答
191 浏览

java - 从数学表达式到耶拿规则

A = {x 1 ,x 2 ,...,x n }。我们要计算x ix j之间的差异,其中x jmin{x ∈ A : x > x i }。有可能将这种表达式翻译成耶拿规则吗?

0 投票
2 回答
834 浏览

java - 如何将 Jena 规则添加到 OntModel

我正在尝试将作为字符串提交的 Jena 规则添加到以下方法。但是没有添加规则,因为我可以验证写入 E://1_1_1 的本体没有新的变化有人可以帮我怎么做。其他可能相关的 SO 问题是26292160349652;两者都与我的情况相似。

规则本身的格式是, [ r1: (?x :objProp1 :ind_x) -> (?x :objProp2 :ind_y) ]其中objProp's 是对象属性,ind_x,ind_y是个体以及规则字符串中“:”的必要前缀。

0 投票
1 回答
2154 浏览

java - 如何从 Jena RDF Inf 模型中的节点值获取个人名称

我在从 Jena 图中提取个人姓名时遇到问题(具有通用规则推理器和 OntSpec 的 RDF 推理模型是 RDFS_MEM_RDFS_INF )。这可能是一个简单的案例,但我无法在网上找到合适的教程来完成这项工作(耶拿规则的新手)。在这种情况下需要调用什么正确的 api?

Jena 规则文件具有以下规则

我需要 ?x 在个人姓名方面的值