【问题标题】:SWRL and Rolification cannot return what I wantSWRL 和 Rolification 无法返回我想要的
【发布时间】: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_pa​​rtition (?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 很有帮助。

标签: owl protege swrl


【解决方案1】:

您的方法有效,并且在没有看到您的本体的情况下(您的链接需要权限,并且非现场链接无论如何都不是很有帮助),我们无法看到您的特定构造为什么有效。从您的问题中跳出来的一件事是,您的 is_divided_at 属性的参数 (?d,?node) 与属性链的顺序相反公理会产生。无论如何,这是一个工作示例。

@prefix :      <urn:ex:#> .
@prefix ex:    <urn:ex:#> .
@prefix rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix owl:   <http://www.w3.org/2002/07/owl#> .
@prefix xsd:   <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .

ex:isDividedAt  a               owl:ObjectProperty ;
        owl:propertyChainAxiom  ( ex:_DividerIntersection ex:isExtentOf ex:_Segment ex:builds ex:_Lane ex:builds ex:_DetailedPartition ) .

ex:Segment  a                owl:Class ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  ex:_Segment
                             ] .

ex:_DetailedPartition
        a       owl:ObjectProperty .

ex:DividerIntersection
        a                    owl:Class ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  ex:_DividerIntersection
                             ] .

ex:_Segment  a  owl:ObjectProperty .

ex:_Lane  a     owl:ObjectProperty .

ex:builds  a    owl:ObjectProperty .

ex:dividerIntersection0
        a              owl:NamedIndividual , ex:DividerIntersection ;
        ex:isExtentOf  ex:segment0 .

<urn:ex:>  a    owl:Ontology .

ex:detailedPartition0
        a       owl:NamedIndividual , ex:DetailedPartition .

ex:_DividerIntersection
        a       owl:ObjectProperty .

ex:segment0  a     owl:NamedIndividual , ex:Segment ;
        ex:builds  ex:lane0 .

ex:DetailedPartition  a      owl:Class ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  ex:_DetailedPartition
                             ] .

ex:isExtentOf  a  owl:ObjectProperty .

ex:lane0  a        owl:NamedIndividual , ex:Lane ;
        ex:builds  ex:detailedPartition0 .

ex:Lane  a                   owl:Class ;
        owl:equivalentClass  [ a               owl:Restriction ;
                               owl:hasSelf     true ;
                               owl:onProperty  ex:_Lane
                             ] .

【讨论】:

  • 我应该在这里添加一些东西,也可以推断出divider_intersection。我实际上需要知道一个节点是否被推断为一个分隔符,那么该节点的 detail_part is_divided_at。并推断该节点需要是构建通道的段的扩展,然后构建该详细的_part :D ...我认为这对我来说有点复杂
  • 我不确定你的意思。即使某事物被推断为 DividerIntersection 而不是直接断言为 1,推理仍然有效。
  • 非常感谢 Joshua Taylor,您对我的帮助很大。现在可以了。我能问你一些事吗?我也是瑞典的博士生,最近开始研究空间数据领域的本体,我希望我们可以进行更多合作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
相关资源
最近更新 更多