Pokračujeme s Protégé  1. Nainstalujte Protégé z [1]https://protege.stanford.edu  2. Otevřete Protégé  3. Zkontrolujte File/Preferences/New entities  4. Zkontrolujte File/Preferences/Renderer  5. Zkontrolujte File/Preferences/Reasoner (zaškrtnout Domains, Ranges a Disjoint)  6. Přejmenujte OntologyIRI v Active Ontology na PizzaTutorial  7. Uložte jako RDF/XML  8. Prohlédněte v textovém editoru  9. Přidejte anotaci (rdfs:comment) 10. Uložte a prohlédněte v textovém editoru 11. Přidejte třídu Pizza (Entites/Add subclass), podívat se na IRI, jak se samo vytvořilo 12. Podobně přidejte PizzaBase a PizzaTopping 13. Podívejte se v textovém editoru 14. Přidejte Pizza DisjointWith PizzaBase a PizzaTopping, podívejte se na PizzaBase, že se anotace přidala taky 15. Podívejte se v textovém editoru 16. Přidejte více podtříd: V PizzaBase otevřít Tools/Create class hierarchy, přidat DeepPan a ThinAndCrispy, Suffix Base 17. Uložte a zkontrolujte v textovém editoru 18. Přidejte class hierarchy pod PizzaTopping: 19. Přidejte property hasIngredient 20. Pomocí Tools/Create object property hierarchy přidejte hasBase a hasTopping (pozor, properties je lepší neomezovat jako disjoint) 21. Vytvořte isIngredientOf 22. Zadejte ji jako Inverse Of hasIngredient 23. Vytvořte podobně isBaseOf a isToppingOf 24. Zadejte Domain Pizza a Range PizzaTopping pro hasIngredient 25. Synchronizujte reasoner a podívejte se, jak se domain a range přepsaly do inverzních properties 26. Totéž pro hasBase: Domain = Pizza, Range = PizzaBase 27. Přidejte omezení, že jedna pizza má Base + Topping. Vyberte, že Pizza SubclassOf a potom omezení, jako je níže 28. Teď máme definováno, co je Pizza. Je to věc, která má základ (hasBase) pizzy (PizzaBase). Tyto podmínky jsou nutné, jinak by to nebyla pizza. Nicméně, teď vytvoříme pojmenované pizzy, podle klasických receptů a jmen. Aby byl v ontologii pořádek, přidáme třídu pojmenovaná pizza (NamedPizza). 29. Vytvořte podtřídu Pizza/NamedPizza a v ní třídu MargheritaPizza. Přidejte anotaci (Annotations) - komentář “pizza s mozzarellou a rajčaty” (libovolně). 30. Přidejte omezení pro margheritu: Přidejte SubclassOf, v tabu Class expression editor napište “hasTopping some Mo” a klikněte na Ctrl+Space. Doplní se hasTopping some MozzarellaTopping. Stejně přidejte TomatoTopping. 31. Synchronizujte reasoner a podívejte se na implicitní i odvozené informace o margheritě. 32. Vytvořte pizzu americana duplikování třídy MargheritaPizza (pravým myšítkem na název třídy, název AmericanaPizza. 33. Přidejte papričky na americanu: PepperoniTopping. Upravte anotaci. 34. Duplikujte americanu a vytvořte AmericanaHotPizza, na které jsou navíc jalapenos. 35. Deklarujte všechny pojmenované pizzy jako disjoint. Vyberte jednu pojmenovanou pizzu, klikněte na disjoint a vyberte všechny podtřídy NamedPizza (Ctrl+klik). 36. Podívejte se, jak se odvodily ostatní relace disjoint. 37. Vyzkoušíme inferenci neexistující entity: vytvořte podtřídu CheeseTopping, pojmenujte ji třeba InconsistentTopping. Přidejte této třídě omezení SubClassOf VegetableTopping. Synchronizujte reasoner. U owl:Nothing klikněte na otazník. 38. Vytvořte třídu VegetarianPizza jako podtřídu Pizza. Přidejte jí omezení SubClassOf. V Class expression editoru napište: hasTopping only (CheeseTopping or VegetableTopping). 39. Udělejte z VegetarianPizza definovanou třídu pomocí Edit/Convert to defined class. Podívejte se na relaci EquivalentTo. 40. Přepište omezení hasTopping z some na only a disjunkci ingediencí. hasTopping only (MozzarellaTopping or TomatoTopping). Podobně i Americana a AmericanaHot. 41. Synchronizujt reasoner, podívejte se na Class hierarchy/Inferred. Máme nějaké pizzy vegetariánské? 42. Vytvořte individua (konkrétní pizzy): V Individuals by class klikněte na diamant v Direct instances. Instance pojmenujte jménem třídy a číslem: MargheritaPizza1. Cheese Mozzarella Parmesan Meat Ham Pepperoni Salami SpicyBeef Seafood Anchovy Prawn Tuna Vegetable Caper Mushroom Olive Pepper RedPepper GreenPepper JalapenoPepper Tomato Pizza ontology: [2]https://github.com/owlcs/pizza-ontology