===== Ontology 101 ===== * Last verification: **20220909** * Tools required for this lab: * **[[http://webprotege.stanford.edu/|WebProtégé]]** (web tool for ontology development) ==== Prepare yourself for the lab ==== * [[https://cambridgesemantics.com/blog/semantic-university/learn-owl-rdfs/owl-101/|OWL 101 @Cambridge Semantics]] * [[https://cambridgesemantics.com/blog/semantic-university/learn-owl-rdfs/rdfs-vs-owl/|RDFS vs OWL. Short comparison @Cambridge Semantics]] ==== Lab instructions ==== === 1. Let's start: WebProtégé and Ontology 101 tutorial === **An ontology** is an artifact that describes certain domain (part of a world). \\ It consists of a set of concepts (//classes//), typically organised in a hierarchy, connected by various //properties// and having various //attributes//. Developing an ontology is a complex task and //it is hardly possible to learn everything what is important on a single lab session//. This lab aims to get you familiar with the WebProtégé ontology editor and chosen ontology constructs. \\ You are encouraged to continue developing and refining your ontology at home. We will also do this during next lab. You can prototype an ontology for: * The Bold and the Beautiful / The Game of Thrones / other topic you have used during previous labs :-) * or Multimedia Library (e.g. books, movies, music CDs, etc) as in sample screenshots **WebProtégé** is a lightweight online ontology editing tool. It supports a limited set of constructs of ontology languages such as RDFS and OWL. Full-fledged ontology editor is Protege Desktop (we will use it next time). - Create an account at [[http://webprotege.stanford.edu/|WebProtégé]] website. - Create a new project and then load (open) it. - Open the [[http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html|Build your first ontology]] tutorial. Skim sections 1 and 2. - Leave it open and read appropriate sections while doing consecutive steps... - Note: [[http://protegewiki.stanford.edu/wiki/WebProtegeUsersGuide|WebProtege Users Guide]] may be useful. **During this lab we will follow the [[http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html|Build your first ontology]] tutorial.** \\ **Note: each part should take approx. 10 minutes!** === 2. Determine the domain and scope === - **Scope**: Discuss in pairs and define the scope of your ontology. For example, your ontology may describe all GoT characters in a specified period of time (e.g., at the end of the first book) or all multimedia items that you own. - You can adjust the scope later during the process. - Write down the scope of the ontology in your notes. - **Competency questions**: Think of and list the competency questions your ontology will help to answer. Exemplary competency questions may be: - What are the other movies in the genre I watch most often? - Who are the children of the one named "Kingslayer"? - Did Brooke marry a member of the Forrester family and when? \\ Write down the competency questions in your notes. === 3. Consider reuse === - Search for **existing** ontologies related to the topic (max 10 minutes) (e.g. the simplest ontology that will be useful is FOAF for describing the names od Dublin Core for describing basic media metadata). Although you may not know the syntax of ontology languages, they should be intuitive (remember, they are basically descriptions of classes and relations among them). - In your notes, list existing classes and properties you will use in your ontology (if any). === 4. Enumerate important terms === - Write down important terms that you will use to build your ontology. They may be nouns, verbs and other parts of speech. They will help you to identify and define //classes//, //datatype properties// (typically, attributes of the classes) and //object properties// (relations between classes). === 5. Define classes and class hierarchy === - Let's start with ''Project'' -> ''Settings'' -> ''New Entity Settings''. Here you can specify how URIs in your ontology will look like. Change ''IRI Prefix'' to your own name (e.g., ''https://your-name/game-of-thrones'') and ''IRI Suffix'' to ''Supplied name''. * This will be a prefix for all concepts/relations/individuals that we will define in our ontology. * This will **not** change the existing URIs (if you have created some concepts before this step) - In WebProtege, choose the ''Classes'' tab and create a new class. E.g., it may by a ''Person'', or ''Movie'' or ''Kingdom'' etc. \\ {{wp-class.png?direct&400|}} - Repeat it for other classes. Create approx. 10 classes. - Use //drag-and-drop// mechanism od WebProtege to move classes around in the classes "tree" -> create a hierarchy of terms. * //NOTE//: Multiple inheritance is acceptable. If the tool is not helpful, use ''rdfs:subClassOf'' as an additional property. === 6. Define the properties of classes === - In ''Properties'' tab, create new properties as subclasses of ''owl:topObjectProperty'' and ''owl:topDataProperty''. \\ {{wp-properties.png?direct&400|}} - object properties link classes to classes - data properties link classes to datatypes (e.g., strings, dates etc.) - Specify the domain and range of the properties. === 7. Create instances === - In ''Individuals'' tab, create a few instances (//objects//) of defined classes (e.g., ''Jaime Lannister'' -- an individual of a class ''Person'', ''House Lannister'' as an instance of a class ''Family'' etc.) - Assert relations among the instances (e.g., ''Jaime Lannister'' ''belongsTo'' ''House Lannister'') === 8. Wrapping up === - Can your ontology answer the competency questions you defined? If necessary, adjust the questions and/or the ontology. - More about creating classes: read [[http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html#Section4|Section 4]] and Section 5 of the tutorial and correct mistakes in your ontology. - Conventions and vocabulary: read [[http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html#Section6|Section 6]] and: - tune your naming conventions (use ''CamelCase'', starting with a capital letter for class names and a small letter for properties), - be consistent about suffixes in the classes' names. - Download your ontology (we will use it during the [[.:lab_onto2|next classes]]) - Open the projects list: [[https://webprotege.stanford.edu/#projects/list]] - From //hamburger menu// (on the right) select Download ==== Learn more! ==== Software: * [[http://protege.stanford.edu|Protégé]] ontology editor * [[http://owl.cs.manchester.ac.uk/publications/talks-and-tutorials/protg-owl-tutorial/|Protégé Tutorial]] * [[http://oops.linkeddata.es/|OOPS! (OntOlogy Pitfall Scanner!)]] * [[https://github.com/dgarijo/WIDOCO|WIzard for DOCumenting Ontologies (WIDOCO)]] Reading: * {{guarinofois98.pdf|N. Guarino: "Formal Ontology and Information Systems" (1998)}} * [[http://ontologydesignpatterns.org/wiki/Main_Page|Ontology Design patterns]] * [[http://www.slideshare.net/ocorcho/ekaw2014-keynote-ontology-engineering-for-and-by-the-masses-are-we-already-there-42068683|Ontology Engineering for and by the Masses: are we already there?]] OWL Tutorials: * [[http://owl.cs.manchester.ac.uk/publications/talks-and-tutorials/|Talks and Tutorials -- OWL @ Manchester]] * [[http://www.linkeddatatools.com/introducing-rdfs-owl|Tutorial 4: Introducing RDFS & OWL]]