W3C home > Mailing lists > Public > www-rdf-interest@w3.org > May 2004

Re: less-restrictive range and domain terms

From: Phil Dawes <pdawes@users.sf.net>
Date: Tue, 4 May 2004 20:58:23 +0100
Message-ID: <16535.62943.723790.883851@gargle.gargle.HOWL>
To: Benjamin Nowack <bnowack@appmosphere.com>
Cc: www-rdf-interest@w3.org

Hi Benjamin,

Thanks for the tip - I hadn't considered using owl:UnionOf to keep the
range unrestrictied. Unfortunately I'm not sure that it has the same
utility as a phil:rangeIncludes statement since an rdf store won't
automatically merge the two rdfs:range constructs:

 >    <rdf:Property rdf:about="&foaf;knows">
 >       <rdfs:range>
 >          <owl:Class>
 >             <owl:unionOf rdf:parseType="Collection">
 >                <owl:Class rdf:about="&rdfs;Resource"/>
 >                <owl:Class rdf:about="&ex1;SoftwareDeveloper"/>
 >             </owl:unionOf>
 >          </owl:Class>
 >       </rdfs:range>
 >    </rdf:Property>

and 

 >    <rdf:Property rdf:about="&foaf;knows">
 >       <rdfs:range>
 >          <owl:Class>
 >             <owl:unionOf rdf:parseType="Collection">
 >                <owl:Class rdf:about="&rdfs;Resource"/>
 >                <owl:Class rdf:about="&ex2;PopStar"/>
 >             </owl:unionOf>
 >          </owl:Class>
 >       </rdfs:range>
 >    </rdf:Property>


such that I can run a query to get the 'possible ranges known about'.

whereas 

 > foaf:knows phil:rangeIncludes ex1:SoftwareDeveloper
and 
 > foaf:knows phil:rangeIncludes ex1:PopStar

will merge nicely such that I can do something internally along the
lines of 
'select ?typehint where (foaf:knows, phil:rangeIncludes ?typehint)'.


Am I missing something?

Many thanks,

Phil


Benjamin Nowack writes:
 > 
 > On 04.05.2004 15:51:52, Phil Dawes wrote:
 > >
 > >Hi All,
 > >
 > >I've recently found myself wanting a less-restrictive version of
 > >rdfs:range (or owl:allValuesFrom) and rdfs:domain. I want to say
 > >'property *can* have range of class foo' rather than 'property *must*
 > >have range of class foo'.
 > >
 > >I first came across this requirement with my veudas RDF browser when
 > >consuming RDF without schema information. Hints like 'can have range'
 > >help when rendering the editing UI. They can also be inferred easily
 > >from the RDF.
 > 
 > hmm, not 100% sure about this (it's either OWL fullish or OWL foolish ;),
 > but if your tool is RDF-based and you're doing some kind of "incremental
 > schema generation" or just want to optimize the tools usability, you
 > could maybe use OWL to store/keep additional information about certain
 > properties:
 > 
 > let's say, your tool comes across the following statement but has
 > never heard of FOAF or can't read/find the rdfs doc:
 > 
 >    :p1 foaf:knows :p2
 >    :p3 foaf:knows :p4
 > 
 > you could auto-generate an unrestriced description for foaf:knows:
 > 
 >    <rdf:Property rdf:about="&foaf;knows">
 >       <rdfs:range>
 >          <owl:Class>
 >             <owl:unionOf rdf:parseType="Collection">
 >                   <!- can a collection have a single item? -->
 >                <owl:Class rdf:about="&rdfs;Resource"/>
 >             </owl:unionOf>
 >          </owl:Class>
 >       </rdfs:range>
 >    </rdf:Property>
 > 
 > this should not change the meaning of the foaf spec so far
 > (open world blabla), for if you later find and add the statements
 > from the official foaf spec:
 > 
 >    <rdfs:range rdf:resource="&foaf;Person"/>
 > 
 > the multiple range restrictions are interpreted as
 > intersection, resulting in the one from the foaf
 > schema.
 > 
 > but let's assume your tool finds
 > 
 >    :p2 rdf:type ex1:SoftwareDeveloper
 >    :p4 rdf:type ex2:PopStar
 > 
 > then you could extend your range list:
 > 
 >    <rdf:Property rdf:about="&foaf;knows">
 >       <rdfs:range>
 >          <owl:Class>
 >             <owl:unionOf rdf:parseType="Collection">
 >                <owl:Class rdf:about="&rdfs;Resource"/>
 >                <owl:Class rdf:about="&ex1;SoftwareDeveloper"/>
 >                <owl:Class rdf:about="&ex2;PopStar"/>
 >             </owl:unionOf>
 >          </owl:Class>
 >       </rdfs:range>
 >    </rdf:Property>
 > 
 > this is obviously redundant information but OWL tools should
 > be able to process it. Once you know the foaf spec you can
 > replace rdfs:Resource with foaf:Person.
 > 
 > w.r.t your editing tool, you could now display the "shortcuts"
 > 
 >    "add another ex1:SoftwareDeveloper to your foaf:knows relations"
 >    "add another ex2:PopStar to your foaf:knows relations"
 > 
 > in your GUI, possibly offering a restriced list of resources to
 > pick from, or an optimized input form, ...
 > 
 > 
 > just some thoughts. note that it would be quite easy to confuse
 > the tool by just feeding it inconsistent instance data..
 > 
 > benjamin
 > 
 > --
 > Benjamin Nowack
 > 
 > Kruppstr. 100
 > 45145 Essen, Germany
 > 
 > 
 > 
Received on Tuesday, 4 May 2004 16:59:45 GMT

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