W3C home > Mailing lists > Public > www-rdf-logic@w3.org > February 2004

RE: Datatype restricted- allValuesFrom

From: Luis Bermudez <leb27@drexel.edu>
Date: Wed, 18 Feb 2004 09:42:39 -0500
To: "'Peter F. Patel-Schneider'" <pfps@research.bell-labs.com>
Cc: www-rdf-logic@w3.org
Message-id: <200402181442.i1IEgx826164@glue.irt.drexel.edu>

Dear Peter:

Thanks for your fast response. 

I showed a small example of a my real problem, that is extending an
ontology, which I cannot change (e.g. resources form datatype to object
property), by restricting datatype property to only have values of a certain
class (e.g. Resource B).

So when doing :

<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">b2</rdf:first>
		</rdf:List>
	      </rdf:rest>
	    </rdf:List>
          </owl:allValuesFrom>
         <owl:onProperty rdf:resource ="#hasB"/>         
       </owl:Restriction>
     </rdfs:subClassOf>
   </owl:Class>

There is no longer any reference that b1 and b2 are individuals of B
Then you could say that they could be typed as  nm:b1...., This does not
work for me because is a big list of individuals, and they could constantly
change.

So I think I cannot use OWL-DL.

Thanks again.

Luis Bermudez


 

-----Original Message-----
From: Peter F. Patel-Schneider [mailto:pfps@research.bell-labs.com] 
Sent: Wednesday, February 18, 2004 9:01 AM
To: leb27@drexel.edu
Cc: www-rdf-logic@w3.org
Subject: 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:43:00 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:52:48 GMT