[tmql-wg] TMQL names vs. occurrences
Robert Barta
rho at bigpond.net.au
Fri Dec 8 18:28:48 EST 2006
On Tue, Dec 05, 2006 at 03:28:35PM +0100, Lars Heuer wrote:
> I can answer my question, I think, partially myself :)
:-)
> If I am not mistaken, the correct query to query for all surnames
> would be:
>
> select $p/names[* surname] where $p isa person
Something like this, yes. If you do a
select $p / name
where
.......
then a TMQL processor is supposed to look for a characteristic (= name
_or_ occurrence) of type 'name'.
Now 'name' is a predefined topic (either in TMDM, TMRM or TMQL), not a
keyword, so it is something like tmdm:name. This allows also to say
select $p / homepage
--
Up to this point there is NO distinction between names and occurrences.
If someone had written in his map
homepage iko name
rho isa person
homepage: the one dancing on tables
then this is a name. In
rho isa person
homepage: the one dancing on tables
'homepage' may default to a "specialization of an occurrence", so
homepage iko occurrence
is implicit. All this implies, that a user may also do both:
homepage iko name
homepage iko occurrence
Topic Maps do not have the concept of disjunct types. Unlike OWL.
--
> But the question with the occurrences vs. names remains
>
> select $p/surname where $p isa person
>
> Contains the result (atomified) occurrences and names or just
> occurrences? If the result contains both, and I want just names, would
> this be possible:
>
> select $p/surname[* tmdm:name] where $p isa person
Exactly.
If someone is concerned about any ambiguity in his data (read: "I want
_names_ only"), then additional filtering will have to be introduced:
select $p / homepage [ * name ]
But I do not expect that this is the main stream case. Normally most
notations will encourage that occurrences and names have distinct type
structures.
--
Saying that, a topic map
rho isa person
! surname: Barta # or whatever the syntax now is for a name
will implicitly create
surname iko name
and the following queries will do what is expected:
select $p / surname # only get the surname(s)
select $p / name # get all names, also surnames
\rho
More information about the tmql-wg
mailing list