问题标签 [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 回答
77 浏览

jena - “为所有人”使用 Apache Jenas 规则引擎

我目前正在研究一些关于 Apache Jena 的小例子。我想展示的是普遍量化。

假设我有每个颜色不同的球。这些球存放在盒子里。我现在想确定这些盒子是否只包含具有相同颜色的球,如果它们是混合的。

所以基本上是这样的:SAME_COLOR = ∃x∀y:{y in Box a → color of y = x}

我知道这对于 Jena 来说可能是不可能的,并且可以转换为以下内容: SAME_COLOR = ∃x¬∃y:{y in Box a → color of y != x}

对于“不存在”,可以使用 Jena 的“NoValue”,但是,这(至少对我而言)不起作用,我不知道如何在 Jena 中翻译上述逻辑表示。对此有什么想法吗?

请参阅下面的代码,这是我能想到的唯一方法:

包含混合内容的框现在具有“是”和“否”两个值。

0 投票
0 回答
384 浏览

sparql - 如何从基于 RDBMS 的系统中填充 RDF 数据

我是语义网和本体的新手。从几周前开始,我开始阅读有关它的论文和在线课程。我有一个想法,使用基于本体规则的系统来扩展我现有提醒系统的功能,如附图所示。我读过本体、规则(例如 SPIN、SPARQL)、推理引擎(例如 Jena)、RDF、RDFS、OWL 等。我想我对它有了大致的了解。

系统架构: 系统架构

但是,我仍然怀念的一件事是:如何将这个基于规则的系统集成到我当前的系统中。当前系统数据存储在 RDBMS (mysql) 数据库中。系统上的每个交易数据都有可能在创建后的稍后时间进行修改。同时,基于本体的系统——AFAIK,依赖于RDF数据格式。我的想法是,应该有一种方法可以将 trx 数据从 RDBMS 转换为 RDF,以供本体系统使用。

我的问题是:

  1. 我的想法正确吗?
  2. 这个过程的最佳实践是什么?
  3. 当现有记录(RDBMS)上有修改的数据时,如何将其反映在RDF上?
  4. 关于#3,在不使用RDBMS的情况下,如果有个别属性的更新,本体系统如何管理他们的RDF数据?这取决于底层的三重存储数据库吗?因为我读到使用 TDB 只能插入或删除。
0 投票
0 回答
232 浏览

rdf - Jena:如何使用 Jena 规则在本体图中更新(未添加)RDF 三元组

如何使用 jena 规则更新 RDF 三元组(未添加新的三元组)。我正在使用通用规则推理器,规则位于单独的文件中,如案例 1 所示

@prefix fa: http://www.smarthome_haier.com#

Rule1: (?a fa:setTimer “0”)(?a fa:windvolume “150”)->remove(0)(?a fa:setTimer “1”)

使用remove() 内置原语添加新三元组并使用 remove() 内置选项删除旧三元组“(?a fa:setTimer “0”)”可以正常工作。

但例如在下面的第二种情况下,我们想要与第一种情况相同的结果

@prefix fa: http://www.smarthome_haier.com#

规则1:(?a fa:airPresure “40”)(?a fa:windvolume “150”)->(?a fa:setTimer “1”)

使用它会在图中添加新的三元组 (?a fa:setTimer “1”),但旧的三元组也存在 (?a fa:setTimer “0”),因为我们没有删除那个。

我们如何在第二种情况下更新三倍? 其中 (?a fa:setTimer “0”) 不存在于规则头中。我希望这能解释这个问题。任何帮助将不胜感激。谢谢!

点击 [这里] Jena 推理支持https://jena.apache.org/documentation/inference/index.html

0 投票
1 回答
88 浏览

jena - Jena 规则:如何使用 now(?x) 内置原语

请有人解释一下现在(?x)耶拿规则中的内置原语。我需要了解这一点,但在互联网上找不到资源。像示例等。仅从 Apache jean 网站找到有关此的信息,即:

now(?x): 将 ?x 绑定到与当前时间对应的 xsd:dateTime 值。

任何如何在规则中使用的示例。

谢谢!

0 投票
0 回答
140 浏览

jena - 如何使用耶拿 fuseki 推理器计算三倍数?

我正在编写一个规则文件(Fuseki Generic Reasoner),期望计算某个主题的 rdf 对象数,以便我可以使用该数来决定是否创建一个新的三元组。但是,我找不到可行的方法来处理它。

使用 sparql,很容易对对象进行计数。

但是我似乎很难用规则文件来实现操作。

这是 rdf 龟文件:

我的期望(伪代码):

所以我可以得到三倍 (foo:bar1 foo:is 'true') 和 (foo:bar2 foo:is 'false')

0 投票
0 回答
29 浏览

jena - 如何在自定义内置原语中添加三元组以进一步查询?

我试过这段代码

但是,我无法使用 sparql 获得这个三元组。

0 投票
1 回答
41 浏览

instance - 如何处理耶拿中的类实例?

在本体中,假设我们有一个名为“function”的类,它有两个实例“func1”和“func2”,并假设该类有一个数据属性“d”。

我的第一个问题是:如何创建与 "func1" 或 "func2" 相对应的个人?

我的第二个问题是:在推论中,使用耶拿规则,我想检查为“func1”创建的个人的“d”是否大于某个值,以及为“func2”创建的个人的“d”是否大于另一个值。

我已经知道如何处理类、属性和个体,但是当我谈到有实例的部分时,我就卡住了。

0 投票
0 回答
56 浏览

jena - 如何从字符串内容在 Jena Fuseki 中创建自己的规则?

我正在尝试在 Jena Fuseki 中创建自己的财产规则。为此,我使用了Generic Rule Reasoning允许我使用自己的规则的方法。当我将此策略与文件中的规则一起使用时,一切正常:

但是,我不想使用文件,而是直接将规则添加为字符串。例如,我试图复制上面示例中有效的规则文件的内容(文件的一小部分):

并将其放入一个变量中string_rules_variable(带有适当的转义):

其中 ${string_rules_variable} (javascript 字符串插值)包含从文件中读取的规则。

最后,存储库的创建没有错误,但是规则不起作用,owlmicro语句也没有出现在存储库中。

那么,我做错了什么,还是耶拿 Fuseki 问题?

PS我正在使用nodejs在标头中带有内容类型的post请求正文中发送它。text/turtle

0 投票
0 回答
37 浏览

jena - Apache Jena 中基于 Prolog 的推理器

Apache Jena 允许我们在 Datalog 中编写推理器的规则。是否可以配置 apache jena 以用 prolog 规则替换数据记录规则?Prolog 提供比数据记录更多的功能。

谢谢

0 投票
0 回答
39 浏览

owl - Jena Reasoner 和属性推理

我正在尝试使用 Jena OWL Reasoner,我正在使用的示例本体定义

我希望为所有 skos 推断索引值:memberList 项目无法使其工作

  1. 这甚至可能吗?
  2. 如何使用 Jena 实现这一目标。