Re: Datatype restricted- allValuesFrom

From: Luis Bermudez <leb27@drexel.edu>
Subject: Datatype restricted- allValuesFrom
Date: Wed, 18 Feb 2004 08:37:47 -0500

> Hi All:
>  
> I have the following questions:
>  
> 1. ) Could a datatype Property be restricted with  an "allValuesFrom"
> restriction ?

A quick examination of the non-RDF (abstract) syntax for OWL DL will
produce the knowledge that this is allowed in both OWL DL and OWL Lite.
(Look in Section 2.3.1.2 of OWL S&AS at http://www.w3.org/TR/owl-semantics.) 

>  (I think is possible, but it will be OWL-Full)
>  e.g. :
>  
>  <owl:DatatypeProperty rdf:ID="hasB">
>     <rdfs:domain rdf:resource="#A"/>
>  <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/
> <http://www.w3.org/2001/XMLSchema#string> >    
>   </owl:DatatypeProperty>
>   
>   <owl:Class rdf:ID="A">
>     <rdfs:subClassOf>
>       <owl:Restriction>
>         <owl:allValuesFrom rdf:resource ="#B"/>         
>          <owl:onProperty rdf:resource ="#hasB"/>
>       </owl:Restriction>
>     </rdfs:subClassOf>
>   </owl:Class>
>  
>   <owl:Class rdf:ID="B"/>
>   <B rdf:ID="b1"/>
>   <B rdf:ID="b2"/>

However, the above is OWL Full, as in OWL DL the restrictions on datatype
properties must be datatype classes, rdfs:Literal, or oneOf's on literals.

> 2.) If it is possible how should an individual look like?
>  
>  
>   <A rdf:ID="individual_a">
>     <hasB rdf:resource="#b1"/>
>   </A>
>  
> or 
>  
>  <A rdf:ID="individual_a"> 
>     <hasB>ns:b1<hasB>
>   </A>

These two have the same meaning to RDF, and thus to OWL.

>   3.) If I want to extend a datatype property so that it should be
> restricted to a set of individuals is  the previous the best way to go, or
> is there any work around to have it in OWL-DL ? 

Datatype properties in OWL DL have things like integers as their value.  I
think that what you really want here is not a datatype property, but
instead an objectproperty, as in the following:

   <owl:ObjectProperty rdf:ID="hasB">
     <rdfs:domain rdf:resource="#A"/>
     <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
   </owl:ObjectProperty>
   
   <owl:Class rdf:ID="A">
     <rdfs:subClassOf>
       <owl:Restriction>
         <owl:allValuesFrom rdf:resource ="#B"/>         
          <owl:onProperty rdf:resource ="#hasB"/>
       </owl:Restriction>
     </rdfs:subClassOf>
   </owl:Class>
  
   <owl:Class rdf:ID="B"/>
   <B rdf:ID="b1"/>
   <B rdf:ID="b2"/>


If you indeed want a datatype property you could go about it this way in
OWL DL.

   <owl:DatatypeProperty rdf:ID="hasB">
     <rdfs:domain rdf:resource="#A"/>
     <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
   </owl:DatatypeProperty>
   
   <owl:Class rdf:ID="A">
     <rdfs:subClassOf>
       <owl:Restriction>
          <owl:allValuesFrom>
	    <rdf:List>
	      <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">b1</rdf:first>
              <rdf:rest>
	        <rdf:List rdf:rest="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil">
		  <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string">b1</rdf:first>
		</rdf:List>
	      </rdf:rest>
	    </rdf:List>
          </owl:allValuesFrom>
         <owl:onProperty rdf:resource ="#hasB"/>         
       </owl:Restriction>
     </rdfs:subClassOf>
   </owl:Class>

> Thank you very much,
>  
> Luis Bermudez
> leb27@drexel.edu


Peter F. Patel-Schneider

Received on Wednesday, 18 February 2004 09:01:27 UTC