<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AI3:::Adaptive Information &#187; Ontology Best Practices</title>
	<atom:link href="http://www.mkbergman.com/category/ontology-best-practices/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mkbergman.com</link>
	<description>Mike Bergman on the semantic Web and structured Web</description>
	<lastBuildDate>Tue, 24 Jan 2012 15:52:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ontology-Driven Apps Using Generic Applications</title>
		<link>http://www.mkbergman.com/948/ontology-driven-apps-using-generic-applications/</link>
		<comments>http://www.mkbergman.com/948/ontology-driven-apps-using-generic-applications/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 08:19:10 +0000</pubDate>
		<dc:creator>Mike Bergman</dc:creator>
				<category><![CDATA[irON]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Ontology Best Practices]]></category>
		<category><![CDATA[Open Semantic Framework]]></category>
		<category><![CDATA[Semantic Enterprise]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Web-oriented Architecture]]></category>
		<category><![CDATA[knowledge management]]></category>
		<category><![CDATA[object oriented design]]></category>
		<category><![CDATA[semantic technologies]]></category>
		<category><![CDATA[software development methodologies]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[web oriented architecture]]></category>

		<guid isPermaLink="false">http://www.mkbergman.com/?p=948</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Ontology-Driven Apps Using Generic Applications&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=irON&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.subject=Open Semantic Framework&amp;rft.subject=Semantic Enterprise&amp;rft.subject=Semantic Web&amp;rft.subject=Software Development&amp;rft.subject=Web-oriented Architecture&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2011-03-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/948/ontology-driven-apps-using-generic-applications/&amp;rft.language=English"></span>
