0

请如何创建耶拿规则。有我的 SWRL 规则

    1-System(?x) ∧ hasNbAbsence(?x, ?y) ∧ swrlb:greaterThan(?y, 10) →  BadBehaviorOperators(?x)
2-System(?x) ∧ hasNbAbsence(?x, ?y) ∧ swrlb:lessThanOrEqual(?y, 10) →  GoodBehaviorOperators(?x)
3-System(?x) ∧ hasNbStations(?x, ?y) ∧ swrlb:greaterThan(?y, 50) ∧ hasTimeBetweenSuccTravel(?x, ?z) ∧  swrlb:lessThanOrEqual(?z, 15) →  HighAvailableSystem(?x)
4-System(?x) ∧ hasNbAccident(?x, ?y) ∧ swrlb:greaterThan(?y, 30) →  InsecureSystem(?x)
5-System(?x) ∧ hasNbStations(?x, ?y) ∧ swrlb:lessThanOrEqual(?y, 25) ∧ hasTimeBetweenSuccTravel(?x, ?z) ∧  swrlb:greaterThan(?z, 30) →  LowAvailableSystem(?x)
6-System(?x) ∧ hasNbStations(?x, ?y) ∧ swrlb:lessThanOrEqual(?y, 50) ∧ swrlb:greaterThan(?y, 25) ∧  hasTimeBetweenSuccTravel(?x, ?z) ∧ swrlb:greaterThan(?z, 15) ∧ swrlb:lessThanOrEqual(?z, 30) →  MiddleAvailableSystem(?x)
7-System(?x) ∧ hasDelayDuration(?x, ?y) ∧ swrlb:greaterThan(?y, 5) ∧ swrlb:lessThanOrEqual(?y, 10) ∧ hasNbDelays(?x, ?z) ∧  swrlb:greaterThan(?z, 10) ∧ swrlb:lessThanOrEqual(?z, 30) →  MiddleRespectTimeSystem(?x)
8-System(?x) ∧ hasNbAccident(?x, ?y) ∧ swrlb:greaterThanOrEqual(?y, 10) ∧ swrlb:lessThanOrEqual(?y, 30) →  MiddleSecureSystem(?x)
9-System(?x) ∧ hasNbDelays(?x, ?y) ∧ swrlb:lessThanOrEqual(?y, 5) ∧ hasDelayDuration(?x, ?z) ∧  swrlb:lessThanOrEqual(?z, 10) →  RespectTimeSystem(?x)
10-System(?x) ∧ hasNbAccident(?x, ?y) ∧ swrlb:lessThan(?y, 10) →  SecureSystem(?x)
11-System(?x) ∧ hasNbDelays(?x, ?y) ∧ swrlb:greaterThan(?y, 10) ∧ hasDelayDuration(?x, ?z) ∧ swrlb:greaterThan(?z, 30) →  UnrespectTimeSystem(?x)

谢谢大家

4

2 回答 2

0

我不知道(也不认为有)这个任务的 API。但是你可以自己轻松地做到这一点。

您可以使用您可以在http://jena.apache.org/documentation/inference/找到的语法简单地使用三重模式。

第一个示例应转换为(我从未使用过 SWRL):

[RuleExample: (?X rdf:type NS:System), (?X NS:hasNbAbsence ?Y), greaterThan(?Y, 10)
-> (?X rdf:type NS:BadBehaviorOperators)]

其中 NS 是您的本体的 Uri。

对于完整的语法和解释,我会查看官方网站(上面的链接)。

于 2014-02-21T14:06:14.080 回答
0

没有任何代码可以随时执行这种类型的转换(当然,除非您自己编写)但是,它确实不是必需的。您可以直接在本体中放置 SWRL 规则,而无需像使用 Jena 规则那样指定外部规则文件。所以你在这里有几个选择:
1)在你的本体中将你的规则编码为 SWRL 规则。这可以通过 protege 来完成,或者如果您有信心使用 swrl xml 语法自己做 :)
参考:http ://www.w3.org/Submission/SWRL/#5

2) 在 Jena 中编写等效规则,即在具有 Jena 规则语法的文本文件中。这有点棘手,因为 Jena 规则节点(或原子,如果你愿意的话)类似于 rdf 三元组,并且以这种格式指定复杂规则可能有点棘手。
参考:https ://jena.apache.org/documentation/inference/#RULEsyntax

于 2015-08-27T11:26:17.450 回答