Topic Maps to RDF Conversion

Our approach to Topic Maps RDF interoperability is based on the idea of overlapping concepts. The purpose of defining overlapping concepts is to enable translation between RDF and Topic Maps that integrates generic with focused translation in a single system. The focused component of the translation is intended to deal with the constructs identified as "overlapping concepts". The remaining concepts are subject to generic translation.

1 Focused Translation

The focused translation is intended to deal with the constructs identified as "overlapping concepts". This also includes metadata vocabularies expressed in both RDF and Topic Maps. The remaining constructs are subject to generic translation.

1.1 Predefined Properties

Topic Maps Class-Instance associations are converted to an RDF type property, where the topic instances are mapped to the subjects and the typing topics of the associations are mapped to the objects of the type property. Superclass-Subclass associations are converted to a subClassOf property, where the players of type superclass are mapped to the objects and the players of type subclass are mapped to the subjects of the subClassOf property.

Topic Maps external occurrences are converted to a seeAlso property with an object of the occurrence URI. Internal occurrences are also converted to a seeAlso property with an object of the internal resource (string). Topic names (baseName) are converted to an RDFS label property.

Example

The following example illustrates translation of the Topic Maps Superclass-Subclass association into RDF subClassOf property. The Topic Maps expressions asserting that the topic Lasagna plays a role of subclass and Pasta Dishes plays a role of superclass in the association of type Superclass-Subclass is translated into a set of RDF statements asserting that the resources Lasagna and Pasta Dishes are instances of rdfs:Class and Lasagna is subClassOf Pasta Dishes.

Note. To simplify the examples, in the following the prolog is omitted from the xtm and xml-rdf encoding

<topic id="x1oajte2sn-1e5c">
   <baseName>
      <baseNameString>Pasta Dishes</baseNameString>
   </baseName>
</topic>
<topic id="x1oajte2sn-1e5e">
   <baseName>
      <baseNameString>Lasagna</baseNameString>
   </baseName>
</topic>
<topic id="x1oajte2sn-1e3c">
   <baseName>
      <baseNameString>Superclass-Subclass</baseNameString>
   </baseName>
   <baseName>
       <scope>
          <topicRef xlink:href="#x1oajte2sn-1e3e" />
        </scope>
        <baseNameString>is superclass of</baseNameString>
   </baseName>
   <baseName>
       <scope>
          <topicRef xlink:href="#x1oajte2sn-1e41" />
       </scope>
   <baseNameString>is subclass of</baseNameString>
   </baseName>
</topic>
<topic id="x1oajte2sn-1e3e">
    <baseName>
       <baseNameString>Superclass</baseNameString>
    </baseName>
</topic>
<topic id="x1oajte2sn-1e41">
    <baseName>
       <baseNameString>Subclass</baseNameString>
    </baseName>
</topic>
<association>
   <instanceOf>
      <topicRef xlink:href="#x1oajte2sn-1e3c" />
   </instanceOf>
   <member>
       <roleSpec>
           <topicRef xlink:href="#x1oajte2sn-1e3e" />
       </roleSpec>
       <topicRef xlink:href="#x1oajte2sn-1e5c" />
   </member>
   <member>
       <roleSpec>
           <topicRef xlink:href="#x1oajte2sn-1e41" />
        </roleSpec>
        <topicRef xlink:href="#x1oajte2sn-1e5e" />
   </member>
</association>
                     
<rdf:Description rdf:ID="Pasta Dishes-Id"><rdfs:label>Pasta Dishes </rdfs:label>
   <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
</rdf:Description>

<rdf:Description rdf:ID=" Lasagna-Id">
  <rdfs:label> Lasagna </rdfs:label>
  <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class"/>
  <rdfs:subClassOf rdf:resource="http://compsci.wssu.edu/iis/tm4l/#Pasta Dishes"/>
</rdf:Description>

The predefined Related Topic Map association is converted to RDF properties following the conversion methods for binary associations extended with owl statatements defining that this relation is symmetric.