The Time and Technology is Here to Stand Software Engineering on its Head As an information society we have become a software society. Software is everywhere, from our phones and our desktops, to our cars, homes and every location in between. The amount of software used worldwide is unknowable; we do not even have agreed [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Ontology-Driven Apps Using Generic Applications&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=irON&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.subject=Open Semantic Framework&amp;rft.subject=Semantic Enterprise&amp;rft.subject=Semantic Web&amp;rft.subject=Software Development&amp;rft.subject=Web-oriented Architecture&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2011-03-07&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/948/ontology-driven-apps-using-generic-applications/&amp;rft.language=English"></span>
<h2><img style="width: 230px; height: 345px; float: left; margin-right: 10px;" title="from Wikimedia Commons" src="http://www.mkbergman.com/wp-content/themes/ai3/images/2011Posts/110307_one_hand_handstand.jpg" alt="from Wikimedia Commons" />The         Time and Technology is Here to Stand Software Engineering on its Head</h2>
<p>As an <a href="http://en.wikipedia.org/wiki/Information_society">information         society</a> we have become a software society. Software is everywhere,         from our phones and our desktops, to our cars, homes and every location         in between. The amount of software used worldwide is unknowable; we do         not even have agreed measures to quantify its extent or value <a href="#app1">[1]</a>. We         suspect there are at least 1 billion lines of code that have         accumulated over time <a href="#app1">[1</a>,<a href="#app2">2]</a>. On the order of $875 billion was spent         worldwide on software in 2010, of which about half was for packaged         software and licenses and the rest for programmer services, consulting         and outsourcing <a href="#app3">[3]</a>. In the U.S. alone, about 2 million people work as programmers or related <a href="#app4">[4]</a>.</p>
<p>It goes without saying that software is a very big deal.</p>
<p>No matter what the metrics, it is expensive to develop and maintain         software. This is also true for open source, which has its own costs of         ownership <a href="#app5">[5]</a>. Designing software faster with fewer mistakes and more         re-use and robustness have clearly been emphases in computer science         and the discipline of programming from its inception.</p>
<p>This attention has caused a myriad of schools and practices to develop         over time. Some of the earlier efforts included <a href="http://en.wikipedia.org/wiki/Computer-aided_software_engineering">computer-aided         software engineering</a> (CASE) or Grady Booch&#8217;s (already cited in <a href="#app1">[1]</a>)         <a href="http://en.wikipedia.org/wiki/Object-oriented_design">object-oriented         design</a> (OOD). Fourth-generation languages (<a href="http://en.wikipedia.org/wiki/4GL">4GLs</a>) and <a href="http://en.wikipedia.org/wiki/Rapid_Application_Development">rapid         application development</a> (RAD) were popular in the 1980s and 1990s.         Most recently, <a href="http://en.wikipedia.org/wiki/Agile_software_development">agile         software development</a> or <a href="http://en.wikipedia.org/wiki/Extreme_Programming">extreme         programming</a> have grabbed mindshare.</p>
<p>Altogether, there are dozens of <a href="http://en.wikipedia.org/wiki/List_of_software_development_philosophies"> software development philosophies</a>, each with its passionate         advocates. These express themselves through a variety of <a href="http://en.wikipedia.org/wiki/Software_development_methodology">software         development methodologies</a> that might be characterized or clustered         into the <a href="http://en.wikipedia.org/wiki/Software_prototyping">prototyping</a> or         <a href="http://en.wikipedia.org/wiki/Waterfall_model">waterfall</a> or         <a href="http://en.wikipedia.org/wiki/Spiral_model">spiral</a> camps.</p>
<p>In all instances, of course, the drivers and motivations are the same:         faster development, more re-use, greater robustness, easier         maintainability, and lower development costs and <a href="http://en.wikipedia.org/wiki/Total_cost_of_ownership">total costs of         ownership</a>.</p>
<h3>The Ontology Perspective in this Mix</h3>
<p>For at least the past decade, ontologies and semantic Web-related         approaches have also been part of this mix. A good summary of these         efforts comes from Michael Uschold in an invited address at FOIS 2008 <a href="#app6"> [6]</a>. In this review, he points to these advantages for ontology-based         approaches to software engineering:</p>
<ul>
<li>Re-use &#8212; abstract/general notions can be used to instantiate more         concrete/specific notions, allowing more reuse </li>
<li>Reduced development times &#8212; producing software artifacts that are         closer to how we think, combined with reuse and automation that enables         applications to be developed more quickly </li>
<li>Increased reliability &#8212; formal constructs with automation reduces         human error </li>
<li>Decreased maintenance costs &#8212; increased reliability and the use of         automation to convert models to executable code reduces errors. A         formal link between the models and the code makes software easier to         comprehend and thus maintain. </li>
</ul>
<p>These first four items are similar to the benefits argued for other         software engineering methodologies, though with some unique twists due         to the semantic basis. However, Uschold also goes on to suggest         benefits for ontology-based approaches not claimed by other         methodologies:</p>
<ul>
<li>Reduced conceptual gap &#8212; application developers can interact with         the tools in a way that is closer to their thinking </li>
<li>Facilitate automation &#8212; formal structures are amenable to         automated reasoning, reducing the load on the human, and </li>
<li>Agility/flexibility &#8212; ontology-driven information systems are more         flexible, because you can much more easily and reliably make changes in         the model than in code. </li>
</ul>
<p>In making these arguments, Uschold picks up on the &#8220;ontology-driven         information systems&#8221; moniker first put forward by Nicola Guarino in         1998 <a href="#app7">[7]</a>. The ideas around ODIS have had substantial impact on the         semantic Web community, especially in the use of formal ontologies and         modeling approaches. The <a href="http://www.formalontology.org/">FOIS</a> series of conferences, and         most recently the <a href="http://fluidity.org.uk/Conference.html">ODiSE</a> series, have been         spawned from these ideas. There is also, for example, a fairly rich and         developed community working on the integration of UML via ontologies as         the drivers or specifiers of software <a href="#app8">[8]</a>.</p>
<p>Yet, as Uschold is careful to point out, the idea of ODIS extends         beyond software engineering to encompass all of information systems. My         own categorization of how ontologies may contribute to information         systems is:</p>
<ol>
<li>Domain modeling &#8212; this category includes the domain knowledge         representations and reasoning and inference bases that are the         traditional understanding of ontologies in the semantic space. The         structural aspects are akin to a database schema definition; the unique         aspects of ontologies reside in their logic foundations and graph         structures, which offer more power in inferencing, reasoning and graph         analysis than conventional approaches </li>
<li>Model-driven architectures (<a href="http://en.wikipedia.org/wiki/Model-driven_architecture">MDA</a>) &#8212;         like <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language"> UML</a>, these are platform-independent specifications that provide           the functional and dataflow definitions of &#8220;models&#8221; executed by the           system. These are the natural progeny of earlier CASE approaches, for           example. Such systems also potentially allow graphical or visual           means for building or hooking together components as a substitute to           direct coding </li>
<li>Program specifications and excecutables &#8212; though fairly         experimental at present, these approaches use the languages of RDF, OWL         or direct use of logic languages to create the equivalent of executable         software programs. A couple of experimental systems include Fhat and         Neno, for example, point to possible future directions in this area<a href="#app9"> [9] </a></li>
<li>Runtime or utility components &#8212; proper construction of ontologies         can be a source for labels and prompts within user interfaces and other         runtime uses. Because of the ontology basis, these contributions may         also be contextual<a href="#app10"> [10]</a> </li>
<li>Automated agents &#8212; based on context, user choices and the         governing ontologies, new instruction sets can be generated via what         some term automated agents or &#8220;robots&#8221; to instruct subsequent steps in         the software, including potentially analysis or validation. Mission         Critical IT<a href="#app11"> [11]</a> is apparently the most advanced in this area; we         discuss their <a href="http://www.missioncriticalit.com/odase.html">ODASE</a> approach more         below </li>
<li>Bespoke drivers of generic applications &#8212; through using and         combining a number of the aspects above, in its totality this approach         is a very different paradigm, as we describe below. </li>
</ol>
<p>When we look at this list from the standpoint of conventional software         or software engineering, we see that #1 shares overlaps with         conventional database roles and #2, #3 and #4 with         conventional programmer or software engineering responsibilities. The         other portions, however, are quite unique to ontology-based approaches.</p>
<h3>But Is Software Engineering Even the Right Focus?</h3>
<p>For decades, issues related to how to develop apps better and faster         have been proposed and argued about. We still have the same litany of         challenges and issues from expense to re-use and brittleness. And,         unfortunately, despite many methodologies <span style="font-style: italic;">du jour</span>, we still see bottlenecks in the         enterprise relating to such matters as:</p>
<div class="boxGraySolid" style="margin: 10px 0pt 10px 10px; float: right; width: 360px; font-size: 120%; font-style: italic; text-align: center;">Software is merely an intermediary artifact to accomplish some given       tasks. Rather than &#8220;engineering&#8221; software, the focus should be on how to       fulfill those tasks in an optimal manner &#8212; and that demands a systems       approach.</div>
<ul>
<li>data access </li>
<li>queries </li>
<li>data transformations </li>
<li>data integration or federation </li>
<li>reports </li>
<li>other data presentations </li>
<li>business analysis, and </li>
<li>targeted, specialty functionality. </li>
</ul>
<p>Promises such as self-service reporting touted at the inception of data         warehousing two decades ago are still to be realized <a href="#app12">[12]</a>. Enterprises         still require the overhead and layers of IT to write SQL for us and         prepare and fix reports. If we stand back a bit, perhaps we can come to         see that the real opportunity resides in turning the whole paradigm of         software engineering upside down.</p>
<p>Our objective should not be software <span style="font-style: italic;">per se</span>. Software is merely an intermediary         artifact to accomplish some given task. Rather than engineering         software, the focus should be on how to fulfill those tasks in an         optimal manner. How can we keep the idea of producing software from         becoming this generation&#8217;s new buggy whip example <a href="#app13">[13]</a>?</p>
<p>For reasons we delve into a bit more below, it perhaps has required a         confluence of some new semantic technologies and ontologies to create         the opening for a shift in perspective. That shift is one from software         as an objective in itself to one of software as merely a generic         intermediary in an information task pipeline.</p>
<p>Though this shift may not         apply (at least with current technologies) to transactional and         process-based software, I submit it may be fundamental to the broad         category of <a href="http://en.wikipedia.org/wiki/Knowledge_management">knowledge         management</a>. KM includes such applications as <a href="http://en.wikipedia.org/wiki/Business_intelligence">business         intelligence</a>, <a href="http://en.wikipedia.org/wiki/Data_warehouse">data warehousing</a>,         <a href="http://en.wikipedia.org/wiki/Data_integration">data         integration</a> and <a href="http://en.wikipedia.org/wiki/Federated_database_system">federation</a>,         <a href="http://en.wikipedia.org/wiki/Enterprise_Information_Integration">enterprise         information integration</a> and <a href="http://en.wikipedia.org/wiki/Enterprise_information_management">management</a>,         <a href="http://en.wikipedia.org/wiki/Competitive_intelligence">competitive         intelligence</a>, <a href="http://en.wikipedia.org/wiki/Knowledge_representation">knowledge         representation</a>, and so forth. These are the real areas where         integration and reports and queries and analysis remain frustrating         bottlenecks for knowledge workers. And, interestingly, these are also         the same areas most amenable to embracing an open world (OWA) mindset <a href="#app14"> [14]</a>.</p>
<p>If we stand back and take a systems perspective to the question of         fulfilling functional KM tasks, we see that the questions are both         broader and narrower than software engineering alone. They are broader         because this systems perspective embraces architecture, data,         structures and generic designs. The questions are narrower because         software &#8212; within this broader context &#8212; can be now be generalized as         artifacts providing the fulfillment of classes of functions.</p>
<h3>ODapps: The Ontology-Driven Application Approach</h3>
<p><a href="http://openstructs.org"><img style="border: 0px solid; width: 90px; height: 90px; float: right; margin-left: 10px;" title="Open Semantic Framework (OSF) at openstructs.org" src="http://www.mkbergman.com/wp-content/themes/ai3/images/2010Posts/triple_90.png" alt="Open Semantic Framework (OSF) at openstructs.org" align="right" /></a><span style="font-style: italic;">Ontology-driven         applications</span> &#8212; or <span style="font-style: italic;">ODapps</span> for short &#8212; based on <span style="font-style: italic;">adaptive ontologies</span> are a topic we have         been nibbling around and discussing for some time. In our oft-cited         seven pillars of the semantic enterprise we devote two pillars         specifically (#4 and #3, respectively) to these two components<a href="#app15"> [15]</a>.         However, in keeping with the systems perspective relevant to a         transition from software engineering to generic apps, we should also         note that canonical data models (via RDF) and a Web-oriented         architecture are two additional pillars in the vision.</p>
<p>ODapps are modular, generic software applications designed to operate         in accordance with the specifications contained in one or more         ontologies. The relationships and structure of the information driving         these applications are based on the standard functions and roles of         ontologies (namely as domain ontologies as noted under #1 above), as         supplemented by the UI and instruction sets and validations and rules         (as noted under #4 and #5 above). The combination of these         specifications as provided by both properly constructed domain         ontologies and supplementary utility ontologies is what we collectively         term <span style="font-style: italic;">adaptive ontologies</span> <a href="#app16">[16]</a>.</p>
<p>ODapps fulfill specific generic tasks, consistent with their bespoke         design (#6 above) to respond to adaptive ontologies. Examples of         current ontology-driven apps include imports and exports in various         formats, dataset creation and management, data record creation and         management, reporting, browsing, searching, data visualization and         manipulation (through libraries of what we call <span style="font-style: italic;">semantic components</span>), user access rights         and permissions, and similar. These applications provide their specific         functionality in response to the specifications in the ontologies fed         to them.</p>
<p>ODapps are designed more similarly to widgets or API-based frameworks         than to the dedicated software of the past, though the dedicated         functionality (<span style="font-style: italic;">e.g.</span>, graphing,         reporting, etc.) is obviously quite similar. The major change in these         ontology-driven apps is to accommodate a relatively common abstraction         layer that responds to the structure and conventions of the guiding         ontologies. The major advantage is that single generic applications can         supply shared functionality based on any properly constructed adaptive         ontology.</p>
<p>In fact, the widget idea from <a href="http://en.wikipedia.org/wiki/Web_2.0">Web 2.0</a> is a key precursor         to the ODapps design. What we see in Web 2.0 are dedicated         single-purpose widgets that perform a display operation (such as         <a href="http://en.wikipedia.org/wiki/Google_Maps">Google Maps</a>)         based on the properly structured data fed to them (structured         geolocational information in the case of GMaps).</p>
<p>In <a href="http://structureddynamics.com">Structured Dynamics</a>&#8216; early work         with RDF-based applications by our predecessor company, <a href="http://zitgist.com/">Zitgist</a>, we demonstrated how the basic Web         2.0 widget idea could be extended by &#8220;triggering&#8221; which kind of mashup         widget got invoked by virtue of the data type(s) fed to it. The         <a href="http://zitgist.com/products/query_builder.html">Query         Builder</a> presented contextual choices for how to build a SPARQL         query via UI based on what prior dropdown list choices were made. The         <a href="http://zitgist.com/products/dataviewer/dataviewer.html">DataViewer</a> displayed results with different widgets (maps, profiles, etc.)         depending on which part of a query&#8217;s results set was inspected (by         responding to differences in data types). These two apps, in our         opinion, remain some of the best developed in the semantic Web space,         even though development on both ceased nearly four years ago.</p>
<p>This basic extension of data-driven applications &#8212; as informed by a         bit more structure &#8212; naturally evolved into a full ontology-driven         design. We discovered that &#8212; with some minor best practice additions         to conventional ontologies &#8212; we could turn ontologies into powerhouses         that informed applications through:</p>
<ul>
<li>An understanding of the kind of things under consideration,         including their inference chains </li>
<li>The types of data in results sets, and how that informs the nature         of the widget(s) (maps, calendars, timelines, charts, tabular reports,         images, stories, media, etc.) appropriate to display and manipulate         that information, and </li>
<li>UI and utility functions such as interface labels, mouseovers,         auto-suggests, spelling suggestions, synonym matches, etc. </li>
</ul>
<p>Like the earlier Zitgist discoveries, basing the applications on only         one or two canonical data models and serializations (RDF and a simple         data exchange XML, which Fred Giasson calls <a href="http://techwiki.openstructs.org/index.php/StructXML">structXML</a>)         provides the input uniformity to make a library of generic applications         tractable. And, embedding the entire framework in a Web-oriented         architecture means it can be distributed and deployed anywhere         accessible by HTTP.</p>
<p>Booch has maintained for years that in software design abstraction is         good, but not if too abstract <a href="#app1">[1]</a>. ODapps are a balanced abstraction         within the framework of canonical architectures, data models and data         structures. This design thus limits software brittleness and maximizes         software re-use. Moreover, it shifts the locus of effort from software         development and maintenance to the creation and modification of         knowledge structures. The KM emphasis can shift from programming and         software to logic and terminology <a href="#app16">[16]</a>.</p>
<p>In the sub-sections below, we peel back some portions of this layered         design to unveil how some of these major pieces interact.</p>
<h4>Built Upon an Ontology- and Web-based Architecture</h4>
<p>Again, to cite Booch, the most fundamental software design decision is         architecture<a href="#app1"> [1]</a>. In the case of Structured Dynamics and its support         for ODapps, its open semantic framework (<a rel="nofollow" href="http://openstructs.org/open-semantic-framework/overview">OSF</a>) is embedded in a Web-oriented architecture         (<a href="http://en.wikipedia.org/wiki/Web-oriented_architecture">WOA</a>).         The OSF itself is a layered design that proceeds from a kernel of         existing assets (data and structures) and proceeds through conversion         to Web service access, and then ontology organization and management         via ODapps<a href="#app17"> [17]</a>. The major layers in the OSF stack are:</p>
<ul>
<li>Existing assets — any and all existing information and data assets,         ranging from unstructured to structured. Preserving and leveraging         those assets is a key premise </li>
<li> <a href="http://structureddynamics.com/scones.html">scones</a> /           <a rel="nofollow" href="http://openstructs.org/iron">irON</a> &#8211; the           conversion layer, in part consisting of information extraction of           subject concepts or named entities (<a href="http://structureddynamics.com/scones.html">scones</a>) or the           instance record Object Notation for conveying XML, JSON or           spreadsheets (CSV) in <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF</a>-ready           form (via <a href="http://openstructs.org/iron">irON</a> or <a href="http://openstructs.org/resources/rdfizers">RDFizers</a>) </li>
<li> <a rel="nofollow" href="http://openstructs.org/structwsf">structWSF</a> &#8211; a platform-independent suite of more than 20           RESTful Web services, organized for managing structured data           datasets; it provides the standard, common interface by which           existing information assets get represented and presented to the           outside world and to other layers in the OSF stack </li>
<li> <a href="http://techwiki.openstructs.org/index.php/Category:Ontologies">Ontologies</a> — are the layer containing the structured assets “driving” the           system; this includes the concepts and relationships of the domain at           hand, and administrative ontologies that guide how the user           interfaces or widgets in the system should behave </li>
<li> <a rel="nofollow" href="http://openstructs.org/construct">conStruct</a> &#8211; connecting modules to enable structWSF and           sComponents to be hosted/embedded in Drupal, and </li>
<li> <a rel="nofollow" href="http://openstructs.org/semantic-components">sComponents</a> &#8211; (mostly) Flex semantic components           (widgets) for visualizing and manipulating structured data. </li>
</ul>
<p>Not all of these layers or even their specifics is necessary for an         ontology-driven app design<a href="#app18"> [18]</a>. However, the general foundations of         generic apps, properly constructed adaptive ontologies, and canonical         data models and structures should be preserved in order to         operationalize ODapps in other settings.</p>
<h4>OSF is the Basis for Domain-specific Instantiations</h4>
<p>The power of this design is that by swapping out adaptive ontologies         and relevant data, the entire OSF stack as is can be used to deploy         multiple instantiations. Potential uses can be as varied as the domain         coverage of the domain ontologies that drive this framework.</p>
<p>The OSF semantic framework is a completely open and generic one. The         same set of tools and capabilities can be applied to any domain that         needs to manage and understand information in its own domain. With the         existing ODApps in hand, this includes from unstructured text or         documents to conventional structured databases.</p>
<p>What changes from domain to domain are the data <span class="double_u">structures</span> (the ontologies, schema and entity         references) and their instance <span class="double_u">data</span> (which can also be converted from existing to canonical forms). Here is         an illustration of how this generic framework can be leveraged for         different deployments. Note that <a href="http://citizen-dan.org">Citizen Dan</a> is a local government example         of the OSF framework with relatively complete <a href="http://demo.citizen-dan.org">online demos</a>:</p>
<div><a href="http://www.mkbergman.com/wp-content/themes/ai3/images/2010Posts/100617_osf_instances.png"> <img class="center_ok" style="border: 0px solid; width: 600px; height: 334px;" title="The Open Semantic Framework can Spawn Many Different Domain Instances" src="http://www.mkbergman.com/wp-content/themes/ai3/images/2010Posts/100617_osf_instances.png" alt="The Open Semantic Framework can Spawn Many Different Domain Instances" width="1204" height="670" /></a></div>
<p style="font-style: italic; text-align: center;"><small>(click for <a href="http://www.mkbergman.com/wp-content/themes/ai3/images/2010Posts/100617_osf_instances.png"> full size</a>)</small></p>
<p>Structured Dynamics continues to wrinkle this basic design for         different clients and different industries. As we round out the         starting set of ODapps (see below), the major effort in adapting this         generic design to different uses is to tailor the ontologies and         &#8220;RDFize&#8221; existing data assets.</p>
<h4>Lower Layers</h4>
<p>Conversion of existing assets to RDF and canonical forms is not         discussed further here. See the <a href="http://openstructs.org/iron">irON</a> and <a href="http://structureddynamics.com/scones.html">scones</a> documentation or         the <a href="http://techwiki.openstructs.org">TechWiki</a> for more         information on these topics.</p>
<h4>The structWSF Web Services Layer</h4>
<p>The first suite of ODapps occurs at the <a href="http://openstructs.org/structwsf">structWSF</a> Web services layer.         structWSF provides a set of generic functions and endpoints to:</p>
<ul>
<li>Import or export datasets </li>
<li>Create, update, delete (<a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a>)         or otherwise manage data records </li>
<li>Search records with full-text and faceted search </li>
<li>Browse or view existing records or record sets, based on simple to         possible complex selection or filtering criteria, or </li>
<li>Process results sets through workflows of various natures,         involving specialized analysis, information extraction or other         functions. </li>
</ul>
<p>Here is a listing of current ODapp functions within structWSF (with links to details for each):</p>
<table class="center_ok" style="font-size: 11px; width: 358px;" border="1" cellspacing="0" cellpadding="4">
<tbody>
<tr>
<td style="background-color: #ffffcc; text-align: center;"><strong>WSF management Web services</strong></td>
<td style="background-color: #ffffcc;">
<div style="text-align: center;"><strong>User-oriented Web services</strong></div>
</td>
</tr>
<tr>
<td valign="top">
<ul>
<li> <a title="Auth: Validator" href="http://techwiki.openstructs.org/index.php/Auth:_Validator">Auth: Validator</a> </li>
<li> <a title="Auth: Lister" href="http://techwiki.openstructs.org/index.php/Auth:_Lister">Auth: Lister</a> </li>
<li> <a title="Auth Registrar: Access" href="http://techwiki.openstructs.org/index.php/Auth_Registrar:_Access">Auth Registrar: Access</a> </li>
<li> <a title="Auth Registrar: WS" href="http://techwiki.openstructs.org/index.php/Auth_Registrar:_WS">Auth Registrar: WS</a> </li>
<li> <a title="Ontology: Create" href="http://techwiki.openstructs.org/index.php/Ontology:_Create">Ontology: Create</a> </li>
<li> <a title="Dataset: Create" href="http://techwiki.openstructs.org/index.php/Dataset:_Create">Dataset: Create</a> </li>
<li> <a title="Dataset: Read" href="http://techwiki.openstructs.org/index.php/Dataset:_Read">Dataset: Read</a> </li>
<li> <a title="Dataset: Update" href="http://techwiki.openstructs.org/index.php/Dataset:_Update">Dataset: Update</a> </li>
<li> <a title="Dataset: Delete" href="http://techwiki.openstructs.org/index.php/Dataset:_Delete">Dataset: Delete</a> </li>
</ul>
</td>
<td valign="top">
<ul>
<li> <a title="CRUD: Create" href="http://techwiki.openstructs.org/index.php/CRUD:_Create">CRUD: Create</a> </li>
<li> <a title="CRUD: Read" href="http://techwiki.openstructs.org/index.php/CRUD:_Read">CRUD: Read</a> </li>
<li> <a title="CRUD: Update" href="http://techwiki.openstructs.org/index.php/CRUD:_Update">CRUD: Update</a> </li>
<li> <a title="CRUD: Delete" href="http://techwiki.openstructs.org/index.php/CRUD:_Delete">CRUD: Delete</a> </li>
<li> <a title="Browse" href="http://techwiki.openstructs.org/index.php/Browse">Browse</a> </li>
<li> <a title="Search" href="http://techwiki.openstructs.org/index.php/Search">Search</a> </li>
<li> <a title="Scones" href="http://techwiki.openstructs.org/index.php/Scones">Scones</a> </li>
<li> <a title="SPARQL" href="http://techwiki.openstructs.org/index.php/SPARQL">SPARQL</a> </li>
<li> <a class="new" title="Import (page does not exist)" href="http://techwiki.openstructs.org/index.php?title=Import&amp;action=edit&amp;redlink=1">Import</a> </li>
<li> <a class="new" title="Export (page does not exist)" href="http://techwiki.openstructs.org/index.php?title=Export&amp;action=edit&amp;redlink=1">Export</a> </li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>At this level the information access and processing is done largely on         the basis of structured results sets. Other visualization and display         ODapps are listed in the next subsection.</p>
<h4>The Semantics Components Layer</h4>
<p>The visualization and data display and manipulation ODapps are provided         via the <a href="http://openstructs.org/semantic-components">semantic         components</a> layer. Structured Dynamics&#8217;s sComponents are Flex-based         widgets that conform to a standard, generic design. Other developers         using the OSF framework are developing JavaScript versions <a href="#app19">[19]</a>. Here         is the current library (with links to details for each):</p>
<table class="center_ok" style="font-size: 11px; width: 370px;" border="1" cellspacing="0" cellpadding="4">
<tbody>
<tr>
<td style="background-color: #ffffcc; text-align: center;"><strong>New Components</strong></td>
<td style="background-color: #ffffcc;">
<div style="text-align: center;"><strong>Components Extending Flex</strong></div>
</td>
</tr>
<tr>
<td valign="top">
<ul>
<li> <a title="Portable Control Application" href="http://techwiki.openstructs.org/index.php/Portable_Control_Application">Portable Control                   Application</a> </li>
<li> <a title="SBarChart" href="http://techwiki.openstructs.org/index.php/SBarChart">sBarChart</a> </li>
<li> <a title="SCO Ontology" href="http://techwiki.openstructs.org/index.php/SCO_Ontology">SCO Ontology</a> </li>
<li> <a title="SControl" href="http://techwiki.openstructs.org/index.php/SControl">sControl</a> </li>
<li>sDashboard </li>
<li> <a title="SGenericBox" href="http://techwiki.openstructs.org/index.php/SGenericBox">sGenericBox</a> </li>
<li> <a title="SLinearChart" href="http://techwiki.openstructs.org/index.php/SLinearChart">sLinearChart</a> </li>
<li> <a title="SMap" href="http://techwiki.openstructs.org/index.php/SMap">sMap</a> </li>
<li> <a title="SPieChart" href="http://techwiki.openstructs.org/index.php/SPieChart">sPieChart</a> </li>
<li> <a title="SRelationBrowser" href="http://techwiki.openstructs.org/index.php/SRelationBrowser">sRelationBrowser</a> </li>
<li> <a title="SStory" href="http://techwiki.openstructs.org/index.php/SStory">sStory</a> </li>
<li> <a title="Scones: Story Tagging" href="http://techwiki.openstructs.org/index.php/Scones:_Story_Tagging">scones: Story Tagging</a> </li>
<li>sWebMap (in development) </li>
</ul>
</td>
<td valign="top">
<ul>
<li> <a title="SHBox" href="http://techwiki.openstructs.org/index.php/SHBox">sHBox</a> </li>
<li> <a title="SImage" href="http://techwiki.openstructs.org/index.php/SImage">sImage</a> </li>
<li> <a title="SText" href="http://techwiki.openstructs.org/index.php/SText">sText</a> </li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>These components can be used in combination with any of the structWSF         ODapps, meaning the filtering, searching, browsing, import/export,         etc., may be combined as an input or output option with the above.</p>
<p>The next animated figure shows how the basic interaction flow works         with these components:</p>
<div><a href="http://www.mkbergman.com/wp-content/themes/ai3/images/2011Posts/sco_animation.gif"> <img class="center_ok" style="border: 0px solid; width: 600px; height: 538px;" title="Semantic Components Workflow" src="http://www.mkbergman.com/wp-content/themes/ai3/images/2011Posts/sco_animation.gif" alt="Semantic Components Workflow" /></a></div>
<p style="font-style: italic; text-align: center;"><small>(click for <a href="http://www.mkbergman.com/wp-content/themes/ai3/images/2011Posts/sco_animation.gif"> full size</a>)</small></p>
<p>Using the ODapp structure it is possible to either “drive” queries and         results sets selections via direct HTTP request via endpoints (not         shown) or via simple dropdown selections on HTML forms or Flex widgets         (shown). This design enables the entire system to be driven via simple         selections or interactions without the need for any programming or         technical expertise.</p>
<p>As the diagram shows, these various sComponents get embedded in a         layout canvas for the Web page. By interacting with the various         components, new queries are generated (most often as <a href="http://en.wikipedia.org/wiki/Sparql">SPARQL</a> queries) to the         various <a href="http://openstructs.org/structwsf">structWSF</a> Web         services endpoints. The result of these requests is to generate a         structured results set, which includes various types and attributes.</p>
<p>An internal ontology that embodies the desired behavior and display         options (SCO, the <a href="http://openstructs.org/semantic-components/manual/semantic-component-ontology"> Semantic Component Ontology</a>) is matched with these types and         attributes to generate the formal instructions to the sComponents. When         combined with the results set data, and attribute information in the         irON ontology, plus the domain understanding in the domain ontology, a         synthetic schema is constructed that instructs what the interface may         do next. Here is an example schema:</p>
<div><a href="http://www.mkbergman.com/wp-content/themes/ai3/images/2011Posts/110307_sco_schema.png"> <img class="center_ok" style="border: 0px solid; width: 581px; height: 537px;" title="Calculated Schema" src="http://www.mkbergman.com/wp-content/themes/ai3/images/2011Posts/110307_sco_schema.png" alt="Calculated Schema" /></a></div>
<p style="font-style: italic; text-align: center;"><small>(click for <a> full size</a>)</small></p>
<p>These instructions are then presented to the sControl component, which         determines which widgets (individual components, with multiples         possible depending on the inputs) need to be invoked and displayed on         the layout canvas.</p>
<p>As new user interactions occur with the resulting displays and         components, the iteration cycle is generated anew, again starting a new         cycle of queries and results sets. Importantly, as these pathways and         associated display components get created, they can be named and made         persistent for later re-use or within dashboard invocations.</p>
<h4>Self-service Reporting</h4>
<p>Since self-service reporting has been such a disappointment <a href="#app12">[12]</a>, it is         worth noting another aspect from this ODapp design. Every &#8220;thing&#8221; that         can be presented in the interface can have a specific display template         associated with it. Absent another definition, for example, any given         &#8220;thing&#8221; will default to its parental type (which, ultimate, is &#8220;Thing&#8221;,         the generic template display for anything without a definition; this         generally defaults to a presentation of all attributes for the object).</p>
<p>However, if more specific templates occur in the inference path, they         will be preferentially used. Here is a sample of such a path:</p>
<table style="margin-left: 15px; font-size: 11px;" border="0" cellspacing="0" frame="void">
<tbody>
<tr>
<td width="47" height="17" align="left">Thing</td>
<td width="38" align="left"></td>
<td width="60" align="left"></td>
<td width="38" align="left"></td>
<td width="57" align="left"></td>
<td width="38" align="left"></td>
<td width="99" align="left"></td>
<td width="38" align="left"></td>
<td width="125" align="left"></td>
<td width="38" align="left"></td>
<td width="132" align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td style="border-top: 1px solid #000000; border-right: 1px solid #000000;" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left">Product</td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td style="border-top: 1px solid #000000; border-right: 1px solid #000000;" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left">Camera</td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td style="border-top: 1px solid #000000; border-right: 1px solid #000000;" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left">Digital Camera</td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td style="border-top: 1px solid #000000; border-right: 1px solid #000000;" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left">SLR Digital Camera</td>
<td align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="17" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td style="border-top: 1px solid #000000; border-right: 1px solid #000000;" align="left"></td>
<td align="left"></td>
</tr>
<tr>
<td height="18" align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left"></td>
<td align="left">Olympus Evolt E520</td>
</tr>
</tbody>
</table>
<p style="margin-top: 10px;">At the ultimate level of a particular model of Olympus camera, its         display template might be exactly tailored to its specifications and         attributes.</p>
<p>This design is meant to provide placeholders for any &#8220;thing&#8221; in any         domain, while also providing the latitude to tailor and customize to         every &#8220;thing&#8221; in the domain.</p>
<p>It is critical that generic apps through an ODapp approach also provide         the underpinnings for self-service reporting. The ultimate metric is         whether consumers of information can create the reports they need         without any support or intervention by IT.</p>
<h4>Adaptive Analysis</h4>
<p>The Mission Critical IT reference provided earlier <a href="#app11">[11]</a> helps point to         the potentials of this paradigm in a different way. Mission Critical         also shows user interfaces contextually chosen based on prior         selections. But they extend that advantage with context-specific         analysis and validation through the <a href="http://en.wikipedia.org/wiki/SWRL">SWRL</a> rules-base semantic         language. This is an exciting extension of the base paradigm that         confirms the applicability of this approach to business intelligence         and general enterprise analytics.</p>
<h3>Standing Software Engineering on its Head</h3>
<p>All of this points to a very exciting era for enterprise and consumer         apps moving into the future. We perhaps should no longer talk about         &#8220;killer apps&#8221;; we can shift our focus to the information we have at         hand and how we want to structure and analyze it.</p>
<p>Using ontologies to write or specify code or to compete as an         alternative to conventional software engineering approaches seems too         much like more of the same. The systems basis in which such         methodologies such as MDA reside have not fixed the enterprise software         challenges of decades-long standing. Rather, a shift to generic         applications driven by adaptive ontologies &#8212; ODapps &#8212; looks to shift         the locus from software and programming to data and knowledge         structures.</p>
<p>This democratization of IT means that everything in the knowledge         management realm can become &#8220;self service.&#8221; We can create our own         analyses; develop our own reports; and package and disseminate what we         and our colleagues need, when they need it. Through ontology-driven         apps and adaptive ontologies, we can turn prior decades of software         engineering practices on their head.</p>
<p>What Structured Dynamics and a handful of other vendors are showing is         by no means yet complete. Our roster of ODapp widgets and templates         still needs much filling out. The toolsets available for creating,         maintaining, mapping and extending the ontologies underlying these         systems are still woefully inadequate <a href="#app20">[20]</a>. These are important         development needs for the near term.</p>
<p>And, of course, none of this means the end of software development         either. Process and transactions systems still likely reside outside of         this new, emerging paradigm. Creating great and solid generic ODapps         still requires software. Further, ODapps and their potential are         completely silent on how we create that software and with what         languages or methodologies. The era of software engineering is hardly         at an end.</p>
<p>What is exceptionally powerful about the prospects in ontology-driven         apps is to speed time to understanding and place information         manipulation directly in the hands of the knowledge worker. This is a         vision of information access and control that has been frustrated for         decades. Perhaps, with ontologies and these semantic technologies, that         vision is now near at hand.</p>
<hr style="margin: 15px 0px;" size="1" />
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app1"></a>[1] This estimate is from Grady Booch, 2005. &#8220;The Complexity of         Programming Models,&#8221; see <a href="http://www.cs.nott.ac.uk/%7Enem/complexity.pdf">http://www.cs.nott.ac.uk/~nem/complexity.pdf</a>.         He comments on the weakness of software lines of code as a meaningful         measure. At the time in 2005, he estimated perhaps 800 billion lines of         code has accumulated, which given growth and vagaries of such         guesstimates I have updated to the 1 billion number noted.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app2"></a>[2] For a wildly different estimate, that has been criticized somewhat,         see Blackduck Software, 2009. &#8220;Estimating the Development Cost of Open         Source Software,&#8221; at <a href="http://www.blackducksoftware.com/development-cost-of-open-source">http://www.blackducksoftware.com/development-cost-of-open-source</a>.         According to Blackduck&#8217;s research there are over 200,000 OSS projects         on the Internet representing more than 4.9 billion lines of available         code from 4,000 sites that the company monitors. Blackduck estimates         that reproducing this OSS would cost $387 billion for &#8220;typical&#8221; SLOC         estimating bases. While Blackduck is likely in the best place of any         organization to track open source given their business model, others         have criticized the estimates because only a portion (fewer than 10%,         consistent with my own research) of open source projects are active,         and many active projects also share significant code bases.         Nonetheless, there is still a huge disparity between the 1 billion SLOC         estimate in [1] and this estimate of 5 billion for open source alone.         This disparity is an indicator of the measurement challenges.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app3"></a>[3] See IMAP, 2010. <span style="font-style: italic;">Computing &amp;         Internet Software Global Report — 2010</span>, 40 pp, see <a href="http://imap.com/imap/media/resources/HighTechReport_WEB_89B4E29C01817.pdf"> http://imap.com/imap/media/resources/HighTechReport_WEB_89B4E29C01817.pdf</a>.         The relative splits they show for software packages and licenses, IT         consulting or outsourcing are 48%, 29% and 23%, respectively, of the         total shown. Note however, that Gartner estimates are as high as 2x         these amounts, again showing the uncertainty of measuring software;         see, for example, <a href="http://www.gartner.com/it/page.jsp?id=1209913">http://www.gartner.com/it/page.jsp?id=1209913</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app4"></a>[4] For this and related measures, see Business Software Alliance,         2009. <span style="font-style: italic;">Software Industry Facts and         Figures</span>, see <a href="http://www.bsa.org/country/Public%20Policy/%7E/media/Files/Policy/Security/General/sw_factsfigures.ashx"> http://www.bsa.org/country/Public%20Policy/~/media/Files/Policy/Security/General/sw_factsfigures.ashx</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app5"></a>[5] Simply conduct a Web search on &#8216;&#8221;open source&#8221; &#8220;cost of ownership&#8221;&#8216;         to see the many studies in this area. Depending on advocacy, estimates         may be as high as proprietary software to a lower, but still         substantial percentage. In no cases are open source understood to be         fully &#8220;free&#8221; once maintenance, upgrades, modifications, and site         adaptations are considered.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app6"></a>[6] Michael Uschold, 2008. &#8220;Ontology-Driven Information Systems: Past,         Present and Future,&#8221; in <span style="font-style: italic;">Proceedings         of the Fifth International Conference on Formal Ontology in Information         Systems (FOIS 2008)</span>, Carola Eschenbach and Michael Grüninger,         eds., IOS Press, Amsterdam, Netherlands, pp 3-20; see <a href="http://mba.eci.ufmg.br/downloads/recol/FormalOntologyinInformationSystems2008.pdf"> http://mba.eci.ufmg.br/downloads/recol/FormalOntologyinInformationSystems2008.pdf</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app7"></a>[7] Nicola Guarino, 1998. &#8220;Formal Ontology and Information Systems,&#8221; in         <span style="font-style: italic;">Proceedings of FOIS’98</span>,         Trento, Italy, June 6-8, 1998. Amsterdam, IOS Press, pp. 3-15; see         <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.29.1776&amp;rep=rep1&amp;type=pdf"> http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.29.1776&amp;rep=rep1&amp;type=pdf</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app8"></a>[8] See Phil Tetlow <span style="font-style: italic;">et al</span>.,         eds., 2006. <span style="font-style: italic;">Ontology Driven         Architectures and Potential Uses of the Semantic Web in Software         Engineering</span>, a W3C Editor&#8217;s Draft on Best Practices, February         11, 2006; see <a href="http://www.w3.org/2001/sw/BestPractices/SE/ODA/">http://www.w3.org/2001/sw/BestPractices/SE/ODA/</a>.         UML class diagrams have close resemblance to certain ontology         structures. This effort was part of a formal collaboration between         <a href="http://en.wikipedia.org/wiki/W3C">W3C</a> and the Object         Management Group (<a href="http://en.wikipedia.org/wiki/Object_Management_Group">OMG</a>), which         resulted among other things in the production of the Ontology         Definition Metamodel (<a href="http://en.wikipedia.org/wiki/Ontology_Definition_MetaModel">ODM</a>).         In the OMG&#8217;s model-driven architecture (<a href="http://en.wikipedia.org/wiki/Model-driven_architecture">MDA</a>)         initiative, models are used not only for design and maintenance         purposes, but as a basis for generating executable artifacts for         downstream use. The MDA approach grew out of much of the standards work         conducted in the 1990s in the Unified Modeling Language (<a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a>).</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app9"></a>[9] <a href="http://neno.lanl.gov/Home.html">Neno</a> is a semantic         network programming language and Fhat is a virtual machine that works         off of it. These two projects have been largely abandoned. A related         project is <a href="http://ripple.fortytwo.net/">Ripple,</a> a         relational, stack-based dataflow language by <a href="http://tw.rpi.edu/wiki/Joshua_Shinavier">Joshua Shinavier</a>, which         is episodically updated.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app10"></a>[10] Holger Knublauch of TopQuadrant has made the point that ontologies         can also have runtime uses as well: &#8220;In contrast to conventional         Model-Driven Architecture known from object-oriented systems, semantic         applications use their data models not only at design time, but also as         runtime components. The rich declarative semantics of ontological data         models can be exploited to drive user interfaces and to control an         application&#8217;s behavior.&#8221; See H. Knublauch, 2007. &#8220;From Ontology Design         to Deployment: Semantic Application Development with TopBraid,&#8221;         presented at the <span style="font-style: italic;">2007 Semantic         Technology Conference</span>, San Jose, CA; see <a href="http://www.semantic-conference.com/2007/sessions/l5.html">http://www.semantic-conference.com/2007/sessions/l5.html</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app11"></a>[11] <a href="http://www.missioncriticalit.com/">Mission Critical         IT</a> describes its ODASE platform (Ontology Driven Architecture for         Software Engineering) as a set of tools to facilitate the creation of         working applications from a semantic business model (an ontology),         using the open standards <a href="http://www.missioncriticalit.com/technology.html#owl">OWL</a>,         <a href="http://www.missioncriticalit.com/technology.html#swrl">SWRL</a> and <a href="http://www.missioncriticalit.com/technology.html#rdf">RDF</a>. The         ODASE code generators (a.k.a &#8220;robots&#8221;) generate an API based on the         business terminology defined by the OWL+SWRL+RDF business model, which         the ODASE platform then uses to execute the rules and reasoning as         contextual choices are made by the user. Among other links, the company         has an impressive <a href="http://cloud.missioncriticalit.com/rule-demo/">online demo</a> that         shows a consumer telecommunications purchase example; there is also a         <a href="http://demo.missioncriticalit.com/odase/rules-workbench/en/index.html"> video explaining the rules basis</a> of the ODASE framework.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app12"></a>[12] See Wayne W. Eckerson, 2007. &#8220;The Myth of Self-Service Business         Intelligence,&#8221; in <span style="font-style: italic;">TDWI Online</span>,         October 18, 2007; see <a href="http://tdwi.org/articles/2007/10/18/the-myth-of-selfservice-bi.aspx">http://tdwi.org/articles/2007/10/18/the-myth-of-selfservice-bi.aspx</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app13"></a>[13] The <a href="http://en.wikipedia.org/wiki/Buggy_whip#Buggy_whip_and_coachwhip">buggy         whip</a> industry as a major economic entity ceased to exist with the         introduction of the automobile, and is cited in economics and marketing         as an example of an industry ceasing to exist because its market niche,         and the need for its product, disappears. Not recognizing what industry         or business purpose is being served is an oft-cited cause for         obsolescence. Thus, software engineering is a practice that serves the         creation of software, which itself is only a means to a functional end.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app14"></a>[14] See M. K. Bergman, 2009. <span style="font-style: italic;">&#8220;</span><a style="font-style: italic;" title="Permanent Link to The Open World Assumption: Elephant in the Room" rel="bookmark" href="http://www.mkbergman.com/852/the-open-world-assumption-elephant-in-the-room/">The         Open World Assumption: Elephant in the Room</a>,&#8221; <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, December         21, 2009. The <a href="http://en.wikipedia.org/wiki/Open_world_assumption">open world         assumption</a> (OWA) generally asserts that the lack of a given         assertion or fact being available does not imply whether that possible         assertion is true or false: it simply is not known. In other words,         lack of knowledge does not imply falsity. Another way to say it is that         everything is permitted until it is prohibited. OWA lends itself to         incremental and incomplete approaches to various modeling problems.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app15"></a>[15] See M.K. Bergman, 2010. <a href="http://www.mkbergman.com/859/seven-pillars-of-the-open-semantic-enterprise/"> <span style="font-style: italic;">“</span>Seven Pillars of the Open         Semantic Enterprise<span style="font-style: italic;">“</span></a>,         <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, January 12, 2010.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app16"></a>[16] See M.K. Bergman, 2009. <a href="http://www.mkbergman.com/492/ontology-best-practices-for-data-driven-applications-part-3/"> <span style="font-style: italic;">“</span>Ontologies as the ‘Engine’         for Data-Driven Applications<span style="font-style: italic;">“</span></a>, <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, June 10,         2009, for the first presentation of these topics, but the specific term         <span style="font-style: italic;">adaptive ontology</span> was not yet         used. That term was first introduced in <a href="http://www.mkbergman.com/553/confronting-misconceptions-with-adaptive-ontologies/"> “Confronting Misconceptions with Adaptive Ontologies”</a> (August 17,         2009). The dedicated treatment of these topics and their interplay was         provided in M.K. Bergman, 2009. <a href="http://www.mkbergman.com/847/ontology-driven-applications-using-adaptive-ontologies/"> “Ontology-driven Applications Using Adaptive Ontologies”</a>,         <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, November 23, 2009. The relation of these topics to enterprise         software was first presented in M.K. Bergman, 2009. <a href="http://www.mkbergman.com/825/fresh-perspectives-on-the-semantic-enterprise/"> “Fresh Perspectives on the Semantic Enterprise”</a>, <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, September         28, 2009.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app17"></a>[17] Some 250 pp of complete technical documentation for these projects         is provided on the Structured Dynamics&#8217; open source OpenStructs         <a rel="nofollow" href="http://techwiki.openstructs.org/">TechWiki</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app18"></a>[18] For more discussion of semantic components, see F. Giasson, 2010.         &#8220;<a href="http://fgiasson.com/blog/index.php/2010/07/05/semantic-components/">Semantic         Components</a>,&#8221; in his blog, July 5, 2010. For more discussion of the         layered OSF design, see M.K. Bergman, 2010. <a href="http://www.mkbergman.com/891/domain-specific-instantiations-based-on-the-open-semantic-framework/"> <span style="font-style: italic;">“</span>Domain-specific         Instantiations based on the Open Semantic Framework<span style="font-style: italic;">“</span></a>, <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, June 17,         2010.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app19"></a>[19] To find these groups and follow the open source OSF developments,         see xxx. So long as the basic design comports with the foundations         herein, sComponents may be developed in any rich Internet application         (<a href="http://en.wikipedia.org/wiki/Rich_Internet_application">RIA</a>)         environment.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="app20"></a>[20] Ontology development, management and mapping is the emerging         imperative in the semantic technology space. For some thoughts on how         Structured Dynamics is approaching this question, see a <a style="font-style: italic;" title="Normative Landscape of Ontology Tools" href="http://techwiki.openstructs.org/index.php/Normative_Landscape_of_Ontology_Tools">Normative Landscape of         Ontology Tools</a> on the <a href="http://techwiki.openstructs.org/index.php/Main_Page">TechWiki</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkbergman.com/948/ontology-driven-apps-using-generic-applications/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ontology Tutorial Series</title>
		<link>http://www.mkbergman.com/916/ontology-tutorial-series/</link>
		<comments>http://www.mkbergman.com/916/ontology-tutorial-series/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 06:19:31 +0000</pubDate>
		<dc:creator>Mike Bergman</dc:creator>
				<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Ontology Best Practices]]></category>
		<category><![CDATA[adaptive ontologies]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[coherence]]></category>
		<category><![CDATA[development methodologies]]></category>
		<category><![CDATA[development tools]]></category>
		<category><![CDATA[domain ontologies]]></category>
		<category><![CDATA[general tools]]></category>
		<category><![CDATA[metamodeling]]></category>
		<category><![CDATA[methodological approach]]></category>
		<category><![CDATA[Ontology]]></category>
		<category><![CDATA[owl]]></category>
		<category><![CDATA[OWL 2]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[skos]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[Web Ontology Language]]></category>

		<guid isPermaLink="false">http://www.mkbergman.com/?p=916</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Ontology Tutorial Series&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2010-09-27&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/916/ontology-tutorial-series/&amp;rft.language=English"></span>
Resources Useful to the Understanding of Ontologies and the Semantic Web Over the past few weeks we have been publishing a series of general background documents and tutorials useful to the understanding of ontologies. These entries have been prepared specifically with the non-expert and end user in mind. The Ontology Tutorial Series is now complete [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Ontology Tutorial Series&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2010-09-27&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/916/ontology-tutorial-series/&amp;rft.language=English"></span>
<h2><a href="http://www.cs.berkeley.edu/%7Esequin/SCULPTS/sequin.html"><img style="border: 0px solid; width: 240px; height: 240px; float: right;" src="http://www.cs.berkeley.edu/%7Esequin/GEOM/TILES/LizardTetrus1.JPG" alt="" /></a>Resources Useful to the Understanding of Ontologies and the Semantic Web</h2>
<p>Over the past few weeks we have been publishing a series of general background documents and tutorials useful to the understanding of ontologies. These entries have been prepared specifically with the non-expert and end user in mind.</p>
<p>The Ontology Tutorial Series is now complete as initially scoped. These various articles, in both originally posted form and as kept current on the <a href="http://openstructs.org/">OpenStructs</a>&#8216; TechWiki <a href="#OTS1">[1]</a>, are:</p>
<ul>
<li> <a style="font-style: italic;" title="An Executive Intro to Ontologies" href="http://www.mkbergman.com/900/an-executive-intro-to-ontologies/">An Executive Intro to Ontologies</a> <small>[<a title="Intro to Ontologies" href="http://techwiki.openstructs.org/index.php/Intro_to_Ontologies">TechWiki</a>]</small> &#8212; an executive-level introduction to <a title="Ontology Concept" href="http://techwiki.openstructs.org/index.php/Ontology_Concept">ontologies</a>, their uses and their benefits </li>
<li> <a style="font-style: italic;" title="A Brief Survey of Ontology Development Methodologies" href="http://www.mkbergman.com/906/a-brief-survey-of-ontology-development-methodologies/">A Brief Survey of Ontology Development Methodologies</a> <small>[<a title="Ontology Development Methodologies" href="http://techwiki.openstructs.org/index.php/Ontology_Development_Methodologies">TechWiki</a>]</small> &#8212; a survey of existing methods and approaches for how ontologies get built </li>
<li> <a style="font-style: italic;" title="Listing of 185 Ontology Building Tools" href="http://www.mkbergman.com/904/listing-of-185-ontology-building-tools/">Listing of 185 Ontology Building Tools</a> <small>[<a title="Ontology Tools" href="http://techwiki.openstructs.org/index.php/Ontology_Tools">TechWiki</a>]</small> &#8212; a comprehensive listing and categorization of tools for building, editing, maintaining and using ontologies; most of the tools are open source </li>
<li> <a style="font-style: italic;" title="A New Methodology for Building Lightweight, Domain Ontologies" href="http://www.mkbergman.com/908/a-new-methodology-for-building-lightweight-domain-ontologies/">A New Methodology for Building Lightweight, Domain Ontologies</a> <small>[<a title="Lightweight, Domain Ontologies Development Methodology" href="http://techwiki.openstructs.org/index.php/Lightweight,_Domain_Ontologies_Development_Methodology">TechWiki</a>]</small> &#8212; a recommended approach and methodology for how existing practice and methods can be pragmatically combined to build and maintain ontologies </li>
<li> <a style="font-style: italic;" title="A New Landscape in Ontology Development Tools" href="http://www.mkbergman.com/909/a-new-landscape-in-ontology-development-tools/">A New Landscape in Ontology Development Tools</a> <small>[<a title="Normative Landscape of Ontology Tools" href="http://techwiki.openstructs.org/index.php/Normative_Landscape_of_Ontology_Tools">TechWiki</a>]</small> &#8212; a recommended approach and development path for the evolution of ontology tools suitable for use by knowledge workers and domain (non-ontology) experts </li>
<li> <a style="font-style: italic;" title="Metamodeling in Domain Ontologies" href="http://www.mkbergman.com/913/metamodeling-in-domain-ontologies/">Metamodeling in Domain Ontologies</a> <small>[<a title="Metamodeling in Domain Ontologies" href="http://techwiki.openstructs.org/index.php/Metamodeling_in_Domain_Ontologies">TechWiki</a>]</small> &#8212; an important structural consideration for how to build flexible and adaptive ontologies, and </li>
<li> <a style="font-style: italic;" title="A Reference Guide to Ontology Best Practices" href="http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/">A Reference Guide to Ontology Best Practices</a> <small>[<a title="Ontology Best Practices" href="http://techwiki.openstructs.org/index.php/Ontology_Best_Practices">TechWiki</a>]</small> &#8212; the capstone piece in the tutorial series that summarizes best ontology practices across all areas of use and maintenance. </li>
</ul>
<p><br class="spacer_" /></p>
<hr style="margin: 15px 0px;" size="1" />
<div style="margin: 10px 0pt; font-size: 90%;"><a name="OTS1"></a>[1] The tutorials were first published on this blog over the period of Aug. 9 to Sept. 20, 2010. They are now permanently maintained and updated on the <a href="http://techwiki.openstructs.org/index.php/Ontology_Tutorial_Series">TechWiki</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkbergman.com/916/ontology-tutorial-series/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Metamodeling in Domain Ontologies</title>
		<link>http://www.mkbergman.com/913/metamodeling-in-domain-ontologies/</link>
		<comments>http://www.mkbergman.com/913/metamodeling-in-domain-ontologies/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 05:23:38 +0000</pubDate>
		<dc:creator>Mike Bergman</dc:creator>
				<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Ontology Best Practices]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[coherence]]></category>
		<category><![CDATA[domain ontologies]]></category>
		<category><![CDATA[metamodeling]]></category>
		<category><![CDATA[Ontology]]></category>
		<category><![CDATA[owl]]></category>
		<category><![CDATA[OWL 2]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[skos]]></category>
		<category><![CDATA[Web Ontology Language]]></category>

		<guid isPermaLink="false">http://www.mkbergman.com/?p=913</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Metamodeling in Domain Ontologies&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2010-09-20&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/913/metamodeling-in-domain-ontologies/&amp;rft.language=English"></span>
