Naive approach to representing XTM 1.0 as RDF

(cross posted to xtm-wg@yahoogroups.com)

After a fascinating dinner between RDF and XTM executives and a night
dreaming of XTM and RDF, I have decided, before the breakfast, to try a
simple approach described a while ago in an article published on XML.com
to translate an extract of the XTM topic map I have presented at KT 2001
into RDF.

This is nothing but a quick hack that basically consist in replacing ids
by rdf:about, xlink:href by rdf:resource and moving some elements around
to work around the RDF limitations about references included in embedded
description.

I find the result quite encouraging, though and the topic map structure
appears well in the generated triples (to give it a try, just past the
RDF document into the online SIRPAC interface [2] that will also give
you a graphical representation of these triples).

I attach:

  - a copy of the portion of XTM used for this example (map.xtm)
  - a copy of the RDF version of this example (map.rdf)

Again, the right way to define a RDF representation of Topic Maps is
probably to derive a syntax from the TM data model rather than using a
simple transformation working on the syntax like I have done, but I see
this as an encouraging sign or proof of concept to show that Topic Maps
can be represented in RDF.

Eric

[1] http://www.xml.com/pub/a/2000/10/04/linking/index.html
[2] http://www.w3.org/RDF/Implementations/SiRPAC/

<?xml version="1.0" encoding="utf-8"?>
<topicMap xmlns:xlink="http://www.w3.org/1999/xlink">
        <topic id="news.story.topic">
                <baseName>
                        <baseNameString>Topic
XMLNews-Story</baseNameString>
                </baseName>
        </topic>
        <topic id="object.title">
                <instanceOf>
                        <topicRef xlink:href="#news.story.topic"/>
                </instanceOf>
                <baseName>
                        <baseNameString>Objet</baseNameString>
                </baseName>
        </topic>
        <topic id="story">
                <baseName>
                        <baseNameString>Article</baseNameString>
                </baseName>
        </topic>
        <topic id="related">
                <baseName>
                        <baseNameString>Sujets voisins</baseNameString>
                </baseName>
        </topic>
        <topic id="from">
                <baseName>
                        <baseNameString>Sujet</baseNameString>
                </baseName>
        </topic>
        <topic id="to">
                <baseName>
                        <baseNameString>Voisin</baseNameString>
                </baseName>
        </topic>
        <topic id="object.title-topic+maps">
                <instanceOf>
                        <topicRef xlink:href="#object.title"/>
                </instanceOf>
                <baseName>
                        <baseNameString>topic maps
(object.title)</baseNameString>
                </baseName>
                <occurrence id="object.title-topic+maps-1">
                        <instanceOf>
                                <topicRef xlink:href="#story"/>
                        </instanceOf>
                        <resourceRef xlink:href="
http://xmlfr.org/actualites/tech/001207-0002"/>
                </occurrence>
                <occurrence id="object.title-topic+maps-2">
                        <instanceOf>
                                <topicRef xlink:href="#story"/>
                        </instanceOf>
                        <resourceRef xlink:href="
http://xmlfr.org/actualites/tech/000706-0002"/>
                </occurrence>
        </topic>
        <association id="assoc-object.title-topic+maps-2">
                <instanceOf>
                        <topicRef xlink:href="#related"/>
                </instanceOf>
                <member>
                        <roleSpec>
                                <topicRef xlink:href="#from"/>
                        </roleSpec>
                        <topicRef
xlink:href="#object.title-topic+maps"/>
                </member>
                <member>
                        <roleSpec>
                                <topicRef xlink:href="#to"/>
                        </roleSpec>
                        <topicRef xlink:href="#object.title-xml"/>
                </member>
        </association>
        <association id="assoc-object.title-topic+maps-6">
                <instanceOf>
                        <topicRef xlink:href="#related"/>
                </instanceOf>
                <member>
                        <roleSpec>
                                <topicRef xlink:href="#from"/>
                        </roleSpec>
                        <topicRef
xlink:href="#object.title-topic+maps"/>
                </member>
                <member>
                        <roleSpec>
                                <topicRef xlink:href="#to"/>
                        </roleSpec>
                        <topicRef xlink:href="#object.title-xlink"/>
                </member>
        </association>
        <association id="assoc-object.title-topic+maps-7">
                <instanceOf>
                        <topicRef xlink:href="#related"/>
                </instanceOf>
                <member>
                        <roleSpec>
                                <topicRef xlink:href="#from"/>
                        </roleSpec>
                        <topicRef
xlink:href="#object.title-topic+maps"/>
                </member>
                <member>
                        <roleSpec>
                                <topicRef xlink:href="#to"/>
                        </roleSpec>
                        <topicRef xlink:href="#object.title-xtm"/>
                </member>
        </association>
        <topic id="object.title-xtm">
                <instanceOf>
                        <topicRef xlink:href="#object.title"/>
                </instanceOf>
                <baseName>
                       
<baseNameString>xtm(object.title)</baseNameString>
                </baseName>
                <occurrence id="object.title-xtm+1.0-1">
                        <instanceOf>
                                <topicRef xlink:href="#story"/>
                        </instanceOf>
                        <resourceRef xlink:href="
