Page 1 of 1

R3DM (Resource-Realization-Reference) in TMDM

PostPosted: Wed Jul 10, 2013 2:12 am
by athanassios
I have made several comments on a post from Steve Pepper titled "if we were to redesign Topic Maps based on what we have learnt in the last decade, what would we do differently?". But most important I have proposed a new data model that I call R3DM (Resource/Representation/Reference) data model. I have been experimenting with an example that I would like to share with you as it is depicted in Wandora see my R3DM in TMDM wiki page. My question to the developers of Wandora is how will you model differently these examples, provided that you display the same information, in the present TMDM ?

Re: R3DM in TMDM

PostPosted: Thu Jul 18, 2013 2:08 pm
by akivela
Hi Athanassios

As associations are hyper-edges, it is rather trivial to transform a set of occurrences into a single association. Looking at your first example, Athanassios (p1) is 44 years old and his first name in Greek is Αθανάσιος would turn something like:

Code: Select all
hasProp ( Nassos : Agent, INT : DTYPE, 44 : VAL, NOW : TIME, YR : UNIT )
hasProp ( Nassos : Agent, STR : DTYPE, is-44-years-old : VAL, NOW : TIME, HTML : ENC, EN : LANG )
hasProp ( Nassos : Agent, STR : DTYPE, Αθανάσιος : VAL, FNAM : NAM, HTML : ENC, GR : LANG )
hasProp ( Nassos : Agent, STR : DTYPE, Athanassios : VAL, FNAM : NAM, HTML : ENC, EN : LANG )


Second example, Athanassios (p2) was 1 m high at the age of four is a more problematic as it contains property-pairs that have a strong relation. Thus, we need a multiproperty topic p1:

Code: Select all
hasProp ( Nassos : Agent, p1 : multiproperty )
hasProp ( p1 : multiproperty, STR : DTYPE, was-1m-high : VAL, PAST : TIME, EN : LANG, TXT : ENC )
hasProp ( p1 : multiproperty, STR : DTYPE, at-the-age-of-four : VAL, PAST : TIME, EN : LANG, TXT : ENC )


And third example Athanassios (p1) and Aki (p2) are now taller than 1m

Code: Select all
hasProp ( Nassos : Agent, STR : DTYPE, is-now-taller-than-1m : VAL, NOW : TIME, TXT : ENC, EN : LANG, VAR : Class-instance )
hasProp ( Aki : Agent, STR : DTYPE, is-now-taller-than-1m : VAL, NOW : TIME, TXT : ENC, EN : LANG, VAR : Class-instance )
hasProp ( Nassos : Agent, INT : DTYPE, 100 : VAL, NOW : TIME, cm : UNIT, VAR : Class-Instance )
hasProp ( Aki : Agent, INT : DTYPE, 100 : VAL, NOW : TIME, cm : UNIT, VAR : Class-Instance )


Modeling everything with associations requires that all occurrence values in your model are turned into topics. As your model uses occurrence texts consistently I see this not a problem. Only free text occurrences such as "is now taller tan 1m" look little strange as topics. On the other hand, time value "NOW" and encoding "TXT", for example, turn beautifully a topic.

Kind Regards,
Aki / Wandora Team

Re: R3DM in TMDM

PostPosted: Wed Jul 24, 2013 2:59 pm
by athanassios
akivela wrote:Hi Athanassios
As associations are hyper-edges, it is rather trivial to transform a set of occurrences into a single association. Looking at your first example, Athanassios (p1) is 44 years old and his first name in Greek is Αθανάσιος would turn something like :....


Hi Aki,
perhaps I should make my question more clear. With the latest implementation of Wandora, I would like to view, on your graph panel, an alternative model that ACCURATELY expresses ALL the info that is included in my examples.

Let me start with the first example, of your reply. Wandora does not allow to define a topic with an identifier that uses UTF-8 characters e.g. "Αθανάσιος" and of course you cannot use them as arguments in Associations. You are also missing the type of property, AGE, in the first two associations, Perhaps you would turn that example of yours into something like :.....

