- From: Phil Dawes <pdawes@users.sf.net>
- Date: Tue, 4 May 2004 20:58:23 +0100
- 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 UTC