Knowledge Engineering Methodology#
Engineering Workflow#
Step 1. Determine the Domain and Scope of the Ontology#
Main idea: We define our domain - Conceptualization and then we determine our scope - Competency Questions.
Conceptualization#
In orther to determine the domain that the ontology will cover, we answer some questions:
Why do you want a semantic model/ontology?
For what are we going to use the ontology?
What is your Use Case? The best solution to model a domain depends on the application that you have in mind and the extensions anticipated.
Who will use and maintain the ontology?
Competency Questions (CQ)#
In order to determine the scope we can sketch a list of questions that a knowledge base based on the ontology should answer. To kick off the CQ sketch, we can start answering:
For what types of questions should the information in the ontology provide answers?
Do the answers require a particular level of detail or representation of a particular area?
Does this area/domain contain enough information to answer these types of questions or we need to link more than one area?
How answers to a CQ could be obtained?
browsing through a taxonomy and viewing the relationships across the ontology entities
Example: Which wine characteristics should I consider when choosing a wine?
through the ability to determine inheritance
through ontology querying (explain that in depth)
What is not a CQ?
It is not compulsory.
It is not a list of requirements.
Step 2. Ontology Development#
Main idea: Iterative design — Ontology development is an iterative process.
2.1 - Reusing Existing Ontologies#
If we can, we always consider first refine and extend existing sources for our domain and tasks.
2.2 - Enumerate Important Terms in the Ontology#
Create a list of all terms, weather they are clasified as concepts, relationships/properties; we do not classify them yet. Some questions can help us lisitng the key terms:
What are the concepts/terms/information we want to talk about?
What would we like to say about those terms/concepts?
What characterisitcs do those terms have?
2.3 - Define Classes, Class Hierarchy and Properties#
Main idea: First, we create few definitions of the concepts/terms/information from the previous list. From that we can start building a hierarchy with classes classifying them into parents and child terms. And then, once we have built a hierarchy we describe properties of these classes.
—-(WIP)—– #ToDo: - Finish check OBOAcademy for documentation about it - Finish adding info from ref1
Class hierarchy approach:
Top-down
Bottom-up
Combination
Properties of classes (slots)
Step 3. Publication#
OBOFoundry - Request for new ontology#
Instructions proivided by OBO Foundry: https://obofoundry.org/docs/NewOntologyRegistrationInstructions.html
Check if passes OBO NOR Dashboard (https://obofoundry.org/obo-nor.github.io/dashboard/index.html)
Issue example (PREFER): https://github.com/OBOFoundry/OBOFoundry.github.io/issues/2821
OBOFoundry - Request for new PURL#
Guide: https://obofoundry.org/docs/Policy_for_OBO_namespace_and_associated_PURL_requests.html
Issue example (PREFER): https://github.com/OBOFoundry/purl.obolibrary.org/pull/1108