http://xmlfr.org/actualites/tech/001207-0002"/>
                </occurrence>
        </topic>
</topicMap>

----------

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="
http://www.w3.org/2000/01/rdf-schema#"
xmlns="http://dyomedea.com/ns/rdftm#">
        <topic rdf:about="#news.story.topic">
                <baseName>
                        <baseNameString>Topic
XMLNews-Story</baseNameString>
                </baseName>
        </topic>
        <topic rdf:about="#object.title">
                <instanceOf rdf:resource="#news.story.topic"/>
                <baseName>
                        <baseNameString>Objet</baseNameString>
                </baseName>
        </topic>
        <topic rdf:about="#story">
                <baseName>
                        <baseNameString>Article</baseNameString>
                </baseName>
        </topic>
        <topic rdf:about="#related">
                <baseName>
                        <baseNameString>Sujets voisins</baseNameString>
                </baseName>
        </topic>
        <topic rdf:about="#from">
                <baseName>
                        <baseNameString>Sujet</baseNameString>
                </baseName>
        </topic>
        <topic rdf:about="#to">
                <baseName>
                        <baseNameString>Voisin</baseNameString>
                </baseName>
        </topic>
        <topic rdf:about="#object.title-topic+maps">
                <instanceOf rdf:resource="#object.title"/>
                <baseName>
                        <baseNameString>topic maps
(object.title)</baseNameString>
                </baseName>
                <occurrence rdf:resource="object.title-topic+maps-1"/>
                <occurrence rdf:resource="object.title-topic+maps-2"/>
        </topic>
        <occurrence rdf:about="#object.title-topic+maps-1">
                <instanceOf rdf:resource="#story"/>
                <resourceRef rdf:resource="
http://xmlfr.org/actualites/tech/001207-0002"/>
        </occurrence>
        <occurrence rdf:about="#object.title-topic+maps-2">
                <instanceOf rdf:resource="#story"/>
                <resourceRef rdf:resource="
http://xmlfr.org/actualites/tech/000706-0002"/>
        </occurrence>
        <association rdf:about="#assoc-object.title-topic+maps-2">
                <instanceOf rdf:resource="#related"/>
                <member
rdf:resource="#assoc-object.title-topic+maps-2-1"/>
                <member
rdf:resource="#assoc-object.title-topic+maps-2-2"/>
        </association>
        <member rdf:about="#assoc-object.title-topic+maps-2-1">
                <roleSpec rdf:resource="#from"/>
                <topicRef rdf:resource="#object.title-topic+maps"/>
        </member>
        <member rdf:about="#assoc-object.title-topic+maps-2-1">
                <roleSpec rdf:resource="#to"/>
                <topicRef rdf:resource="#object.title-xml"/>
        </member>
        <association rdf:about="#assoc-object.title-topic+maps-6">
                <instanceOf rdf:resource="#related"/>
                <member
rdf:resource="#assoc-object.title-topic+maps-6-1"/>
                <member
rdf:resource="#assoc-object.title-topic+maps-6-2"/>
        </association>
        <member rdf:about="#assoc-object.title-topic+maps-6-1">
                <roleSpec rdf:resource="#from"/>
                <topicRef rdf:resource="#object.title-topic+maps"/>
        </member>
        <member rdf:about="#assoc-object.title-topic+maps-6-2">
                <roleSpec rdf:resource="#to"/>
                <topicRef rdf:resource="#object.title-xlink"/>
        </member>
        <association rdf:about="#assoc-object.title-topic+maps-7">
                <instanceOf rdf:resource="#related"/>
                <member
rdf:resource="#assoc-object.title-topic+maps-7-1"/>
                <member
rdf:resource="#assoc-object.title-topic+maps-7-2"/>
        </association>
        <member rdf:rabout="#assoc-object.title-topic+maps-7-1">
                <roleSpec rdf:resource="#from"/>
                <topicRef rdf:resource="#object.title-topic+maps"/>
        </member>
        <member rdf:rabout="#assoc-object.title-topic+maps-7-2">
                <roleSpec rdf:resource="#to"/>
                <topicRef rdf:resource="#object.title-xtm"/>
        </member>
        <topic rdf:about="#object.title-xtm">
                <instanceOf rdf:resource="#object.title"/>
                <baseName>
                       
<baseNameString>xtm(object.title)</baseNameString>
                </baseName>
                <occurrence rdf:resource="#object.title-xtm+1.0-1"/>
        </topic>
        <occurrence rdf:about="#object.title-xtm+1.0-1">
                <instanceOf rdf:resource="#story"/>
                <resourceRef rdf:resource="
http://xmlfr.org/actualites/tech/001207-0002"/>
        </occurrence>
</rdf:RDF>


-- 
See you in Austin (Knowledge Technologies 2001)
              http://www.gca.org/attend/2001_conferences/kt_2001/mon.htm
------------------------------------------------------------------------
Eric van der Vlist       Dyomedea                    http://dyomedea.com
http://xmlfr.org         http://4xt.org              http://ducotede.com
------------------------------------------------------------------------

Received on Thursday, 8 March 2001 08:39:34 UTC