【问题标题】:SWRL rule does not the right thingSWRL 规则不正确
【发布时间】:2019-01-28 07:42:42
【问题描述】:

我有一个希望 Protege 的本体,现在我想实现规则。

我有一个人的字面量为PANEL = "R1-2B"。我喜欢制定一个规则,如果这个值是“R1-2”,那么这个人就有对象属性“isGiveWaySign”。

我已经尝试了一些东西,但我的 SWRL 并不像想象的那样。我只得到 man 新类,而不是只设置一个对象属性。

我的方法如下:

PANEL(?a, ?b) ^ swrlb:substring(?b, "R1-2") -> isGiveWaySign(?a)

我错过了什么吗?

【问题讨论】:

  • 一元谓词表示 OWL 中的一个类...OWL 中的属性始终是二元谓词。如果 isGiveWaySign 应该是一个属性,那么你应该为它添加一个值,例如"true"^^xsd:boolean 或其他 - 我不知道你的本体。
  • 这是我当前本体的截图!Valid XHTML.
  • 我在“SignsRegulatory”类中有三个实例。一个是例如Sign_GiveWay_6411546。此人的 PANEL_01_DESIGN 值为“R1-2B”。我想要读取这个值的规则,然后将这个人移动到类:GiveWaySign(可能通过设置对象属性'isGiveWaySign')。我尝试过的这些东西不起作用

标签: semantics protege rule validationrules swrl


【解决方案1】:

更正上面对我更有效的解决方案:

面板(?s, ?gws) ^ swrlb:contains(?gws, "R1-2") ^ Sign(?s) -> GiveWaySign(?s)

【讨论】:

  • 你最好edit你之前的回答,
【解决方案2】:

我使用堆栈溢出的出色血压示例解决了这个问题。我已经简化了我的本体并且可以确定我的问题的解决方案:

面板(?s, ?gws) ^ swrlb:contains(?gws, "R1-2") ^ Sign(?bs) -> GiveWaySign(?bs)

【讨论】:

  • 正确。你应该解释一下swrlb:contains 与提取字符串的swrlb:substring 相比检查字符串包含。顺便说一句,您仍在“生产”类断言而不是属性断言。
  • 请不要忘记“接受”您自己的答案,以便将其标记为“已解决”
  • 谢谢!。但是,仍然有一个奇怪的行为,如果我在 Protege OWL SWRL -> Drools 的 SWRL 选项卡中运行,再次运行 Drools 和 Drools,那么我会得到许多新类...
猜你喜欢
  • 2015-05-24
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2011-09-25
  • 2015-11-23
  • 2011-07-23
相关资源
最近更新 更多