Protégé training Gary Polhill Craigiebuckler, Aberdeen, AB15 8QH, UK Overview • Obtaining, installing & community • Creating and loading ontologies • Creating classes, properties, restrictions & individuals • Using the reasoner • Diagramming Overview • Obtaining, installing & community • Creating and loading ontologies • Creating classes, properties, restrictions & individuals • Using the reasoner • Diagramming Obtaining • Protégé [Ontology development tool] – http://protege.stanford.edu/download/download.html – Version 3.1 beta • Graphviz [Diagram support tool] – http://www.graphviz.org/Download.php – Version 2.2.1 • Racer [DL reasoner] – http://www.racer-systems.com/products/download/education.phtml – Version 1-8-0 – Version 1-7-24? Licences (Protégé and Graphviz) • Protégé – Mozilla Public Licence • http://www.mozilla.org/MPL/ – You are licensed to “use, reproduce, modify, display, perform, sublicense, and distribute” it • Graphviz – Common Public Licence • http://www.graphviz.org/Download.php – You are licensed to “reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense” it Racer licence • Racer 1-8-0 – Educational proprietary licence • http://www.racer-systems.com/products/download/edu-license.phtml – Requires registration – Install and use one copy on one computer – Limited time (180 days, possibly negotiable…) • 990EUR cost for single workstation non-network licence – In publications for which Racer is used, name: • RacerPro Software • Racer Systems GmbH & Co. KG -- licensor • http://www.racer-systems.com/ -- licensor website • Racer 1-7-24 – Not available any more, and not supported – Non-commercial licence Possible alternative to Racer: FaCT • FaCT – http://www.cs.man.ac.uk/~horrocks/FaCT/ • • • • Released under GNU GPL Lisp based Description logic reasoner for SHF & SHIQ Requires Tomcat to talk to Protégé – Use FaCT DIG Servlet version • Doesn’t talk to Protégé very well! – Some loss of functionality Installation of Protégé • Run the install_protege.exe script • Follow the installation wizard • Accept all default options, except: Basic+OWL might be OK (not tested) Choose Components Everything Installation of Graphviz & Racer • Graphviz – Run graphviz-2.2.1.exe – Accept all the default options – Never need to run it • Racer 1.7.24 – Doesn’t really need installing… – Extract the executable from the zip file • racer-1-7-24-windows.zip – Copy it to the Desktop • … or somewhere you will remember – Run it when you need it Racer: Exercise • Check that you can run Racer – Copy it from the CD to the computer • You need to have write permission to the folder that Racer lives in – Double click it to run Exit by closing the window Port number for HTTP service Running Protégé • Start > Programs > Protege_3.1_beta > Protege • Command tool interface opens with diagnostic messages • GUI opens with utility to open recent projects or create a new one Protégé community • Various mailing lists – http://protege.stanford.edu/community/lists.html – protege.discussion/general • High volume, for general Protégé usage queries, not OWL – protege.owl • High volume, for OWL specific Protégé usage queries – protege.beta • Low volume, announces new beta releases of Protégé – protege.users/announce • Low volume, announces new full releases and conferences, etc. Overview • Obtaining, installing & community • Creating and loading ontologies • Creating classes, properties, restrictions & individuals • Using the reasoner • Diagramming Create a new project wizard Create from existing sources 1 3 OWL Files OWL DL 2 4 Project components • A Protégé project has two parts – Project file (with .pprj suffix) • Contains details about the settings for the use of Protégé • Can be version specific (i.e. a .pprj file for version 3.1 may not open in version 3.0 and vice versa) – OWL file (with .owl suffix) • The ontology • You can create a Protégé project from an existing OWL file by checking the ‘Create from existing sources’ box in step 1 Loading an ontology • Select recently used projects from window at startup • File > Open Project… • File > Open Recent Project > project • If you tell Windows that .pprj files belong to Protégé – Double click the .pprj file from Explorer Protégé: Exercise • Start Protégé • Create a new project – Not from an existing source – OWL Files – Don’t import any ontologies – Default namespace – OWL-DL Overview • Obtaining, installing & community • Creating and loading ontologies • Creating classes, properties, restrictions & individuals • Using the reasoner • Diagramming Working in Protégé • Creating anything is called an assertion • Think of it as creating some axioms • You need to be clear about what each kind of assertion means Creating classes Create Sibling Class of… Create Subclass of… …selected class Tools > Quick OWL > Create multiple classes (Wizard) Classes tab Comment Class name Metadata Properties Hierarchy Conditions Disjoints Classes: Naming Conventions • No mandatory conventions… • Class names begin with uppercase • Separate words in class names using CamelStyle or Using_Underscores • Regexp for ASCII characters – [A-Za-z£$_][-A-Za-z0-9£$_.]* • Unicode characters can also be used – Edit > Insert Unicode Characters… – Protégé’s default font doesn’t have very many Classes: Meanings • Individuals can belong to many classes • Classes can have many superclasses • Classes are not assumed to be disjoint – You can make them disjoint A B – By doing so you assert that • No individuals belong to classes A and B • Subclass means necessary implication – If A and B are classes, and A is a subclass of B you assert that A B C • All individuals belonging to A belong to B • (…and all individuals not belonging to B don’t belong to A) • Note that if B is disjoint with C, then no individual belonging to A can belong to C. Classes: Exercise • Create the following class hierarchy – Man & Woman should be disjoint Different kinds of property • Datatype property – String, Integer, etc. • Object property – Relates one class of objects (domain) to another (range) • Annotation property – For different kinds of metadata – Can be object or datatype! Creating Properties Properties tab Datatype property Object property Subproperty Annotation datatype and object properties Properties tab (object properties) Name Comment Metadata Property hierarchy Property Characteristics Multiple superproperties Inverse Domain Range Properties tab (datatype property) • As per object, except… Range is a datatype Datatype properties can’t be symmetric, transitive, or have an inverse You can specify a set of values the property can take Creating properties from the Classes tab Create new datatype property (domain this class) Create new object property (domain this class) Add this class to domain of existing property Properties: Naming Conventions • Again, no strict naming conventions • Lower case initial letter • Begin with ‘has’ or ‘is’ – Facilitates English Prose Tooltip Generator (see later) – … but not worth it if too awkward • Same ASCII regexp as Classes • If different classes have a similar property name (e.g. age) – Use class domain in property name if a union domain is not appropriate • E.g. if range is a different type • hasPersonAge (10, 34, 57), hasHistoryAge (Victorian) Properties: Meanings 1 • Domain & Range – Be careful… • These do not stipulate restrictions! • Any individual asserted or inferred to be on the ‘left hand side’ of the property will be inferred to be a member of the domain class • Any individual asserted or inferred to be on the ‘right hand side’ of the property will be inferred to be a member of the range class – Multiple classes for the domain and range are interpreted to be a union class – OWL class expressions can be used for the range of a property (e.g. intersection of two classes) – OWL allows this for domains, too, but not in Protégé • Subproperty – If property P is a subproperty of Q, and P(x, y) is asserted or inferred, then Q(x, y) may be asserted or inferred – Datatype properties may not be subproperties of object properties, and vice versa Properties: Meanings 2 • Property Characteristics – Inverse • If P is the inverse of Q and P(x, y), then Q(x, y) – Symmetric • If P is symmetric and P(x, y), then P(y, x) – Transitive • If P is transitive and P(x, y) and P(y, z) then P(x, z) • A transitive property must have a transitive inverse – Functional • • • • Aka feature or single valued property The right hand side may only be one individual If more than one individual is found they are inferred to be the same A transitive property cannot be functional – Inverse functional • The left hand side may only be one individual • If more than one individual is found they are inferred to be the same • An inverse functional property has a functional inverse (and vice versa) Other information about Properties • Annotation properties – Metadata – Can be applied to Classes, Properties (datatype or object), and Individuals – Restrictions in OWL-DL • Property value must be a literal, URI, or individual • Cannot be used in property axioms (e.g. cannot be subproperty or have a subproperty) • Cannot have a domain or range • Classes as property range – Not possible in OWL-DL – OWL-Full only – A rare requirement Properties: Exercise • Create datatype properties – hasAge (integer) – hasSex (“Male” or “Female”) • Create object properties – hasAncestor, hasParent, hasMother, hasFather – isAncestorOf, isParentOf, isMotherOf, isFatherOf – hasSpouse, hasHusband, hasWife • Ensure property characteristics are appropriately set – – – – Domain and range Subproperty Inverse Transitive, Symmetric, Functional, Inverse Functional Creating Restrictions Create restriction on any property Create expression Select property and create restriction Right click property and select restriction to create Create Restriction Window Property to be restricted Restriction expression tool Type of restriction Restriction expression Keep this guy happy! Different kinds of restriction • Quantifier restriction (Object property) – Existential • “At least one” “some” “some values from” • e.g. (Husband class) ∃ hasWife Woman – Universal • “Only” “all values from” • e.g. (Person class) ∀ hasFather Man • hasValue restriction (Datatype property) – e.g. (Man class) hasSex ∋ “Male” • Cardinality restriction (Object property) – Exact cardinality – Minimum cardinality – Maximum cardinality Other kinds of restriction • Union classes – e.g. hasDifficultChildren (Toddler ⊔ Teenager) • Intersection classes – e.g. hasSingleParent (Parent ⊓ Divorcee) • Negation – e.g. Bachelor class: ¬(∃ hasWife Woman) • Expressions can have arbitrary complexity – … but probably a good idea to keep it simple • Use intermediate classes Restrictions: Meanings 1 • A restriction actually defines an anonymous class – When used to describe classes, they define an anonymous superclass • Existential restrictions – Beware the Open World Assumption! • Only says that at least one of the relationships an individual has is with a member of the specified class … • … so the individual could have that relationship also with a member of a different class • Universal restrictions – Beware! • Only says that all relationships an individual has must be with members of the specific class … • … includes individuals who have NO relationship of this kind with ANY individual – Often used with existential restrictions (closure axiom) Restrictions: Meanings 2 • hasValue restrictions – Can be used with object properties to point to a specific individual • e.g. hasAncestor ∋ Adam • OWL-Full? • Cardinality restrictions – Pertain to the number of relationships an individual must participate in – Relies on counting distinct individuals • OWL does not make the Unique Name Assumption • … but Racer does! – Potentially, individuals will be inferred to be the same Restrictions: Exercise • Man and Woman Classes – hasSex ∋ “Male”, hasSex ∋ “Female” respectively • Spouse class – Has at least one spouse • Parent class – Is parent of at least one person • Father class – Is father of at least one person • Husband class – Has wife at least one woman • Similarly for Mother and Wife classes • Try out the English Prose Tooltip Generator – Move the mouse over one of the classes you have given restrictions to in the class hierarchy Primitive and Defined Classes • Primitive classes (aka partial classes) – Have necessary conditions only • If an individual is a member of the class it must satisfy these conditions • NOT if an individual satisfies these conditions then it is a member of the class – Necessary conditions are conjunctive • Defined classes (aka complete classes) – Also have necessary and sufficient conditions • These allow class membership to be inferred – Multiple sets of necessary and sufficient conditions are permitted (disjunctive) Creating Defined Classes 1 Right-click the class to be defined Select “Convert to defined class” Necessary conditions moved to Necessary and Sufficient slot Creating Defined Classes 2 Right click • You can also click and drag necessary conditions to the necessary and sufficient slot • Create multiple necessary and sufficient conditions by right-clicking the “NECESSARY & SUFFICIENT” slot header Create new necessary and sufficient block Defined classes: Exercise • Decide which classes created so far can be converted to defined classes • Convert them Creating Individuals • Forms tab – Allows you to edit the form widgets used to enter the individuals’ data • Individuals tab – Used to enter the data – Select the class on to create an individual of from the hierarchy on the left hand pane – Press the create individual icon (purple diamond with a plus sign) from the centre pane – Enter the individual’s data on the right hand pane Creating individuals Click here Enter details Select class Individuals: Exercise • Experiment with the Person entry form • Create some instances of Person – Try creating instances that will test the inference engine: e.g. • Domain and range • Functional properties • Create an instance of OWL: Thing – Useful to check what happens to it when using reasoner Overview • Obtaining, installing & community • Creating and loading ontologies • Creating classes, properties, restrictions & individuals • Using the reasoner • Diagramming Three uses for the reasoner • Checking the consistency of the ontology • Classifying the taxonomy – Uses defined classes to determine new class hierarchy • Logically consistent with ontology • Classifying individuals – Deciding which classes individuals belong to • ONE enhancement request… –WHY? Reasoner prerequisites • OWL-DL or OWL-Lite sublanguage • Racer needs to be in a writable directory • Port numbers configured correctly – Watch out for clashes with other software (unlikely) – Racer can be configured to use different ports on the command line • -p <TCP port> • -http <HTTP port> – This is the one Protégé needs to know about • The reasoner does not have to be on the same machine – Can connect to one over the web • The reasoner needs to be running! – Double-click racer.exe to start Racer Determining OWL sublanguage OWL menu Determine/Convert OWL Sublanguage… OWL Full cannot be used with the reasoner (decidability not guaranteed), but is more expressive Checking reasoner port number 1 OWL menu Preferences… Checking reasoner port number 2 Address:port where Protégé expects to find the reasoner Address:port where Racer expects to talk to Protege Checking consistency Check consistency… also under OWL menu Click here Checking consistency: result Husband and Wife are inconsistent in this ontology when Spouse is disjoint from Woman If no inconsistent concepts are found, then your ontology is OK Checking the consistency of one class Right-click the class Select Check concept consistency… from the menu Protégé built-in ontology checks Click here (bug icon) • Run ontology tests… is also an option in the OWL menu • See Test settings… under OWL menu to choose the tests to run • Does not require reasoner Classifying the taxonomy Click here (also available under OWL menu) Inferred hierarchy (changes in blue) Asserted hierarchy Summary of results Inferred conditions tab Classifying individuals Membership of each class viewable next to each class as (asserted / inferred) Click here (also under OWL menu) Inferred class members tab Finding members of a single class Right-click the class Select “Compute individuals belonging to class…” Results returned in pop-up window Reasoner: Exercise • Try the following – – – – Check consistency Check consistency of a single class Classify taxonomy Run ontology tests • Remember this doesn’t require the reasoner – Classify individuals – Find members of a class • Are the results as you expect? – What changes would you make to your ontology? Overview • Obtaining, installing & community • Creating and loading ontologies • Creating classes, properties, restrictions & individuals • Using the reasoner • Diagramming Diagramming • Protégé has plug-ins – Diagramming tools are instances of this – Details of plug-ins stored in .pprj file – You tell Protégé which plug-ins to use by configuring your project • OWLViz and Ontoviz are diagramming plug-ins – Require graphviz (from graphviz.org) – If a project using either is loaded into Protégé without graphviz installed, then you get error messages • These can be ignored… • … but be aware when passing .pprj and .owl files on to others Adding tabs for diagramming 1 Project > Configure … Adding tabs for diagramming 2 Tab Widgets tab Click the check boxes for OWLViz and Ontoviz OWLViz tab • Lets you view and interact with the asserted and inferred class hierarchies Export to Show or hide image classes Click on a class… Diagram asserted or inferred model …Disjoint classes shown with ¬ Ontoviz tab • Diagram classes and relationships • Select classes • Click the add classes icon • Choose diagram components • Click the “Op” icon for options – Including save image to file • Saved in project working directory • Click the draw icon Ontoviz tab diagram components • sub: sub-classes – Includes anonymous classes • Which aren’t shown very nicely (font limitations?) • • • • sup: super-classes slx: no idea! isx: no idea! slt: give a table of the class’s properties – Limited number of rows by default • Can be changed in the options • sle: draw relationships between classes • ins: show instances – Asserted instances only • sys: system classes? Diagramming individuals with Ontoviz • Select the class you want individuals diagrammed • Click the I+ icon to get the instance browser (right) • Select the instances • Click add • Then select diagramming options as for classes Diagramming individuals: result Query view Right-click an instance Select “Show in Query View” Result of query view • Allows you to explore relationships between individuals Diagramming: Exercise • Create an inferred class hierarchy diagram using OWLViz and save it to a file • Create a diagram of some of the classes in your ontology and relationships between them • Create a diagram of individuals in your ontology • Have a go with query view Summary Ground covered • • • • Installing Protégé and associated software Running Protégé and Racer Creating a new ontology Creating classes, properties, restrictions and instances – What each of these mean! • Using the reasoner – Check consistency, classify taxonomy & individuals • Diagramming tools • Should suffice for Grampian & Odra ontologies Other things to look at • Version control – See under Project menu • Dublin Core metadata – Contains various annotation properties • e.g. creator, etc. – Widely used • See metadata tab and new project creation wizard – Should we have an ‘evidence’ metadatum in the CAVES project? • Importing ontologies – Searching for ontologies • Swoogle: http://swoogle.umbc.edu/index.php • Publishing ontologies and defining namespaces • Protégé OWL Pizza Tutorial – On the CD Final exercise/homework • Choose some of the following classes of people to define – – – – – – – – – – – YAPPIE: Young Affluent Parent OINK: One Income No Kids DINKY: Dual Income No Kids Yet DUMP: Destitute Unemployed Mature Person SITCOM: Single Income, Two Kids, Outrageous Mortgage SINK: Single, Independent, No Kids KIPPERS: Kids in Parents’ Pockets Eroding Retirement Savings SILKY: Single Income Loads of Kids WOOPIE: Well Off Older Person SKIPPIE: School Kid with Income and Purchasing Power TIREDS: Thirtysomething Radical Educated Dropout • You may need to add supporting classes to your ontology…