]>
Copyright © 2005 W3C ® (MIT, ERCIM, Keio), All Rights Reserved. W3C liability, trademark and document use rules apply.
The Resource Description Framework (RDF) is a model developed by the W3C for representing information about resources in the World Wide Web. Topic Maps is a model for knowledge integration developed by the ISO. This document provides guidelines for users who want to combine usage of the W3C's RDF/OWL family of specifications and the ISO's family of Topic Maps standards.
This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at http://www.w3.org/TR/.
This document is the first deliverable of the RDF/Topic Maps Interoperability Task Force (RDFTM) initiated by the W3C with the support of the ISO Topic Maps committee (ISO/IEC JTC1/SC34).
This document is a W3C Editor's Draft and is expected to change. The SWBPD WG does not expect this document to become a Recommendation. Rather, after further development, review and refinement, it will be published and maintained as a WG Note.
In my opinion, we should aim for the status of Recommendation.
This document is not yet a Public Working Draft. We encourage public comments. Please send comments to public-swbp-wg@w3.org and include the text "comment" in the subject line.
The Resource Description Framework (RDF) is a model developed by the W3C for representing information about resources in the World Wide Web. Topic Maps is a standard for knowledge integration developed by the ISO. The two specifications were developed in parallel during the late 1990's within their separate organizations for what at first appeared to be very different purposes. The results, however, turned out to have a lot in common and this has led to calls for their unification.
While unification has to date not been possible (for a variety of technical and political reasons), a number of attempts have been made to uncover the synergies between RDF and Topic Maps and to find ways of achieving interoperability at the data level. There is now widespread recognition within the respective user communities that achieving such interoperability is a matter of some urgency. This document is the result of the work done by the Semantic Web Best Practices and Deployment Working Group of the W3C with the support of the ISO Topic Maps committee to address this issue. It provides a set of Guidelines for users who want to combine usage of the W3C's RDF/OWL family of specifications and the ISO's family of Topic Maps standards.
The purpose of this document is to present a solution to the problem
of RDF/Topic Maps interoperability at the data level. It consists
of guidelines that describe how to author topic maps and RDF documents
in order to ensure maximum interoperability, and a set of rules for
performing automated translation between RDF and Topic Maps. As the word
guidelines suggests, this document describes one of several
possible ways to perform translations from RDF to Topic Maps, and vice
versa, that is recommended as best practice
. Authors of topic
maps and RDF documents and implementors of translation software who
follow these Guidelines are ensured a high level of
interoperability.
These Guidelines are based on the evaluation of several different possible approaches to the problem, which are described in an earlier Working Group Note ([Survey]). The approach taken here is what that Note terms a semantic mapping, and it is based on a synthesis of [Garshol] and [Gentilucci et al].
The primary goal of these Guidelines is to enable data to be translated from one form to the other without unacceptable loss of information or corruption of the semantics. Further goals are to be able to query the results of a translation in terms of the target model and to share vocabularies across the two paradigms.
In theory, translations can be guided or unguided. An unguided translation is one that can be performed without the presence of specific information whose purpose is to affect the result of the translation. A guided translation is one that relies on the presence of such information in order to perform a correct translation.
These Guidelines deals with guided translations only, since these come closest to achieving the goals described above. Guidance is expressed in the form of statements belonging to the following namespaces: rdf, rdfs, owl, tm, and rdftm. The latter is a vocabulary defined by this document for the specific purpose of enabling translations between RDF and Topic Maps. See the Glossary for the URIs of these namespaces and RDFTM vocabulary for a complete overview of the RDFTM vocabulary.
[RDF Schema] and [OWL] are considered relevant to this work to the extent that the classes and properties they define are supportive of its goals. However, it is explicitly not a goal of the current work to enable the general use of RDF Schema and OWL with Topic Maps.
The previous draft also excluded the goal "to provide the mapping between the RDF and Topic Maps models". I have no idea what this is intended to mean and have therefore removed it.
This document is aimed at anyone with an interest in the problem of RDF/Topic Maps interoperability and a willingness to acquire the necessary understanding of both formalisms. In particular it targets authors of topic maps and RDF documents, creators of tools for translating between RDF and Topic Maps, and people who seek assurance that data can be easily reused across the two paradigms.
All readers are expected to be familiar with RDF and Topic Maps concepts (to a level corresponding to the tutorial material in [RDF Primer] and [Pepper], respectively) and with the syntaxes described in [N3] and [LTM]. To fully understand Section 5, the reader must also be conversant with the models described in [TMDM] and [RDF Semantics].
This document has the following structure:
Section 1 describes the background and purpose of the work underpinning these Guidelines, and also contains the glossary.
Section 2 states the requirements that the Guidelines are intended to fulfill.
Section 3 contains a non-normative prose description of the translation rules between the RDF and Topic Maps models. The description is structured by concept, starting with the most general concepts (things, proxies, assertions, etc.) and ending up with concepts that are specific to one paradigm or the other (e.g., scope and language tags). This section contains some, but not all, of the rationale for the design decisions taken by these Guidelines. Further rationale can be found in [Survey]. Each set of translation rules includes examples of translations in both directions. In these examples, guidance statements are shown in like this. Classes and properties from the rdftm namespace are shown in like this.
Section 4 contains guidelines for authoring RDF and topic maps, respectively. These are expressed as succintly as possible in order that they should be easily referenced.
Section 5 provides a formal exposition of rules for performing automated translations from RDF to Topic Maps, and vice versa, based on the data models described in [TMDM] and [RDF Semantics]. Once again, these rules are expressed as succintly as possible for ease of reference.
Section 6 contains the rdftm vocabulary.
Section 7 lists features and capabilities of RDF and Topic Maps that are not supported by these Guidelines.
owl: http://www.w3.org/2002/07/owl#
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns#
rdfs: http://www.w3.org/2000/01/rdf-schema#
rdftm: http://www.w3.org/2006/rdftm# (NB! proposed)
tm: http://psi.topicmaps.org/iso13250/model/
xsd: http://www.w3.org/2001/XMLSchema#
The direction of a translation whose source is an RDF document and whose result is a topic map.
Topic Maps
The direction of a translation whose source is a topic map and whose result is an RDF document.
Short for URI reference
. A URI with an optional fragment
identifier.
Data originating in one paradigm must merge cleanly with data originating in the other.
Vocabularies must be reusable across the two paradigms.
Queries written against one model must be usable with data translated from the other.
Constructs that cannot be handled by the translation mechanism (if any) must be specified in the Guidelines.
Advice must be given to authors on how to ensure maximum interoperability.
The results of a translation must be deterministic.
The Guidelines themselves must not reference any namespaces apart from rdf, rdfs, owl, tm, and rdftm, except to provide examples. (Guidance must be able to reference any namespace.)
Round-tripping should be possible.
It should be possible to implement the translation using event-based processing.
Properties and classes defined in rdf, rdfs, owl, and tm should be used where possible in order to aid and guide translations.
There should be just one vocabulary that covers both directions and can be expressed in either RDF or Topic Maps.
The translation mechanism should be capable of handling every possible construct in the source paradigm.
This section is informative: it provides a readable, informal, but essentially complete overview of how constructs in the two paradigms relate to each other. Details and formal definitions are to be found in Section 5.
The mechanism for expressing guidance is based on properties and classes in the rdftm vocabulary. The guidance consists for the most part in asserting properties in other vocabularies to be instances of rdftm classes, or to have rdftm properties.
Explanatory examples are given in the [LTM] and [N3] syntaxes for Topic Maps and RDF, respectively.
Topic Maps and RDF share the common purpose of enabling assertions
(or statements) to be made about things that exist in some
domain of interest. The things
about which assertions are made
are called subjects and resources in Topic Maps and
RDF, respectively.
The term subject as used in Topic Maps should not be confused with the term as used in RDF, where it denotes one of the components of an RDF triple. Note also that the term resource is commonly used in Topic Maps in the sense of information resource, which is more restricted than the RDF usage of the term.
Subjects in Topic Maps and resources in RDF can be regarded as being fundamentally equivalent. In practice, they can both be anything at all, including abstractions, objects in the real world, documents, and more.
The things about which Topic Maps and RDF allow statements to be made
are represented by proxies. In Topic Maps, those proxies are
called topics; in RDF they tend to be called
resources, like the things they represent, such that the
distinction between the thing and its proxy is blurred. A more precise
term for the proxy in RDF is RDF node
, except that the latter
includes both nodes with identity (URIs and blank nodes) and literals.
In Topic Maps, literals are strings, which are distinct from topics, so
there is not a complete equivalence between topics and RDF nodes. In
this document we use the term resource as the equivalent of both
subject and topic, in order to conform to everyday RDF
usage.
Since there is a close equivalence between topics and resources, these should generally be mapped to each other when translating TM2RDF or RDF2TM. More precisely:
In TM2RDF:
A topic that has one or more characteristics or identifiers should always be mapped to a resource.
A topic that has no characteristics or identifiers cannot be mapped to a resource, since resources only exist in the context of RDF statements. It can also not be mapped to a property, since a property requires a URIref, which can only come from a subject identifier.
In RDF2TM:
A resource which is the subject of one or more RDF statements should be mapped to a topic.
A property should be mapped to a topic which is then used to type names, occurrences, or associations.
A resource which only occurs as the object of a statement (and never as the subject or predicate) should be mapped to a topic if the statement itself is mapped to an association (see Section 3.6); otherwise it should be mapped to the value of an occurrence.
The basic construct for making assertions is called a statement in both Topic Maps and RDF. These Guidelines recommend that RDF statements in general be mapped to TM statements, and vice versa. However, Topic Maps distinguishes between three kinds of statement: names, occurrences, and associations, so the translation is not entirely straightforward:
In RDF2TM, the fundamental issue is to decide what kind of TM statement each RDF statement should be mapped to. Guidelines for making this decision are given throughout Sections 3.4–3.6, are collected together in Section 3.10.
In TM2RDF, most TM statements are mapped to a single RDF statement. However, non-binary associations and names that have variants require special treatment. Guidelines are given in sections 3.4–3.6.
Name types, occurrence types, and association types are always mapped to RDF properties, and vice versa. The subject identifier of the typing topic maps to the URIref of the RDF property, and vice versa. Special considerations applying to the handling of association role types are covered in Section 3.6.
Both Topic Maps and RDF use URIrefs as identifiers (for subjects and resources, respectively). However, in Topic Maps there are two ways in which a URIref can be used to identify a subject:
directly, as the locator of an information resource that is the subject, in which case the URIref is called a subject locator; or
indirectly, as the locator of an information resource that provides some human-interpretable indication of the subject, in which case it is called a subject identifier.
In Topic Maps, it is always clear whether the URIref is a subject locator or a subject identifier.
Since RDF does not make this distinction, the question arises, in RDF2TM, whether to map the URIref of a resource to a subject locator or to a subject identifier; and, conversely, in TM2RDF, whether to map subject locators or subject identifiers (or neither, or both) to the URIrefs of resources.
Any solution which privileges one type of identifier will lead to unnatural results with identifiers of the other type. These Guidelines therefore advocate a solution that retains some of the ambiguity of the RDF approach and produces the most natural results, while at the same time preserving information necessary for roundtripping. The solution hinges on the assumption that topics with subject locators are implicitly or explicitly instances of the class rdftm:InformationResource, since in the Topic Maps paradigm, only information resources can have subject locators, while any kind of subject can have subject identifiers.
Item identifiers are devoid of any specified semantics and
therefore need not be preserved. However, applications are free to use
them to generate meaningful
internal IDs for blank nodes, and
vice versa. (For ease of understanding, examples in this document do
this; for example, a topic with the item identifier puccini
(and no other identifiers) is shown as an RDF blank node with the ID
_puccini.)
The rules for translating identity are as follows:
When a topic gives rise to a resource:
If the topic has one or more subject locators, one subject locator (chosen at random) becomes the URIref of the resource; the resource is made an instance of rdftm:InformationResource (e.g., through the type of the resource being made an subclass of this class); additional subject locators become owl:sameAs properties; and any subject identifiers become rdftm:subjectIdentifier properties (example ).
If the topic has one or more subject identifiers and no subject locators, one subject identifier (chosen at random) becomes the URIref of the resource. Additional subject identifiers become owl:sameAs properties (examples and ).
Topics with neither subject identifier nor subject locator become blank nodes (example ).
Item identifiers are discarded.
When a topic gives rise to a property:
One subject identifier (chosen at random) becomes the URIref of the resource. Additional subject identifiers become owl:sameAs properties.
All other identifiers are discarded.
A topic without a subject identifier cannot give rise to a property.
In the examples below, [...] stands for statements about the subject that must necessarily exist unless the resource is a property.
[survey : dc:Document
%"http://www.w3.org/TR/rdftm-survey/"
@"http://www.w3.org/2001/sw/BestPractices/RDFTM#Survey"]
▼
<http://www.w3.org/TR/rdftm-survey/>
rdftm:subjectIdentifier
<http://www.w3.org/2001/sw/BestPractices/RDFTM#Survey> ;
[...] .
dc:Document rdfs:subClassOf rdftm:InformationResource .
[puccini @"http://en.wikipedia.org/wiki/Puccini"] ▼ <http://en.wikipedia.org/wiki/Puccini> [...] .
[music:puccini @"http://en.wikipedia.org/wiki/Puccini"] ▼ music:puccini owl:sameAs <http://en.wikipedia.org/wiki/Puccini> ; [...] . - or - <http://en.wikipedia.org/wiki/Puccini> owl:sameAs music:puccini ; [...] .
[puccini] ▼ _puccini [...] .
When a resource gives rise to a topic:
If the resource is an instance of rdftm:InformationResource, the URIref becomes a subject locator; any owl:sameAs properties become additional subject locators; the values of properties that are subproperties of the property rdftm:subjectIdentifier become subject identifiers (examples , and ).
If the resource is not explicitly an instance of rdftm:InformationResource, the URIref becomes a subject identifier; any owl:sameAs properties, together with the values of properties that are subproperties of rdftm:subjectIdentifier, become additional subject identifiers (examples and ).
Blank nodes become topics with generated item identifiers (example ).
When a property gives rise to a topic:
The URIref becomes a subject identifier; any owl:sameAs properties and the values of properties that are subproperties rdftm:subjectIdentifier become additional subject identifiers.
<http://www.w3.org/TR/rdftm-survey/> rdf:type dc:Document .
dc:Document rdfs:subClassOf rdftm:InformationResource .
▼
[idXYZ : dc:Document %"http://www.w3.org/TR/rdftm-survey/"]
<http://www.w3.org/TR/rdftm-survey/> rdf:type rdftm:InformationResource ; rdftm:subjectIdentifier <http://www.w3.org/2001/sw/BestPractices/RDFTM#Survey> . ▼ [idXYZ : rdftm:InformationResource %"http://www.w3.org/TR/rdftm-survey/" @"http://www.w3.org/2001/sw/BestPractices/RDFTM#Survey"]
<http://www.w3.org/TR/rdftm-survey/> rdf:type dc:Document ; skos:subjectIdentifier <http://www.w3.org/2001/sw/BestPractices/RDFTM#Survey> . dc:Document rdfs:subClassOf rdftm:InformationResource . skos:subjectIdentifier rdfs:subPropertyOf rdftm:subjectIdentifier . ▼ [idXYZ : dc:Document %"http://www.w3.org/TR/rdftm-survey/" @"http://www.w3.org/2001/sw/BestPractices/RDFTM#Survey"]
<http://en.wikipedia.org/wiki/Puccini> [...] . ▼ [puccini @"http://en.wikipedia.org/wiki/Puccini"]
music:puccini owl:sameAs <http://en.wikipedia.org/wiki/Puccini> ; [...] . ▼ [music:puccini @"http://en.wikipedia.org/wiki/Puccini"]
[puccini] ▼ _puccini [...] .
The following classes and properties are involved in the guidance for identity:
rdf:type
rdfs:subPropertyOf
rdfs:subClassOf
owl:sameAs
rdftm:InformationResource
rdftm:subjectIdentifier
A topic name is the equivalent of an RDF statement that assigns a label to a resource. A name thus maps to a single statement whose predicate is the same as the name type.
In order to preserve the information that the statement has the semantics of a topic name, the property is declared to be an instance of the class rdftm:NameProperty.
The property rdfs:label deserves particular attention. It may be used in RDF in order to provide a human-readable version of a resource's name. However, in OWL it is defined as an instance of owl:AnnotationProperty, which means that it cannot be used in property axioms. This prevents these Guidelines from making rdfs:label the subject of a guidance statement.
Is this correct?
However, many RDF documents use rdfs:label as a naming property, and many RDF vocabularies declare properties that have naming semantics (such as skos:prefLabel) to be subproperties of rdfs:label. These Guidelines therefore recommend that rdfs:label and any property, X, declared to be a subproperty of rdfs:label, be translated to a topic name; in other words, the following built-in guidance should be assumed:
rdfs:label rdf:type rdftm:NameProperty .
and, given ( X rdfs:subPropertyOf rdfs:label ):
X rdf:type rdftm:NameProperty .
Does the task force agree on this?
The rules for translating names are as follows:
A name maps to a single statement (examples and ).
The topic becomes the subject of the statement.
The name type becomes the predicate of the statement.
The value of the name becomes the object of the statement.
The property is declared to be an instance of rdftm:NameProperty.
In accordance with [TMDM], untyped names map to statements whose property is tm:name-type.
[puccini = foaf:name : "Giacomo Puccini"]
▼
_puccini foaf:name "Giacomo Puccini" .
foaf:name rdf:type rdftm:NameProperty .
[puccini = "Giacomo Puccini"]
▼
_puccini tm:name-type "Giacomo Puccini" .
tm:name-type rdf:type rdftm:NameProperty .
Statements whose properties are instances of rdftm:NameProperty map to names; the property becomes the type of the name (examples , and ).
_puccini foaf:name "Giacomo Puccini" .
foaf:name rdf:type rdftm:NameProperty .
▼
[puccini = foaf:name : "Giacomo Puccini"]
_puccini rdfs:label "Giacomo Puccini" . ▼ [puccini = rdfs:label : "Giacomo Puccini"]
_puccini foaf:name "Giacomo Puccini" . foaf:name rdfs:subPropertyOf rdfs:label . ▼ [puccini = foaf:name : "Giacomo Puccini"]
The following classes and properties are involved in the guidance for names:
rdf:type
rdftm:NameProperty
In Topic Maps, a name can have variants. A variant is an alternate form of the name that is intended to be used in a specific processing context, which itself is specified as a scope. No equivalent construct exists in RDF. To represent a variant in RDF, the statement that asserts the name (as described in the preceding section) should be reified and then given the properties rdftm:variant and rdftm:variant-scope. (See Section 3.9 for a more general discussion of scope.)
I have changed the second property from rdftm:scope to rdftm:variant-scope, because when a scoped name has a variant we wouldn't know (in RDF2TM) where to put the properties (on the name or on the variant). Thus we need a separate rdftm:variant-scope property in order to be able to distinguish the two. See the example in Section 3.9, where the reified name has both scope and variant-scope properties.
The rules for translating variants are as follows:
When a name has a variant, the name is map to a statement as described above in section 3.4, and the statement is reified (example ).
The variant name becomes the value of an rdftm:variant property on the statement.
Each topic in the scope of the variant name becomes the value of a rdftm:variant-scope property on the statement.
[puccini = foaf:name : "Giacomo Puccini" ; "puccini, giacomo"]
- which is equivalent to -
[puccini = foaf:name : "Giacomo Puccini"
("puccini, giacomo" / tm:sort)]
▼
[ rdf:type rdf:Statement ;
rdf:subject _puccini ;
rdf:predicate foaf:name ;
rdf:object "Giacomo Puccini" ;
rdftm:variant "puccini, giacomo" ;
rdftm:variant-scope tm:sort
] .
foaf:name rdf:type rdftm:NameProperty .
Each block of statements consisting of a reified statement that has an rdftm:variant property and one or more rdftm:scope properties, and whose predicate is an instance of rdftm:NameProperty, is translated to a name with a variant (example ).
[ rdf:type rdf:Statement ; rdf:subject _puccini ; rdf:predicate foaf:name ; rdf:object "Giacomo Puccini" ; rdftm:variant "puccini, giacomo" ; rdftm:variant-scope tm:sort ] . foaf:name rdf:type rdftm:NameProperty . ▼ [puccini = foaf:name : "Giacomo Puccini" ; "puccini, giacomo"]
The following classes and properties are involved in the guidance for variants:
rdftm:NameProperty
rdftm:variant
rdftm:variant-scope
An occurrence is a binary relationship between a subject and an information resource. Occurrences can be internal or external. The value of an external occurrence is a URI; the value of an internal occurrence is a string whose datatype can be anything except a URI. An occurrence thus maps to a single statement whose predicate is the same as the occurrence type and whose value is either a URIref, or a literal with an optional datatype. (Datatypes are covered in Section 3.7.)
In order to preserve the information that the statement has the semantics of an occurrence, the property is declared to be an instance of the class rdftm:OccurrenceProperty.
Untyped occurrences cannot be translated since there is no URIref available to create a property.
The rules for translating occurrences are as follows:
An occurrence maps to a single statement (examples and ).
The topic becomes the subject of the statement.
The type becomes the predicate of the statement.
The value of the occurrence becomes the object of the statement.
The property is declared to be an instance of rdftm:OccurrenceProperty.
Untyped occurrences cannot be translated.
{puccini, bio:dateOfBirth, [[1858-12-22]]}
▼
_puccini bio:dateOfBirth "1858-12-22" .
bio:dateOfBirth rdf:type rdftm:OccurrenceProperty .
{tosca, ex:synopsis, "http://www.metopera.org/synopses/tosca.html"}
▼
_tosca ex:synopsis <http://www.metopera.org/synopses/tosca.html> .
ex:synopsis rdf:type rdftm:OccurrenceProperty .
Statements whose properties are instances of rdftm:OccurrenceProperty map to occurrences; the property becomes the type of the occurrence (examples and ).
_puccini bio:dateOfBirth "1858-12-22" .
bio:dateOfBirth rdf:type rdftm:OccurrenceProperty .
▼
{puccini, bio:dateOfBirth, [[1858-12-22]]}
_tosca ex:synopsis <http://www.metopera.org/synopses/tosca.html> .
ex:synopsis rdf:type rdftm:OccurrenceProperty .
▼
{tosca, ex:synopsis, "http://www.metopera.org/synopses/tosca.html"}
The following classes and properties are involved in the guidance for occurrences:
rdf:type
rdftm:OccurrenceProperty
Relationships between things are represented by associations in Topic Maps and by statements in RDF. However, there are three fundamental differences between associations and RDF statements:
An RDF statement always represents a binary relationship between
two things
(called the subject and the object); an
association, on the other hand, can represent a relationship between an
arbitrary number of participants (or role players), which are
always represented by topics.
The subject of an RDF statement is always a resource, but the object may be either a resource or a literal. The TM equivalent of literals (strings) cannot be role players in associations, however; an RDF statement whose object is a literal must therefore be translated to an (internal) occurrence or a name.
RDF statements represent directed relations, whereas associations are inherently multidirectional. This has two major consequences: firstly, a single relationship is often represented by two RDF statements (one for each direction), whose properties are the inverse of each other; and secondly, associations require additional information (called role types) in order to express the nature of each role player's participation in the relationship.
Translations between RDF and Topic Maps must take these fundamental differences into account. The following sections explain the guidelines for doing so by focusing in turn on binary associations, n-ary associations (here defined as associations that involve three or more role players), and unary associations (which involve just one role player).
A binary association, such as the born in
relationship between
Puccini and Lucca, actually consists of five pieces of information: the
type of the association, the two role players, and the two corresponding
role types. The following example states that Puccini was born in
Lucca:
bio:born-in( puccini : foaf:Person, lucca : geo:place )
The topics 'person' and 'place' specify the types of the roles played by Puccini and Lucca, respectively. They tell us that Puccini was born in Lucca, and not vice versa, and are therefore vital pieces of information. The most natural way to express this relationship in RDF is as follows:
_puccini bio:born-in _lucca .
— that is, as a single statement whose property is bio:born-in. In order to do this correctly, the translator requires some additional information, viz: which of the role players (the person or the place) should become the subject and object of the resulting statement?
In order to provide this information, these Guidelines define the properties rdftm:subject-role and rdftm:object-role, whose domain is rdf:Property. They are used as follows to express the guidance for the example above:
bio:born-in rdftm:subject-role foaf:Person . bio:born-in rdftm:object-role geo:place . /* optional */
In TM2RDF, the rdftm:object-role property is optional, since the translator can infer the object when the subject is known. However, in RDF2TM, the rdftm:object-role property is required in order to specify the identity of the second role type. In order to achieve roundtripping, TM2RDF translators must generate this property if it is not already specified.
The following kinds of binary association require special treatment:
The Topic Maps standard does not prevent association types from having multiple signatures, i.e., different combinations of role types, such as in the following example:
* written-by( tosca1 : opera, puccini : composer ) written-by( tosca2 : play, sardou : playwright )
In order to keep these Guidelines as simple as possible and to encourage best practice, no support is provided for such associations (except in the case of n-ary associations with optional roles, as discussed in Section 3.6.2).
Or should we allow association types to have multiple rdftm:subject-role properties?
In some associations (e.g., foaf:knows), both role players have the same role type. In such cases, the choice of subject and object will be arbitrary, and the translation will not be deterministic.
These two relationship types have special significance in RDF and Topic Maps and therefore have built-in guidance. They are discussed in Sections 3.6.1.1 and 3.6.1.2, respectively.
A binary relationship that is represented by a single association may be represented by two RDF statements whose properties are the inverse of each other. A natural RDF2TM translation requires two such properties to result in a single association. These guidelines therefore recommend that the rdftm role properties only be assigned to one of the two inverse properties and that RDF2TM translators use the owl:inverseOf property to avoid creating duplicate associations. TM2RDF translators should use the owl:inverseOf property, when present, to create pairs of RDF statements that are the inverse of each other.
Untyped associations cannot be translated since there is no URIref available to create a property.
The rules for translating binary associations are as follows:
A binary association becomes an RDF statement (example ).
The topic playing the role whose type is the value of the association type's rdftm:subject-role property becomes the subject of the statement. The other topic becomes the object of the statement.
The association type becomes the predicate of the statement.
In the case of symmetric associations, where both role players play the same role, the choice of subject and object is arbitrary (example ).
If the association type has an owl:inverseOf property, a second RDF statement should be created with the subject and object reversed (example ).
Untyped associations cannot be translated.
bio:born-in( puccini : foaf:Person, lucca : geo:place ) { bio:born-in, rdftm:subject-role, foaf:Person } { bio:born-in, rdftm:object-role , geo:place } /* optional */ ▼ _puccini bio:born-in _lucca .
foaf:knows( pepper : foaf:Person, presutti : foaf:Person ) { foaf:knows, rdftm:subject-role, foaf:Person } { foaf:knows, rdftm:object-role , foaf:Person } /* optional */ ▼ _pepper foaf:knows _presutti . - or - _presutti foaf:knows _pepper .
music:composer( tosca : music:Oeuvre, puccini : music:Composer )
{ music:composer, owl:inverseOf, music:composed }
{ music:composer, rdftm:subject-role, music:Oeuvre }
▼
_tosca music:composer _puccini .
_puccini music:composed _tosca .
An RDF statement whose predicate has the properties rdftm:subject-role and rdftm:object-role becomes a binary association.
The role of the topic that was the subject of the statement is set to the value of the rdftm:subject-role property. The role of the topic that was the object of the statement is set to the value of the rdftm:object-role property (examples and ).
Inverse statements do not result in a separate, duplicate association (example ).
_puccini bio:born-in _lucca . bio:born-in rdftm:subject-role foaf:Person . bio:born-in rdftm:object-role geo:place . /* required */ ▼ bio:born-in( _puccini : foaf:Person, _lucca : geo:place )
onto:pepper foaf:knows unibo:presutti . foaf:knows rdftm:subject-role foaf:Person . foaf:knows rdftm:object-role foaf:Person . /* required */ ▼ foaf:knows( onto:pepper : foaf:Person, unibo:presutti : foaf:Person )
_tosca music:composer _puccini . _puccini music:composed _tosca . music:composer owl:inverseOf music:composed . music:composer rdftm:subject-role music:Oeuvre . music:composer rdftm:object-role music:Composer . /* required */ ▼ music:composer( tosca : music:Oeuvre, puccini : music:Composer )
The following classes and properties are involved in the guidance for binary associations:
owl:inverseOf
rdftm:subject-role
rdftm:object-role (optional in TM2RDF)
RDF has a predefined property called rdf:type which relates an instance to a class. This corresponds to the predefined association type tm:type-instance in Topic Maps (with its corresonding role types tm:instance and tm:type).
These Guidelines recommend that tm:type-instance be translated to rdf:type, and vice versa, and that the following built-in guidance be assumed:
tm:type-instance owl:sameAs rdf:type ; rdftm:subject-role tm:instance ; rdftm:object-role tm:type .
The rules for translating type-instance associations are as follows:
Do we want to allow the assumed equivalence to be overruled?
In the absence of explicit guidance to the contrary, an association of the form
tm:type-instance( a : tm:instance, b : tm:type )
becomes an RDF statement of the form
_a rdf:type _b .
(Example ).
[puccini : music:Composer] - which is equivalent to - tm:type-instance( puccini : tm:instance, music:Composer : tm:type ) ▼ _puccini rdf:type music:Composer .
Do we want to allow the assumed equivalence to be overruled?
In the absence of explicit guidance to the contrary, an RDF statement of the form
_a rdf:type _b .
becomes an association of the form
tm:type-instance( a : tm:instance, b : tm:type )
(Example ).
_puccini rdf:type music:Composer . ▼ [puccini : music:Composer] - which is equivalent to - tm:type-instance( puccini : tm:instance, music:Composer : tm:type )
RDF Schema has a predefined property called rdfs:subClassOf which relates a class to its superclass. This corresponds to the predefined association type tm:supertype-subtype in Topic Maps (with its corresponding role types tm:supertype and tm:subtype).
These Guidelines recommend that tm:supertype-subtype be translated to rdfs:subClassOf and vice versa, and that the following built-in guidance be assumed:
tm:supertype-subtype owl:sameAs rdfs:subClassOf ; rdftm:subject-role tm:supertype ; rdftm:object-role tm:subtype .
The rules for translating supertype-subtype relationships are as follows:
Do we want to allow the assumed equivalence to be overruled?
In the absence of explicit guidance to the contrary, an association of the form
tm:supertype-subtype( a : tm:subtype, b : tm:supertype )
becomes an RDF statement of the form
a rdfs:subClassOf b .
(Example ).
tm:supertype-subtype( music:Composer : tm:subtype, foaf:Person : tm:supertype ) ▼ music:Composer rdfs:subClassOf foaf:Person .
Do we want to allow the assumed equivalence to be overruled?
In the absence of explicit guidance to the contrary, an an RDF statement of the form
a rdfs:subClassOf b .
becomes association of the form
tm:supertype-subtype( a : tm:subtype, b : tm:supertype )
(Example ).
music:Composer rdfs:subClassOf foaf:Person . ▼ tm:supertype-subtype( music:Composer : tm:subtype, foaf:Person : tm:supertype )
Binary associations are relatively easy to map to RDF, but, as noted above, Topic Maps allows associations of any arity, whereas, in RDF, all relationships are inherently binary. Work has recently been undertaken by the SWBPD's Ontology Engineering Patterns task force [Noy et al] to define patterns for describing n-ary relations in RDF. In order to ensure maximum interoperability, these Guidelines build on that work and support the same patterns.
[Noy et al] identify two basic representation
patterns for n-ary relationships: Pattern 1, which they term
Introducing a new class for a relation, and Pattern 2,
Using lists for arguments in a relation. Of these, only Pattern
1 corresponds to the Topic Maps notion of n-ary relationships. Pattern
2, representing a list or sequence of arguments
, is most
naturally represented in Topic Maps using multiple, chained
associations.
[Noy et al] provide three use cases for Pattern 1.
All of them involve defining a class to represent the property, and a
resource that is an instance of that class to represent the
relationship. Each argument of the relation
(i.e., role player in
the relationship) is then linked to the resource that represents the
relationship using a single RDF statement. However, there are two subtly
different structures that can be employed:
In the first two use cases, one of the role players is the subject of the statement connecting it to the relationship, while the others are objects of their respective statements.
In the third use case, every role player is the object of the statement connecting it to the relationship.

