Re: why do owl:DataRange's need to be blank nodes?

On 26 Jun 2011, at 14:10, Lee Feigenbaum wrote:

> On 6/26/2011 6:31 AM, Bijan Parsia wrote:
>> On 25 Jun 2011, at 19:27, Lee Feigenbaum wrote:
>> 
>>> The OWL 1 documents clearly if subtly say that for an enumerated data
>>> type being expressed in RDF, the owl:DataRange that is the subject of
>>> an owl:oneOf statement should be a blank node. I have a couple of
>>> questions about this:
>>> 
>>> 1) Why is this? Is there any harm (other than violating the spec, of
>>> course) in giving a URI to an owl:DataRange?
>> 
>> The canonical reason is to prevent assertions about the datarange that
>> we can't handle. (OWL Full obviously allows this.) Naming datatypes can
>> be dangerous as it can be hard to control what you subsequently say
>> about them. Just consider the (overly tight) restrictions on datatype
>> definitions in OWL 2:
>> http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Datatype_Definitions
>> http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#The_Restrictions_on_the_Axiom_Closure
>> (In the latter, look at the example.)
>> 
>> In general, for OWL DL, the pattern in the RDF syntax is to use fresh
>> bnodes always for each syntactic construct to prevent accidently
>> equating of things you didn't intend to equate.
> 
> I see, thanks Bijan. I do kind of wish that the restrictions were just stated explicitly, rather than relying on a restriction to blank nodes.

There's a history :)

The straightforwardest way to get into it is to think in functional syntax and then transform to triples. I'm sure all the constraints *could* be stated directly as constraints on triples, but I find that hard to wrap my head around.

> Can't I still say many things I shouldn't be able to about things named with a blank node, as long as I'm saying them in the same document that I'm initially referencing the blank node?

No, because these are forbidden, via the no structure sharing condition. This might be helpful:
	http://www.w3.org/TR/owl-parsing/


> _:b a owl:DataRange ; owl:oneOf ( ... ) ; owl:naughtyPredicate ... .
> ...
> <somethingElse> owl:otherNaughtyPredicate _:b .
> 
> ?

In the transformation to triples you'll see that you need a fresh bnode for the syntax construction.

So we're not relying on the bnodeness alone.



>>> 2) Is this same restriction reflected in the OWL 2 documents? I've
>>> tried to find it, but have been unsuccessful, so would appreciate any
>>> pointers.
>> 
>> Yes.
>> 
>> http://www.w3.org/TR/2009/REC-owl2-mapping-to-rdf-20091027/
>> 
>> Table 12, 14 and Table 1 to go from FS to triples.
> 
> I see, thanks again.
> 
>> However, you can name dataranges via the datatype definition mechanism.
>> Since naming data ranges is the only reason I can thing of to not use a
>> bnode in the syntax, I hope that suffices. Does it?
> 
> In theory, I guess this does provide a similar mechanism -- in practice, some tools we use mint URIs for all types, including data ranges,

This is ok as long as you use the datatype definition mechanism.

> and some other OWL implementations are throwing exceptions when encountering them, so we'll have to work on changing our tools, I suppose.

That'd be wise, I think.

If these are defined outside of OWL entirely then new IRIs extending the datatype map should be find, but tools unaware of those definitions will hork. (E.g., if you pointed to a restriciton in an XML Schema.)

Cheers,
Bijan.

Received on Sunday, 26 June 2011 23:02:26 UTC