代码之家  ›  专栏  ›  技术社区  ›  moondaisy

在Protege上使用类表达式进行类型推理

  •  0
  • moondaisy  · 技术社区  · 8 年前

    我希望我能定义 Elective_Course 以这样一种方式 partOf A. Knowledge_Unit 并且不是类型 Core_Course 是 选修课程 s

    对于 Course 我有这个:

    enter image description here

    我想可能是关于 (partOf only Knowledge_unit) and not(Core_Course) 这会起作用,但不起作用。

    也许是因为我需要 only 其逆特性为 部分 ,但我没有定义该属性,因为我在其余部分不需要它。所以我可以说 知识单元 那个 hasPart only Course 然后 not(Core_Course) 在 选修课程 。

    但是我迷路了,所以欢迎提供任何帮助或链接到示例。

    完整的本体可用 here

    1 回复  |  直到 8 年前
        1
  •  1
  •   Henriette Harmse    8 年前

    您遇到的问题是由于OWL和描述逻辑中的开放世界假设造成的。这意味着推理者只能从明确陈述的信息中推断出新的推论,并且 不 由于缺乏信息。

    所以为了达到你想要的结果,你必须声明 Core_Course 和 Elective_Course 是不相交的。然后,您可以执行以下两项操作之一:

    (1) 为每个选修课的学生说明其类型 not (Core_Course) 但是你也可以把它说成 选修课程 。

    (2) 定义所有知识单元个人,如 core1, core2, ... coren, elective1, elective2, ..., electivek .然后设置 Knowledge_Unit 等同于所有个人和 Core\u课程 所有核心课程个人,即。

     Class: Knowledge_Unit
       EquivalentTo: {core1, core2, ... coren, elective1, elective2, ..., electivek}
     Class: Core_Course
        SubClassOf: Knowledge_Unit,
        EquivalentTo: {core1, core2, ... coren}
    

    更新:20180510

    Wrt通用属性限制,如 partOf only KnowledgeUnit ,重要的是要了解,它还包括已知他们不参与任何 partOf 关系这可能导致难以理解的必然性。我已经写过了 here 。