请如何创建耶拿规则。 有我的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)
感谢所有
答案 0 :(得分:0)
我不知道(并且不认为有)此任务的API。但是你可以自己轻松地做到这一点。
U可以简单地使用tripple模式,其语法可以在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。
有关完整的语法和解释,我会查看官方网站(上面的链接)。
答案 1 :(得分:0)
没有可以执行此类转换的代码(除非您自己编写),但实际上并不需要。您可以直接在本体中放置SWRL规则,而不必像使用Jena规则那样指定外部规则文件。所以你有两个选择:
1)在您的本体中将规则编码为SWRL规则。这可以通过protege完成,或者如果你有信心使用swrl xml语法自己做:)
参考:http://www.w3.org/Submission/SWRL/#5
2)在Jena中写出等效规则,即在带有Jena规则语法的文本文件中。这是一个有点棘手,因为耶拿规则节点(或者如果你愿意的话,原子)类似于rdf三元组,以这种格式指定复杂规则可能有点棘手。
参考:https://jena.apache.org/documentation/inference/#RULEsyntax