[sc34wg3] Look Ma! No Properties!
Robert Barta
sc34wg3@isotopicmaps.org
Fri, 16 Jul 2004 21:00:43 +1000
On Fri, Jul 16, 2004 at 10:58:12AM +0200, Jan Algermissen wrote:
> Robert Barta wrote:
> >
> > On Thu, Jul 15, 2004 at 08:08:11PM -0400, Patrick Durusau wrote:
> >
> > > Ok, the \tau model has no properties.
> >
> > The \tau model is based on assertions only. Properties are seen as
> > only a special form of an assertion, yes.
>
> Ok, I am beginning to see what you want.
/me dancing on the table!
> An instance of student is something that appears as p in an (instance,p)
> member, yes?
The name of it, yes.
> > Remarks on identity:
> >
> > If I would further indicate that the "SID property" is inducing
> > equivalences and that should trigger merging, then I would say
> > something like
> >
> > forall [ $s1
> > SID: $sid1 ]
> > => not exists [ $s2
> > SID: $sid1 ]
>
> Wow....you are the first person I see to come up with a purely declarative
> merging rule, which is (warning: implementation issue ahead :o) extremely
> important in order to get efficient merging. To make it possible at all.
What the above only indicates to the machinery is that there cannot be
two things in a map with the same SID. If I were asked to implement this
then it is similar to what people do in the SQL world:
create table (
bla bla,
SID varchar(101), # argh
KEY id (SID) <---- this is a 'uniqueness constraint in disguise
);
> At least if you want to have 100% generic merging rules. (Note:
> IMHO, a merging rule is simply a constraint. In the case of tau, it
> is a constraint on the set of all members.
I think there are two aspects:
(a) when to trigger merging, and
(b) actually perform the merging
(a) can be controlled by having statements like the above, the merging
(b) itself can be always the same, or I could even imagine that an
application DEFINES EXACTLY how it wants things to be merged. This
could be handled by TMQL, btw.
> What I do not understand in the above is what $s1 iterates over?
> Is it I? Is it the set of all members?
There is no 'I', that is a square bracket.
$s1 is iterating over 'every thing' in the map. If I do not want that
and I only want to have this rule applied to 'students' then I relax
it a bit:
forall [ $s1 is-a student
SID: $sid1 ]
=> not exists [ $s2 is-a student
SID: $sid1 ]
> > The machinery would conclude - trivially - that it is the SID property
> > alone that signals an identity.
>
> You say 'SID property'....that is actually the SID role, yes?
On the high-level it is a 'property', on the TMRM 'assembler level' SID
is a role, yes.
......
> > So the SID AND the shoesize and the first letters have to be different
> > and - together - induce identity.
> >
> > Many more bizarre concepts of 'identity' are possible.
>
> Well, the cool thing is that you can load them into an engine in the
> form of *constraints* on literals that play certain roles, that you
> can really implement such an engine and (biggest +) that you can
> *communicate* the constraint to others.
EXACTLY.
> This is, BTW, conceptually not different from the schema definition part
> of SQL. Define a schema and load it into your engine. Then load the data.
EXACTLY.
> I wonder if merging will cause a form of multivaluedness that will
> cause problems, because you would need to hide it in opaque literals?!?!
At the low level this should not be a problem, as members remain in
exactly the same way after merging. It is a set, so only completely
identical pairings are 'thrown out'.
> I might give it a try and do some prototype implementation for tau
> for evaluation purposes. I am having this itch that there are
> problems induced by merging (which you exclude for now :o) and/or
> having assertions as role players....
Please do that, although \tau is not really meant to be implemented 1:1.
> but besides that, I am quite impressed.
I have printed out this mail :-)
\rho