Datasets: Update Ontology(ies)

Updates to the existing ontologies may occur under any of these circumstances:
 * A new understanding of the domain, which requires extension or enhancement of the existing structure
 * Adding a new, local dataset
 * Updating or expanding a local dataset, or
 * Incorporating a remote dataset accessible via your OSF Web Service network.

Any properties or classes needed by the dataset structural analysis, but which are not yet in the system, need to be added to the existing ontology(ies). Like the dataset inspection steps, this updating of the ontology(ies) is based on the structOntology tool (though, as before, Protégé or a similar ontology editing platform may also be used).

Workflow Overview
Using as an example adding a new dataset, we now need to make sure that it is properly modeled and linked into the domain ontology guiding your specific instance. (If you are not already familiar with them, you may want to see the other background material regarding ontologies on this wiki.)

You may find, for example, that to properly include your new data in your system, that you are missing a "bridging concept" between an existing concept ("parent") already in the ontology, as well as some attributes (data) that describe that concept.

Let's say, for example, that our existing ontology has the concept of housing, but not the concept of single-family dwellings or the specific data attributes captured by our 'SFD Housing Starts' data. The basic conceptual gap this represents appears as follows, with housing representing the "parent" concept and single-family dwellings the "child":



Upon identification of such a gap it is now necessary to update an existing ontology using these steps:
 * Define the new class or property; make sure and provide a  for the object, add as many   as applicable and useful, and define the object with a textual description sufficient to bound and scope the new object
 * Define the relationships of this new object to other classes or properties, and
 * Periodically test your updated ontology for logic consistency using a reasoner.

Specific Steps Using structOntology
First, we assume you have a basic working knowledge of structOntology and its advanced search functionality. See further the Individual OSF-Drupal Ontology (structOntology) Tool manual.

Add Class
The first objective is to find the proper placement of the new concept (class) into the existing ontology structure. After selecting the appropriate ontology from the structOntology entry screen and making sure 'Classes' is the active tab selected, there are a few options for finding this placement.

The best way to find an initial placement is to seek the appropriate parent, or superClass. In this case, we are seeking to place the idea of "8-ball" pool, which is perhaps classified as a sport or recreation of some sort.

One option is to do a search, which then highlights available choices. Another is to browse and expand the concept tree shown at the left of the screen:



After finding that Sports and Recreation is indeed a combined concept, we then browse through to find individual sports and then 'Cue sports' as a sub-category within that. Finding the good placement of 'Cue sports' we decide to add a new class under this parent. We do so by choosing this right-click option:

That then allows us to enter the new entry, of '8-ball':

We may also at this time need to enter the URI that is its actual identifier within the database. This entry needs to use the ontology core URI as its base URI, followed by the unique identifier relevant to this new entry (we choose  after the core URI hash . (Not shown.)

We are then in a position to add the essential descriptive material to this entry: ,  , description and any other relational information (  and other parent classes can be useful at this point if relevant).



Upon Saving, this new concept (class) is committed to the updated ontology and we can proceed to more additions if needed.

Add Property
Property (attribute) entry proceeds in a similar manner. Once the Property tab is chosen, we see much the same interface with much the same choices:



In this case, we have chosen to add an attribute related to pool table sizes and descriptions:



Again, we enter the relevant,   and   fields, plus other specifications related to assertions about the (for example) range and domain of the new property. Then, when these specifications are done, we Save the update and proceed to new additions if needed.

In this manner, new structure and definitions are added to the ontology to reflect our update requirements.

Test for Consistency
Then, occasionally, test the ontology for consistency. See further Inferencing with Protégé.

Alternative Protégé Example
You may also want to see an alternative explanations for Adding an Ontology Concept using Protégé.