<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>Compact Topic Maps Syntax - Use Case Solutions</title>
<style type="text/css">
.source {
border-width: 1px;
border-color: #999;
border-style: dotted;
background-color: #FEFEFE;
overflow: auto;
padding: 15px;
color: #000;
font-family: "Courier New", Courier, mono;
}
/* Strings */
.source .s { /* String */
color: darkgreen;
}
/* Literals */
.source .m, /* number */
.source .mf, /* float */
.source .il, /* long */
.source .mi, /* integer */
.source .ld /* dates */
{
color: #f60;
}
/* URLs */
.source .u, /* URL */
.source .usid, /* Subject identifier */
.source .uslo, /* Subject locator */
.source .nq { /* QName */
color: darkblue;
}
.source .n { /* Identifier */
color: darkred;
}
.source .nf {/* Template */
font-style: italic;
}
/* Directives */
.source .nd {
}
/* Variables */
.source .nv {
color: #B8860B;
}
/* Keywords */
.source .k {
color: #c33;
}
/* Comments */
.source .c {
color: #666;
}
/* Punctuation */
.source .p {
color: #666;
}
</style>
</head>
<body>
<h1>Compact Topic Maps Syntax - Use Case Solutions</h1>
<p>For these use case solutions the current CTM draft (dated July 2nd, 2007)
is used.
</p>
<h2>3.2.1. Topic with an Item Identifier</h2>
<div class="source"><pre><span class="n">john</span>
</pre></div>
<h2>3.2.2. Typed Topic - Using Item Identifiers</h2>
<div class="source"><pre><span class="n">john</span> <span class="nf">isa</span> <span class="n">person</span>
</pre></div>
<h2>3.2.3. Typed Topic - Using Subject Identifiers</h2>
<div class="source"><pre><span class="n">john</span> <span class="nf">isa</span> <span class="u">http://psi.example.org/music/guitarist</span>
</pre></div>
<p> <br>
Alternative (using the "prefix" directive):
</p>
<div class="source"><pre><span class="nd">%prefix</span> <span class="n">music</span> <span class="u">http://psi.example.org/music/</span>
<span class="n">john</span> <span class="nf">isa</span> <span class="nq">music:guitarist</span>
</pre></div>
<h2>3.2.4. Multityped Topic - Using Item Identifiers</h2>
<div class="source"><pre><span class="n">john</span> <span class="nf">isa</span> <span class="n">singer</span>
<span class="nf">isa</span> <span class="n">guitarist</span>
</pre></div>
<h2>3.2.5. Multityped Topic - Using Subject Identifiers</h2>
<div class="source"><pre><span class="u">http://psi.example.org/beatles/john</span> <span class="nf">isa</span> <span class="n">singer</span> <span class="nf">isa</span> <span class="n">guitarist</span>
</pre></div>
<h2>3.3.1. Topic with an Item Identifier and Topic Name</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="s">"John Lennon"</span>
</pre></div>
<p> <br>
Alternative
</p>
<div class="source"><pre><span class="n">john</span> <span class="p">-:</span> <span class="s">"John Lennon"</span>
</pre></div>
<h2>3.3.2. Topic with a Subject Identifier and Topic Name</h2>
<div class="source"><pre><span class="nd">%prefix</span> <span class="n">beatles</span> <span class="u">http://psi.beatles.example.org/</span>
<span class="nq">beatles:The_Beatles</span> <span class="p">-:</span> <span class="s">"The Beatles"</span>
</pre></div>
<h2>3.3.3. Topic with a Subject Locator and a Topic Name</h2>
<div class="source"><pre><span class="p">=</span> <span class="uslo">http://beatles.com/</span> <span class="p">-</span> <span class="s">"Official website of The Beatles"</span>
</pre></div>
<h2>3.3.4. Typed Topic Name - Using Item Identifiers</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="n">fullname</span><span class="p">:</span> <span class="s">"John Ono Lennon"</span>
</pre></div>
<h2>3.3.5. Typed Topic Names - Using Subject Identifiers</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="u">http://psi.example.org/fullname</span><span class="p">:</span> <span class="s">"John Ono Lennon"</span>
</pre></div>
<h2>3.3.6. Scoped Topic Name - Using Item Identifiers</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="s">"John Ono Lennon"</span> <span class="p">@</span><span class="n">fullname</span>
</pre></div>
<p> <br>
or
</p>
<div class="source"><pre><span class="n">john</span> <span class="p">-:</span> <span class="s">"John Ono Lennon"</span> <span class="p">@</span><span class="n">fullname</span>
</pre></div>
<h2>3.3.7. Scoped Topic Name - Using Subject Itentifiers</h2>
<div class="source"><pre><span class="nd">%prefix</span> <span class="n">ex</span> <span class="u">http://blabla.org</span>
<span class="n">john</span> <span class="p">-</span> <span class="s">"John Ono Lennon"</span> <span class="p">@</span><span class="nq">ex:fullname</span>
</pre></div>
<h2>3.3.8. Multi Scoped Topic Name</h2>
<div class="source"><pre><span class="n">beatles</span>
<span class="p">-</span> <span class="s">"The Beatles"</span>
<span class="p">-</span> <span class="s">"Fab Four"</span> <span class="p">@</span><span class="n">nickname</span> <span class="n">short</span>
</pre></div>
<h2>3.3.9. Typed and Scoped Names</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="n">fullname</span><span class="p">:</span> <span class="s">"John Ono Lennon"</span> <span class="p">@</span><span class="n">yoko</span>
</pre></div>
<h2>3.3.10. Topic Name with Variant of datatype String</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="s">"John Lennon"</span> <span class="p">(</span><span class="s">"lennon, john"</span> <span class="p">@</span><span class="nq">tm:sort</span><span class="p">)</span>
</pre></div>
<h2>3.3.11. Topic Name with Variant of datatype XML</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="s">"John Lennon"</span>
<span class="p">(</span> <span class="s">"<b>John Lennon</b>"</span><span class="p">^^</span><span class="nq">xs:anyType</span> <span class="p">@</span><span class="n">markup</span><span class="p">)</span>
</pre></div>
<h2>3.3.12. Topic Name with Variant of datatype URI</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="s">"John Lennon"</span> <span class="p">(</span><span class="u">http://link/to/an/image.jpg</span> <span class="p">@</span><span class="n">image</span><span class="p">)</span>
</pre></div>
<h2>3.3.13. Topic Name with Variant with non-TMDM datatype</h2>
<div class="source"><pre><span class="n">revolution-nine</span> <span class="p">-</span> <span class="s">"Revolution No. 9"</span> <span class="p">(</span><span class="mi">9</span> <span class="p">@</span><span class="n">number</span><span class="p">)</span>
</pre></div>
<h2>3.3.14 Typed topic with subject identifier with occurrences and associations</h2>
<div class="source"><pre><span class="c"># Creating the templates</span>
<span class="k">def</span> <span class="nf">has-shoesize</span><span class="p">(</span><span class="nv">$person</span><span class="p">,</span> <span class="nv">$size</span><span class="p">)</span>
<span class="nv">$person</span>
<span class="n">shoesize</span><span class="p">:</span> <span class="nv">$size</span> <span class="c"># Shoesize is modelled as occurrence</span>
<span class="k">end</span>
<span class="k">def</span> <span class="nf">is-member-of</span><span class="p">(</span><span class="nv">$member</span><span class="p">,</span> <span class="nv">$group</span><span class="p">)</span>
<span class="n">is-member-of</span><span class="p">(</span><span class="n">member</span><span class="p">:</span> <span class="nv">$member</span><span class="p">,</span> <span class="n">group</span><span class="p">:</span> <span class="nv">$group</span><span class="p">)</span>
<span class="k">end</span>
<span class="u">http://psi.example.org/beatles/paul</span> <span class="nf">isa</span> <span class="n">person</span>
<span class="nf">has-shoesize</span> <span class="mi">45</span>
<span class="nf">is-member-of</span> <span class="n">the-beatles</span>
<span class="n">homepage</span><span class="p">:</span> <span class="u">http://www.paulmccartney.com/</span>
</pre></div>
<h2>3.4.2. Typed Occurrence of datatype String - Using Item Identifiers</h2>
<div class="source"><pre><span class="n">a-day-in-the-life</span>
<span class="n">lyrics</span><span class="p">:</span> <span class="s">"I read ..."</span>
</pre></div>
<h2>3.4.3. Typed Occurrence of datatype String - Using Subject Identifiers</h2>
<div class="source"><pre><span class="nd">%prefix</span> <span class="n">ex</span> <span class="u">http://www.blabla.org</span>
<span class="n">a-day-in-the-life</span>
<span class="nq">ex:lyrics</span><span class="p">:</span> <span class="s">"I read ..."</span>
</pre></div>
<h2>3.4.4. Scoped Occurrence of datatype String - Using Item Identifiers</h2>
<div class="source"><pre><span class="n">a-day-in-the-life</span>
<span class="n">lyrics</span><span class="p">:</span> <span class="s">"I read ..."</span> <span class="p">@</span><span class="n">en</span>
</pre></div>
<h2>3.4.5. Scoped Occurrence of datatype String - Using Subject Identifiers</h2>
<div class="source"><pre><span class="nd">%prefix</span> <span class="n">ex</span> <span class="u">http://bla.org</span>
<span class="nd">%prefix</span> <span class="n">lang</span> <span class="u">http://language.org</span>
<span class="n">a-day-in-the-life</span>
<span class="nq">ex:lyrics</span><span class="p">:</span> <span class="s">"I read ..."</span> <span class="p">@</span><span class="nq">lang:en</span>
</pre></div>
<h2>3.4.6. Occurrence of datatype XML</h2>
<div class="source"><pre><span class="n">a-day-in-the-life</span>
<span class="n">lyrics</span><span class="p">:</span> <span class="s">"""<html></span>
<span class="s"> <head>[...]</head></span>
<span class="s"> <body id="lyrics">[...]</body></span>
<span class="s"> </html>"""</span><span class="p">^^</span><span class="nq">xs:anyType</span>
</pre></div>
<h2>3.4.7. Occurrence of datatype IRI</h2>
<div class="source"><pre><span class="n">beatles</span> <span class="n">website</span><span class="p">:</span> <span class="u">http://www.beatles.com/</span>
</pre></div>
<p> <br>
or
</p>
<div class="source"><pre><span class="n">beatles</span> <span class="n">website</span><span class="p">:</span> <span class="s">"http://www.beatles.com/"</span><span class="p">^^</span><span class="nq">xs:anyURI</span>
</pre></div>
<h2>3.4.7. Occurrence of non-TMDM datatype</h2>
<div class="source"><pre><span class="n">pennylane</span> <span class="n">track-number</span><span class="p">:</span> <span class="mi">2</span>
</pre></div>
<p> <br>
or
</p>
<div class="source"><pre><span class="n">pennylane</span> <span class="n">track-number</span><span class="p">:</span> <span class="s">"2"</span><span class="p">^^</span><span class="nq">xs:integer</span>
</pre></div>
<h2>3.5.1. Creating Associations</h2>
<div class="source"><pre><span class="n">created</span><span class="p">(</span><span class="n">person</span> <span class="p">:</span> <span class="n">mccartney</span><span class="p">,</span> <span class="n">song</span> <span class="p">:</span> <span class="n">yesterday</span><span class="p">)</span>
</pre></div>
<p> <br>
or with templates:
</p>
<div class="source"><pre><span class="c"># Template definition</span>
<span class="k">def</span> <span class="nf">created</span><span class="p">(</span><span class="nv">$creator</span><span class="p">,</span> <span class="nv">$song</span><span class="p">)</span>
<span class="n">created</span><span class="p">(</span><span class="n">person</span> <span class="p">:</span> <span class="nv">$creator</span><span class="p">,</span> <span class="n">song</span> <span class="p">:</span> <span class="nv">$song</span><span class="p">)</span>
<span class="k">end</span>
<span class="n">mccartney</span> <span class="nf">created</span> <span class="n">yesterday</span>
</pre></div>
<p> <br>
or with template invocation outside of topic declaration
</p>
<div class="source"><pre><span class="c"># Template definition</span>
<span class="k">def</span> <span class="nf">created</span><span class="p">(</span><span class="nv">$creator</span><span class="p">,</span> <span class="nv">$song</span><span class="p">)</span>
<span class="n">created</span><span class="p">(</span><span class="n">person</span> <span class="p">:</span> <span class="nv">$creator</span><span class="p">,</span> <span class="n">song</span> <span class="p">:</span> <span class="nv">$song</span><span class="p">)</span>
<span class="k">end</span>
<span class="nf">created</span><span class="p">(</span><span class="n">mccartney</span><span class="p">,</span> <span class="n">yesterday</span><span class="p">)</span>
</pre></div>
<h2>3.5.2. Scoped Association</h2>
<div class="source"><pre><span class="n">created</span><span class="p">(</span><span class="n">person</span> <span class="p">:</span> <span class="n">mc-cartney</span><span class="p">,</span> <span class="n">song</span> <span class="p">:</span> <span class="n">yesterday</span><span class="p">)</span> <span class="p">@</span><span class="n">music</span>
</pre></div>
<h2>3.5.5. Supertype-Subtype relationship - Using Item Identifiers</h2>
<div class="source"><pre><span class="n">song</span> <span class="nf">iko</span> <span class="n">musical-work</span>
</pre></div>
<h2>3.5.6. Supertype-Subtype relationship - Using Subject Identifiers</h2>
<div class="source"><pre><span class="nd">%prefix</span> <span class="n">ex</span> <span class="u">http://...</span>
<span class="nq">ex:song</span> <span class="nf">iko</span> <span class="nq">ex:musical-work</span>
</pre></div>
<h2>3.6.1 Reification of a Topic Map</h2>
<div class="source"><pre><span class="p">~</span> <span class="n">tm-reifier</span> <span class="p">-</span> <span class="s">"Beatlestopicmap"</span>
</pre></div>
<h2>3.6.2. Reification of a Topic Name</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="s">"John Ono Lennon"</span> <span class="p">~</span> <span class="n">name-of-john-lennon</span>
</pre></div>
<h2>3.6.3. Reification of a Variant</h2>
<div class="source"><pre><span class="n">john</span> <span class="p">-</span> <span class="s">"John Ono Lennon"</span>
<span class="p">(</span><span class="s">"lennon, john"</span> <span class="p">@</span><span class="n">sort</span> <span class="p">~</span> <span class="n">sortname-of-john-lennon</span><span class="p">)</span>
</pre></div>
<h2>3.6.4. Reification of an Occurrence</h2>
<div class="source"><pre><span class="n">john</span> <span class="n">website</span><span class="p">:</span> <span class="u">http://www.lennon.com/</span> <span class="p">~</span> <span class="n">lennons-website</span>
</pre></div>
<h2>3.6.5. Reification of an Association</h2>
<div class="source"><pre><span class="n">partnership</span><span class="p">(</span><span class="n">person</span><span class="p">:</span> <span class="n">lennon</span><span class="p">,</span> <span class="n">person</span><span class="p">:</span> <span class="n">mc-cartney</span><span class="p">)</span> <span class="p">~</span> <span class="n">lennon-mccartney</span>
<span class="n">lennon-mccartney</span> <span class="p">-</span> <span class="s">"Lennon / McCartney"</span>
</pre></div>
<h2>3.7.1. Singe line comment</h2>
<div class="source"><pre><span class="c"># a single line with comments</span>
</pre></div>
<h2>3.7.2. Multiline comment</h2>
<div class="source"><pre><span class="c"># one comment</span>
<span class="c"># line 2</span>
</pre></div>
</body>
</html>