RDFS bug "A property can have at most one range property"

From: Tim Berners-Lee <timbl@w3.org>
Date: Mon, 11 Sep 2000 12:30:08 -0400
Message-ID: <00dd01c01c0d\$8cf31f70\$84001d12@w3.org>
Cc: <www-rdf-interest@w3.org>
```Apologies for the late submission of this comment on RDF-Schema
http://www.w3.org/TR/2000/CR-rdf-schema-20000327/

On looking at the excellent analysis
"A Logical Interpretation of RDF" Wolfram Conen
and Reinhold Klapsing can be accessed at:
http://nestroy.wi-inf.uni-essen.de/rdf/logical_interpretation.ps
(Postscript-Format)
http://nestroy.wi-inf.uni-essen.de/rdf/logical_interpretation.pdf
(PDF-Format)
http://nestroy.wi-inf.uni-essen.de/rdf/logical_interpretation/index.html
(HTML-Format)
see http://lists.w3.org/Archives/Public/www-rdf-interest/2000Aug/0122.html

(an great sort of thing to happen during CR period , BTW), I find that it
points out where there is clearly a bug in
http://www.w3.org/TR/2000/CR-rdf-schema-20000327/#s3.1.3
in that it says that "A property can have at most one range property. "
This basically doens't mean anything on the web.

(Why haven't I spotted that before? I guess just skipped over range and
domain
assuming they had their normal meanings).

An redfs:range statement about a Property allows one to infer a Class of
anything which is the value of that property. The semantics are

rdf:type(x,s)   <= rdfs:range(p,s)  & p(y,x)

For example, if s is a range of p, then also so is any t superset of s.

It is quite reasonable to make two range statements, which together
of course imply that any value must be in the intersection of the ranges
given.

Saying range(p,t)  should not be illegal! In other words, Conen & Klapsing's
range_cardinality_violation (equation 22) should not be a violation of
anything.

Ironically, an example of the correct semnatics fo range is actually given:
"The rdfs:range of rdfs:range is the class rdfs:Class. This indicates that
any resource that is the value of a range property will be a class. "

This is a closed world type of problem.  The "it is not permitted to express
two or more range constraints on a property"  doesn't specify a scope within
which those delcarations are made. A global scope is of course impossible to
ever validate - how can you know whether anyone else has expressed a range
constraint on a given property?

The note in the spec deals with the problem of expressing the range being a
union and mentions that you can't (of course) do that with mutiple range
statements.

Please remove the offending wording from the spec.

Tim BL
________________________________________________________________

PS: The analysis also demonstrates the problem with domain in the not sign
in eqn20, showing domain is meaningless as stated in the spec, but this bug