gpt4 book ai didi

owl - 在 OWL 本体中使用自定义规则进行分类

转载 作者:行者123 更新时间:2023-12-04 19:46:54 27 4
gpt4 key购买 nike

我使用 Protege 创建了一个本体。

类-

Person
Man
Woman

属性(域/范围)

Knows(Person / Person)
hasRelationShip(Person / Person)
hasParent(Person / Person)
hasFather(Person / Man)
hasMother(Person / Woman)
hasChild(Person / Person)
hasSon(Person / Man)
hasDaughter(Person / Woman)

现在我将这个本体导入到 jena fuseki 中。这是用 OWLMiniFBRuleReasoner 配置的,然后创建了一些实例。

我有以下实例三元组

:Ravi rdf:type :Man .
:Anjani rdf:type :Man .
:Indra rdf:type :Woman .
:Ravi :hasFather :Anjani .
:Ravi :hasMother :Indra .

现在如果我查询

SELECT DISTINCT ?a ?b WHERE { 
?a :hasParent ?b
}

我得到结果

:Ravi - :Anjani
:Ravi - :Indra

如果我查询 -

SELECT DISTINCT ?a ?b WHERE { 
?a :hasChild ?b
}

我得到结果 -

:Indra - :Ravi
:Anjani - :Ravi

但是如果查询——

SELECT DISTINCT ?a ?b WHERE { 
?a :hasSon ?b
}

由于显而易见的原因,我没有得到任何结果。

所以问题是,有没有办法告诉reasoner -

If (?a :hasChild ?b) and (?b rdf:type :Man)
Then ?a :hasSon ?b

最佳答案

是的,有。假设您只使用 OWL,您可以像这样在 Protege 中对其建模:

  • 创建一个对象属性R_Man
  • 去上课 Man。 EquivalentTo 部分添加:

    R_Man some Self

  • 转到属性 hasSonSuperPropertyOf (Chain) 部分,添加:

    hasChild 或 R_Man

不幸的是,这会给你一个循环依赖错误。我知道这并不理想,但如果您将 hasSonhasDaughter 定义为不是 hasChild 的子属性,它会给您预期的结果。

关于owl - 在 OWL 本体中使用自定义规则进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com