OWL 2 Has New Options; Useful to SKOS, Too It is not unusual to want to treat things either as a class or an instance in an ontology, depending on context. Among other aspects, this is known as metamodeling and it can be accomplished in a number of ways. However, the newest version of the [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=Metamodeling in Domain Ontologies&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2010-09-20&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/913/metamodeling-in-domain-ontologies/&amp;rft.language=English"></span>
<h2><a href="http://www.cs.berkeley.edu/%7Esequin/SCULPTS/sequin.html"><img style="border: 0px solid; width: 240px; height: 240px; float: left;" src="http://www.cs.berkeley.edu/%7Esequin/GEOM/TILES/LizardTetrus1.JPG" alt="" /></a>OWL 2 Has New Options; Useful to SKOS, Too</h2>
<p>It is not unusual to want to treat things either as a class or an         instance in an <a style="font-weight: bold;" href="http://www.mkbergman.com/900/an-executive-intro-to-ontologies/">ontology</a>,         depending on context. Among other aspects, this is known as <a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Metamodeling">metamodeling</a> and it can         be accomplished in a number of ways. However, the newest version of the         <a href="http://en.wikipedia.org/wiki/Web_Ontology_Language">Web         Ontology Language</a>, <a href="http://www.w3.org/TR/owl2-overview/">OWL 2</a>, provides a neat trick         for doing this called &#8220;<a href="http://en.wikipedia.org/wiki/Type_punning">punning</a>&#8220;. Why one would         want to metamodel, how to specify it in an ontology, and why the OWL 2         approach is helpful are described in this post <a href="#mm1">[1]</a>.</p>
<h3>Why Metamodel?</h3>
<p><a href="http://techwiki.openstructs.org/index.php/Lightweight,_Domain_Ontologies_Development_Methodology"> Lightweight, domain ontologies</a> have been the focus of this ontology         series. Domain ontologies are the &#8220;world views&#8221; by which organizations,         communities or enterprises describe the concepts in their domain, the         relationships between those concepts, and the instances or individuals         that are the actual things that populate that structure. Thus, domain         ontologies are the basic bread-and-butter descriptive structures for         real-world applications of ontologies.</p>
<p>These lightweight, domain ontologies often have a hierarchical         structure for which <a href="http://en.wikipedia.org/wiki/SKOS">SKOS</a> (<span style="font-style: italic;">Simple Knowledge Organization System</span>) is a         recommended starting ontology <a href="#mm2">[2]</a> (see <a href="http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/"> best practices recommendations</a>). A subject concept reference         ontology such as UMBEL (<em>Upper Mapping and Binding Exchange         Layer)</em> <a href="#mm3">[3]</a>, which we also recommend, also has a similar structure         and a heavy reliance on SKOS in its vocabulary. Because of these         structural similarities, ontologies that use SKOS or UMBEL are         therefore good candidates for using metamodeling techniques.</p>
<p>To better understand why we should metamodel, let&#8217;s look at a couple of         examples, both of which combine organizing categories of things and         then describing or characterizing those things. This dual need is         common to most domains <a href="#mm4">[4]</a>.</p>
<p>For the first example, let&#8217;s take a categorization of apes as a kind of         mammal, which is then a kind of animal. In these cases, ape is a class,         which relates to other classes, and apes may also have members, be they         particular kinds of apes or individual apes. Yet, at the same time, we         want to assert some characteristics of apes, such as being hairy, two         legs and two arms, no tails, capable of walking bipedally, with         grasping hands, and with some endangered species. These characteristics apply to the notion of apes as an         instance.</p>
<p>As another example we may have the category of trucks, which may further be split into truck types, brands of trucks, type of engine, and so forth. Yet, again, we may want to characterize that a truck is designed primarily for the transport of cargo (as opposed to automobiles for people transport), or that trucks may have different drivers license requirements or different license fees than autos. These descriptive properties refer to trucks as an instance.</p>
<p>These mixed cases combine both the organization of concepts in relation         to one another and with respect to their set members, with the         description and characterization of these concepts as things unto         themselves. This is a natural and common way to express most any domain         of interest.</p>
<p>The practice has been to express these mixed uses in <a href="http://en.wikipedia.org/wiki/RDFS">RDFS</a> or <a href="http://en.wikipedia.org/wiki/Web_Ontology_Language#OWL_Full">OWL         Full</a>, which makes them easy to write and create since most         &#8220;anything goes&#8221; (a loose way of saying that the structures are not         <a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Decidability_%28logic%29">decidable</a>) <a href="#mm5"> [5]</a>. Use of sub-class relationships also enables tree-like hierarchies         to be constructed and some minor inferencing (such as one concept is         broader than another concept, one of the contributions of SKOS).</p>
<p>But such mixed uses do not allow more capable OWL reasoners to be         applied, nor for the full power of query or search abstraction to be         applied, nor for the ontology to be checked for consistency. These         limits may be fine in many circumstances, but their lack does allow         structures to evolve that may become incoherent or illogical. If data         interoperability is a goal, as it is in our enterprise use cases,         incoherent ontologies can not contribute or participate as structures         to linking datasets. At most &#8212; and this is the case for much <a href="http://en.wikipedia.org/wiki/Linked_data">linked data</a> practice &#8212;         all that can be done is to make explicit pairwise connections between         different dataset objects. This is not efficient and defeats the whole         purpose of leveraging schema. OWL 2 has been designed to fix that (in         addition to other benefits <a href="#mm12">[12]</a>).</p>
<p>The approach taken by OWL 2 to overcome some of these metamodeling         limitations is through &#8220;punning&#8221; <a href="#mm6">[6]</a>. Recall that objects are named in         RDF with <a href="http://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URI</a>s         (<a href="http://en.wikipedia.org/wiki/Internationalized_Resource_Identifier">IRI</a>s         in OWL 2). The trick with &#8220;punning&#8221; is to evaluate the object based on         how it is used contextually <a href="#mm7">[7]</a>; the IRI is shared but its referent may be viewed as either a class or instance based on context. Thus, objects used both as concepts         (classes) and individuals (instances) are allowed and standard OWL 2         reasoners may be used against them.</p>
<p>It should be noted, however, that this &#8220;punning&#8221; technique does not         support the full range of possible metamodeling aspects <a href="#mm8">[8]</a>. Like any         language, there is a trade-off in OWL 2 between <span style="font-style: italic;">expressivity</span> and <span style="font-style: italic;">reasoning efficiency</span> <a href="#mm9">[9]</a>. But, for         lightweight, domain ontologies where the objective is interoperability         across heterogeneous sources &#8212; that is, namely the main objectives of         the semantic Web or semantic enterprise &#8212; this trade-off in OWL 2 now         appears to be well balanced. Moreover, its automatic detection by tools         such as Protégé 4 that use the OWL API also means it is comparatively         easy to use and implement.</p>
<h3>Relationship to Recommended Best Practices</h3>
<p>An earlier chapter in this series presented some <a href="http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/"> best practices for ontology building and maintenance</a>. A fundamental         aspect of those recommendations was the desirability of keeping         instance data (ABox) separate from the conceptual structure (TBox) that         provides the schema of relationships for those concepts <a href="#mm10">[10]</a>.         Fortunately, this approach also integrates well with the metamodeling         capabilities in OWL 2.</p>
<p>How metamodeling and the ABox-TBox split is accommodated is shown by         this diagram, using trucks as an example:</p>
<div style="margin: 10px; text-align: center;"><a href="http://techwiki.openstructs.org/images/7/7b/MetamodelingSchematic.png"> <img class="center_ok" style="border: 0px solid; width: 600px; height: 437px;" title="Click to expand" src="http://techwiki.openstructs.org/images/7/7b/MetamodelingSchematic.png" alt="Metamodeling in Domain Ontologies" width="1068" height="778" /></a><br />
<span style="color: #006699;"><span style="font-family: Arial,sans-serif;"><span style="font-size: x-small;"><strong>Figure 1. Metamodeling in Domain         Ontologies</strong></span></span></span> <span style="font-style: italic; font-size: 90%;">(click to expand)</span></div>
<p>The right-hand side of the diagram shows the two views possible via OWL         2 metamodeling in the TBox. In some cases, we may speak of trucks as a         class of vehicle, to which individual members may belong; this is the         <span style="font-style: italic;">class view</span>. In other contexts,         we may want to characterize or make assertions about trucks in our         ontology, such as asserting cargo transport or engine type, in which case truck is now represented as an instance         (individual) under the <span style="font-style: italic;">individual         view</span>. These two views in the TBox represent our structural and         conceptual description (the &#8220;world view&#8221;) regarding this domain of         which vehicles and trucks are a part.</p>
<p>Then, when we begin to populate our knowledge base with specific data, we do so via the ABox. In this example, as we add data about the specific brand of Ford trucks and their attributes, we link the Ford instance to the TBox via the Truck class. (Best practice also requires that we model this new attribute structure into the TBox as well, but that is a different topic. <img src='http://www.mkbergman.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .)</p>
<h3>How Punning is Triggered in OWL 2</h3>
<p>Punning is not triggered by annotation properties. Annotation         properties applied to a class merely act as additional description or         metadata about that class; the annotation property by definition does         not participate in any inferencing or reasoning. You should also know         that in OWL 2, certain predicates (properties) such as <span style="font-family: Courier New,Courier,monospace;">label</span>,         <span style="font-family: Courier New,Courier,monospace;">comment</span> or <span style="font-family: Courier New,Courier,monospace;">description</span> (among         others) are reserved as annotation properties <a href="#mm11">[11]</a>.</p>
<p>You can invoke the OWL 2 punning process directly or via context when         your ontologies are processed with the OWL API. The basic rule to         follow is:</p>
<div class="boxRedDotted" style="font-weight: bold; text-align: center;">Any entity declared as a class <span style="text-decoration: underline;"><em>and</em></span> with an asserted object or data property <a href="#mm15">[15]</a> is punned (metamodeled).</div>
<p>This test is done directly by the OWL API <a href="#mm7">[7]</a>. You can go ahead and         test this out with an OWL 2-compliant editor, such as Protégé 4. Here         is an example test (in <a href="http://en.wikipedia.org/wiki/Notation3">N3 notation</a>):</p>
<p>First, begin with some initial declarations:</p>
<pre style="margin-left: 40px;">foo:Car a owl:Class .

foo:Animal a owl:Class ;
owl:disjointWith foo:Car .</pre>
<p>Then, let&#8217;s describe an object property:</p>
<div style="margin-left: 40px;">
<pre>foo:isEndangered a owl:ObjectProperty ;
rdf:domain foo:Animal ;
rdf:range bar:SomeSpecies .</pre>
</div>
<p>And define and make an assertion about Apes:</p>
<div style="margin-left: 40px;">
<pre>foo:Ape a owl:Class ;
foo:isEndangered bar:SomeSpecies .</pre>
</div>
<p>Now, the system begins by testing for punning and other checks, such as:</p>
<ol>
<li> <span style="font-family: Courier New,Courier,monospace;">isEndangered</span> an           annotation property? no</li>
<li>what is its domain? <span style="font-family: Courier New,Courier,monospace;">foo:Animal</span></li>
<li>this will detect and infer:</li>
</ol>
<div style="margin-left: 40px;">
<pre>foo:Ape a owl:Class ;
foo:Ape a foo:Animal ;
foo:isEndangered bar:SomeSpecies .</pre>
</div>
<ol>
<li>punning is triggered because non-annotation property has been         applied to a class</li>
<li>non-annotation properties are now assigned to named individual (which captures individual view part of the TBox above)</li>
<li>then, can check for inconsistencies depending on the restriction(s)         applied to the <span style="font-family: Courier New,Courier,monospace;">foo:Animal</span> class.</li>
</ol>
<p>In this case, no inconsistencies were found.</p>
<p>But, let&#8217;s now add another object (non-annotation) property:</p>
<div style="margin-left: 40px;">
<pre>foo:hasBrand a owl:ObjectProperty ;
rdf:domain foo:Car ;
rdf:range bar:SomeBrand .</pre>
</div>
<p>And use it to expand our assertions about Apes:</p>
<div style="margin-left: 40px;">
<pre>foo:Ape a owl:Class ;
foo:isEndangered bar:SomeSpecies ;
foo:hasBrand bar:Ford .</pre>
</div>
<p>And repeat #3:</p>
<div style="margin-left: 40px;">
<pre>foo:Ape a owl:Class .
foo:Ape a foo:Animal .
foo:Ape a foo:Car ;
foo:isEndangered bar:SomeSpecies ;
foo:hasBrand bar:Ford .</pre>
</div>
<p><span style="font-weight: bold; text-decoration: underline;">Now</span>,         inconsistencies are raised in the second #3:</p>
<p>So, the consistency check fails, because Ape can not be both an         Animal and a Car.</p>
<p>While this is clearly a silly example, such checks are quite important         as the number of objects and assertions grows in an ontology.</p>
<h3>What Does Punning Look Like?</h3>
<p>The punning technique works because the IRI for the object ends up         being treated as both a concept (class) and an instance (individual).         Thus, while the object shares the same IRI, depending on its context,         it is evaluated by an OWL reasoner as a different thing (class or         individual). The OWL API achieves this by actually writing out the         object in both its class view and individual view. Here is an example         (in <a href="http://en.wikipedia.org/wiki/Notation3">RDF/XML         serialization</a>):</p>
<p>Input OWL:</p>
<div style="margin: 10px 40px; font-family: Courier New,Courier,monospace;">&lt;owl:Class rdf:about=<a href="http://purl.org/ontology/Ape">&#8220;http://purl.org/ontology/Ape</a>&gt;<br />
&lt;isEndangered&gt;Ape&lt;/isEndangered&gt;<br />
&lt;/owl:Class&gt;</div>
<p>Output from Protégé with punning:</p>
<pre style="padding-left: 30px;">&lt;!-- <a href="http://purl.org/ontology/Ape">http://purl.org/ontology/Ape</a>--&gt;

&lt;owl:Class rdf:about="<a href="http://purl.org/ontology/Ape">http://purl.org/ontology/Ape</a>"/&gt;

&lt;!-- <a href="http://purl.org/ontology/Ape">http://purl.org/ontology/Ape</a>--&gt;

&lt;owl:NamedIndividual rdf:about="<a href="http://purl.org/ontology/Ape">http://purl.org/ontology/Ape</a>"&gt;
   &lt;isEndangered&gt;Ape&lt;/isEndangered&gt;
&lt;/owl:NamedIndividual&gt;</pre>
<p>Notice the duplicate definition (in RDF/XML) to the <span style="font-family: Courier New,Courier,monospace;">NamedIndividual</span>.         When writing out the ontology, all punned objects are duplicated in a         similar manner.</p>
<h3>The Beginning of the Transition</h3>
<p>OWL 2 and its other general changes <a href="#mm12">[12]</a> have arrived in the nick of time. Not only were we seeing some of the weaknesses in         OWL 1 that warranted updating, but we are also now being challenged         with regard to how to make linked data and the many datasets in RDF         effectively interoperate. Perhaps         undecidability and throwing triples to the wind worked OK in the early         days of our semantic Web Wild West. But now it is time for the new         sheriff to bring order to the emerging chaos.</p>
<p>Of course only time will tell, but we believe the design decisions made         by the OWL 2 working group were judicious and balanced ones to find         that sweet spot between <span style="font-style: italic;">expressiveness</span> and <span style="font-style: italic;">reasoning efficiency</span> <a href="#mm9">[9]</a>. We also believe         that, while useful in its less expressive form <a href="#mm2">[2]</a>, that many new         domain vocabularies based on SKOS would especially benefit from         embracing the OWL 2 metamodeling techniques.</p>
<p>But two criticisms         still remain. First, tooling support for OWL 2 and the OWL API is weak,         as discussed in <a href="http://www.mkbergman.com/909/a-new-landscape-in-ontology-development-tools/"> an earlier chapter</a>. And, as the <a href="http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/"> last chapter discussed</a>, there are not enough practitioners that         have yet taken up OWL 2, which means that best practice guidance and         exemplars are still limited.</p>
<p>Lightweight domain ontologies can greatly benefit from these OWL 2         metamodeling techniques and the OWL RL alternative that also emerged as         one of the OWL 2 profile enhancements <a href="#mm13">[13]</a>. Structured Dynamics thinks the growing scale         and learning taking place around linked data and RDF datasets is now         pointing the way to a necessary transition. And OWL 2 metamodeling         should be one of the key components to making our semantic         technologies more responsive and effective <a href="#mm14">[14]</a>.</p>
<hr style="margin: 15px 0px;" size="1" />
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm1"></a>[1] This posting is part of a current series on ontology development         and tools, jointly developed with <a href="http://structureddynamics.com/">Structured Dynamics</a> with co-authorship by <a href="http://fgiasson.com/blog/">Frédérick Giasson</a>, now permanently archived and updated on the <a href="http://openstructs.org">OpenStructs</a> <a href="http://techwiki.openstructs.org">TechWiki</a>. The series began with         <a style="font-style: italic;" title="An Executive Intro to Ontologies" href="http://www.mkbergman.com/900/an-executive-intro-to-ontologies/">An Executive Intro to         Ontologies</a>, then continued with an <a href="http://www.mkbergman.com/904/listing-of-185-ontology-building-tools/">update</a> of the prior Ontology Tools listing, which now contains 185 tools. It         progressed to a <a href="http://www.mkbergman.com/906/a-brief-survey-of-ontology-development-methodologies/"> survey</a> of ontology development methodologies. That led to a         presentation of a new, <a style="font-style: italic;" href="http://techwiki.openstructs.org/index.php/Lightweight,%20Domain%20Ontologies%20Development%20Methodology"> Lightweight, Domain Ontologies Development Methodology</a>. That piece         was then expanded to address <a style="font-style: italic;" href="http://www.mkbergman.com/909/a-new-landscape-in-ontology-development-tools/"> A New Landscape in Ontology Development Tools</a>, which was followed         up by a listing of <a href="http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/"> best practices in domain ontology building and maintenance</a>. This         portion completes the series.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm2"></a>[2] Alistair Miles and Sean Bechhofer, eds., 2009. <span style="font-style: italic;">SKOS Simple Knowledge Organization System         Reference</span>, W3C Recommendation, 18 August 2009. See <a href="http://www.w3.org/TR/skos-reference/">http://www.w3.org/TR/skos-reference/</a>.         Some common SKOS domain predicates include <span style="font-family: Courier New,Courier,monospace;">skos:definition,         skos:prefLabel, skos:altLabel, skos:broaderTransitive,         skos:narrowerTransitive</span>.</div>
<div style="margin: 10px 0pt; font-size: 90%;">According to the cited W3C recommendation:</div>
<div style="margin: 10px 0pt 10px 40px; font-size: 90%;">. . . the &#8220;concepts&#8221; of a thesaurus or classification scheme are modeled           [in the base SKOS form] as individuals in the SKOS data model, and           the informal descriptions about and links between those &#8220;concepts&#8221; as           given by the thesaurus or classification scheme are modeled as facts           about those individuals, never as class or property axioms. Note that           these are facts <em>about</em> the thesaurus or classification scheme           <em>itself</em>, such as &#8220;concept X has preferred label &#8216;Y&#8217; and is           part of thesaurus Z&#8221;; these are <strong>not</strong> facts about the           way the world is arranged within a particular subject domain, as           might be expressed in a formal ontology.</div>
<div style="margin: 10px 0pt; font-size: 90%;">Metamodeling and the use of OWL allows the base SKOS form to be         expressed as a formal ontology, over which reasoning and inference may         occur. Not all SKOS structures may be amenable to this (thesauri and         lexical resources such as <a href="http://en.wikipedia.org/wiki/Wordnet">Wordnet</a> perhaps fall into         this category), but some other structures are logical and can be         formalized. UMBEL, for example, fits into this category, as do many         carefully crafted controlled vocabularies. When used as such, many of         the SKOS predicates become OWL annotation properties.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm3"></a>[3] <a href="http://umbel.org/intro.html">UMBEL</a> (<em>Upper Mapping         and Binding Exchange Layer</em>) is an ontology of about 20,000 subject         concepts that acts as a reference structure for inter-relating         disparate datasets. It is also a <a href="http://umbel.org/technical_documentation.html#vocabulary">general         vocabulary</a> of classes and predicates designed for the creation of         domain-specific ontologies.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm4"></a>[4] In the domain ontologies that are the focus here, we often want to         treat our concepts as both classes and instances of a class. This is         known as &#8220;metamodeling&#8221; or &#8220;metaclassing&#8221; and is enabled by &#8220;punning&#8221;         in OWL 2. For example, here a case cited on the OWL 2 wiki entry on         &#8220;<a href="http://www.w3.org/2007/OWL/wiki/Punning">punning</a>&#8220;:</div>
<div style="margin: 10px 0pt 10px 40px; font-size: 90%;">People sometimes want to have metaclasses. Imagine you want to model           information about the animal kingdom. Hence, you introduce a class           a:Eagle, and then you introduce instances of a:Eagle such as a:Harry.</div>
<div style="margin: 10px 0pt 10px 40px; font-size: 90%; font-style: italic;">(1) a:Eagle rdf:type owl:Class<br />
(2) a:Harry rdf:type a:Eagle</div>
<div style="margin: 10px 0pt 10px 40px; font-size: 90%;">Assume now that you want to say that &#8220;eagles are an endangered           species&#8221;. You could do this by treating a:Eagle as an instance of a           metaconcept a:Species, and then stating additionally that a:Eagle is           an instance of a:EndangeredSpecies. Hence, you would like to say           this:</div>
<div style="margin: 10px 0pt 10px 40px; font-size: 90%; font-style: italic;">(3) a:Eagle rdf:type a:Species<br />
(4) a:Eagle rdf:type a:EndangeredSpecies.</div>
<div style="margin: 10px 0pt; font-size: 90%;">This example comes from Boris Motik, 2005. &#8220;<a href="http://dip.semanticweb.org/documents/Boris-Motik-On-the-Properties-of-Metamodeling-in-OWL.pdf">On         the Properties of Metamodeling in OWL</a>,&#8221; paper presented at         <span style="font-style: italic;">ISWC 2005</span>, Galway, Ireland,         2005. For some other examples, see Bernd Neumayr and Michael Schrefl,         2009. &#8220;Multi-Level Conceptual Modeling and OWL (Draft, 2 May &#8211;         Including Full Example)&#8221;; see <a href="http://www.dke.jku.at/m-owl/most09_22_full.pdf">http://www.dke.jku.at/m-owl/most09_22_full.pdf</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm5"></a>[5] A good explanation of this can be found in Rinke J. Hoekstra, 2009.         <span style="font-style: italic;">Ontology Representation: Design         Patterns and Ontologies that Make Sense</span>, thesis for Faculty of         Law, University of Amsterdam, SIKS Dissertation Series No. 2009-15,         9/18/2009. 241 pp. See <a href="http://dare.uva.nl/document/144859">http://dare.uva.nl/document/144859</a>.         In that, Hoekstra states (pp. 49-50):</div>
<div style="margin: 10px 0pt; font-size: 90%;">
<div style="margin-left: 40px;">RDFS has a non-fixed meta modelling architecture; it can have an           infinite number of class layers because <span style="font-family: Courier New,Courier,monospace;">rdfs:Resource</span> is           both an instance and a super class of <span style="font-family: Courier New,Courier,monospace;">rdfs:Class</span>,           which makes <span style="font-family: Courier New,Courier,monospace;">rdfs:Resource</span> a           member of its own subset (Nejdl et al., 2000). All classes (including           <span style="font-family: Courier New,Courier,monospace;">rdfs:Class</span> itself) are instances of <span style="font-family: Courier New,Courier,monospace;">rdfs:Class</span>, and           every class is the set of its instances. There is no restriction on           defining sub classes of <span style="font-family: Courier New,Courier,monospace;">rdfs:Class</span> itself, nor on defining sub classes of instances of instances of           <span style="font-family: Courier New,Courier,monospace;">rdfs:Class</span> and           so on. This is problematic as it leaves the door open to class           definitions that lead to Russell’s paradox (Pan and Horrocks, 2002).           The Russell paradox follows from a comprehension principle built in           early versions of set theory (Horrocks et al., 2003). This principle           stated that a set can be constructed of the things that satisfy a           formula with one free variable. In fact, it introduces the           possibility of a set of all things that do not belong to itself . . .           .</div>
<div style="margin: 10px 0pt 10px 40px; font-size: 90%;">In RDFS, the reserved properties <span style="font-family: Courier New,Courier,monospace;">rdfs:subClassOf</span>,           <span style="font-family: Courier New,Courier,monospace;">rdf:type</span>,           <span style="font-family: Courier New,Courier,monospace;">rdfs:domain</span> and           <span style="font-family: Courier New,Courier,monospace;">rdfs:range</span> are           used to define both the other RDFS modelling primitives themselves           and the models expressed using these primitives. In other words,           there is no distinction between the meta-level and the domain.</div>
</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm6"></a>[6] &#8220;Punning&#8221; was introduced in OWL 2 and enables the same IRI to be         used as a name for both a class and an individual. However, the direct         model-theoretic semantics of OWL 2 DL accommodates this by         understanding the class <span style="font-family: Courier New,Courier,monospace;">Father</span> and the         individual <span style="font-family: Courier New,Courier,monospace;">Father</span> as two         different views on the same IRI, <span style="font-style: italic;">i.e.</span>, they are interpreted semantically as         if they were distinct. The technique listed in the main body triggers         this treatment in an OWL 2-compliant editor. See further Pascal Hitzler         <span style="font-style: italic;">et al</span>., eds., 2009.         <span style="font-style: italic;">OWL 2 Web Ontology Language         Primer</span>, a W3C Recommendation, 27 October 2009; see <a href="http://www.w3.org/TR/owl2-primer/">http://www.w3.org/TR/owl2-primer/</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm7"></a>[7] The <a href="http://owlapi.sourceforge.net/"><span class="external text">OWL API</span></a> is a Java interface and         implementation for the W3C Web Ontology Language (OWL), used to         represent Semantic Web ontologies. The API provides links to         inferencers, managers, annotators, and validators for the OWL2 profiles         of RL, QL, EL. Two recent papers describing the updated API are:         Matthew Horridge and Sean Bechhofer, 2009. “The OWL API: A Java API for         Working with OWL 2 Ontologies,” presented at <span style="font-style: italic;">OWLED 2009, 6th OWL Experienced and Directions         Workshop</span>, Chantilly, Virginia, October 2009. See <a href="http://www.webont.org/owled/2009/papers/owled2009_submission_29.pdf">http://www.webont.org/owled/2009/papers/owled2009_submission_29.pdf</a>;         and, Matthew Horridge and Sean Bechhofer, 2010. “The OWL API: A Java         API for OWL Ontologies,” paper submitted to the <span style="font-style: italic;">Semantic Web Journal</span>; see <a href="http://www.semantic-web-journal.net/sites/default/files/swj107.pdf">http://www.semantic-web-journal.net/sites/default/files/swj107.pdf</a>.         Also see its code documentation at <a href="http://owlapi.sourceforge.net/2.x.x/documentation.html">http://owlapi.sourceforge.net/2.x.x/documentation.html</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;">The main text describes how via &#8220;punning&#8221; the OWL API supports two         parallel views sharing the same IRI, which can enable a concept to         operate as either a class or instance depending on context.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm8"></a>[8] Some other metamodeling aspects not supported by &#8220;punning&#8221; include         full multi-level modeling (such as in <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a> or         <a href="http://en.wikipedia.org/wiki/Object_Management_Group">OMG</a>&#8216;s         <a href="http://en.wikipedia.org/wiki/Model-driven_architecture">model-driven         architecture</a>) or linkage with <a href="http://en.wikipedia.org/wiki/Closed_world_assumption">closed-world         reasoning</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm9"></a>[9] OWL has historically been described as trying to find the proper         <span style="font-style: italic;">tradeoff between expressive power and         efficient reasoning support</span>. See, for example, Grigoris Antoniou         and Frank van Harmelen, 2003. &#8220;Web Ontology Language: OWL,&#8221; in S. Staab         and R. Studer, eds., <span style="font-style: italic;">Handbook on         Ontologies in Information Systems</span>, Springer-Verlag, pp. 76-92.         See <a href="http://www.few.vu.nl/%7Efrankh/postscript/OntoHandbook03OWL.pdf">http://www.few.vu.nl/~frankh/postscript/OntoHandbook03OWL.pdf</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm10"></a>[10] The <span style="font-weight: bold; font-style: italic;">TBox</span> portion, or         classes (concepts), is the basis of the ontologies. The ontologies         establish the structure used for governing the conceptual relationships         for that domain and in reference to external (Web) ontologies. The         <span style="font-weight: bold; font-style: italic;">ABox</span> portion, or instances (named entities), represents the specific,         individual things that are the members of those classes. Named entities         are the notable objects, persons, places, events, organizations and         things of the world. Each named entity is related to one or more         classes (concepts) to which it is a member. Named entities do not set         the structure of the domain, but populate that structure. The ABox and         TBox play different roles in the use and organization of the         information and structure. These distinctions have their grounding in         <a href="http://www.mkbergman.com/466/thinking-inside-the-box-with-description-logics/"> description logics</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm11"></a>[11] For a listing, see <a href="http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Annotation_Properties"> http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Annotation_Properties</a>.         Even if your local ontology defines a sub-property of one of these         items, such as foo:myLabel as a sub-property of <span style="font-family: Courier New,Courier,monospace;">rdfs:label</span>, you         are advised to still specifically declare it as an annotation property.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm12"></a>[12] See Bernardo Cuenca Grau, Ian Horrocks, Boris Motik, Bijan Parsia,         Peter Patel-Schneider and Ulrike Sattler, 2008. &#8220;OWL2: The Next Step         for OWL,&#8221; see <a href="http://www.comlab.ox.ac.uk/people/ian.horrocks/Publications/download/2008/CHMP+08.pdf"> http://www.comlab.ox.ac.uk/people/ian.horrocks/Publications/download/2008/CHMP+08.pdf</a>;         and also see the <a title="http://www.w3.org/TR/2009/REC-owl2-quick-reference-20091027/" rel="nofollow" href="http://www.w3.org/TR/2009/REC-owl2-quick-reference-20091027/">OWL 2 Quick Reference Guide</a> by the W3C, which provides a         brief guide to the constructs of OWL 2, noting the changes from OWL 1.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm13"></a>[13] OWL RL is the &#8220;rules&#8221; profile of OWL 2 and is both decidable and         offers additional axiomatic support for metamodeling. As this figure         drawn from Hoekstra [Fig. 3-4 in 5] shows comparing OWL 2 to OWL 1, OWL         RL provides a subset of decidable description logics:</div>
<div style="margin: 10px; text-align: center;"><img class="center_ok" style="border: 0px solid; width: 600px; height: 327px;" title="OWL 1 v OWL 2" src="http://techwiki.openstructs.org/images/e/eb/OWL1vOWL2.png" alt="OWL 1 v OWL 2" /></div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm14"></a>[14] Metamodeling might be a new concept to you and some of the aspects         can certainly be academic. If the references above do not sufficient         satisfy your curiosity, you may want to check out some of these other         useful references: Birte Glimm, Sebastian Rudolph and Johanna Völker,         2009. &#8220;Integrated Metamodeling and Diagnosis in OWL 2,&#8221; see <a href="http://www.comlab.ox.ac.uk/files/3129/paper.pdf">http://www.comlab.ox.ac.uk/files/3129/paper.pdf</a>;         and Nophadol Jekjantuk, Gerd Groener and Jeff. Z. Pan, 2009. &#8220;Reasoning         in Metamodeling Enabled Ontologies,&#8221; in Rinke Hoekstra and Peter F.         Patel-Schneider, eds., <span style="font-style: italic;">Proceedings of         OWL: Experiences and Directions (OWLED 2009)</span>; see <a href="http://www.webont.org/owled/2009">http://www.webont.org/owled/2009</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="mm15"></a>[15] In OWL 2, an <em>object         property</em> is a predicate that defines a binary relationship         between two objects (in specific respect to a triple, between a <em> subject</em> and an <em>object</em>). A <em>data property</em> is a predicate that defines         a binary relationship between an object an a literal (string or data         value). In contrast to object and data properties, annotation         properties and reserved OWL and RDF vocabularies are explicitly <em><strong> excluded</strong></em> from this rule. <em><strong>Only</strong></em> declared object or         data properties trigger the punning.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkbergman.com/913/metamodeling-in-domain-ontologies/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Reference Guide to Ontology Best Practices</title>
		<link>http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/</link>
		<comments>http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 06:18:50 +0000</pubDate>
		<dc:creator>Mike Bergman</dc:creator>
				<category><![CDATA[irON]]></category>
		<category><![CDATA[Ontologies]]></category>
		<category><![CDATA[Ontology Best Practices]]></category>
		<category><![CDATA[Semantic Enterprise]]></category>
		<category><![CDATA[Semantic Web]]></category>
		<category><![CDATA[UMBEL]]></category>
		<category><![CDATA[adaptive ontologies]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[coherence]]></category>
		<category><![CDATA[domain ontologies]]></category>
		<category><![CDATA[Ontology]]></category>
		<category><![CDATA[owl]]></category>
		<category><![CDATA[Web Ontology Language]]></category>

		<guid isPermaLink="false">http://www.mkbergman.com/?p=911</guid>
		<description><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=A Reference Guide to Ontology Best Practices&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=irON&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.subject=Semantic Enterprise&amp;rft.subject=Semantic Web&amp;rft.subject=UMBEL&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2010-09-13&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/&amp;rft.language=English"></span>
A Single-stop Assembly of Ontology Tips and Pointers As we conclude this recent series on ontology tools and building [1], one item stands clear: the relative lack of guidance on how one actually builds and maintains these beasties. While there is much of a theoretic basis in the literature and on the Web, and much [...]]]></description>
			<content:encoded><![CDATA[	
	<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Focoins.info%3Agenerator&amp;rft.title=A Reference Guide to Ontology Best Practices&amp;rft.aulast=Bergman&amp;rft.aufirst=Mike&amp;rft.subject=irON&amp;rft.subject=Ontologies&amp;rft.subject=Ontology Best Practices&amp;rft.subject=Semantic Enterprise&amp;rft.subject=Semantic Web&amp;rft.subject=UMBEL&amp;rft.source=AI3:::Adaptive Information&amp;rft.date=2010-09-13&amp;rft.type=blogPost&amp;rft.format=text&amp;rft.identifier=http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/&amp;rft.language=English"></span>
<h2><a href="http://www.cs.berkeley.edu/%7Esequin/SCULPTS/sequin.html"><img style="border: 0px solid; width: 240px; height: 240px; float: left;" src="http://www.cs.berkeley.edu/%7Esequin/GEOM/TILES/LizardTetrus1.JPG" alt="" /></a>A Single-stop Assembly of Ontology Tips and Pointers</h2>
<p>As we conclude this recent series on ontology tools and building <a href="#obp1">[1]</a>,         one item stands clear: the relative lack of guidance on how one         actually builds and maintains these beasties. While there is much of a         theoretic basis in the literature and on the Web, and much of         methodologies and algorithms, there is surprisingly little on how one         actually goes about creating an ontology.</p>
<p>An earlier posting pointed to the now classic <span style="font-style: italic;">Ontology Development 101</span> article as a good         starting point <a href="#obp2">[2]</a>. Another really excellent starting point is the         Protégé 4 user manual <a href="#obp3">[3]</a>. Though it is obviously geared to the Protégé         tool and its interface, it also is an instructive tutorial on general         ontology (OWL) topics and constructs. I highly recommend printing it         out and reading it in full.</p>
<div class="boxGreenDotted" style="margin: 10px 0px 10px 10px; font-size: 120%; width: 400px; float: right;"><span style="font-weight: bold; font-style: italic;">If you do nothing       else, you should download, print and study in full the Protégé 4 users       manual</span> <a href="#obp3">[3]</a>.</div>
<h3>Learning by Example</h3>
<p>Another way to learn more about ontology construction is to inspect         some existing ontologies. Though one may use a variety of specialty         search engines and Google to find ontologies <a href="#obp4">[4]</a>, there are actually         three curated services that are more useful and which I recommend.</p>
<p>The best, by far, is the repository created by the University of         Manchester for the now-completed <a href="http://www.tonesproject.org/">TONES</a> project <a href="#obp5">[5]</a>. TONES has access         to some 200+ vetted ontologies, plus a search and filtering facility         that helps much in finding specific OWL constructs. It is a bit         difficult to filter by OWL 2-compliant only ontologies (except for OWL         2 EL), but other than that, the access and use of the repository is         very helpful. Another useful aspect is that the system is driven by the         <a href="http://owlapi.sourceforge.net/">OWL API</a>, a central feature         that we recommended in the prior <a href="http://www.mkbergman.com/909/a-new-landscape-in-ontology-development-tools/"> tools landscape posting</a>. From a learning standpoint this site is         helpful because you can filter by vocabulary.</p>
<p>An older, but similar, repository is <a href="http://olp.dfki.de/ontoselect/">OntoSelect</a>. It is difficult to         gauge how current this site is, but it nonetheless provides useful and         filtered access to OWL ontologies as well.</p>
<p>These sources provide access to complete ontologies. Another way to         learn about ontology construction is from a bottom-up perspective. In         this regard, the <a href="http://ontologydesignpatterns.org/wiki/Main_Page">Ontology Design         Patterns</a> (ODP) wiki is the definitive source <a href="#obp6">[6]</a>. This is certainly         a more advanced resource, since its premise begins from the standpoint         of modeling issues and patterns to address them, but the site is also         backed by an active community and curated by leading academics. Besides         ontology building patterns, ODP also has a listing of <a href="http://ontologydesignpatterns.org/wiki/Ontology:Main">exemplary         ontologies</a> (though without the structural search and selection         features of the sources above). ODP is not likely the first place to         turn to and does not give &#8220;big picture&#8221; guidance, but it also should be         a bookmarked reference once you begin real ontology development.</p>
<p>It is useful to start with fully constructed ontologies to begin to         appreciate the scope involved with them. But, of course, how one gets         to a full ontology is the real purpose of this post. For that purpose,         let&#8217;s now turn our attention to general and then more specific best         practices.</p>
<h3>Sources of Best Practices</h3>
<p>As noted above, there is a relative paucity of guidance or best         practices regarding ontologies, their construction and their         maintenance. However, that being said, there are some sources whereby         guidance can be obtained.</p>
<p>To my knowledge, the most empirical listing of best practices comes         from Simperl and Tempich <a href="#obp7">[7]</a>. In that 2006 paper they examined 34         ontology building efforts and commented on cost, effectiveness and         methodology needs. It provides an organized listing of observed best         practices, though much is also oriented to methodology. I think the         items are still relevant, though they are now four to five years old.         The paper also contains a good reference list.</p>
<p>Various collective ontology efforts also provide listings of principles         or such, which also can be a source for general guidance. The OBO         (<a style="font-style: italic;" href="http://obofoundry.org/about.shtml">The Open Biological and Biomedical         Ontologies</a>) effort, for example, provides a listing of principles         to which its constituent ontologies should adhere <a href="#obp8">[8]</a>. As guidance to         what it considers an exemplary ontology, the ODP effort also has a         useful <a href="http://ontologydesignpatterns.org/wiki/Odp:WhatIsAnExemplaryOntology">organized         listing of criteria or guidance</a>.</p>
<p>One common guidance is to re-use existing ontologies and vocabularies         as much as possible. This is a major emphasis of the OBO effort <a href="#obp9">[9]</a>.         The NeOn methodology also suggests guidelines for building individual         ontologies by re-use and re-engineering of other domain ontologies or         knowledge resources <a href="#obp10">[10]</a>. Brian Sletten (among a slate of emerging         projects) has also pointed to the use of the Simple Knowledge         Organization System (SKOS) as a staging vocabulary to represent concept         schema like thesauri, taxonomies, controlled vocabularies, and subject         headers <a href="#obp11">[11]</a>.</p>
<p>The Protégé manual <a href="#obp3">[3]</a> is also a source of good tips, especially with         regard to naming conventions and the use of the editor. Lastly, the         major source for the best practices below comes from <a href="http://structureddynamics.com">Structured Dynamics</a>&#8216; own <a href="http://techwiki.openstructs.org/index.php/Ontology_Best_Practices">internal         documentation</a>, now permanently archived. We are pleased to now         consolidate this information in one place and to make it public.</p>
<div class="boxYellowSolid" style="font-size: 110%; text-align: center;"><span style="font-style: italic;">The best practices herein are         presented as single bullet points. Not all are required and some may be         changed depending on your own preferences. In all cases, however, these         best practices are offered from Structured Dynamics&#8217; perspective         regarding the use and role of</span> <a style="font-weight: bold;" href="http://www.mkbergman.com/553/confronting-misconceptions-with-adaptive-ontologies/"> adaptive ontologies</a><a href="#obp12"> [12]</a>. <span style="font-style: italic;">To our         knowledge, this perspective is a unique combination of objectives and         practices, though many of the individual practices are recommended by         others.</span></div>
<h3>General Best Practices</h3>
<p>General best practices refer to how the ontology is scoped, designed         and constructed. Note the governing perspective in this series has been         on <a style="font-weight: bold; font-style: italic;" href="http://www.mkbergman.com/908/a-new-methodology-for-building-lightweight-domain-ontologies/"> lightweight, domain ontologies</a>.</p>
<h4>Scope and Content</h4>
<ul>
<li>Provide <strong>balanced coverage</strong> of the subject domain.         The breadth and depth of the coverage in the ontology should be roughly         equivalent across its scope </li>
<li> <span style="font-weight: bold;">Reuse structure and           vocabularies</span> as much as possible. This best practice refers to           leveraging non-ontological content such as existing relational           database schema, taxonomies, controlled vocabularies, MDM           directories, industry specifications, and spreadsheets and informal           lists. Practitioners within domains have been looking at the           questions of relationships, structure, language and meaning for           decades. Effort has already been expended to codify many of these           understandings. Good practice therefore leverages these existing           structural and vocabulary assets (of any nature), and relies on known           design patterns </li>
<li>Embed the domain coverage into a proper <strong>context</strong>. A         major strength of ontologies is their potential ability to interoperate         with other ontologies. Re-using existing and well-accepted vocabularies         and including concepts in the subject ontology that aid such         connections is good practice. The ontology should also have sufficient         reference structure for guiding the assignment of what content “is         about” </li>
<li>Define clear <strong>predicates</strong> (also known as properties,         relationships, attributes, edges or slots), including a precise         definition. Then, when relating two things to one another, use care in         actually assigning these properties. Initially, assignments should         start with a logical taxonomic or categorization structure and expand         from there into more nuanced predicates </li>
<li>Ensure the relationships in the ontology are         <strong>coherent</strong>. The essence of coherence is that it is a         state of logical, consistent connections, a logical framework for         integrating diverse elements in an intelligent way. So while context         supplies a reference structure, coherence means that the structure         makes sense. Is the hip bone connected to the thigh bone, or is the         skeleton askew? Testing (see below) is a major aspect for meeting this         best practice </li>
<li> <span style="font-weight: bold;">Map to external ontologies</span> to           increase the likelihood of sharing and interoperability. In           Structured Dynamics&#8217; case, we also attempt to map at minimum to the           UMBEL subject reference structure for this purpose <a href="#obp13">[13]</a> </li>
<li>Rely upon a <span style="font-weight: bold;">set of core         ontologies</span> for external re-use purposes; Structured Dynamics         tends to rely on a set of primary and secondary standard ontologies <a href="#obp14"> [14]</a>. The corollary to this best practice is don&#8217;t link         indiscriminantly. </li>
</ul>
<h4>Structure and Design</h4>
<ul>
<li>Begin with a <span style="font-weight: bold;">lightweight, domain         ontology</span> <a href="#obp15">[15]</a>. Ontologies built for the pragmatic purposes of         setting context and aiding disparate data to interoperate tend to be         lightweight with only a few predicates, such as <span style="font-family: Courier New,Courier,monospace;">isAbout</span>,         <span style="font-family: Courier New,Courier,monospace;">narrowerThan</span> or         <span style="font-family: Courier New,Courier,monospace;">broaderThan</span>. But,         if done properly, these lighter weight ontologies with more limited         objectives can be surprisingly powerful in discovering connections and         relationships. Moreover, they are a logical and doable intermediate         step on the path to more demanding semantic analysis. Because we have         this perspective, we also tend to rely heavily on the SKOS vocabulary         for many of our ontology constructs <a href="#obp16">[16]</a> </li>
<li>Try to structurally <span style="font-weight: bold;">split domain         concepts from instance records</span>. Concepts represent the nodes         within the structure of the ontology (also known as classes, subject         concepts or the <span style="font-style: italic;">TBox</span>).         Instances represent the data that populates that structure (also known         as named entities, individuals or the <span style="font-style: italic;">ABox</span>) <a href="#obp17">[17]</a>. Trying to keep the ABox and         TBox separate enables easier maintenance, better understandability of         the ontology, and better scalability and incorporation of new data         repositories </li>
<li>Treat many concepts via <span style="font-weight: bold;">&#8220;punning&#8221;         as both classes and instances</span> (that is, as either sets or         members, depending on context). The &#8220;punning&#8221; technique enables         &#8220;metamodeling,&#8221; such as treating something via its IRI as a set of         members (such as <span style="font-family: Courier New,Courier,monospace;">Mammal</span> being a set         of all mammals) or as an instance (such as <span style="font-family: Courier New,Courier,monospace;">Endangered Mammal</span>)         when it is the object of a different contextual assertion. Use of         &#8220;metamodeling&#8221; is often helpful to describe the overall conceptual         structure of a domain. See endnote <a href="#obp18">[18]</a> for more discussion on this         topic </li>
<li>Build ontologies <span style="font-weight: bold;">incrementally</span>. Because good ontologies         embrace the <a title="http://en.wikipedia.org/wiki/Open_world_assumption" rel="nofollow" href="http://en.wikipedia.org/wiki/Open_world_assumption">open world         approach</a> <a href="#obp19">[19]</a>, working toward these desired end states can also be         incremental. Thus, in the face of common budget or deadline         constraints, it is possible initially to scope domains as smaller or to         provide less coverage in depth or to use a small set of predicates, all         the while still achieving productive use of the ontology. Then, over         time, the scope can be expanded incrementally. Much value can be         realized by starting small, being simple, and emphasizing the         pragmatic. It is OK to make those connections that are doable and         defensible today, while delaying until later the full scope of semantic         complexities associated with complete data alignment </li>
<li>Build <span style="font-weight: bold;">modular</span> ontologies         that split your domain and problem space into logical clusters. Good         ontology design, especially for larger projects, warrants a degree of         modularity. An architecture of multiple ontologies often works together         to isolate different work tasks so as to aid better ontology         management. Also, try to use a core set of <span style="font-weight: bold;">primitives</span> to build up more complex parts.         This is a kind of reuse within the same ontology, as opposed to reusing         external ontologies and patterns. The corollary to this is: the same         concepts are not created independently multiple times in different         places in the ontology. Adhering to both of these practices tends to         make ontology development akin to <a href="http://en.wikipedia.org/wiki/Object-oriented_programming">object-oriented         programming</a> </li>
<li>Assign <span style="font-weight: bold;">domains and ranges</span> to your properties. Domains apply to the subject (the left hand side of         a triple); ranges to the object (the right hand side of the triple).         Domains and ranges should not be understood as actual constraints, but         as axioms to be used by reasoners. In general, domain for a property is         the range for its inverse and the range for a property is the domain of         its inverse. Use of domains and ranges will assist testing (see below)         and help ensure the coherency of your ontology </li>
<li>Assign <span style="font-weight: bold;">property         restrictions</span>, but do so sparingly and judiciously <a href="#obp20">[20]</a>. Use of         property restrictions will assist testing (see below) and help ensure         the coherency of your ontology </li>
<li>Use <span style="font-weight: bold;">disjoint classes</span> to         separate classes from one another where the logic makes sense and         dictates (if not explicitly stated, they are assumed to overlap) </li>
<li>Write the ontology in a <span style="font-weight: bold;">machine-processable language</span> such as         <a title="http://en.wikipedia.org/wiki/Web_Ontology_Language" rel="nofollow" href="http://en.wikipedia.org/wiki/Web_Ontology_Language">OWL</a> or         <a title="http://en.wikipedia.org/wiki/RDF_Schema" rel="nofollow" href="http://en.wikipedia.org/wiki/RDF_Schema">RDF Schema</a> (among           others), and </li>
<li>Aggressively use <span style="font-weight: bold;">annotation         properties</span> (see next) to promote the usefulness and human         readability of the ontology. </li>
</ul>
<h3>Naming and Vocabulary Best Practices</h3>
<ul>
<li>Name all <span style="font-weight: bold;">concepts as single         nouns</span>. Use <a style="font-weight: bold;" href="http://en.wikipedia.org/wiki/CamelCase">CamelCase</a> <span style="font-weight: bold;">notation</span> for these classes (that is, class         names should start with a capital letter and not contain any spaces,         such as <span style="font-family: Courier New,Courier,monospace;">MyNewConcept</span>) </li>
<li>Name all <span style="font-weight: bold;">properties as verb         senses</span> (so that triples may be actually read); e.g.,           <span style="font-family: Courier New,Courier,monospace;">hasProperty</span>.           Try to use <span style="font-weight: bold;">mixedCase notation</span> for naming these predicates (that is, begin with lower case but still           capitalize thereafter and don&#8217;t use spaces) </li>
<li>Try to use common and <span style="font-weight: bold;">descriptive         prefixes and suffixes</span> for related properties or classes (while         they are just labels and their names have no inherent semantic meaning,         it is still a useful way for humans to cluster and understand your         vocabularies). For examples, properties about languages or tools might         contain suffixes such as &#8216;<span style="font-family: Courier New,Courier,monospace;">Language</span>&#8216; or         &#8216;<span style="font-family: Courier New,Courier,monospace;">Tool</span>&#8216;         for all related properties </li>
<li>Provide <span style="font-weight: bold;">inverse properties</span> where it makes sense, and adjust the verb senses in the predicates to         accommodate. For example, <span style="font-family: Courier New,Courier,monospace;">&lt;Father&gt;         &lt;hasChild&gt; &lt;Janie&gt;</span> would be expressed inversely as         <span style="font-family: Courier New,Courier,monospace;">&lt;Janie&gt;         &lt;isChildOf&gt; &lt;Father&gt;</span> </li>
<li>Give all concepts and properties a <strong>definition</strong>. The         matching and alignment of things is done on the basis of concepts (not         simply labels) which means each concept must be defined <a href="#obp21">[21]</a>. Providing         clear definitions (along with the coherency of its structure) gives an         ontology its semantics. Remember not to confuse the label for a concept         with its meaning. (This approach also aids multi-linguality). In its         own ontologies, Structured Dynamics uses the property of <span style="font-family: Courier New,Courier,monospace;">skos:definition</span>,         though others such as <span style="font-family: Courier New,Courier,monospace;">rdfs:comment</span> or         <span style="font-family: Courier New,Courier,monospace;">dc:description</span> are         also commonly used </li>
<li>Provide a <strong>preferred label</strong> annotation property that         is used for human readable purposes and in user interfaces. For this         purpose, Structured Dynamics uses the property of <span style="font-family: Courier New,Courier,monospace;">skos:prefLabel</span> </li>
<li>Include a class “<strong>SemSet</strong>”, which means a series of         alternate labels and terms to describe the concept. These alternatives         include true synonyms, but may also be more expansive and include         jargon, slang, acronyms or alternative terms that usage suggests refers         to the same concept. The <span style="font-family: Courier New,Courier,monospace;">umbel:SemSet</span> construct enables a listing of individual members to be generated that         provides the matching set for tagging and information extraction tasks.         (As such, also include the <span style="font-family: Courier New,Courier,monospace;">prefLabel</span> in the         <span style="font-family: Courier New,Courier,monospace;">SemSet</span> for proper lookup and tagging purposes.) The <span style="font-family: Courier New,Courier,monospace;">SemSet</span> construct         is similar to the &#8220;<a href="http://en.wikipedia.org/wiki/Synsets">synsets</a>&#8221; in <a href="http://en.wikipedia.org/wiki/WordNet">Wordnet</a>, but with a broader         use understanding. This construct is an integral part of Structured         Dynamics&#8217; approach to using ontologies for information extraction and         tagging of unstructured text </li>
<li>Try to assign l<span style="font-weight: bold;">ogical and short         names to namespaces</span> used for your vocabularies, such as         <span style="font-family: Courier New,Courier,monospace;">foaf:XXX,         umbel:XXX</span> or <span style="font-family: Courier New,Courier,monospace;">skos:XXX</span>, with a         maximimum of five letters preferred </li>
<li>Enable <span style="font-weight: bold;">multi-lingual         capabilities</span> in all definitions and labels. This is a rather         complicated best practice in its own right. For the time being, it         means being attentive to the <span style="font-family: Courier New,Courier,monospace;">xml:lang=&#8221;en&#8221;</span> (for         English, in this case) property for all annotation properties </li>
<li>(If you disagree with these naming conventions, use your own, but         in any event, be consistent!!). </li>
</ul>
<h3>Documentation Best Practices</h3>
<ul>
<li>Like good software programs, a <span style="font-weight: bold;">properly constructed and commented ontology</span> is the first requirement of best practice documentation </li>
<li>The entire <span style="font-weight: bold;">ontology         vocabulary</span> should be documented via a dedicated system that         allows finding, selecting and editing of any and all ontology terms and         their properties </li>
<li>The <span style="font-weight: bold;">methodologies should be         documented</span> for ontology construction and maintenance, including         naming, selection, completeness and other criteria. Documents such as         this one and others in this series provide examples of important         supplementary documentation regarding methodology and practice </li>
<li>Provide a <span style="font-weight: bold;">complete <a href="http://techwiki.openstructs.org">TechWiki</a>-like         documentation</span> system for use cases, best practices, evaluation         and testing metrics, tools installation and use, and all aspects of the         ontology lifecycle should be provided and supported <a href="#obp22">[22]</a> </li>
<li>Develop a <span style="font-weight: bold;">complete graph of the         ontology</span> and make it available via graph visualization tools to         aid understanding of the ontology in its complete aspect <a href="#obp23">[23]</a>, and </li>
<li>Other ample <span style="font-weight: bold;">diagrams and         flowcharts</span> should also be prepared and made available for         knowledge workers&#8217; use. <a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language">UML</a> diagrams, for example, might be included here, but general workflows         and concept relationships should be explicated in any case through         visual means. Such diagrams are much easier to understand and follow         than the actual ontology specification. </li>
</ul>
<h3>Organizational and Collaborative Best Practices</h3>
<ul>
<li> <span style="font-weight: bold;">Collaboration</span> is an           implementation best practice <a href="#obp24">[24]</a> </li>
<li> <span style="font-weight: bold;">Re-use</span> of already agreed-up           structures and vocabularies respects prior investments and needs to           be emphasized </li>
<li>Improved <span style="font-weight: bold;">processes for consensus         making</span>, including tools support, must be found to enable work         groups to identify and decide upon terminology, definitions,         alternative labels (<span style="font-family: Courier New,Courier,monospace;">SemSets</span>), and         relations between concepts. These processes need not be at the formal         ontology level, but at the level of the concept graph underlying the         ontology <a href="#obp24">[24]</a>. </li>
</ul>
<h3>Testing Best Practices</h3>
<ul>
<li>Test <span style="font-weight: bold;">new concepts</span>, aided by         proper domain, range and property restrictions; by invoking reasoners         such that inconsistencies can be determined <a href="#obp25">[25]</a> </li>
<li>Test <span style="font-weight: bold;">new properties</span>, aided         by invoking reasoners, which will identify inconsistencies <a href="#obp25">[25]</a> </li>
<li>Test via <span style="font-weight: bold;">external class         assignments</span>, by linking to classes in external ontologies, which         acts to &#8216;explode the domain&#8217; <a href="#obp26">[26] </a></li>
<li>Use <span style="font-weight: bold;">external knowledge bases and         ontologies</span>, such as Cyc or UMBEL <a href="#obp27">[27]</a>, to conduct coherency         testing for the basic structure and relationships in the ontology </li>
<li>Evolve the ontology specification to include <span style="font-weight: bold;">necessary and sufficient conditions</span> <a href="#obp25">[25]</a> aid more complete reasoner testing for consistency and coherence. </li>
</ul>
<h3>Best Practices for Adaptive Ontologies</h3>
<p>In the case of <a title="http://www.mkbergman.com/847/ontology-driven-applications-using-adaptive-ontologies/" rel="nofollow" href="http://www.mkbergman.com/847/ontology-driven-applications-using-adaptive-ontologies/"> ontology-driven applications</a> using <span style="font-weight: bold; font-style: italic;">adaptive ontologies</span> <a href="#obp28">[28]</a>, there are also additional instructions contained in the system         (via administrative ontologies) that tell the system which types of         widgets need to be invoked for different data types and attributes.         This is different from the standard conceptual schema, but is         nonetheless essential to how such applications are designed.</p>
<ul>
<li>Use the <a href="http://openstructs.org/structwsf"><span style="font-weight: bold;">structWSF</span></a> middleware layer <a href="#obp29">[29]</a> as the         abstract access point to: </li>
<li style="list-style: none outside none;">
<ul>
<li>To create, update, delete or otherwise manage data records </li>
<li>To browse or view existing records or record sets, based on             simple to possible complex selection or filtering criteria, or </li>
<li>To take one of these results sets and progress it through             various workflows involving specialized analysis, applications, or             visualization. </li>
</ul>
</li>
<li>Supplement the domain ontology with a <a href="http://openstructs.org/semantic-components"><span style="font-weight: bold;">semantic component ontology</span></a> for the         purposes of guiding data widget display and visualization <a href="#obp30">[30]</a>, and </li>
<li>Supplement the domain ontology with the <span style="font-weight: bold;"><a href="http://openstructs.org/iron">irON</a></span> (<span style="font-style: italic;">instance record Object Notation</span>) for         dataset exchange and interoperability <a href="#obp31">[31]</a>. </li>
</ul>
<p>The administrative ontologies supporting these applications are managed         differently than the standard domain ontologies that are the focus of         most of the best practices above. Nonetheless, some of the domain         ontology best practices work in tandem with them, the combination of         which are called <span style="font-weight: bold; font-style: italic;">adaptive ontologies</span>.</p>
<hr style="margin: 15px 0px;" size="1" />
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp1"></a>[1] This posting is part of a current series on ontology development         and tools, now permanently archived and updated on the <a href="http://openstructs.org">OpenStructs</a> <a href="http://techwiki.openstructs.org">TechWiki</a>. The series began with         <a style="font-style: italic;" title="An Executive Intro to Ontologies" href="http://www.mkbergman.com/900/an-executive-intro-to-ontologies/">An Executive Intro to         Ontologies</a>, then continued with an <a href="http://www.mkbergman.com/904/listing-of-185-ontology-building-tools/">update</a> of the prior Ontology Tools listing, which now contains 185 tools. It         progressed to a <a href="http://www.mkbergman.com/906/a-brief-survey-of-ontology-development-methodologies/"> survey</a> of ontology development methodologies. That led to a         presentation of a new, <a style="font-style: italic;" href="http://techwiki.openstructs.org/index.php/Lightweight,%20Domain%20Ontologies%20Development%20Methodology"> Lightweight, Domain Ontologies Development Methodology</a>. That piece         was then expanded to address <a style="font-style: italic;" href="http://www.mkbergman.com/909/a-new-landscape-in-ontology-development-tools/"> A New Landscape in Ontology Development Tools</a>. This portion         completes the series.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp2"></a>[2] Natalya F. Noy and Deborah L. McGuinness, 2001. &#8220;Ontology         Development 101: A Guide to Creating Your First Ontology,&#8221; Stanford         University <span style="font-style: italic;">Knowledge Systems         Laboratory Technical Report KSL-01-05</span>, March 2001. See <a href="http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html"> http://protege.stanford.edu/publications/ontology_development/ontology101-noy-mcguinness.html</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp3"></a>[3] Matthew Horridge et al., 2009. <span style="font-style: italic;">A         Practical Guide to Building OWL Ontologies Using Protégé 4 and CO-ODE         Tools</span>, manual prepared by the <span style="font-style: italic;">University of Manchester</span>, March 13, 2009.         108 pp. See <a href="http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/resources/ProtegeOWLTutorialP4_v1_2.pdf"> http://owl.cs.manchester.ac.uk/tutorials/protegeowltutorial/resources/ProtegeOWLTutorialP4_v1_2.pdf</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp4"></a>[4] Specialty search engines for ontologies include <a href="http://swoogle.umbc.edu/">Swoogle</a>, <a href="http://iws.seu.edu.cn/services/falcons">FalconS</a>, <a href="http://watson.kmi.open.ac.uk">Watson</a>, <a href="http://sindice.com/">Sindice</a> and <a href="http://swse.org/">SWSE</a>. In addition, one can use a general search         engine such as Google with a search query such as <span style="font-family: Courier New,Courier,monospace;">&lt;topic&gt;         owl:equivalentClass filetype:owl</span>. Note the filetype might also         include RDF or a variant such as N3, and other language-specific         constructs of interest can also be substituted for the <span style="font-family: Courier New,Courier,monospace;">owl:equivalentClass</span>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp5"></a>[5] The <a href="http://owl.cs.manchester.ac.uk/repository/">TONES         Ontology Repository</a> is primarily designed to be a central location         for ontologies that might be of use to tools developers for testing         purposes. It has a nice browse facility, as well as filtering by OWL         vocabulary. The system contains about 220 ontologies and is powered by         the <a href="http://owlapi.sourceforge.net/">OWL API</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp6"></a>[6] <a title="Main Page" href="http://ontologydesignpatterns.org/wiki/Main_Page">OntologyDesignPatterns.org</a> is a semantic Web portal         dedicated to ontology design patterns (ODPs). The portal was started         under the <a class="external text" title="http://www.neon-project.org" rel="nofollow" href="http://www.neon-project.org/">NeOn project</a>,         which still partly supports its development.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp7"></a>[7] Elena Paslaru Bontas Simperl and Christoph Tempich, 2006. &#8220;Ontology         Engineering: A Reality Check,&#8221; in <em>Proceedings of the 5th         International Conference on Ontologies, Databases, and Applications of         Semantics ODBASE2006</em>, 2006. See <a href="http://ontocom.ag-nbi.de/docs/odbase2006.pdf">http://ontocom.ag-nbi.de/docs/odbase2006.pdf</a> .</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp8"></a>[8] See <a href="http://obofoundry.org/wiki/index.php/OBO_Foundry_Principles">http://obofoundry.org/wiki/index.php/OBO_Foundry_Principles</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp9"></a>[9] Barry Smith et al., 2007. &#8220;The OBO Foundry: Coordinated Evolution         of Ontologies to Support Biomedical Data Integration,&#8221; in <em>Nature         Biotechnology</em> <strong>25</strong>: 1251 &#8211; 1255, published online 7         November 2007; see <a href="http://www.nature.com/nbt/journal/v25/n11/pdf/nbt1346.pdf">http://www.nature.com/nbt/journal/v25/n11/pdf/nbt1346.pdf</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp10"></a>[10] See the NeOn networked ontologies project; see <a href="http://www.neon-project.org/">http://www.neon-project.org/</a>. The         four-year project began in 2006 and its first open source toolkit was         released by the end of 2007. OWL features were added in 2008-09. NeON         has since completed, though its toolkit and plug-ins can still be         downloaded as open source.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp11"></a>[11] Brian Sletten, 2008. &#8220;Applying SKOS Concept Schemes,&#8221; on the         <em>DevX Web site</em>, July 22, 2008; see <a href="http://www.devx.com/semantic/Article/38629">http://www.devx.com/semantic/Article/38629</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp12"></a>[12] M. K. Bergman, 2009. &#8220;<a href="http://www.mkbergman.com/553/confronting-misconceptions-with-adaptive-ontologies/">Confronting         Misconceptions with Adaptive Ontologies</a>,&#8221; <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, Aug. 17,         2009.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp13"></a>[13] <a href="http://umbel.org/intro.html">UMBEL</a> (<em>Upper Mapping         and Binding Exchange Layer</em>) is an ontology of about 20,000 subject         concepts that acts as a reference structure for inter-relating         disparate datasets. It is also a <a href="http://umbel.org/technical_documentation.html#vocabulary">general         vocabulary</a> of classes and predicates designed for the creation of         domain-specific ontologies.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp14"></a>[14] Core ontologies are <a href="http://dublincore.org/">Dublin         Core</a>, <a href="http://dublincore.org/documents/dcmi-terms/">DC         Terms</a>, <a href="http://motools.sourceforge.net/event/event.html">Event</a>, <a href="http://www.foaf-project.org/">FOAF</a>, <a href="http://www.geonames.org/">GeoNames</a>, <a href="http://en.wikipedia.org/wiki/SKOS">SKOS</a>, <a href="http://motools.sourceforge.net/timeline/timeline.html">Timeline</a>,         and <a href="http://www.umbel.org/">UMBEL</a>. The various criteria         that are considered in nominating an existing ontology to &#8220;core&#8221; status         is that it should be general; highly used; universal; broad committee         or community support; well done and documented; and easily understood.         Though less universal, there are also a number of secondary ontologies,         namely <a href="http://bibliontology.com/">BIBO</a>, <a href="http://usefulinc.com/doap">DOAP</a>, and <a href="http://en.wikipedia.org/wiki/SIOC">SIOC</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp15"></a>[15] See Fausto Giunchiglia, Maurizio Marchese and Ilya Zaihrayeu,         2006. &#8220;Encoding Classifications into Lightweight Ontologies,&#8221; see         <a href="http://www.science.unitn.it/%7Emarchese/pdf/encoding%20classifications%20into%20lightweight%20ontologies_JoDS8.pdf"> http://www.science.unitn.it/~marchese/pdf/encoding%20classifications%20into%20lightweight%20ontologies_JoDS8.pdf</a>.         Also, M. K. Bergman, 2010. &#8220;<a href="http://www.mkbergman.com/908/a-new-methodology-for-building-lightweight-domain-ontologies/">A         New Methodology for Buidling Lightweight, Domain Ontologies</a>,&#8221;         <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, Sept. 1, 2010.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp16"></a>[16] Alistair Miles and Sean Bechhofer, eds., 2009. <span style="font-style: italic;">SKOS Simple Knowledge Organization System         Reference</span>, W3C Recommendation, 18 August 2009. See <a href="http://www.w3.org/TR/skos-reference/">http://www.w3.org/TR/skos-reference/</a>.         Some of the common SKOS predicates used in our ontologies include         <span style="font-family: Courier New,Courier,monospace;">skos:definition,         skos:prefLabel, skos:altLabel, skos:broaderTransitive,         skos:narrowerTransitive</span>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp17"></a>[17] The <span style="font-weight: bold; font-style: italic;">TBox</span> portion, or         classes (concepts), is the basis of the ontologies. The ontologies         establish the structure used for governing the conceptual relationships         for that domain and in reference to external (Web) ontologies. The         <span style="font-weight: bold; font-style: italic;">ABox</span> portion, or instances (named entities), represents the specific,         individual things that are the members of those classes. Named entities         are the notable objects, persons, places, events, organizations and         things of the world. Each named entity is related to one or more         classes (concepts) to which it is a member. Named entities do not set         the structure of the domain, but populate that structure. The ABox and         TBox play different roles in the use and organization of the         information and structure. These distinctions have their grounding in         <a href="http://www.mkbergman.com/466/thinking-inside-the-box-with-description-logics/"> description logics</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp18"></a>[18] In the domain ontologies that are the focus here, we often want to         treat our concepts as both classes and instances of a class.  This         is known as &#8220;metamodeling&#8221; or &#8220;metaclassing&#8221; and is enabled by         &#8220;punning&#8221; in OWL 2.  For example, here a case cited on the OWL 2         wiki entry on &#8220;<a href="http://www.w3.org/2007/OWL/wiki/Punning">punning</a>&#8220;:</div>
<div style="margin: 10px 0pt; font-size: 90%;">
<div style="margin-left: 40px; font-style: italic;">People sometimes want to have metaclasses. Imagine you want to model           information about the animal kingdom. Hence, you introduce a class           a:Eagle, and then you introduce instances of a:Eagle such as a:Harry.</div>
<div style="margin-left: 40px; font-style: italic;">
<p><em>(1) a:Eagle rdf:type owl:Class           <br />
 (2) a:Harry rdf:type a:Eagle</em></p>
<p style="font-size: 90%; font-style: italic;">Assume now that you want to say that &#8220;eagles are an endangered           species&#8221;. You could do this by treating a:Eagle as an instance of a           metaconcept a:Species, and then stating additionally that a:Eagle is           an instance of a:EndangeredSpecies. Hence, you would like to say           this:</p>
<p style="font-size: 90%; font-style: italic;">(3) a:Eagle rdf:type a:Species           <br />
 (4) a:Eagle rdf:type a:EndangeredSpecies.</p>
</div>
<p style="font-size: 90%;">This example comes from Boris Motik, 2005. &#8220;<a href="http://web.comlab.ox.ac.uk/oucl/work/boris.motik/publications/motik05metamodeling.pdf">On         the Properties of Metamodeling in OWL</a>,&#8221; paper presented at         <span style="font-style: italic;">ISWC 2005</span>, Galway, Ireland,         2005.</p>
<p style="font-size: 90%;">&#8220;Punning&#8221; was introduced in OWL 2 and enables the same IRI to be used         as a name for both a class and an individual. However, the direct         model-theoretic semantics of OWL 2 DL accommodates this by         understanding the class <span style="font-family: Courier New,Courier,monospace;">Father</span> and the         individual <span style="font-family: Courier New,Courier,monospace;">Father</span> as two         different views on the same IRI, <span style="font-style: italic;">i.e.</span>, they are interpreted semantically as         if they were distinct. The technique listed in the main body triggers         this treatment in an OWL 2-compliant editor. See further Pascal Hitzler         <span style="font-style: italic;">et al</span>., eds., 2009.         <span style="font-style: italic;">OWL 2 Web Ontology Language         Primer</span>, a W3C Recommendation, 27 October 2009; see <a href="http://www.w3.org/TR/owl2-primer/">http://www.w3.org/TR/owl2-primer/</a>.</p>
</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp19"></a>[19] There is a role and place for <a href="http://en.wikipedia.org/wiki/Closed_World_Assumption">closed world         assumption</a> (CWA) ontologies, though Structured Dynamics does not         engage in them.</div>
<div style="margin: 10px 0pt; font-size: 90%;">
<p>CWA is the traditional perspective of relational database systems         within enterprises. The premise of CWA is that which is not known to be         true is presumed to be false; or, any statement not known to be true is         false. Another way of saying this is that everything is prohibited         until it is permitted. CWA works well in bounded systems such as known         product listings or known customer rosters, and is one reason why it is         favored for transaction-oriented systems where completeness and         performance are essential. In an ontology sense, CWA works best for         bounded engineering environments such as aeronautics or petroleum         engineering. Closed world ontologies also tend to be much more         complicated with many nuanced predicates, and can be quite expensive to         build.</p>
<p style="font-size: 90%;">The <a href="http://en.wikipedia.org/wiki/Open_world_assumption">open         world assumption</a> (OWA), on the other hand, is premised that the         lack of a given assertion or fact being available does not imply         whether that possible assertion is true or false: it simply is not         known. In other words, lack of knowledge does not imply falsity, and         everything is permitted until it is prohibited. As a result, open world         works better in knowledge environments with the incorporation of         external information such as <a href="http://en.wikipedia.org/wiki/Business_intelligence">business         intelligence</a>, <a href="http://en.wikipedia.org/wiki/Data_warehouse">data warehousing</a>,         <a href="http://en.wikipedia.org/wiki/Data_integration">data         integration</a> and <a href="http://en.wikipedia.org/wiki/Federated_database_system">federation</a>,         and <a href="http://en.wikipedia.org/wiki/Knowledge_management">knowledge         management</a>.</p>
<p style="font-size: 90%;">See further, M. K. Bergman, 2009. &#8220;<a href="http://www.mkbergman.com/852/the-open-world-assumption-elephant-in-the-room/">The         Open World Assumption: Elephant in the Room</a>,&#8221; <span style="font-style: italic;">AI3:::Adaptive Information blog</span>, Dec. 21,         2009.</p>
</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp20"></a>[20] See [3] for a good description of property restrictions in Section         4 and Appendix A.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp21"></a>[21] As another commentary on the importance of definitions, see         <a href="http://ontologyblog.blogspot.com/2010/09/physician-decries-lack-of-definitions.html"> http://ontologyblog.blogspot.com/2010/09/physician-decries-lack-of-definitions.html</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp22"></a>[22] The technical wiki (<a href="http://techwiki.openstructs.org/index.php/Main_Page">TechWiki</a>) is         the central repository for all documentation related to <a href="http://openstructs.org/">OpenStructs</a> projects. TechWiki is the         location for users and interested parties to learn about these projects         and their applications, and for developers to author and write about         their use and best practices. Both the TechWiki&#8217;s content and its         software and organizatonal structure may be <a href="http://techwiki.openstructs.org/index.php/Wiki_Information_Migration_Workflow"> downloaded for free</a> for setting up similar local technical         documentation.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp23"></a>[23] See M. K. Bergman, 2008. &#8220;<a href="http://www.mkbergman.com/414/large-scale-rdf-graph-visualization-tools/">Large-scale         RDF Graph Visualization Tools</a>,&#8221; <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, Jan. 28,         2008; and M. K. Bergman, 2008. &#8220;<a href="http://www.mkbergman.com/415/cytoscape-hands-down-winner-for-large-scale-graph-visualization/">Cytoscape:         Hands-down Winner for Large-scale Graph Visualization</a>,&#8221;         <span style="font-style: italic;">AI3:::Adaptive Information</span> blog, Jan. 28, 2008.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp24"></a>[24] The central role of ontologies is to describe a &#8220;worldview&#8221; and in         specific organizations this means a shared understanding of the         concepts, relations and terminology to describe the participants&#8217;         common domain. In turn, these shared understandings establish the         semantics for how to effect communication and understanding within the         population of domain users. All of this means that finding ways to         identify and agree upon shared vocabularies and understandings is         central to the task of modeling (creating an ontology) for the domain.</div>
<div style="margin: 10px 0pt; font-size: 90%;">
<p>Sometimes this perception of shared views is too strictly interpreted         as needing to have one and only one understanding of concepts and         language. Far from it. One of the strengths of ontologies and language         modeling within them is that multiple terms for the same concept or         slight differences in understandings about nearly similar concepts can         be accommodated. It is perfectly OK to have differences in terminology         and concept understandings so long as those differences are also         captured and explicated within the ontology. The recommendations herein         that all concepts and terminology be defined, that <span style="font-family: Courier New,Courier,monospace;">SemSets</span> be used to         capture alternative ways to name concepts, and that concepts often be         treated as both classes and instances are some of the best practices         that reflect this approach.</p>
<p style="font-size: 90%;">So, while consensus building and collaboration methods are at the heart         of effective ontology building, those methods need not also strive for         a imposition of language and concepts by fiat. In fact, trying to do so         undercuts the ability of the collaborative process to lead to greater         shared understandings.</p>
</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp25"></a>[25] See [3] for a good description of various testing and consistency         checks in Sections 4.9 to 4.14.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp26"></a>[26] See Frédérick Giasson, 2008. &#8220;<a href="http://fgiasson.com/blog/index.php/2008/04/20/exploding-the-domain-umbel-web-services-by-zitgist/">Exploding         the Domain</a>,&#8221; from his blog, April 20, 2008. &#8216;Exploding the domain&#8217;         means what happens when internal ontology concepts are linked to         related ones on the external Web, which helps to bring in more         information and context about the concept. It is also a way to test the         coherence of the original concept.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp27"></a>[27] Already vetted knowledge bases can be a good reference testbed for         testing the coherence of concepts in a new domain ontology. If the         domain ontology describes concepts quite differently than standard         practice (<a href="http://en.wikipedia.org/wiki/Wikipedia">Wikipedia</a>, <a href="http://en.wikipedia.org/wiki/Cyc">Cyc</a> and <a href="http://en.wikipedia.org/wiki/UMBEL">UMBEL</a> are good for testing         this), or if relationships between concepts are greatly at variance         (Cyc and UMBEL are good for this), then there are likely coherency         problems. In other domains other reference knowledge bases, more         specific to the domain, can be used in similar ways.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp28"></a>[28] Structured Dynamics’ <span style="font-style: italic;">ontology-driven apps</span> are generic         applications, the operations of which are guided by the instructions         and nature of the underlying data that feeds them. For example, in the         case of a standard structured data display (say, a simple table like a         Wikipedia <a href="http://en.wikipedia.org/wiki/Category:Infobox_templates">infobox</a>),         such generic design includes templates tailored to various instance         types (say, locational information presenting on a map versus people         information warranting a image and vital statistics). Alternatively, in         the generic design for a data visualization application using <a href="http://www.adobe.com/software/flash/about/">Adobe Flash</a>, the         information output of the results set contains certain formats and         attributes, keyed by an administrative ontology linked by data type to         a domain ontology&#8217;s results sets.</div>
<div style="margin: 10px 0pt; font-size: 90%;">
<p>These <span style="font-style: italic;">ontology-driven apps</span>,         then, are informed structured results sets that are output in a form         suitable to various intended applications. This output form can include         a variety of serializations, formats or metadata. This flexibility of         output is tailored to and responsive to particular generic         applications; it is what makes our ontologies “adaptive”. Using this         structure, it is possible to either “drive” queries and results sets         selections via direct HTTP request or via simple dropdown selections on         HTML forms<span style="font-style: italic;"><span style="font-style: italic;">.</span></span> Similarly, it is possible with a         single parameter change to drive either a visualization app or a         structured table template from the equivalent query request.         <span style="font-style: italic;">Ontology-driven apps</span> through         this ontology and architecture design thus provide two profound         benefits. First, the entire system can be driven via simple selections         or interactions without the need for any programming or technical         expertise. And, second, simple additions of new and minor output         converters can work to power entirely new applications available to the         system.</p>
</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp29"></a>[29] The structWSF Web services framework is generally RESTful         middleware that provides a bridge between existing content and         structure and content management systems and available indexing engines         and RDF data stores. structWSF is a platform-independent means for         distributed collaboration via an innovative dataset access paradigm. It         has about twenty embedded Web services. See <a href="http://openstructs.org/structwsf">http://openstructs.org/structwsf</a>.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp30"></a>[30] A <a href="http://openstructs.org/semantic-components">semantic         component</a> is a Flex component that takes record descriptions and         schema as input, and then outputs some (possibly interactive)         visualizations of that record. Depending on the logic described in the         input schema and the input record descriptions, the semantic component         will behave differently to optimize its presentation to the users.         About a dozen semantic components are available from the Semantic         Component (Flex) Library. The <a href="http://techwiki.openstructs.org/index.php/SCO_Ontology">Semantic         Component Ontology</a> is the governing structure for these schema.</div>
<div style="margin: 10px 0pt; font-size: 90%;"><a name="obp31"></a>[31] <a href="http://openstructs.org/iron">irON</a> (<span style="font-style: italic;">instance record and Object Notation</span>) is a         abstract notation and associated vocabulary for specifying RDF triples         and schema in non-RDF forms. Its purpose is to allow users and tools in         non-RDF formats to stage interoperable datasets using RDF. The notation         supports writing RDF and schema in JSON (irJSON), XML (irXML) and         comma-delimited (CSV) formats (commON). The notation specification         includes guidance for creating instance records (including in bulk),         linkages to existing ontologies and schema, and schema definitions.         Profiles and examples and code parsers and converters are also provided         for the irXML, irJSON and commON serializations.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.mkbergman.com/911/a-reference-guide-to-ontology-best-practices/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