In the first two use cases, one of the role players is regarded as
standing out
in some way and playing a more central role as the
subject of the relationship (pattern 1A). In the third use case, all
role players are regarded as being equally important; none of them can
be regarded as being the subject
of the relationship (pattern
1B).
In order to represent Pattern 1, these Guidelines define the class rdftm:N-aryProperty. The property rdftm:subject-role is used to distinguish between Patterns 1A and 1B.
The rules for translating n-ary associations are as follows:
An n-ary association maps to n RDF statements, one for each role player.
Each statement connects one of the role players to a resource which corresponds to the association type, by a property which corresponds to the role type.
If the role type is the value of an rdftm:subject-role property whose subject is the association type, the corresponding role player becomes the subject of the statement (example ); otherwise it becomes the object of the statement (example ).
A guidance statement is created stating that the association type is an instance of rdftm:N-aryProperty
bio:killed-by( scarpia : bio:victim, floria-tosca : bio:perpetrator, stabbing : bio:method ) { bio:killed-by, rdftm:subject-role, bio:victim } ▼ _scarpia bio:victim _killed-by00n . _killed-by00n rdf:type bio:killed-by ; bio:perpetrator _floria-tosca ; bio:method _stabbing . bio:killed-by rdf:type rdftm:N-aryProperty .
bio:killed-by( scarpia : bio:victim, floria-tosca : bio:perpetrator, stabbing : bio:method )
▼
_killed-by00n
rdf:type bio:killed-by ;
bio:victim _scarpia ;
bio:perpetrator _floria-tosca ;
bio:method _stabbing .
bio:killed-by rdf:type rdftm:N-aryProperty .
A resource belonging to a class of type rdftm:N-aryProperty becomes the type of an n-ary association (example ).
Each resource that is linked to it becomes a role player in the association.
The property becomes the role type.
If one of the participants in the relation is the subject of a statement whose object is the relation, an rdftm:subject-role statement is created in order to enable roundtripping (example ).
_killed-by00n
rdf:type bio:killed-by ;
bio:victim _scarpia ;
bio:perpetrator _floria-tosca ;
bio:method _stabbing .
bio:killed-by rdf:type rdftm:N-aryProperty .
▼
bio:killed-by( scarpia : bio:victim, floria-tosca : bio:perpetrator, stabbing : bio:method )
_scarpia bio:victim _killed-by00n . _killed-by00n rdf:type bio:killed-by ; bio:perpetrator _floria-tosca ; bio:method _stabbing . bio:killed-by rdf:type rdftm:N-aryProperty . ▼ bio:killed-by( scarpia : bio:victim, floria-tosca : bio:perpetrator, stabbing : bio:method ) { bio:killed-by, rdftm:subject-role, bio:victim }
The following classes and properties are involved in the guidance for n-ary associations:
rdf:type
rdftm:N-aryProperty
rdftm:subject-role
A unary association is a special case of the n-ary associations described above, differing only in that the subject role can be assumed to be played by the (only) role-player. Pattern 1A should therefore always be chosen in TM2RDF, even if there is no explicit guidance in the form of an rdftm:subject-role statement.
The rules for translating unary associations are as follows:
A unary association maps to a single RDF statement (example ).
The role player becomes the subject of the statement.
The type becomes the object of the statement.
The role type becomes the property of the statement.
A guidance statement is created stating that the association type is an instance of rdftm:N-aryProperty
music:unfinished( turandot : work )
▼
_turandot music:unfinished _unfinished00n .
music:unfinished rdf:type rdftm:N-aryProperty .
A resource belonging to a class of type rdftm:N-aryProperty that this the object of just one relation becomes the type of a unary association (example ).
The subject of the statement becomes the role player in the association.
The property becomes the role type.
_turandot music:unfinished _unfinished00n .
music:unfinished rdf:type rdftm:N-aryProperty .
▼
music:unfinished( turandot : work )
The following classes and properties are involved in the guidance for unary associations:
rdf:type
rdftm:N-aryProperty
rdftm:subject-role
Both RDF and Topic Maps allow the specification of datatypes on literals or strings. In RDF, this facility applies to any plain literal; in Topic Maps, it applies to the values of variants and occurrences. Both paradigms require the datatype to be specified using a URI, which, in RDF, must come from [XML Schema]. Topic Maps has three built-in datatypes (string, IRI, and XML), all of which are defined in [XML Schema].
These features are essentially compatible, except for the following:
The base name of a topic must always be a string; only variants can have other datatypes. Thus there is a potential conflict when an RDF statement, whose value has a datatype other than string, has guidance that says it should be mapped to a topic name.
How do we handle this?
The value of a variant or occurrence may have a datatype that is not covered by [XML Schema].
How do we handle this?
Other than these two edge cases, datatypes present no problems when translating RDF2TM or TM2RDF.
The rules for translating datatypes are as follows:
The datatype of a variant or an occurrence becomes the data type of a plain literal (example ).
{ puccini, bio:dateOfBirth, [[1858-12-22]]^xsd:date }
▼
_puccini bio:dateOfBirth "1858-12-22"^^xsd:date .
bio:dateOfBirth rdf:type rdftm:OccurrenceProperty .
The datatype of a plain literal becomes the data type of either a variant or an occurrence, depending on the rules defined in Sections 3.4–3.5 (example ).
_puccini bio:dateOfBirth "1858-12-22"^^xsd:date .
bio:dateOfBirth rdf:type rdftm:OccurrenceProperty .
▼
{ puccini, bio:dateOfBirth, [[1858-12-22]]^xsd:date }
RDF provides a facility called reification which allow statements to be made about statements. Topic Maps also provides a facility called reification which allows names, associations, occurrences, roles, and topic maps to be regarded as topics in order for statements to be made about them. These two facilities are basically equivalent, except for two things:
There is no direct equivalent of the topic map itself in RDF. The closest equivalent is the set of statements contained in a single RDF document, but this is not quite the same.
In RDF, there is nothing that corresponds to association roles.
As a consequence, a reified name, occurrence, or association can be mapped to a reified RDF statement; a reified topic map or association role cannot be mapped; and a reified RDF statement can be mapped to a reified name, occurrence, or association. (In the case of n-ary associations and names with variants, reification is already indicated, so no additional reification is necessary.)
Actually n-ary associations (and unary associations) pose a problem. In a sense they are already reified, since the translation rules require a resource to be created to represent the relationship. However, it is not possible to make (additional) statements about the relationship, because an RDF2TM translator would not know how to distinguish such statements from statements that represent roles. One way to achieve this would be to make every role type (which becomes a property in TM2RDF) into an instance of the class rdftm:RoleProperty, but this adds quite an overhead to the machinery. Is it worth it?
A reified name, occurrence or association is mapped according to the rules defined in Sections 3.4–3.6, except that the resulting RDF statement is reified (examples , and ).
[puccini = rdfs:label : "Giacomo Puccini" ~puccini-name] ▼ _puccini-name rdf:type rdf:Statement ; rdf:subject _puccini ; rdf:predicate rdfs:label ; rdf:object "Giacomo Puccini" .
{puccini, bio:dateOfBirth, [[1858-12-22]]} ~puccini-birthdate
▼
_puccini-birthdate
rdf:type rdf:Statement ;
rdf:subject _puccini ;
rdf:predicate bio:dateOfBirth ;
rdf:object "1858-12-22" .
bio:born-in( puccini : foaf:Person, lucca : geo:place ) ~puccini-birthplace { bio:born-in, rdftm:subject-role, foaf:Person } { bio:born-in, rdftm:object-role , foaf:Place } ▼ _puccini-birthplace rdf:type rdf:Statement ; rdf:subject _puccini ; rdf:predicate bio:born-in ; rdf:object _lucca .
A reified RDF statement is mapped to a name, occurrence or association, as defined in Sections 3.4–3-6, except that the resulting statement is reified. (For examples, simply invert the immediately preceding examples.)
The following classes and properties are involved in the guidance for reification:
none
Topic Maps defines the concept of scope as the context
within which a statement is valid.
A scope is composed of a set of
topics that together define that context. RDF has no equivalent concept,
nor does it define any vocabulary for the representation of context.
Scope is essentially a way to annotate a name, occurrence, or association for the specific purpose of expressing its contextual validity; in other words, it is a special case of making a statement about a statement. Since the latter involves reification in both RDF and Topic Maps, these Guidelines define a property rdftm:scope that is to be used with reified statements in order to allow scope to be expressed in RDF.
The rules for translating scope are as follows:
A scoped name, occurrence, or association is translated as described in Sections 3.4–3.6, and the resulting statement is reified (examples , , and ).
For each topic comprising the scope, one rdftm:scope property, whose value is the resource corresponding to the topic in question, is assigned to the reified statement.
If the scope is defined by a single topic that represents a natural language, the rules for translating language tags should be used instead (see Section 3.9.1).
Make special mention of situations where reification is unnecessary or already performed (i.e., n-aries, names with variants, more...)?
[puccini = foaf:name : "Giacomo Puccini" / foo bar] ▼ [ rdf:type rdf:Statement ; rdf:subject _puccini ; rdf:predicate foaf:name ; rdf:object "Giacomo Puccini" ; rdftm:scope _foo , _bar ] . foaf:name rdf:type rdftm:NameProperty .
{tosca, music:synopsis, "http://www.metopera.org/synopses/tosca.html"}
/ opera:metopera
▼
[ rdf:type rdf:Statement ;
rdf:subject _tosca ;
rdf:predicate music:synopsis ;
rdf:object "http://www.metopera.org/synopses/tosca.html" ;
rdftm:scope opera:metopera
] .
music:synopsis rdf:type rdftm:OccurrenceProperty .
music:influenced-by( butterfly : ex:object, iris : ex:agent ) / carner { music:influenced-by, rdftm:subject-role, ex:object } { music:influenced-by, rdftm:object-role , ex:agent } ▼ [ rdf:type rdf:Statement ; rdf:subject _butterfly ; rdf:predicate music:influenced-by ; rdf:object _iris ; rdftm:scope _carner ] .
[boito = foaf:name : "Tobia Gorrio" / ex:nom-de-plume
("puccini, giacomo" / tm:sort)]
▼
[ rdf:type rdf:Statement ;
rdf:subject _puccini ;
rdf:predicate foaf:name ;
rdf:object "Giacomo Puccini" ;
rdftm:variant "puccini, giacomo" ;
rdftm:variant-scope tm:sort ;
rdftm:scope ex:nom-de-plume
] .
foaf:name rdf:type rdftm:NameProperty .
An RDF statement that has one or more rdftm:scope properties is translated in accordance with the rules in Sections 3.4–3.6 and the resulting name, occurrence, or association is given a scope consisting of the topics that are the objects of the rdftm:scope properties. (For examples, simply invert the immediately preceding examples.)
The following classes and properties are involved in the guidance for scope:
rdftm:scope
RDF has a special mechanism (called language tags) for specifying the natural language of a plain literal. The most natural way to represent the same thing in Topic Maps is to use scope. These Guidelines therefore recommend the following exception to the general rule for handling scope:
A name or internal occurrence that is scoped by a single topic that represents a natural language translates to an RDF statement with a corresponding language tag (example ).
How do we know when it is a language?
[la-fanciulla = dc:title : "La Fanciulla del West"
= dc:title : "The Girl of the Golden West" / lang:en]
▼
_la-fanciulla
dc:title "La Fanciulla del West" ,
"The Girl of the Golden West"@en .
dc:title rdf:type rdftm:NameProperty .
An RDF plain literal with a language tag becomes the object of a scoped name or occurrence, according to the rules defined in Sections 3.4–3.6. The scope is defined by a single topic representing the corresponding language (examples and ).
What is the identity of that topic?
_la-fanciulla dc:title "The Girl of the Golden West"@en .
dc:title rdf:type rdftm:NameProperty .
▼
[la-fanciulla = dc:title : "The Girl of the Golden West" / lang:en]
_la-fancilla dc:description
"En opera av Puccini hvor handlingen finner sted i Amerika."@no .
dc:description rdf:type rdftm:OccurrenceProperty .
▼
{la-fanciulla, dc:description,
[[En opera av Puccini hvor handlingen finner sted i Amerika.]]
} / lang:no
[TBD -- This will be a collation of the rules contained in the RDF2TM parts of Sections 3.4–3.6, which are mostly presented from the TM2RDF perspective. This section allows the RDF2TM perspective to be emphasised.]
What happens if there is no guidance for a particular property? Is it assumed to be an occurrence?
The following bullet points define guidelines for authors of topic maps and RDF documents who wish to achieve maximum interoperability. The rationale for these guidelines is contained in Chapter 3.
Always assign a subject identifier to typing topics.
Ensure that binary association types have rdftm:subject-role properties.
Do not use association types with multiple signatures.
Make name properties instances of rdftm:NameProperty.
Do not make a property whose datatype is not xsd:string an instance of rdftm:NameProperty.
Ensure that properties that should be translated to associations have rdftm:subject-role and rdftm:object-role properties.
The rdftm vocabulary consists of the following classes and properties:
The class of resources that can be represented as a sequence of bytes and thus could potentially be retrieved over a network. A subclass of rdf:Resource.
The class of properties that have the semantics of assigning a name.
The class of properties that have the semantics of assigning an occurrence.
The class of properties that have the semantics of describing n-ary relations.
A property that assigns a subject identifier to a topic or resource.
A property that specifies the type of role to be played by the subject of an RDF statement that is to be translated to an association; or the type of the role player that becomes the subject of the RDF statement when translating from an association.
A property that specifies the type of role to be played by the object of an RDF statement that is to be translated to an association; or (optionally) the type of the role player that becomes the object of the RDF statement when translating from an association.
A property that specifies (part of) the context in which a statement is considered to be valid.
A property that specifies an alternative form of a name.
A property that specifies (part of) the context in which a variant name is considered to be valid.
This section describes the limitations of these Guidelines in terms of non-deterministic results and unsupported constructs.
Symmetric associations in TM2RDF — because there is no deterministic way to choose the subject and object of the resulting statement.
Topics with multiple identifiers — because there is no deterministic way to choose the identifier to use as the URIref of the resulting resource.
Typing topics that have no subject identifier — because they cannot be translated to a property with a URIref.
Association types with multiple signatures — because there is no simple way to express the rules for assigning subject and object roles.
Untyped occurrences — because there is no URIref from which to create a property.
Untyped associations — because there is no URIref from which to create a property.
Untyped association roles — because there is no URIref from which to create a property.
Reified association roles — because there is no construct in RDF that is equivalent to an association role.
This could be done using the rules for n-ary associations, in which each role is represented by a statement that could be reified.
Reified topic maps — because there is no construct in RDF that is equivalent to a topic map.
Should we have a special property or class to handle this, e.g. rdftm:TopicMap?
Topics that have no characteristics, identifiers, or instances — because there is no way to instantiate a resource in RDF except as a component of a statement.
Topic maps in which the same type is used to type different kinds of constructs — because it would lead to ambiguity when roundtripping.
In TM2RDF, datatypes that are not covered by [XML Schema] — because RDF only allows the latter.
In RDF2TM, plain literals with datatypes other than xsd:string that are the value of properties of type rdftm:NameProperty — because topic names must be strings.
[TBD -- more?]
$Id: guidelines.html,v 1.5 2006/02/10 12:20:03 pepper Exp $