我正在使用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等的结果(通过推断)。芽它没有。
有没有像这样的自动推理方式?
答案 0 :(得分:5)
类表达式
hasTopping some CheeseTopping
是一组个体,每个人都通过hasTopping属性与一些CheeseTopping相关。在Pizza本体中,没有个体,你仍然可以得到这个查询的类子类结果,因为某些类型的比萨饼(例如美国人)的定义是这样的,任何美国人的比萨必须有这样的顶部。
现在,类似结构的查询
isToppingOf some American
是一组个人,每个人都通过isToppingOf属性与一些美国披萨相关。然而,比萨本体没有定义任何特定的个体,因此没有任何个体作为候选者。但是那些可能是这个表达式的子类的类呢?例如,你提到了FourCheeseTopping。现在,FourCheeseTopping的一些特定实例,例如,fourCheeseTopping23 可以成为一些美国披萨的顶部,例如:
四个CheeseTopping23是顶级美国比赛72
然而,可能还没有将fourCheeseTopping放在任何特定的披萨上。当我们选择一个类型为FourCheeseTopping的任意个体时,我们无法推断它是一些美国披萨的顶部,所以我们无法推断出类FourCheeseTopping是
的子类isToppingOf some American
因为并不是这样的情况
雇主⊑雇用某些人
但是,由于一个人可能失业,
人员⊑雇用了一些雇主
尽管雇用和雇用他们都是逆转的。
但是,如果你想知道特定类型的配料是否可以放置特定类型的披萨,那么你可以做什么,就是询问是否
PizzaType⊓⊓hasTopping.ToppingType
等同于owl:Nothing或其子类。例如,由于美国披萨只有TomatoTopping,MozzarellaTopping和PeperoniTopping [sic]类型的配料,所以
美国人⊓⊓hasTopping.MixedSeafoodTopping
相当于owl:Nothing:
另一方面,由于美国披萨必须有MozzarellaTopping,所以
美国人⊓⊓hasTopping.MozzarellaTopping
相当于美国人:
答案 1 :(得分:1)
当你问什么是子类:
isToppingOf some American
你问的是什么类包含必须在美国比萨饼上使用的配料。但是在比萨本体中,没有这样的类存在。考虑奶酪配料:是否所有奶酪配料都放在一些美国比萨饼上面?不,有些奶酪配料是在意大利比萨饼上面。所有顶级课程都是如此。