推理使用逆属性的OWL本体?

时间:2013-09-01 18:30:19

标签: owl protege dlquery

我正在使用Protege v4.3来制作本体。 我对OWL本体和DL查询有疑问。

例如,在比萨本体中, 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等的结果(通过推断)。芽它没有。

有没有像这样的自动推理方式?

2 个答案:

答案 0 :(得分:5)

类表达式

  

hasTopping some CheeseTopping

是一组个体,每个人都通过hasTopping属性与一些CheeseTopping相关。在Pizza本体中,没有个体,你仍然可以得到这个查询的类子类结果,因为某些类型的比萨饼(例如美国人)的定义是这样的,任何美国人的比萨必须有这样的顶部。

现在,类似结构的查询

  

isToppingOf some American

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

  四个CheeseTopping23是顶级美国比赛72

然而,可能还没有将fourCheeseTopping放在任何特定的披萨上。当我们选择一个类型为FourCheeseTopping的任意个体时,我们无法推断它是一些美国披萨的顶部,所以我们无法推断出类FourCheeseTopping是

的子类
  

isToppingOf some American

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

  

雇主⊑雇用某些

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

  

人员⊑雇用了一些雇主

尽管雇用和雇用他们都是逆转的。

但是,如果你想知道特定类型的配料是否可以放置特定类型的披萨,那么你可以做什么,就是询问是否

  

PizzaType⊓⊓hasTopping.ToppingType

等同于owl:Nothing或其子类。例如,由于美国披萨只有TomatoTopping,MozzarellaTopping和PeperoniTopping [sic]类型的配料,所以

  

美国人⊓⊓hasTopping.MixedSeafoodTopping

相当于owl:Nothing:

american pizzas don't have mixed seafood toppings

另一方面,由于美国披萨必须有MozzarellaTopping,所以

  

美国人⊓⊓hasTopping.MozzarellaTopping

相当于美国人:

american pizzas do have mozzarella toppings

答案 1 :(得分:1)

当你问什么是子类:

isToppingOf some American

你问的是什么类包含必须在美国比萨饼上使用的配料。但是在比萨本体中,没有这样的类存在。考虑奶酪配料:是否所有奶酪配料都放在一些美国比萨饼上面?不,有些奶酪配料是在意大利比萨饼上面。所有顶级课程都是如此。