Re: ISSUE-24, ISSUE-21: Versioning language

Thanks for this, Peter, I like almost all of it. Some questions in  
line - anything I didn't comment on I agree with (which is most  
everything).

-Alan

On Jun 20, 2008, at 4:10 PM, Peter F. Patel-Schneider wrote:

> From: Alan Ruttenberg <alanruttenberg@gmail.com>
> Subject: Re: ISSUE-24, ISSUE-21: Versioning language
> Date: Fri, 20 Jun 2008 13:12:17 -0400
>
>> On Jun 20, 2008, at 8:07 AM, Peter F. Patel-Schneider wrote:
>>
>>> Well, sure, I would like to get this all cleaned up, but I don't  
>>> think
>>> that the recent changes are all going in the right direction.  If  
>>> you
>>> want, I would put together a proposal.
>>
>> I think that's a good idea!
>>
>> -Alan
>>
>
> OK here are my proposed changes to 3.0 through 3.4
>
> ## are comments on changes
> -- is a removal
> ++ is an addition
> // is a change, as in // current // proposed
>
>
>
> == Ontologies ==
>
> {{EdNote|[[User:IanHorrocks|IanHorrocks]] 01:27, 1 December 2007  
> (EST)|See [http://www.w3.org/2007/OWL/tracker/issues/21 Issue-21]  
> (import-target-match) and [http://www.w3.org/2007/OWL/tracker/ 
> issues/24 Issue-24] (1-version-allowed-policy).}}
>
> The main component of an OWL 2 ontology is the set of axioms that  
> the ontology contains. Because an ontology consists of a set of  
> axioms, an ontology cannot contain two axioms that are structurally  
> equivalent. OWL 2 ontology documents are, however, not expected to  
> enforce this: when reading OWL 2 ontologies stored in documents, an  
> OWL 2 implementation can simply eliminate structurally equivalent  
> duplicate axioms. The structure of axioms is described in more  
> detail in [[#Axioms|Section 8]]. Apart from axioms, ontologies can  
> also contain annotations, and they can import other ontologies as  
> well. The structure of OWL 2 ontologies is shown in Figure 1.
>
> <div class="image">
> [[Image:ontology.gif|OWL Ontologies]]<br />
> <span class="caption">Figure 1.</span> OWL Ontologies
> </div>
>
> <div class="grammar">
> <span class="nonterminal">ontologyDocument</span> :=  { <span  
> class="nonterminal">namespace</span> } <span  
> class="nonterminal">Ontology</span><br />
> <span class="nonterminal">namespace</span> := 'Namespace'  
> '(' [ <span class="nonterminal">prefix</span> ] '=' <span  
> class="nonterminal">Full-IRI</span> ')'<br />
> <span class="nonterminal">ontologyURI</span> := <span  
> class="nonterminal">URI</span><br />
> <span class="nonterminal">versionURI</span> := <span  
> class="nonterminal">URI</span><br />
> <span class="nonterminal">import</span> := 'Import' '(' <span  
> class="nonterminal">URI</span> ')'<br />
> <span class="nonterminal">Ontology</span> :=<br />
> &nbsp;&nbsp;&nbsp; 'Ontology' '(' [ <span  
> class="nonterminal">ontologyURI</span> [ <span  
> class="nonterminal">versionURI</span> ] ]<br />
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <span  
> class="nonterminal">import</span> }<br />
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <span  
> class="nonterminal">Annotation</span> }<br />
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <span  
> class="nonterminal">Axiom</span> }<br />
> &nbsp;&nbsp;&nbsp; ')'
> </div>
>
> The <span class="nonterminal">namespace</span> production defines  
> an abbreviation for namespaces in a document. In each document,  
> only one namespace declaration can exist for a given <span  
> class="nonterminal">prefix</span>. These prefixes are then used to  
> expand abbreviated IRIs as specified in [[#URIs_and_Namespaces| 
> Section 2.2]].
>
> <div class="anexample">
> The following is an ontology with
> ++ an ontology
> URI ''<nowiki>http://example.org/ontology1</nowiki>'' that imports  
> an ontology ''<nowiki>http://example.org/ontology2</nowiki>'' and  
> that contains an ontology annotation that provides a label for the  
> ontology and a single subclass axiom.
>
> <div class="axioms">
> Ontology(&lt;''<nowiki>http://example.org/ontology1</ 
> nowiki>''&gt;<br />
> &nbsp;&nbsp;&nbsp; Import(&lt;''<nowiki>http://example.org/ 
> ontology2</nowiki>''&gt;)<br />
> &nbsp;&nbsp;&nbsp; Label("The example")<br />
> <br />
> &nbsp;&nbsp;&nbsp; SubClassOf( ''a:Child'' ''a:Person'' )<br />
> )
> </div>
> </div>
>
> === Ontology URI and Version URI ===
>
> Each ontology can have an ''ontology URI'', which is used to
> -- uniquely ## uniqueness is not *guaranteed*
> identify an ontology. If an ontology has an ontology URI, the  
> ontology can additionally have a ''version URI'', which is used to  
> identify the version of the ontology. The version URI can, but need  
> not be equal to the ontology URI. An ontology without an ontology URI
> // must not // cannot
> contain a version URI.
>
> // The uniqueness of the ontology and the version URIs is governed  
> by the following conventions. // To prevent problems with  
> identifying ontologies, the following non-normative guidance is  
> provided:
>
> * If an ontology has an ontology URI but no version URI, then a  
> different ontology with the same ontology URI but no version URI  
> <em title="SHOULD NOT in RFC 2119 context" class="RFC2119">SHOULD  
> NOT</em> exist.
> * If an ontology has both an ontology URI and a version URI, then a  
> different ontology with the same ontology URI and the same version  
> URI <em title="SHOULD NOT in RFC 2119 context"  
> class="RFC2119">SHOULD NOT</em> exist.
> * All other combinations of the ontology URI and version URI are  
> not required to be unique. For example, two different ontologies  
> are allowed to have no ontology URI and no version URI; similarly,  
> an ontology containing only an ontology URI can coexist with  
> another ontology with the same ontology URI and some other version  
> URI.
>
> This specification provides no mechanism for enforcing these  
> constraints in the entire Web. Rather, the presented rules are to  
> be taken as guidelines when naming new ontologies, and they can be  
> used by OWL 2 tools to detect problems.
>
> The ontology URI and the version URI together identify a particular  
> version from an ''ontology series'' &mdash; the set of all the  
> versions of a particular ontology identified using a common  
> ontology URI. Structurally, a version of a particular ontology is  
> an instance of <span class="nonterminal">Ontology</span> from the  
> structural specification. The structural specification does NOT  
> explicitly contain an object corresponding to the ontology series;  
> therefore, an ontology series is an informal term that exists only  
> as a side-effect of the naming conventions described in this and  
> the following sections.
>
> ===
> -- Physical ## physical is not the word that we should be using to 
> Locations of OWL 2 Ontologies ===
>
> The ontology and the version URI, if present, determine the
> -- physical 
> location of an ontology ''O'' according to the following rules:
>
> * If ''O'' does not contain an ontology URI (and, consequently,  
> without a version URI as well), then ''O'' may be
> -- physically
> located anywhere.
> * If ''O'' contains an ontology URI ''ou'' but no version URI, then  
> ''O'' <em title="SHOULD in RFC 2119 context"  
> class="RFC2119">SHOULD</em> be
> -- physically 
> located at the location ''ou''.
> * If ''O'' contains an ontology URI ''ou'' and a version URI  
> ''vu'', then ''O'' <em title="SHOULD in RFC 2119 context"  
> class="RFC2119">SHOULD</em> be
> -- physically 
> located at the location ''vu'' and
> // may, // should, ## to have at least one version be at the  
> ontology URI
> in addition, be
> -- physically 
> located at the location ''ou'',
> ++ unless there is another ontology with ontology URI ''ou''  
> located at ''ou''. ## ditto