Code: Select all
[val03      : VAL = "44"                                @"val3"]
[val04       : VAL = "<p>is 44 years old </p>"            @"val4"]
[val09      : VAL = "Αθανάσιος"                            @"val9"]
[val00      : VAL = "Athanassios"                  @"val0"]

hasProp ( nassos:AGENT, AGE:PROPERTY, INT:DTYPE, val03:VAL, NOW:TIME, YR:UNIT )
hasProp ( nassos:AGENT, AGE:PROPERTY, STR:DTYPE, val04:VAL, NOW:TIME, HTML:ENC, EN:LANG)

hasProp ( nassos:AGENT, FNAM:NAM, STR:DTYPE, val09:VAL, TXT:ENC, GR:LANG)
hasProp ( nassos:AGENT, FNAM:NAM, STR:DTYPE, val00:VAL, TXT:ENC, EN:LANG)


But that requires to express data values as topics and even if we do that, we still need a container to store the value and the only available is the Base Name construct or the Alternative Name. But suppose I want to store the content of a long html document, then I am forced to store that under the Topic Map Name construct. Perhaps there is a more elegant solution with the current implementation. Is there one ?

The second thing I would like to comment on your reply about example 1 is that it does not represent accurately the model of my example 1. You will probably see my point of view if you try to add another observation of age property. e.g.
[valA : VAL = "20"]
[valB : VAL = "<p>was 20 years old </p>"
hasProp ( nassos:AGENT, AGE:PROPERTY, INT:DTYPE, valA:VAL, PAST:TIME, YR:UNIT)
hasProp ( nassos:AGENT, AGE:PROPERTY, STR:DTYPE, valB:VAL, PAST:TIME, HTML:ENC, EN:LANG)
It is not clear that these two realizations represent one observation of the age and the other two another observation. You will also face that problem if you try to visualise example2 but with the two alternative representations, textual AND numeric ON THE SAME GRAPH.

Therefore I think a better model would be
Code: Select all
hasProp (p1:AGENT, a1:AGE)
hasReal (a1:AGE, INT:DTYPE, val03:VAL, NOW:TIME, YR:UNIT)
hasReal (a1:AGE, STR:DTYPE, val04:VAL, NOW:TIME, HTML:ENC, EN:LANG)

hasProp (p1:AGENT, n1:FNAM)
hasReal (n1:FNAM, STR:DTYPE, val09:VAL, TXT:ENC, GR:LANG)
hasReal (n1:FNAM, STR:DTYPE, val00:VAL, TXT:ENC, EN:LANG)


Where you distinguish property observations from property realizations. I think you have started following that kind of modeling when you were forced to use your multiproperty role to express example2. But I think it is far more elegant, expressive, and clear when you use

Code: Select all
hasProp (p1:AGENT, a2:AGE, h1:HEIGHT)
hasReal (a2:AGE,    INT:DTYPE, val07:VAL, PAST:TIME, YR:UNIT)
hasReal (a2:AGE,    TXT:DTYPE, val08:VAL, PAST:TIME, STR:ENC, EN:LANG)
hasReal (h1:HEIGHT, INT:DTYPE, val05:VAL, cm:UNIT)
hasReal (h1:HEIGHT, TXT:DTYPE, val06:VAL, STR:ENC, EN:LANG)


and finally look at the beautiful shape of the graph and the clear sharing of the property for the two agents p1, p2 at example3

Code: Select all
hasProp (p1:AGENT, h2:HEIGHT)
hasProp (p2:AGENT, h2:HEIGHT)
hasReal (h2:HEIGHT, INT:DTYPE, val01:VAL, NOW:TIME, cm:UNIT)
hasReal (h2:HEIGHT, TXT:DTYPE, val02:VAL, NOW:TIME, STR:ENC, EN:LANG)


All these and the ltm code can be found at my web site for the R3DM at
http://neurorganon.org/mw/index.php?title=R3DM_in_TMDM

In case you manage to visualize the above in a more elegant, expressive, accurate way, I will be happy to examine your alternative on a Wandora Graph panel please.

Kind regards