[sc34wg3] Look Ma! No Properties!
Jan Algermissen
sc34wg3@isotopicmaps.org
Fri, 16 Jul 2004 10:58:12 +0200
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.
>
> > I am assuming that even though you don't have properties in the \tau,
> > you are not saying that at some less abstract level you would not have
> > properties? Or are you?
>
> It is perfectly possible, reasonable and to be expected that higher
> abstractions define properties. In fact, in TMQL we will have to do
> that for 'basenames, occurrences,...' just to be compatible with the
> world of TMDM.
>
> Just to make an example to avoid a too abstract discussion: Lets
> assume we model students with their names, their shoesize and their
> student ID (SID). In the 'assembler-like' tau model we would only have
> assertions:
>
> { < name-haver: jack-learner >, < name : "Jack Learner" > },
> { < shoesize-haver: jack-learner >, < shoesize : 1234 > }
> { < sid-haver: jack-learner >, < SID : 12345678 > }
>
> On a higher level a language (TMCL or whatever) might define (I am
> paraphrasing AsTMa! in the absence of a better alternative):
>
> forall [ $s is-a student ]
> => exists [ $s
> name : *
> shoesize : /\d+/
> SID : /\d{8}/ ]
>
> [ Omitting some technicalities like name mapping and multi-valuedness. ]
>
> This will signal to a generalized TM processor (so not one which
> 'only' understands TMDMish things) that there are new properties
> 'name', 'shoesize' and 'SID' only applicable for things which are
> direct or indirect instances of 'student'.
.......................................
Hmm...just playing around:
CREATE TABLE Students
name VARCHAR(1024),
shoesize VARCHAR(1024),
SID VARCHAR(1024),
+ the constraints
);
.......................................
An instance of student is something that appears as p in an (instance,p)
member, yes?
>
> Remarks on types above:
>
> As we are ignorant on types (yet), I am simply using syntactic
> measures (in this case regular expressions like /\d+/ and /\d{8}/) to
> characterize what I want. That is good enough for many things, but
> other people might need real data types.
>
> 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.
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.
What I do not understand in the above is what $s1 iterates over?
Is it I? Is it the set of all members?
> 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?
>
> If - for some weird reason - the shoesize and the first letter in the
> name are involved, then we would write (brrrrr):
>
> forall [ $s1
> name : $name1
> shoesize : $shoesize1
> SID : $sid1 ]
> => not exists [ $s2
> name : $name2 =~ /^$name1[0:1]/
> shoesize : $shoesize1
> SID : $sid1 ]
>
> 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.
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.
>
> > What is puzzling to a degree, assuming you have the time to address the
> > first issue, is where are topics/subjects, etc.
>
> The \tau model does not mention topics (= subject proxies in your
> diction) because these collapse into identifiers. These identifiers
> are involved in assertions.
I wonder if merging will cause a form of multivaluedness that will
cause problems, because you would need to hide it in opaque literals?!?!
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 but besides that, I am quite impressed.
>
> Does this make things clearer?
Yes, perfectly clear now.
Jan
> \rho
> _______________________________________________
> sc34wg3 mailing list
> sc34wg3@isotopicmaps.org
> http://www.isotopicmaps.org/mailman/listinfo/sc34wg3
--
Jan Algermissen http://www.topicmapping.com
Consultant & Programmer http://www.gooseworks.org