SWRL规则比较来自两(2)类的个体



我有一个简单的本体,它有不同的类,其中courseslessons是类。我正在尝试运行一个SWRL规则,该规则将属性belongsTolessons的个体相关联。我正在使用OWLReady2和Python

with onto:
#courses
class course_id (onto.courses >> int): pass
class course_title (onto.courses >> str): pass
#lessons
class lesson_id (onto.lessons >> int): pass
class lesson_title (onto.lessons >> str): pass
class course_id (onto.lessons >> int): pass

class belongTo(onto.lessons >> onto.courses): pass
rule = Imp()
rule.set_as_rule("""lessons(?l), courses(?c), course_id(?c, ?cid), course_id(?l, ?cid) -> belongTo(?l, ?c) """)

sync_reasoner_pellet(infer_property_values = True, infer_data_property_values = True)

其思想是,如果course_id相似,则该课程应属于该课程。但我的代码似乎不起作用。我得到了以下推论:

* Owlready * Adding relation lmsontology.Introduction belongTo lmsontology.Introduction
* Owlready * Adding relation lmsontology.Databases belongTo lmsontology.Databases

在您的示例中,我检测到以下问题:

  • 缺少courseslessons的类
  • course_id定义了两次,使第一个过时
  • 这个例子不遵循通常的命名惯例:概念用单数名词,角色用hasId等动词表达
  • 没有定义任何个人,所以当您运行推理器时,swrl规则基本上没有什么可应用的

通常,为了调试规则,我建议从一个琐碎的规则或工作示例中逐步构建它,并在每个步骤中检查结果是否如预期。

相关内容

  • 没有找到相关文章

最新更新