了解使用颗粒和 HermiT 进行蛋白质的通用定量



我是门生的新手,所以我有一个非常基本的问题。我有ChildParent的课程。 Child有子类Girl

child1的类型是Girlchild2ChildannapeterParent的类型。此外,还有没有进一步特征的anna isParentOf child1peter isParentOf child2关系。

现在我想定义类ParentOfGirl,使其等效于 Parent and isParentOf only Girl 。我希望推理者推断anna具有这种新类型,但事实并非如此。

我将 Inverse functional 属性添加到isParentOf,因为父级可以有多个孩子。如果我在关系中也添加Symmetric,我得到anna具有类型 ParentOfGirl ,但我不想让isParentOf对称。

如果我不对称地查看上述语义,我会看到:

ParentOfGirl ≡ {anna, peter} ⋂ { x ∊ owl:Thing | if ∀y (x, y( ∊ isParentOf then y ∊ Girl}

儿童1 ∊ 儿童和儿童1 ∊ 女孩

isParentOf ≡ {(anna, child1(, (peter, child2(}

那么child1是唯一与anna有关的Child型个体,它也具有Girl型。在我看来,在这种情况下,推理者只能从右到左查看关系,因为如果isParentOf是对称的,它会推断出anna.此外,我希望如果peter与孩子无关,也会ParentOfGirl 2。但这也不会发生。

为什么推理者(Pellet或HermiT(看不到annaParentOfGirl

注释

中的@AKSW是正确的。推理者无法判断父母是否只有女孩。您需要断言此功能,例如,通过向个人添加类型。

不过,在这种情况下,此断言等效于您寻求的推论 - 因此这不是一个非常好的解决方法。

如果您将forall更改为某些,您将能够找到至少一个女孩的父母。这是目标类的超类,可能有助于应用程序。

相关内容

  • 没有找到相关文章

最新更新