owl - 使用逆属性推理 OWL 本体?

标签 owl protege dlquery

我正在使用 Protege v4.3 制作本体。
我有一个关于 OWL 本体和 DL 查询的问题。

例如,在 Pizza 本体中,
http://owl.cs.manchester.ac.uk/co-ode-files/ontologies/pizza.owl

我可以执行 DL 查询
hasTopping some CheeseTopping
结果是
American、AmericanHot、Cajun 等。没关系。

现在,我尝试了 DL 查询
isToppingOf some American
但结果什么都不是。

因为属性 isToppingOf 是 hasTopping 的逆属性,
我希望从该查询(通过推理)获得包括 FourCheesesTopping、CheeseyVegetableTopping 等在内的结果。但它没有。

有没有办法像这样自动推理?

最佳答案

类表达式

hasTopping some CheeseTopping



是一组个体,每个个体都通过 hasTopping 属性与某个 CheeseTopping 相关。在没有个体的 Pizza 本体中,您仍然可以获得此查询的类子类结果,因为某些类型的 Pizza(例如,American)的定义是这样的,任何美国的 Pizza 都必须具有这样的浇头。

现在,类似结构的查询

isToppingOf some American



是一组个体,每个个体都通过 isToppingOf 属性与一些美国披萨相关。但是,Pizza 本体没有定义特定的个体,因此没有任何个体作为候选者。但是那些可能是这个表达式的子类的类呢?例如,您提到了 FourCheeseTopping。现在,FourCheeseTopping 的某个特定实例,例如,fourCheeseTopping23 可以是一些美式比萨的浇头,例如:

fourCheeseTopping23 isToppingOf americanPizza72



但是,fourCheeseTopping 可能尚未放置在任何特定的比萨饼上。当我们选择一个 FourCheeseTopping 类型的任意个体时,我们不能推断它是一些美国比萨的浇头,所以我们不能推断类 FourCheeseTopping 是

isToppingOf some American



因为并不是每一个 FourCheeseTopping 实例都必须是一些美国比萨的浇头。对于可能使逻辑结构更清晰一些的类似情况,请考虑类 Employer 和 Person,以及对象属性雇用及其逆向雇用。我们可能会说每个雇主都必须有一个人作为雇员(否则他们就不会成为雇主):

Employer ⊑ employs some Person



但是,由于一个人可能失业,因此

Person ⊑ employedBy some Employer



即使雇员和雇员是倒数。

但是,如果您想知道特定类型的浇头是否可以放在特定类型的比萨饼中,您可以做的是询问是否

PizzaType ⊓ ∃hasTopping.ToppingType



相当于 owl:Nothing 或它的子类。例如,由于美国比萨饼只有 TomatoTopping、MozzarellaTopping 和 PeperoniTopping [原文如此] 类型的浇头,类

American ⊓ ∃hasTopping.MixedSeafoodTopping



相当于 owl:Nothing:

american pizzas don't have mixed seafood toppings

另一方面,由于美式披萨必须有 Mozzarella Topping,因此类

American ⊓ ∃hasTopping.MozzarellaTopping



相当于美国:

american pizzas do have mozzarella toppings

关于owl - 使用逆属性推理 OWL 本体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561529/

相关文章:

python - 使用 SPARQL 进行有限的 RDFS 和 OWL 推理

RDF--如何根据 rdf :type? 进行传递属性转换

rdf - 如何用 OWL-RDF/XML 语法向实例描述包含 inverseOf 的属性?

java - OWLAPI : how load ontology having import works?

java - OWL如何使类C等价于类A联合类B在protege中

sparql - 如何在 SPARQL UPDATE 语句中正确指定 RDF 图

uri - 如何在 DL Manchester OWL Syntax 中查询个人?

java - DL 查询和 OWL

SPARQL 查询 OWL Wine 本体