[sc34wg3] TMQL: Operators "Not equal"

Inge Henriksen inge.henriksen at bouvet.no
Mon Oct 29 06:42:07 EDT 2007

How will different Unicode characters be handled when it comes to
comparing? When see the "==" operator I assume a binary comparison, but
should these kinds of operators be used when comparing text's? If you

  select $p / name
     $p isa person
  &  $p / homepage == "http://myspace.com/"

where each side of the operator is of a different Unicode character set
then they are not binary equal but they may still be equal from a
culture-insensitive standpoint. In addition "http://myspace.com/" and
"HTTP:/MYSPACE.COM/" are also not equal from a binary comparison
standpoint, but are equal from a case-insensitive standpoint. Would it
be logical to rather use an "equals" operator when comparing texts, and
use the "==" operator only when doing binary comparisons? An "equals"
operator would allow for comparison of different texts with Unicode
character sets (culture-insensitive), and could also be
case-insensitive, or one could go for an "ordinal" comparison which is
culture-insensitive and case-sensitive. 

Example of culture-insensitive text comparing:

  select $p / name
     $p isa person
  &  $p / homepage equals "http://myspace.com/"

Please forgive me if this has been discussed before and I have missed it


-----Original Message-----
From: sc34wg3-bounces at isotopicmaps.org
[mailto:sc34wg3-bounces at isotopicmaps.org] On Behalf Of Robert Barta
Sent: 29. oktober 2007 10:34
To: Discussion of ISO/IEC 13250 Topic Maps
Subject: Re: [sc34wg3] TMQL: Operators "Not equal"

On Fri, Oct 26, 2007 at 05:22:25PM +0200, Lars Heuer wrote:
> The current draft lacks of a not equal operator, like "!=". Is that
> intentional?
> A not equal operator is quite handy even if
>        not(1.0 = 2.0)
> works, though.

Careful here: 

'==' has 'exists semantics' as it is operating on sequences! So 

  select $p / name
     $p isa person
  &  $p / homepage != "http://myspace.com/"

might not really signal what is going on. If I read the above quickly,
then I would select all persons which have not a homepage at MySpace.

But what it means is

  not ($p / homepage == "http://myspace.com/")

So I'm actually asking for all persons where it is

  "not true, that there is at least one MySpace homepage"

The proposed notation

  $p / homepage != "http://myspace.com/"

would more indicate

  "no homepage is on MySpace"

This is also the reason to prefer '==' over '=', because the query
author should keep that in mind.

And then he said: "You should read my blog." http://kill.devc.at/
sc34wg3 mailing list
sc34wg3 at isotopicmaps.org

More information about the sc34wg3 mailing list