Tidy/untidy: that's all about assumptions, folks

In the heat of our argument about tidiness, we seem to be forgetting 
about a critical assumption that was suggested to justify untidy 
literals. Below, I'm questioning this assumption. If it holds, than 
untidy literals are a natural decision to make (and I voted for it last 
time), if it does not, there is no sufficient justification for 
introducing untidiness. What I'm arguing for is that we simply have to 
remove the prism we've been looking through recently, and untidiness 
goes away.

Recall the motivating example from the RDF 1.0 Spec:

foo dc:Creator "John Smith"

Is "John Smith" supposed to represent a person or a string? The key 
argument behind untidiness is that "John Smith" (or "10") cannot 
possibly be meant to be a string, so it has to be something else, whose 
meaning can be deduced using a right bit of logic and AI.

Or, consider our beaten up

:x age "10"
:y shoeSize "10"

Again, the claim of proponents of untidiness is that "10" cannot 
possibly be meant to denote a string, in both cases. Why? Because we can 
infer

:x age :z
:y shoeSize :z

supposedly meaning that the age of :x is the shoeSize of :y. Ok, we have 
datatyping now, so let's do it right:

:x age int"10"
:y shoeSize int"10"

Now we got it! int"10" is not a string now; it's what we want it to 
mean: an integer. Damn. The entailment

:x age :z
:y shoeSize :z

still holds...

Is there something wrong with the above modeling practice? Should 
int"10" itself be considered untidy, like those untyped literals?
Are all those folks who chose the above modeling style dumb? NO, they 
are not. Above, the properties age and shoeSize are merely used to 
restrict the valid interpretations of :x and :y. There is no claim that 
shoeSize is a property that holds between shoes and "shoe sizes". It's a 
property that holds between shoes and integers, thereby restricting the 
intepretation of :y. Just as well, shoeSize could be defined as a 
property that holds between shoes and strings/reals/etc.

An overwhelming majority of applications use exactly this metaphor. For 
example, look at the AdobeXMP documentation, where the range of
xapDynA:Volume is defined to be a Real. Did those folks want to assert 
that the abstract concept of volume coincides with real numbers? No. Or, 
what about CC/PP's

:x displayWidth int"640"  ?

After all, display width is not measured in integers, but in inches or 
centimeters...

My conclusion is that it is not necessary to claim that "John Smith" 
represents a person (and call for untidy literals), in order to achieve 
correct modeling. And, by no means have applications and APIs to be 
changed to reflect this "insight". The applications, and their 
developers, possess a consistent conceptual model of what dc:Creator or 
age or shoeSize mean. These apps run just fine. For the lack of 
conceptual necessity of "thinking untidy" I'm suggesting: don't touch 
running systems.

Sergey

Received on Wednesday, 25 September 2002 13:00:40 UTC