Datatypes, syntax and equality

I think much of the problem which seems to be occuring with RDF datatyping
efforts is a result of RDF assuming the XML "error" of treating everything
as a string i.e. there is no lexical distinction between "10" and the
integer 10, except as directed by a schema. The other problem is what types
of questions we are asking.The essense of the solution to this is that the
equality function needs to be predicated by the type of its arguments.

Now, assuming we introduce a syntactic type specification into literals e.g.


this all might play out relatively nicely, in that we can get all the
denotations we desire.

When using _untyped_ literals one MUST specify which 'equality' function is
being used, i.e. which type cast is being applied to the arguments. In the
absense of a specific type, then the answer is only YES (equal) or NO (not
equal) if this is the answer for all valid types for the literal.

For example:

A: untyped

:John :age "20" .
:Mary :size "20" .

Does John's age equal(string) Mary's size: YES
Does John's age equal(decimal) Mary's size:YES
Does John's age equal(binary) Mary's size: illegal syntax for type

it is YES for all valid equality functions => YES

The string "20" is not "in range" for all ranges (e.g. xsd:binary) but that
is a different question.

:John :age "10" .
:Billy :age "010" .

Does Billy's age equal(string) John's age? NO
Does Billy's age equal(decimal) John's age? YES

it has different values for different equality functions => UNKNOWN

B: typed

When using typed literals the equality function is predicated on the types
of the arguments

:John :age xsd:decimal"2" .
:Billy :age xsd:binary"10" .

Does Billy's age equal John's age: YES

:John :age xsd:decimal"2" .
:Billy :age xsd:binary"11" .

Does Billy's age equal John's age: NO

C: schema info

:John :age "10" .
:Billy :age "010" .

:age rdfdt:range xsd:decimal .

Does John's age equal(xsd:decimal) Billy's age? YES
Are "10" and "010" in range for xsd:decimal? YES

So the answer to _monotonicity_ is how you ask the question :-) that is
"equal" MUST BE predicated on the type of its arguments.


Received on Monday, 22 July 2002 11:04:38 UTC