OntologyDesignPatterns

RDF and OWL focus on triples. Triples are okay for summarizing web page property values, but to model anything really complex like a pathway, you need to adopt powerful standard patterns of triples - structures of them used in specific ways, each of which can be productively reused over and over again.

This page is dedicated to links of specific examples. Please add your favorites, and try to discuss their potential both in general, and with at least one example NOT taken from biochemistry. Why? Because if an example has uses only in BioPAX, it may well be too specialized to be a true design pattern:


 * AssociationPattern - This is the base for a huge number of specializations. Instances start with a blank node, then attach ONLY objectProperty slots called Roles, and assign their combination a type.  Examples of its usage include:
 * AttachmentAssociation - one of many association subclasses. This one can model  many forms of attachemnt, including both the phosphorylation of a protein, and the misfortune of having a plaster cast on your broken leg.  This page gives examples of both, helpful in seeing exactly how the state of the object playing the role of the attachee is related to the association and its roles, but NOT the same as either.
 * WholePartPattern - A slight but important extension to the AssociationPattern in which a distinguished "Whole" role represents the complete concept and all the other roles present model its elements. This can be used to model collections, for example, and also elements of substances, structures, situations, and descriptions.
 * TopicPattern - This is the "complement" to an Association in a bipartite graph structure. It models the independent things and concepts in a domain, whereas properties model the relative things, and associations model structures, N-ary relations, collections, and other mediating things.
 * ConceptualGraph patterns - These upper-ontology concepts handle natural language clause meanings - the wholes and parts of situations, events, and processes. Biopax cannot escape these linguistic structures by talking only about physical entities at microscopic scales; by ignoring them, it merely makes itself incompatible with main stream modeling theory.

Maybe release 3.0 will adopt some of the above design patterns, which fit with natural human grammar far better than do binary relations - an often confusing oversimplification.

Questions: (please hereafter post email to follow up)

Gary: Hey Dan, this looks like a cool page. Would it be possible to post some OWL examples that people could load up in Protege to check out? It would clarify a number of the concepts you are using e.g. what is a blank node? Is a topic map the same as the tag system in http://del.icio.us, http://youtube.com, and all the new hip websites? What is a "naked singularity"?

Dan: You do not need Protege to see this stuff, Gary, just your web browser. However, I know some examples would help, so...


 * Examples for :wishlist and a :todolist exist in a TURTLE page under TopicPattern, and for phosphorylation under AttachmentAssociation.
 * A blank node, in RDF, is a resource with ID but no name, to which properties can attach. If none are yet, I see it as a "naked singularity" - just a unique ID not yet embedded into triples.
 * The TopicMap standard (from ISO) is like a memory model for http://del.icio.us, where tags become topics and their links become occurrences. But Topic Map engines handle only the back end "persistence" role; each site using it would be able to craft a distinct UI, and maybe the two you mentioned did precisely that,
 * Many ConceptualGraph examples exist at the links I cite, often in several languages. If BioPax works in the notation of binary relations only, as so far occurs, we cannot use them or the related notations.  Associations can open them up to us.

Oliver: I have read these pages and I am still not sure what these design patterns mean, how they are used and what their benefit is. Can you please send me a few examples of ontologies that were designed according to these design patterns? That would greatly help.

Dan: The association of a whole to its parts is as important in modeling as class-instance. Most computer languages honor it via built-in data patterns, classes, and idioms for structures and collections, but SW languages are pretty weak here.

SW users are notoriously poor at dealing with whole-part models in all their many forms. Too much notational flexibility in using triples may prevent any one pattern from arising as a standard. Everyone picks their own, no useful libraries of examples build up, and so the whole-part wheel gets endlessly re-invented.

The XTM (TopicMap) standard from ISO uses associations (AKA "n-ary" relations), not triples, to build up descriptive data structures. Whole-part models are trivial to embed into associations, and because only one basic pattern exists for them in XTM, its whole-part models have a lot less variety.

This lets shared community experience build up much faster at the "best practice" level. Such benefits are subtle, but WholePartPattern types build up over several layers. I think they are why XTM competes so well world-wide against RDF.

AssociationPattern and TopicPattern declare in OWL-DL what XTM uses. They can let RDF users "catch up" on expressivity levels for Whole-Part and Collection models. By adding OWL's inferencing and constraint checking powers - things missing from XTM - they can also make these design patterns especially "hot".

The WholePartPattern makes sophisticated concepts much easier to define in OWL - for Structures, Substances, Situations, Processes, Collections, Descriptions, etc.. Using a simple naming rule, one can just list the PART types all needed Association types should possess and you are done except for the class constraints. These PSIs show examples.

The ConceptualGraph layer expands Situation and Process types into bulk "whole-part" semantics models for English verbs, prepositions and modifiers which can instantiate directly into English clause meanings. Here are related ontologies showing examples at this linguistic level:


 * http://www.jfsowa.com/cg/cgexamp.htm
 * http://www.cs.rochester.edu/~gildea/PropBank/Sort/A.html
 * http://framenet.icsi.berkeley.edu/
 * http://www.lexikos.com/psi/ctm/index.htm

By nesting such models inside one another, arbitrarily complex circumstances, stories, and activities can be formally modeled (as typed whole-part association graphs) that tap into our normal human thought patterns, speaking powers, and written texts.

Their domain independence (relatively speaking) makes them a favorite for NLP work, but BioPAX can also reuse these "upper ontology" concepts as handy types for its top-level classes, class constraints, domains, etc.

They would be much more precise than owl:thing, and help BioPAX integrate better with other ontologies. Their value just in annotation and specs, however, is ample for me to cite them in a ReleaseToolsProposal.