****OWL Pizzeria ****Project 2 - CMSC 498w ****Due April 14, 2004 The overall performance of your system is easy -- you will write a program (in Python) that will take a list of pizzas with the requested ingredients (i.e., toppings) for each pizza. At the end, you will print out a bill itemizing which type of pizza each one is, and how much they each cost (and a total). You must charge the MINIMUM that makes sense. The trick, of course, is in how your pizza ordering system works -- you will define an OWL ontology that encodes the following: Ingredients are: Anchovy, Ham, MeatBall, Mushroom, Olive, Onion, Pepperoni, Pepper, Sausage The following are vegetables: Mushroom, Olive, Onion, Pepper The following are meats: Ham, Meatball, Pepperoni, Sausage Meats and vegetables are disjoint classes. Note that Anchovy is neither a vegetable or a meat! A small pizza is any pizza with 2 or less ingredients on it. A medium pizza is any pizza with 3 to 5 ingredients on it. A large pizza is any pizza with 6 or more ingredients. A vegetarian pizza is any pizza with no meat on it. A meatOnly pizza is any pizza with no vegetables on it. Prices are as follow: Small vegetarian pizza - $2 Any other small pizza - $3 MeatOnly medium pizza - $4 Any other Medium pizza - $5 Any large pizza - $6 Anything else that might be a pizza but not one of the above - $10 ****Implementation details: Reasoning will be done by the online version of the Pellet OWL-DL reasoner. We've provided a support script that wraps the basic calls for you: http://www.mindswap.org/2004/cmsc498w/pellet-submit.py There is one function, checkString(), which you can import (or just incorporate) into your program. It take one required argument and one optional argument, both strings which must be RDF/XML documents. (Feel free to write some convenience wrappers, e.g., pass in a TripleStore.) If only one argument is given, then that string will be checked for consistency. If two arguments are given, then the second will be checked to see if it is an entailment of the first. This, of course, requires a network connection. You could also download and install Pellet locally, but then you'd have to write a slightly different wrapper (e.g., some system() calls). Note that currently, the results are in a fragment of HTML, e.g.: