我正在尝试构建一个本体来推断有关域分类和术语的一些信息,但我遇到了一些概念上的困难。
让我解释一下这个问题。在 Protègè 4.1 中,我创建了 Thing 的 6 个子类:Concept、conceptTitle、ConceptSynonym(用于分类)和 Term、TermTitle、TermSynonym(用于术语)。我还创建了 hasConceptTitle、hasConceptSynonym、hasTermTitle 和 hasTermSynonym 对象关系(带有一些约束)来表示每个概念都有一个(并且只有一个)标题,并且可能有一些同义词,并且每个术语都有一个(并且只有一个)标题和一些同义词。Concept 和 Term 都有另一种关系 isA,为分类赋予 DAG/树结构,而术语具有格结构(换句话说,一个术语可能是多个术语的子类)。
问题来了:我想创建一个概念的子类,比如说“MappedConcept”),它应该是映射概念的集合,即标题等于术语标题的概念集,或者它有同义词等于术语的标题或具有等于术语的同义词的同义词。在一阶逻辑中,这个集合可以表示为:
∀x∃y( ∃z((hasConceptTitle(x,z) ∧ hasTermTitle(y,z)) ∨
∃z((hasConceptTitle(x,z) ∧ hasTermSynonym(y,z)) ∨
∃z((hasConceptSynonym(x,z) ∧ hasTermTitle(y,z)) ∨
∃z((hasConceptSynonym(x,z) ∧ hasTermSynonym(y,z)) )
我怎样才能得到这个?为“ConceptTitle”、“ConceptSynonym”、“TermTitle”和“TermSynonym”定义数据属性?以及如何描述字符串匹配?也许这 4 个类应该只是 Concept 和 Term 类的数据属性?我多次阅读 Matthew Horridge 的实用指南,但我无法将脑海中的实用想法转化为 Protègè 的 ongology。
提前致谢。