- From: Pat Hayes <phayes@ai.uwf.edu>
- Date: Mon, 25 Feb 2002 12:41:26 -0600
- To: w3c-rdfcore-wg@w3.org
Following Patrick's suggestion, I would like to urge that we allow
the use of rdfs:lrange. I know this looks like terminology-bloat, but
it makes possible a very elegant and I think easy-to-use way to
display the user options (see *** below).
In the interests of everyone's sanity, I will not put this up as yet
another web document.
On 2002-02-25 07:42, "Patrick Stickler" wrote:
>On 2002-02-24 22:05, "ext Aaron Swartz" <me@aaronsw.com> wrote:
>
>> On 2002-02-24 2:54 PM, "Pat Hayes" <phayes@ai.uwf.edu> wrote:
>>
> >> ex:age rdfs:range _:x .
> >> xsd:integer rdfs:range _:x .
>>>
>>> If that is acceptable, then that solves the problem, since it frees
>>> up the datatype name itself to have the value space as its extension
>>> when used as a class name.
>>
>> I have no problem with the basic concept behind this, but I think that this
>> specific version of it isn't going to work since it's impossible to write in
>> RDF/XML.
>
>One way to express the above semantics, which I've proposed
>before with no response whatsoever from anyone, is to use a
>specific range property that asserts a lexical space specific
>constraint on property values.
>
>I.e. rdfs:lrange.
>It can be easily expressed in RDF/XML.
>
>It has clear, reasonably mnemonic meaning to users.
>
>It leaves rdfs:range to denote constraint to value space.
Right, I like this idea and suggest that we adopt it. So the
definition of rdfs:lrange is as follows:
aaa rdfs:lrange ddd .
means that the rdfs:range of aaa is the lexical space of the datatype ddd .
(The MT is:
IEXT(I(rdfs:lrange)) = {<x,y> : <u,v> in IEXT(x) implies L2V(y)(v)
is defined }
That makes this synonymous with
aaa rdfs:range _:x .
ddd rdfs:range _:x .
but we can relegate that to an appendix somewhere. We also have to
say what rdfs:lrange means if ddd is not a datatype. It could still
mean the same as the bnode pair, or it could be vacuous. Whatever, a
technical niggle.)
>.....
>I don't want to reduce the utility of RDF datatyping for WebOnt, but
>at the same time, don't want to see it too cumbersome and confusing
>for the metadata and content management communities also.
Fair enough, even though our priorities differ.
***
I really do not think that this proposal is cumbersome or confusing.
Clear your minds for a second of all the debates, take a deep breath,
and imagine, if you can, a blank sheet of paper, and then write this
on it:
-----
aaa rdfs:range xsd:number .
just means the range of aaa is the set of numbers, ie the value space
of the datatype (and has no special datatyping effect on any
literals.)
-----
aaa rdfs:lrange xsd:number .
just means the range of aaa is the set of numerals, ie the lexical
space of the datatype (and has no special datatyping effect on any
literals.)
-----
aaa rdfs:drange xsd:number .
doesn't say ANYTHING about the rdfs:range, but it does impose
datatype-checking on literals (used in either mode, ie with an
rdfs:dlex triple - when the bnode is constrained to the datatype
value of the literal - or the S-B idiom - when the literal is
constrained to be in the lexical space of the datatype; see the
figure in
http://www.coginst.uwf.edu/users/phayes/simpledatatype23-02-2002.html)
Intuitively, the first is all about the value space, the second is
all about the lexical space, and the last is all about the
lexical-to-value mapping (and what it does to literals).
-----
So if you want to be DC-sloppy, just use rdfs:drange; you get full
datatype checking but no range constraints. (The range could be the
union in this case, or it could be something else.) If you want to be
precise about your ranges, use one of the first two options. If you
want to be precise and also use datatype-checking, use one of the
first two plus the third (it works with either one equally well, so
that range precision can be added later without having to re-do the
datatyping).
If you want to be precise about ranges, do datatyping and ALSO allow
sloppiness, all at the same time, then you have to be slightly
clever, and use three properties such as ageAsNumber/ageAsString/age,
with the first two being subproperties of the last one and the three
options applied to each one (in that order.) This provides both
'exact' options and also the 'sloppy' option, but the same datatyping
works for them all. This is the only time you have to think about
schemas.
Pat
PS. Just as a general plea to the WG: OK, we have to coddle our
DC-style users. But please, guys, bear in mind that having RDF be a
foundation for Webont is not just a sci-fi fantasy. It is really the
only long-term reason for having RDF around. It is vitally important
that RDF be provided with at least a minimal ability to express what
needs to be said in a semantically precise way. It is going to have
to be able to express, maybe indirectly, *any* content that can be
said in *any* Web language. Already there is enormous 'layering'
hooha going on which arises from RDF's weaknesses as a foundation. If
we make it so dumbed-down that it can ONLY be used for DC-style apps,
then we will have shot Webont in the foot.
PPS. It occurs to me that we could use the name rdfs:dcrange rather
than drange, and say that it means "Datatype Check on range". That
might make the DC users feel even more at home.
--
---------------------------------------------------------------------
IHMC (850)434 8903 home
40 South Alcaniz St. (850)202 4416 office
Pensacola, FL 32501 (850)202 4440 fax
phayes@ai.uwf.edu
http://www.coginst.uwf.edu/~phayes
Received on Monday, 25 February 2002 13:41:35 UTC