I think it would be clearer to no mix the issue of needing some  
version of the ontology located at ou with the issue of vu located  
ontologies. Rather something along the lines of there should be a  
current version of the ontology, coupled with the below comment  
regarding "current"

>
> Thus, the
> // most recent // current ## the current version may not be the  
> most recent
> version of an ontology series with some URI ''ou'' <em  
> title="SHOULD in RFC 2119 context" class="RFC2119">SHOULD</em> be  
> accessed from ''ou''.
> -- using a suitable (Internet) protocol. ## this is implicit in the  
> URI

I think this is a definition of "current". So I would move it higher,  
and then below it say there should exists a current version of any  
ontology.

> To access a particular version of ''ou'', one must know that  
> version's version URI ''vu''; then, the ontology <em title="SHOULD  
> in RFC 2119 context" class="RFC2119">SHOULD</em> be accessed from  
> ''vu''.
> -- using a suitable (Internet) protocol. ## ditto
> -- If the document accessed from u contains an ontology URI and  
> optionally, if it contains a version URI, and neither is u, then  
> the importing ontology <em title="SHOULD in RFC 2119 context"  
> class="RFC2119">SHOULD</em> be considered syntactically invalid. ##  
> I don't view this as a syntax problem.  The prior text on locations  
> already makes this an abberant situation.
>
> <div class="anexample">
> An ontology ''O'' containing an ontology URI ''<nowiki>http:// 
> www.my.com/example</nowiki>'' but no version URI should be
> -- physically 
> located at the address ''<nowiki>http://www.my.com/example</ 
> nowiki>''. In contrast, an ontology ''O<nowiki>'</nowiki>''  
> containing an ontology URI ''<nowiki>http://www.my.com/example</ 
> nowiki>'' and a version URI ''<nowiki>http://www.my.com/example/2.0/ 
> </nowiki>'' should be
> -- physically 
> located at the address ''<nowiki>http://www.my.com/example/2.0/</ 
> nowiki>''. In both cases, the ontology should be retrievable from  
> the respective addresses using the HTTP protocol.
> </div>
>
> OWL 2 tools will often need to implement functionality such as  
> caching or off-line processing, where the
> -- physical 
> location of stored ontologies differs from their
> -- permanent ## also not something that should be stated
> locations (as dictated by the ontology URI and the version URI). In  
> such cases, OWL 2
> ++ tools
> may implement

