传递角色的语义是
(x, y) \in R
和
(y, z) \in R
然后
(x, z) \in R
. 基于你的本体论,你有:
(1)
Course_1 partOf Knowledge_Area_1 partOf Knowledge_Group_1
这意味着什么
Course_1 partOf Knowledge_Group_1
相当于
Knowledge_Area
.
(2)
Course_1 partOf Term_1 partOf partOf Year_1
这意味着什么
Course_1 partOf Year_1
相当于
Term
.
因此
Course_1
是一个
术语
和A
知识领域
而且自从
Course
相当于
Term or Knowledge_Area
,
课程1
也是一个
课程
,这就是为什么
课程1
是一个
术语
.
在我看来,在这里要意识到的关键是你实际上在处理不同的问题
partOf
关系,不是一个。这个事实的线索是,在不同的上下文中,您希望从
部分
关系。owl中关系的类型信息主要是根据域和范围限制推断出来的。以下是解决您问题的可能方法:
ObjectProperty: partOf
ObjectProperty: partOfKA
SubPropertyOf: partOf
Domain: Course
ObjectProperty: partOfKG
SubPropertyOf: partOf
Domain: Knowledge_Area
ObjectProperty: partOfTerm
SubPropertyOf: partOf
Domain: Course
ObjectProperty: partOfYear
SubPropertyOf: partOf
Domain: Term
Class: Course
Class: Knowledge_Area
Class: Knowledge_Group
DisjointWith: Year
Class: Term
Class: Year
DisjointWith: Knowledge_Group
Individual: Course_1
Facts:
partOfKA Knowledge_Area_1,
partOfTerm Term_1
Individual: Knowledge_Area_1
Facts: partOfKG Knowledge_Group_1
Individual: Knowledge_Group_1
Types: Knowledge_Group
Individual: Term_1
Facts: partOfYear Year_1
Individual: Year_1
Types: Year
严格来说你不需要
部分
我的示例本体中的属性。我添加它只是为了概念清晰。此外,在我的示例本体中,不需要传递属性。