annotations - proposed solution

Summary: Annotations are normal datatype or obejct properties which do not 
syntactically participate in any restrictions, or have inverses, or be 
declared as transitive or symmetric. They are given the semantics from RDFS.


The "any restrictions" covers domain, range, FunctionalProperty etc.
======================================================

My prefered solution for annotations is as follows:

For textual annotations, such as rdfs:comment and rdfs:label, the properties 
used in the annotations are declared as owl:DatatypeProperty's in the usual 
way. (The two rdfs props are builtin and do not need to be declared) When 
used on individuals the triple corresponds to a propertyValue in the abstract 
syntax, and is given meaning by the direct semantics. When used on an 
ontology, class or property the triple corresponds to an annotation in the 
abstract syntax.

To avoid the semantic confusion (between these two visual similar but 
semantically distinct usages) that could arise we restrict such as properties 
to be simple datatype properties which are syntactically limited in how much 
they can be involved in the ontology viz:

[[
simple datavalued properties
=======================
 These may have super and sub properties (the super properties too must be 
simple datavalued) the subproperties must be datavalued. They may have 
equivalent properties, which must be simple datavalued properties. They may 
not have domain or range constraints, or participate in any restriction, or 
be declared as functional. They may be used both as annotations and within 
the ontology on individuals. 
]]

Taken from my proposed modifications to the syntax
http://lists.w3.org/Archives/Public/www-archive/2003Jan/att-0107/01-t


Moreover to fix the problems with annotations and entailments that I have 
earlier reported, the definition of OWLDL-entailment between RDF/XML 
documents is modified to be:

OWL Lite/DL Entailment between RDF/XML documents
============================================
Given an RDF file X whose import closure has abstract syntax representation X' 
and an RDF file Y whose import closure has abstract syntax representation Y', 
then X X DL-entails Y if and only if both X' direct-entails Y' and the import 
closure of X rdfs-entails the subset of the imports closure of Y consisting 
of the annotation triples. 



===

Similarly for object properties I propose that the mechanim of 
owl:ObjectProperty is usable.

Viz:

simple object properties
===================
 These may have super and sub properties (the super properties too must be 
simple object valued) the subproperties must be object valued. They may have 
equivalent properties, which must be simple object properties. They may not 
have domain or range constraints, or participate in any restriction, or be 
declared as functional, inversefunctional etc. They may be used both as 
annotations and within the ontology on individuals. 




************************************

Most of this type of behaviour is well known in RDFS.
One specific RDF behaviour that is not supported is the use of dc:creator both 
with string values and with blank node values (where the blank node is 
further qualified with rdf:value and Dublin Core qualifiers).
Since we have no proposal on the table that covers the second case, and the 
definition of dc:creator is clearly speaking about the name of the author I 
am not too worried about treating dc:creator as a DatatypeProperty.

=============

Example of use:


<owl:Class rdf:ID="Classics">
   <rdfs:subClassOf>
      <owl:Class rdf:about="#Books"/>
   </rdfs:subClassOf>
   <dc:creator>Jeremy</dc:creator>
</owl:Class>

<!-- OK, so its really a play -->
<Book rdf:ID="Romeo-and-juliet">
  <dc:creator>Shakespeare</dc:creator>
</Book>

<owl:DatatypeProperty rdf:about="&dc;creator">
  <rdfs:comment>
    Note this is appropriate for use in annotations.
  </rdfs:comment>
</owl:DatatypeProperty>


However if I add the following axiom:

<owl:Restriction>
  <owl:onProperty rdf:resource="&dc;creator"/>
  <owl:hasValue>Shakespeare</owl:hasValue>
  <rdfs:subClassOf>
     <owl:Class rdf:about="#Classics"/>
  </rdfs:subClassOf>
</owl:Restriction>

then I move into OWL Full on syntactic grounds - dc:creator can't be a simple 
datatype property, because it is used (syntactically) in a restriction. Thus 
it is not an appropriate annotation on a class, and the total file is no 
longer OWL DL.

Doing annotations this way also maintains a syntactic uniformity on the rules 
in annotations and the rules on the rest of the ontology. e.g. every node and 
every property used must have an explicit type, also in annotations.
This will make OWL easier to present and learn.


Jeremy

 

Received on Thursday, 30 January 2003 02:47:43 UTC