OWL 2 isn't the sort of thing that "implements". OWL 2  
implementations may implement...

> a ''location redirection'' mechanism: when the user requests to  
> open an ontology at location ''u'', the tool can translate ''u'' to  
> a different location ''u<nowiki>'</nowiki>'' and access the  
> ontology from there. The result of parsing the ontology located at  
> ''u<nowiki>'</nowiki>'' must be the same as if the ontology were  
> retrieved from ''u''. Furthermore, once the ontology is parsed, it  
> <em title="SHOULD in RFC 2119 context" class="RFC2119">SHOULD</em>  
> satisfy the three conditions from the beginning of this section in  
> the same way as if it were retrieved from ''u''.

What about an ontology that has not yet been published at u, so  
retrieving it is not possible, such as when one is editing a new  
ontology. Or even if it is published at u, but you edit the local  
version and aren't ready to publish it as the changes are under review.

> This
> // document // specification
> does not specify any particular location redirection mechanisms  
> &mdash; these are assumed to be implementation dependent.
>
> <div class="anexample">
> To enable off-line processing, an ontology ''O'' containing an  
> ontology URI ''<nowiki>http://www.my.com/example</nowiki>'' might  
> be stored in a file with a location ''<nowiki>file:/C:/Temp/ 
> example.owl</nowiki>''. When opening an ontology with a URI  
> ''<nowiki>http://www.my.com/example</nowiki>'' in an OWL 2 tool,  
> the tool can redirect this URI to ''<nowiki>file:/C:/Temp/ 
> example.owl</nowiki>'' and retrieve the ontology from there. The  
> retrieved ontology should satisfy the location constraints: if the  
> ontology contains only the ontology URI, then the ontology URI  
> should be equal to ''<nowiki>http://www.my.com/example</nowiki>'',  
> and if the ontology contains both the ontology and the version URI,  
> then one of them should be equal to ''<nowiki>http://www.my.com/ 
> example</nowiki>''.
> </div>
>
> === Versioning of OWL 2 Ontologies ===
>
> The conventions regarding the location of ontologies described in  
> [[#Physical_Locations_of_OWL_2_Ontologies|Section 3.2]]
Adjust header and link to remove "Physical".
> provide a simple mechanism for versioning OWL 2 ontologies. An  
> ontology series is
// identified using // associated with  ## the current ontology is  
identified by the ontology URI
>  an ontology URI, and each version in the series is assigned a  
> different version URI. The ontology representing the current  
> version of the series <em title="SHOULD in RFC 2119 context"  
> class="RFC2119">SHOULD</em>
See argument above re: defining: "The ontology representing the  
current version of the series is defined to be the one that is  
located at the ontology URI.
> be
>>
> -- physically
> located at ''both'' the ontology URI and its version URI;
if present? (the version URI) Are there situations where there must  
be a version URI?
> previous versions are
> -- physically
> located solely at their respective version URIs. When a new version  
> ''O'' in the ontology series is created, the ontology ''O'' <em  
> title="SHOULD in RFC 2119 context" class="RFC2119">SHOULD</em>  
> replace the one located at the ontology URI (and it <em  
> title="SHOULD in RFC 2119 context" class="RFC2119">SHOULD</em> also  
> be accessible from its version URI).
>
> <div class="anexample">
> The current version of an ontology series might be located at a URI  
> ''<nowiki>http://www.my.com/example</nowiki>'', as well as the  
> location ''<nowiki>http://www.my.com/example/2.0/</nowiki>'' for  
> the particular version. When a new version is created, the previous  
> version
// should // could ## perhaps with a note advising that this is good  
practice.
> remain accessible at ''<nowiki>http://www.my.com/example/2.0/</ 
> nowiki>''; the new version, called, say, ''<nowiki>http:// 
> www.my.com/example/3.0/</nowiki>'', would be placed at locations  
> ''<nowiki>http://www.my.com/example/</nowiki>'' and  
> ''<nowiki>http://www.my.com/example/3.0/</nowiki>''.
> </div>
>
> === Imports ===
>
> An ontology can import a set of other ontologies in order to gain  
> access to their entities, expressions, and axioms, thus providing  
> for ontology modularization.
>
> <div class="anexample">
> Assume that one wants to describe research projects about diseases.  
> Managing information about the projects and the diseases in the  
> same ontology might be cumbersome. Therefore, one might create a  
> separate ontology ''O'' about diseases and a separate ontology  
> ''O<nowiki>'</nowiki>'' about projects. The ontology ''O<nowiki>'</ 
> nowiki>'' would import ''O'' in order to gain access to the classes  
> representing diseases; intuitively, this allows one to use the  
> diseases from ''O'' when writing the axioms of ''O<nowiki>'</ 
> nowiki>''.
> </div>
>
> Figure 1 presents the logical view of the import relation, which  
> holds between two ''ontologies''. In concrete syntaxes, however,  
> the importing ontology only contains a URI identifying the location  
> of the imported ontology. This location <em title="SHOULD in RFC  
> 2119 context" class="RFC2119">SHOULD</em> be interpreted as  
> specified in [[#Physical_Locations_of_OWL_2_Ontologies|Section  
> 3.2]] in order to access the imported ontology.
>
> <div class="anexample">
> Assume that an ontology ''O''
> -- logically ## same reason as for "physically"
> imports another ontology ''O<nowiki>'</nowiki>'', which has the  
> ontology URI ''<nowiki>http://www.my.com/example/</nowiki>'' and  
> the version URI ''<nowiki>http://www.my.com/example/2.0/</ 
> nowiki>''. In a concrete syntax, ''O'' would contain the location  
> of ''O<nowiki>'</nowiki>''; in the functional-style syntax, ''O''  
> would be written as follows.
>
> <div class="axioms">
> Ontology(&lt;''<nowiki>http://example.org/importing-ontology</ 
> nowiki>''&gt;<br />
> &nbsp;&nbsp;&nbsp; Import(&lt;''<nowiki>http://www.my.com/example/ 
> 2.0/</nowiki>''&gt;)<br />
> <br />
> ...<br />
> )
> </div>
>
> The location of the imported ontology can be redirected, as  
> described in [[#Physical_Locations_of_OWL_2_Ontologies|Section 3.2]].
Fix "Physical" in link.
> For example, the ontology ''<nowiki>http://www.my.com/example/2.0/</ 
> nowiki>'' might be
> -- physically 
// stored at location// located at

> ''<nowiki>file:/C:/Temp/imported.v20.owl</nowiki>''. Location  
> redirection can thus be used to work with ontologies locally  
> without the need for editing the ontologies and fixing the import  
> relationships between them.
> </div>
>
> -- ## This example is unnecessary and misleading.
> -- <div class="anexample">
> -- The version of the imported ontology ''O<nowiki>'</nowiki>'' is  
> fully determined by the URI occurring in the import specification  
> of the importing ontology ''O''. In the previous example, ''O''  
> specified a location of a particular version of ''O<nowiki>'</ 
> nowiki>''. In contrast, the following ontology imports the most  
> recent version of ''<nowiki>http://www.my.com/example/</nowiki>''.
> -- 
> -- <div class="axioms">
> -- Ontology(&lt;''<nowiki>http://example.org/importing-ontology</ 
> nowiki>''&gt;<br />
> -- &nbsp;&nbsp;&nbsp; Import(&lt;''<nowiki>http://www.my.com/ 
> example/</nowiki>''&gt;)<br />
> -- <br />
> -- ...<br />
> -- )
> -- </div>
> -- </div>
>
> An ontology ''O'' ''directly imports'' an ontology ''O<nowiki>'</ 
> nowiki>'' if ''O'' contains an import construct
> // whose value is the ontology URI of ''O<nowiki>'</nowiki>''.  //  
> with URI ''u'' and ''O<nowiki>'</nowiki>''is the ontology located  
> at ''u''. ## Change this to use location-based wording.
> The relation ''imports'' is defined as a transitive closure of the  
> relation ''directly imports''. Finally, the ''import closure'' of  
> ''O'' consists of ''O'' and each ontology that ''O'' imports.
>
> // An ontology ''O'' <em title="SHOULD in RFC 2119 context"  
> class="RFC2119">SHOULD</em> be considered syntactically invalid if  
> the import closure of ''O'' contains // The imports closure of an  
> ontology <em title="SHOULD NOT in RFC 2119 context"  
> class="RFC2119">SHOULD NOT</em> contain ## Move to a location-based  
> wording
> ontologies ''O<sub>1</sub>'' and ''O<sub>2</sub>'' such that
>
> * ''O<sub>1</sub>'' and ''O<sub>2</sub>'' are different ontology  
> versions from the same ontology series, or
> * ''O<sub>1</sub>'' contains an ontology annotation  
> ''owl:incompatibleWith'' with the value equal to either the  
> ontology or the version URI of ''O<sub>2</sub>''.

I still want owl:incompatibleWith to be decoupled from the ontology  
header. Shall I raise this as a separate issue?

> The ''axiom closure'' of an ontology ''O'' is the smallest set that  
> contains all the axioms from each ontology ''O<nowiki>'</nowiki>''  
> in the import closure of ''O'' with all anonymous individuals  
> ''renamed apart'' &mdash; that is, the anonymous individuals from  
> different ontologies in the import closure of ''O'' are treated as  
> being different; please refer to [[#Anonymous_Individuals|Section  
> 4.6.2]] for more information.

Why re-specify what renaming apart it. Better to cite the existing  
http://www.w3.org/TR/rdf-mt/ where.
> A merge of a set of RDF graphs is defined as follows. If the graphs  
> in the set have no blank nodes in common, then the union of the  
> graphs is a merge; if they do share blank nodes, then it is the  
> union of a set of graphs that is obtained by replacing the graphs  
> in the set by equivalent graphs that share no blank nodes.
>
Or if you want to do so in order to make OWL RDF independent, then  
cite this as the appropriate interpretation for the RDF.

> In OWL 1, ''owl:imports'' was a special ontology property that was  
> used to specify that an ontology imports another ontology. In OWL  
> 2, imports are not ontology annotations
> , but are a separate primitive; the ''owl:imports'' annotation  
> property
// has no built-in meaning in OWL 2.//  does not have any formal  
semantics //
or it as easy as just saying it is a regular annotation property.  
Saying that it has no meaning is confusing.

-Alan

Received on Tuesday, 24 June 2008 17:03:45 UTC