2013-09-01 11 views
7

Ich verwende Protege v4.3 für Ontologien. Ich habe eine Frage über OWL Ontologie und DL-Abfrage.Reasoning OWL Ontologie mit inverser Eigenschaft?

Zum Beispiel in der Ontologie Pizza, http://owl.cs.manchester.ac.uk/co-ode-files/ontologies/pizza.owl

kann ich die DL-Abfrage

hasTopping some CheeseTopping

ausführen

Das Ergebnis ist Amerikaner, AmericanHot, Cajun, .. etc. Das OK ist.

Nun habe ich versucht DL Abfrage

isToppingOf some American

Aber das Ergebnis ist nichts.

Da die Eigenschaft isToppingOf eine inverse Eigenschaft von hasTopping ist, erwartete ich, dass das Ergebnis einschließlich FourCheesesTopping, CheeseyVegetableTopping usw. von dieser Abfrage (durch Rückschluss) erhalten wird. Knospe es nicht.

Gibt es irgendwelche Möglichkeiten, automatisch zu argumentieren?

+0

Sind die AmericanHot, amerikanisch und usw. der Verschluss Axiome haben? – msc87

Antwort

1

Wenn Sie fragen, was sind die Unterklassen von:

isToppingOf some American 

Sie fragen, welche Klassen enthalten Toppings, die unbedingt auf der amerikanischen Pizzas verwendet werden. Aber in der Pizza-Ontologie gibt es keine solche Klasse. Überlegen Sie Käseüberstände: Sind alle Käseüberzüge auf einigen amerikanischen Pizzas? Nein, einige Käse-Toppings sind oben auf italienischen Pizzas. Das Gleiche gilt für alle Spitzenklassen.

+1

Danke, Zimmermann. Aber wie kann ich die Liste der Beläge für bestimmte Pizza bekommen? –

5

Die Klasse Ausdruck

hasTopping einige CheeseTopping

ist die Menge von Individuen, von denen jeder bis zu einem gewissen CheeseTopping durch die hasTopping Eigenschaft verwandt ist. In der Pizza-Ontologie, wo es keine Individuen gibt, können Sie immer noch Ergebnisse der Klassenunterklasse für diese Abfrage erhalten, weil die Definition bestimmter Arten von Pizzas (z. B. American) so beschaffen ist, dass jede Pizza, die ein Amerikaner ist, solch ein Topping haben muss. Jetzt

, die ähnlich strukturierte Abfrage

isToppingOf einige amerikanische

ist die Menge von Individuen, von denen jeder bis zu einem gewissen amerikanische Pizza durch die isToppingOf Eigenschaft zusammenhängt. Die Pizza-Ontologie definiert jedoch keine bestimmten Personen, daher gibt es keine Personen als Kandidaten. Aber was ist mit Klassen, die Unterklassen dieses Ausdrucks sein könnten? Zum Beispiel haben Sie das FourCheeseTopping erwähnt. Nun könnte ein bestimmtes Beispiel von FourCheeseTopping, z. B. fourCheeseTopping23 , ein Topping einiger amerikanischer Pizza sein, z.B.:

fourCheeseTopping23 isToppingOf americanPizza72

Allerdings könnte fourCheeseTopping auf einer bestimmten Pizza wurde noch nicht gegeben. Wenn wir eine beliebige Person vom Typ FourCheeseTopping wählen, können wir nicht annehmen, dass es sich um ein Topping von einigen amerikanischen Pizza ist, so können wir nicht folgern, dass die Klasse FourCheeseTopping eine Unterklasse von

isToppingOf

einige Amerikaner

weil es nicht der Fall ist, dass jede Instanz von FourCheeseTopping muss die Spitze einiger amerikanischer Pizza sein. Für einen ähnlichen Fall, der die logische Struktur etwas klarer erscheinen lässt, betrachten Sie die Klassen Employer und Person, und die Objekteigenschaft verwendet und ihre inverse employedBy. Wir könnten sagen, dass jeder Arbeitgeber eine Person als Angestellter haben muss (da sie sonst kein Arbeitgeber wäre):

Arbeitgeber & sqsubseteq; beschäftigt Person

jedoch einige, da eine Person arbeitslos sein kann, ist es, dass

Person & sqsubseteq nicht wahr ist; employedBy obwohl einige Arbeitgeber

selbst beschäftigt und employedBy sind Umkehrungen.

Was Sie tun können, obwohl, wenn Sie wissen wollen, ob Toppings eines bestimmten Typs könnte eine Pizza eines bestimmten Typs platziert werden, ist zu fragen, ob

PizzaType ⊓ ∃ hasTopping.ToppingType

entspricht oder einer Unterklasse von, Eule: Nichts. Zum Beispiel, weil eine amerikanische Pizza nur Toppings vom Typ TomatoTopping, MozzarellaTopping hat, und PeperoniTopping [sic], die Klasse

amerikanischen ⊓ ∃ hasTopping.MixedSeafoodTopping

entspricht owl: Nichts:

american pizzas don't have mixed seafood toppings

Auf der anderen Seite, da eine amerikanische Pizza Muss haben eine MozzarellaTopping, die Klasse

amerikanischen ⊓ ∃ hasTopping.MozzarellaTopping

auf amerikanische Äquivalent ist:

american pizzas do have mozzarella toppings