Nodalities

From Semantic Web to Web of Data
Nodalities

Subscribe

  • Any Podcatcher
  • Any Feed Reader

Categories

Archives

License

Creative Commons License

Lessons for Ontology Writers

I’m in a session called Taming the Open World, being run by Tim Swanson of Semantic Arts. I’m particularly interested in understanding how we can develop open world applications and issue 2 of Nodalities contains an article by Nadeem Shabiron just this issue. Since I have power and wifi which are both in scarce supply, I thought I’d take the opportunity to liveblog the session. Looks like it’s going to be a contrast to the Metaweb/Freebase tutorial earlier since we’re straight into OWL ontologies, running through the notation he’s going to be using. There are no standard notations for diagramming ontologies which is pretty surprising considering the wealth of research activity in this area. It’s looking rather interesting… must see if I can find some examples on the web.

First example is of two classes: Contractor and Employee and a single instance “Joe” who is an Employee. A reasoner will actually create two interpretations of these three facts: one where Joe is an Employee but not a Contractor and one where Joe is both. As more assertions are added, exponentially more interpretations are generated by the reasoner for all possible combinations. The reasoner is looking at all possible solutions and will assume that any fact is potentially true unless it has been explicitly told otherwise. This is the open world assumption - anything unknown could be true or false and a reasoner has to consider both possibilities.

A fact is provable if it is true in every possible interpretation. It is satisfiable if it is true in at least one model. These are the two main uses of a reasoner: to prove a statement or to discover if a statement is possible. However the huge number of possible interpretations massively complicates the problem. To make reasoning problems tractable we have to clean up the open world by removing facts that cannot possibly be true.

Some techiniques that can be used when writing ontologies:

  • Class disjointness - saying that two classes have no members in common such as a Living Thing and a Scheduled Event. This is especially useful with deep ontologies where the root classes are declared disjoint. This disjointness then cascades down the ontology tree to the more specific classes at the bottom eliminating many possible interpretations.
  • Domain and range - this makes the disjointness more effective by adding more information about instance types.
  • Individual differentness - OWL provides a differentFrom predictate but you have to say every individual is different from every other one by one. Some of this can be inferred using functional properties, so if two individuals have different values for a functional property then they can be inferred to be different individuals. Also we can use inverse functional properties but this is not possible with datatype properties, e.g. social security numbers. A workaround is to create a URI scheme for the value.

Some more advanced techniques include stating that an individual does not have a particular property. To do this you have to create a class for the individual resource and define that class as the complement of things that have the property in question. You have to do that for every individual, a massive explosion of triples, but a corresponding reduction in possible interpretations.

In the discussion after the session a few reasoner implementors were discussing some of these ideas. I learnt that a tableau reasoner will take all the URIs in a graph and combine them all to create all possible triples and then start eliminating them using the OWL constraints! I wonder what implications that has for Linked Data’s assignment of URIs to everything?

Working in the open world enforces a different kind of discipline in data modelling. You need to define what is not true as well as what is true. It’s best to work at the highest level possible which ends up being a supporting case for upper ontologies.