问题标签 [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.
rdf - 在耶拿规则中添加计时器?
我设计了一套耶拿规则,其中一些规则会持续工作很长时间而不会返回结果。我试图减少我的 OWL 文件以检查规则是否进入无限循环。幸运的是,似乎没有无限循环,少量的类(例如,100 个)处理得非常快。但是,当我添加更多类时,即使只添加一个类,处理时间也会更长。
有没有办法为每个规则添加一个计时器,例如,如果规则花费的时间超过一定时间而没有返回结果,则终止规则?如果有可能,我该怎么做?如果没有,是否有一些解决方法可以达到类似的结果?
我的耶拿规则
我的一些本体
jena - 从推断的耶拿本体中查询个人的最佳方法
我创建了一个基于本体的安全警报。在阅读了一些数据(个人)之后,它变得非常大,所以我决定使用 Jena Rule Reasoner 来确定一些事实。我主要给个人类型和属性并使用一些正则表达式。这是一个小的(构造的)示例,当其信息与正则表达式匹配时,它为个人提供“多重”类型:
[testRuleContent: (?X ns:hasClassification ?Y), (?Y ns:hasText ?Z), regex(?Z, '. Multiple. ') -> (?X rdf:type ns:Multiple)]
为了使用推理器,我根据之前加载的本体创建了一个 infModel:
这没有问题,我可以将 infModel 写入具有添加类型的文件中。
查询某些个体的推断本体的最佳方法是什么(在本例中,类型为:“多个”)?
目前我在推断模型上使用“listStatements()”:
演员表抛出一个异常(它只有一个带有 Uri 的节点)。但是我得到了个人的有效 Uri,并且可以在没有新属性的情况下使用基本本体模型(我只需要它们来获取搜索到的个人,因此它是一个可能的解决方案)。
类似的尝试是在推断模型上使用 getDeductionsModel() 来获取 Model -> OntModel 并查询它(可能使用 SPARQL)。
但我更喜欢一种查询推断模型的简单方法。有这样的解决方案吗?或者你能给我一个提示如何以最好的方式处理这种情况吗?
java - 从 SWRL 规则创建 Jena 规则
请如何创建耶拿规则。有我的 SWRL 规则
谢谢大家
rdf - 在耶拿规则中创建个人
我有很多人的本体,并使用 Jena 推理器来获取有关他们的信息。我的目标是根据规则内的给定信息创建新个体,并为他们分配属性。个人不必命名,但他们需要一个类型并且必须是一些属性的一部分。目前我可以创建匿名个人(在邮件列表帖子的帮助下),但我只能给他们一种类型或一种属性。
这是我的问题的一个小例子;我的规则是这样的(本体和推断结果可以在底部找到):
[test2: (?X rdf:type NS:Test1) ->
[(?Y rdf:type NS:Test2) <- makeSkolem(?Y, ?X)]]
这意味着当找到一个 Test1 个体时,将创建一个新的空白节点,然后将类型 Test2 赋予该节点。它工作正常,但我想给这个新个体一个分类和一个指向 ?X(Test1 个体)的指针(属性)。
像下面这样的东西是行不通的,因为“向后的规则只允许一个头子句”。但是,它的每个子句都可以正常工作。
[test2: (?X rdf:type NS:Test1) ->
[(?Y rdf:type NS:Test2), (?Y NS:hasClassification 'test'), <- makeSkolem(?Y, ?X)]]
这是我的本体:
这是第一条规则的结果(具有 ID 的空白节点A0
是A1
新个体):
java - 在 Jena 中使用自定义规则将个人分配给类型
是否可以在 Jena 中添加定义个人类型的规则?
例如
我在网上找到的所有示例和文档都使用自定义规则来分配个人(对象属性)之间的关系,而不是用于将个人分配给类的此规则。
java - GenericRuleReasonerFactory 产生了什么样的推理器?
我设计了一些规则,想知道 Jena 的GenericRuleReasonerFactory返回的推理器是什么(如下代码所示)?是 Racer、Pellet 还是 HermiT?
jena - 耶拿推理:在结论中动态添加新资源
从我目前所见,所有耶拿推理规则都采用以下形式:
这意味着不能在结论中添加新资源。我需要的是在规则的结论中动态命名和添加新资源。有人可以请我参考解决方案吗?
rdf - Jena规则中的'fb'和'b'是什么意思//OWL,RDFS
有一个耶拿规则
我不知道前缀 b 和 fb。OWL 和 RDFS 文件各有什么不同?
PS。下载 URL 为 https://jena.apache.org/download/index.cgi并点击 jena-2.11.1-source-release.zip (MD5, PGP)
规则目录-> jena-core/src/main/resources/etc
java - 一旦我编写了一个内置函数,我需要做什么才能让推理者意识到它?
我已经编写了一个自定义内置函数以在我的项目中使用,但我真的不知道如何使用它。我写了两节课。其中一个是我制作的内置函数(使用BaseBuiltin
),另一个是我注册了新的内置函数(使用BuiltinRegistry
)。
我已经尝试过使用默认的内置函数,并在使用 Java 的 Eclipse 可读的文本文件中编写使用它们的规则。在这种情况下,我没有任何问题。我怎样才能使用我已经建立的内置?我应该在某些文件中导入(或包含)某些内容吗?
jena - Jena的内置原语?
我对一些内置原语有疑问。是否可以为 DateTime 类型使用内置插件:差异、最小值、最大值、总和,或者为此目的创建自定义内置插件更好?它们适用于整数和浮点数,但似乎不适用于 DateTime 类型(或者我使用的语法可能是错误的)。