RE: Property Value Ranges

John,
	I'm not sure why you're uncomfortable with expressing
constraints on an individual's property value using class-based
mechanisms.  When you get right down to it, OWL only allows you to say
what classes an individual belongs to and what values it *does* have for
properties.  Anything more complicated than that, such as what values it
*doesn't* have or which values it *could* have, are handled by defining
class and property expressions, then relating the individual to these
expressions with <rdf:type>.
	A significant amount of the OWL language is, technically, syntax
shortcuts that could be rewritten into other forms, all built on a
handful of "primitive" constructs.  If your concern is simply that the
new version of OWL won't have shortcuts for things you want to be able
to model easily, you should certainly provide that feedback.  Of course,
since you obviously have some experience in defining some syntax of your
own, you might also consider using an extended version of OWL with
special syntax that better meets your needs, so long as that syntax can
be readily translated (using XSLT, for instance) into standard OWL that
can then be fed to a reasoner or other processing tools.
	All that said, I think your example could be expressed with
something like the following, which (disclaimer!) I have not tested with
any tools.  Hopefully, any errors on my part will be corrected in short
order by those on the list more experienced than I. :)  Several
variations on the means to define the allowed values are possible, if
you don't care for the use of <owl11:pattern>, which I chose simply
because it is the most compact (and because I'm a regexp junkie).

<owl:Thing rdf:about="#a">
  <rdf:type>
    <owl:Restriction>
      <owl:onProperty rdf:resource="#P"/>
      <owl:allValuesFrom>
        <owl:DataRange>
          <owl11:onDataRange
rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
          <owl11:pattern
rdf:datatype="http://www.w3.org/2001/XMLSchema#string">[b-ln-y]</owl11:p
attern>
        </owl:DataRange>
      </owl:allValuesFrom>
    </owl:Restriction>
  </rdf:type>
</owl:Thing>

	If you find this somewhat verbose expression as part of the
definition of an individual to be distasteful, I'd ask what it is about
this one individual that motivates this restriction upon its value for
this property.  My inclination is to say that this motivation is
probably some aspect of this individual and that this aspect should be
named and defined as a class in your ontology, in which case the
declaration that this individual has that aspect would be a simple
assignment of the individual as a member of the class and your property
value restriction would be accomplished, neat and clean.

-Brandon :)

-----Original Message-----
From: public-owl-dev-request@w3.org
[mailto:public-owl-dev-request@w3.org] On Behalf Of John McClure
Sent: Wednesday, August 22, 2007 2:57 PM
To: Owl Dev
Subject: Property Value Ranges


I'm uncomfortable with the answer given for axioms about instance
property
values -- the answer used a <Restriction> element which is mechanism for
class
definitions. I'm concerned about the impact of this approach on
user-queries of
a knowledge-base and also on its maintenance by developers

Let's consider for a moment that one wants to say an instance 'a' has a
property
'P' that has an exclusive range of values a-z, with the exception of
value 'm'
(and, being exclusive, of the endpoints). To me, that is a simple matter
of

<owl:Thing rdf:about="#a">
     <P verb='has'>
          <Range>
	<Minimum verb='has' rdf:value='a'/>
	<Maximum verb='has' rdf:value='z'/>
	<Value verb='hasNot' rdf:value='a'/>
	<Value verb='hasNot' rdf:value='z'/>
	<Value verb='hasNot' rdf:value='m'/>
          </Range>
     </P>
</owl:Thing>

Would someone provide the OWL 1.1 equivalent coding (in XML)? I'm
wondering if
the values for P are spread across <rdf:type> and <P> element structures
rather
than packaged in a single element as shown above.

Though feasible, using <rdf:type> elements to specify property values
that an
instance *does or doesn't have* seems strange from the perspective that
it's
hard to understand the actual significance of the extent of a class so
obviously
artificial.

Thanks,
John McClure

Received on Thursday, 23 August 2007 02:17:53 UTC