<rdf:Property rdf:ID="x1oajte2sn-26c0">
<rdfs:label>Related</rdfs:label>
<rdfs:domain rdf:resource="#x1oajte2sn-26c2"/>
<rdfs:range rdf:resource="#x1oajte2sn-26c5"/>
</rdf:Property>

<owl:SymmetricProperty rdf:about="#x1oajte2sn-26c0">
<rdfs:domain rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
<rdfs:range rdf:resource="http://www.w3.org/2000/01/rdf-schema#Resource"/>
</owl:SymmetricProperty>
1.2 User Defined Properties

The user defined binary associations are subject to generic translation. The association a ssoc(player1:Role1, player2:Role2) is translated to RDF(S) by creating a property assoc with domain Role1 (Role2) and range Role2 (Role1).

Example

The next example illustrates a generic translation using the user-defined binary association Recommended. The Topic Maps statements asserting that Turkey Dish playing a role of Dish and Thanksgiving playing a role of Event in the Recommended association are translated into a set of RDF statements asserting that Recommended is a property with rdfs:domain Dish and rdfs:range Event. Turkey Dish is an instance of Dish and is Recommended for Thanksgiving, which is an instance of Event.

To simplify the illustration, the topic definition Dish, Turkey Dish, Event and Thanksgiving have been omitted from the xtm verbose encoding in the following example.

<topic id="x1oajte2sn-2809">
   <baseName>
      <baseNameString> Turkey Dish </baseNameString>
   </baseName>
</topic> 
<topic id="x1oajte2sn-280b">
   <baseName>
      <baseNameString>Thanksgiving</baseNameString>
   </baseName>
</topic>
<topic id="x1oajte2sn-2812">
   <baseName>
      <baseNameString>Event</baseNameString>
   </baseName>
</topic>
<topic id="x1oajte2sn-280f">
   <baseName>
      <baseNameString>Dish</baseNameString>
   </baseName>
</topic>
<topic id="x1oajte2sn-280d">
   <baseName>
      <baseNameString>Recommended</baseNameString>
   </baseName>
   <baseName>
      <scope>
         <topicRef xlink:href="#x1oajte2sn-280f" />
      </scope>
      <baseNameString>Dish</baseNameString>
   </baseName>
   <baseName>
      <scope>
         <topicRef xlink:href="#x1oajte2sn-2812" />
      </scope>
         <baseNameString>Event</baseNameString>
   </baseName>
</topic>
<association>
   <instanceOf>
      <topicRef xlink:href="#x1oajte2sn-280d" />
   </instanceOf>
   <member>
      <roleSpec>
         <topicRef xlink:href="#x1oajte2sn-280f" />
      </roleSpec>
      <topicRef xlink:href="#x1oajte2sn-2809" />
   </member>
   <member>
      <roleSpec>
         <topicRef xlink:href="#x1oajte2sn-2812" />
      </roleSpec>
      <topicRef xlink:href="#x1oajte2sn-280b" />
   </member>
</association> 
                     
 <rdf:Property rdf:ID="Recommended">
   <rdfs:domain rdf:resource="#"Dish"/>
   <rdfs:range rdf:resource="#Event"/>
</rdf:Property>

<rdf:Description rdf:about="http://compsci.wssu.edu/iis/tm4l/#Turkey Dish">
   <rdfs:label> Turkey Dish </rdfs:label>
   <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Dish"/>
   <ex:Recommended rdf:about="http://compsci.wssu.edu/iis/tm4l/#Thanksgiving">
</rdf:Description>

<rdf:Description rdf:about="http://compsci.wssu.edu/iis/tm4l/#Thanksgiving">
   <rdfs:label> Thanksgiving </rdfs:label>
   <rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Event"/>
</rdf:Description> 

1.3 Dublin Core Metadata

Topic Map associations of type contributor, coverage, creator format, language, publisher, relation, source, subject, and type are translated to dc:contributor, dc:coverage, dc:creator, dc:format, dc:language, dc:publisher, dc:relation, dc:source, dc:subject, and dc:type, where the players of type resource are translated to the subject and the player of type value to the object of the corresponding property. The occurrences of type date, description, identifier and rights are translated to properties dc:date, dc:description, dc:identifier and dc:rights. Finally, the topic name is translated to dc:title.

