【发布时间】:2015-07-16 14:38:44
【问题描述】:
我开发了一个ontology,我想在 protege 中添加以下 SWRL:
Divider_intersection(?node), is_extent_of(?node, ?s), builds(?s, ?l),Segment(?s),Lane(?l),detailed_partition(?d), builds(?l, ?d)-> is_divided_at(?d, ?node)
我希望在来自detailed_partition (?d) 的个体和分类为divider_intersection 的节点之间添加一个对象属性is_divided_at,如果它是构建车道的段(?s) 的范围( ?l) 然后构建详细的? 分区 (?d)。如上所述,我正在寻找 NamedIndividuals,因此我认为 SWRL 应该可以完成这项工作。
进一步研究,我发现 Rolification (1, 2, 3) 作为一个可能的答案,但我以前从未使用过它,但我做了以下链:
r_Divider_intersection o is_extent_of o r_Segment o builds o r_Lane o builds o r_detailed_partition
我仍然没有得到答案。知道有什么问题吗?
【问题讨论】:
-
我们看不到您的本体,并且非现场链接没有多大帮助(例如,它们可能会过期)。你能把本体贴在这里吗?
-
也就是说,属性链和 SWRL 规则看起来是正确的。某处可能存在一些小错误,但如果您想使用 rolification 而不是 SWRL 规则,看起来您的方法是正确的。
-
顺便说一句,既然链以节点开始,以详细分区结束,那么结论不应该是
is_divided_at(?node,?d)(即, ?node 和 ?d 以其他顺序)? -
你是对的......所以如果我想改变我的 is_divided_at 中 args 的顺序,我应该反转所有的关系,对吧?
-
你不应该需要一个大的本体来说明你遇到的问题。您需要创建一个演示问题的最小示例。我知道在这种情况下这是可能的,因为我在回答中几乎就是这样做的。发布一个最小的本体,其中仅包含说明问题所需的部分。您可能会发现 How to create a Minimal, Complete, and Verifiable example 很有帮助。