[sc34wg3] CTM draft dtd. 2007-09-09 - Templates

Lars Heuer heuer at semagia.com
Mon Sep 24 09:27:20 EDT 2007

Hi all,

Here some comments against the latest CTM draft, located here:
<http://www.jtc1sc34.org/repository/0905.htm> (again with the annoying
Unicode problem, you have to set the encoding to UTF-8 in your

In Montréal the committee decided to use the same syntax for
occurrences and binary template invocations:

  # Syntax *before* Montréal:

  mccartney isa person       # Template invocation
    homepage: http://www.mcartney.com/   # Occurrence

  # Syntax *after* Montréal:

    isa: person   # Tpl. invocation
    homepage: http://www.mcartney.com/   # Occurrence

So, a parser has to decide at *each*

  identifier : arg

occurrence if "identifier" is a template or not. If it is a template,
the template is invoked, if it is not a template, an occurrence is
created. So far, so good.

Here the problem:

        homepage: http://www.example.org/    # Occurrence of type
                                             # 'homepage' with an
                                             # IRI value

     # A tpl. definition which creates an association
     # of type 'has-homepage' where '$topic' plays the
     # role 'owner' and the role 'website' is played
     # by a *topic* with the subject locator '$iri'

     def homepage($topic, $iri)
         has-homepage(owner: $topic, website: = $iri)

        homepage: http://www.example.org/ # Same as example1?
                                          # No, we invoke the
                                          # template!

In the previous example it would be impossible to create an occurrence
of type 'homepage' *after* we have a declared a template called

IMO this is bad. The user gets two different behaviours for the same
syntax. And if the user makes a typo within the template name, the
parser would not claim that error, but create an occurrence silently
(unless the argument cannot be a valid occurrence value).

With the CTM syntax *before* Montreal, the parser would have
detected typos and the user wouldn't have got two different things
within the same syntax.

I propose to make template invocation syntax and occurrence syntax
distinct (again). Either we should go back to the syntax before
Montréal or someone should come up with a better one.

Best regards,

More information about the sc34wg3 mailing list