Example:

The Topic Maps statements asserting that the topic Dublin Core Metadata Initiative - Home Page topic with occurrence 2001-01-16 of type Date plays a role of Resource, while the topic Dave Beckett plays a role of Value in the Creator association is translated into RDF statements asserting that Dave Beckett is a creator of Dublin Core Metadata Initiative - Home Page with creation date of January 16 2001.

<topic id="x1osden5er-38">
    <subjectIdentity>
         <subjectIndicatorRef xlink:href="http://dublincore.org/" />
    </subjectIdentity>
    <baseName>
          <baseNameString>Dublin Core Metadata Initiative - Home Page</baseNameString>
    </baseName>
    <occurrence>
         <instanceOf>
             <topicRef xlink:href="#x1osden5er-3b" />
         </instanceOf>
         <resourceData>2001-01-16</resourceData>
     </occurrence>
</topic>
<topic id="x1osden5er-46">
   <baseName>
       <baseNameString>Dave Beckett</baseNameString>
   </baseName>
</topic>
<topic id="x1osden5er-3e">
  <baseName>
      <baseNameString> Creator </baseNameString>
  </baseName>
  <baseName>
      <scope>
           <topicRef xlink:href="#x1osden5er-40" />
      </scope>
      <baseNameString>Resource</baseNameString>
   </baseName>
   <baseName>
     <scope>
         <topicRef xlink:href="#x1osden5er-43" />
     </scope>
     <baseNameString>Value</baseNameString>
  </baseName>
</topic>
<association>
   <instanceOf>
       <topicRef xlink:href="#x1osden5er-3e" />
   </instanceOf>
    <member>
        <roleSpec>
             <topicRef xlink:href="#x1osden5er-40" />
         </roleSpec>
         <topicRef xlink:href="#x1osden5er-38" />
    </member>
    <member>
         roleSpec>
             <topicRef xlink:href="#x1osden5er-43" />
         </roleSpec>
         <topicRef xlink:href="#x1osden5er-46" />
    </member>
</association>
<topic id="x1osden5er-3b">
  <baseName>
      <baseNameString>Date</baseNameString>
  </baseName>
</topic>
                     
<rdf:Description rdf:about="http://dublincore.org/">
   <dc:title>Dublin Core Metadata Initiative - Home Page</dc:title>
   <dc:creator>Dave Beckett</dc:creator>
   <dc:date>2001-01-16</dc:date>
</rdf:Description>
2 Generic Translation

The generic translation is intended to generate syntactically correct encoding in terms of the target model with minimal intentional inconsistency with respect to the original. All RDF concepts that do not have corresponding counterparts in Topic Maps (i.e. with no matching concepts) are subject to generic translation. Strictly speaking, the term "generic translation" refers to a combination of translations and transformations. The semantics of particular source concept may change its meaning when translated into the target model in order to make use of existing concepts with similar meaning instead of introducing new ones.

The concept of an n-ary relationship can be represented in multiple ways in RDF. We propose a translation where an association n-assoc(player1:Role1, player2:Role2, .., playern:Rolen) is translated to RDF by creating blank nodes as shown below

    blank1 n-assoc blank2
    blank1 Role1 player1
    blank2 n-assoc blank3
    blank2 Role2 player2
    ....
    blankn-2 n-assoc blankn-1
    blankn-1 Rolen-1 playern-1
    blankn-1 Rolen playern

The other Topic Map concept that is a subject to a generic translation is scope. We translate scope by defining an RDF class Scope. The intention is for all scopes to be defined as a subclass of the class Scope. Thus each scoped item (e.g. name or occurrence) becomes a member of a particular "scope" subclass in addition to its preexisting class memberships. Such scope-based classifications allow additional grouping of the corresponding items based on their scopes.

The variant names are translated into a new RDFS property altLabel defined as a sub-property of the property rdfs:label.

See Also

Translation between RDF and Topic Maps: Divide and Translate


This is a personal web page. Opinions or views expressed are those of the author and do not represent the official views of Winston-Salem State University.