Appendix A - IMS Meta-data RDF Binding

This is a binding guide for representing IMS Learning Resource Meta-data v1.2 in RDF. For each element in the IMS Meta-data Information Model v1.2 this Appendix provides the preferred representation in RDF, with examples. This appendix is a working draft that is subject to change, and should not be considered final. There are sample RDF instances that use the constructs described below, as well as other documents containing the language definitions, the local vocabulary and taxonomy, and the set of RDF schemas, available for download on the IMS Meta-data website: http://www.imsproject.org/metadata.

The information presented here is not completely self-contained, but rather depends on understanding several separate specifications. In particular, this RDF binding depends on:

Each of these should be regarded as a prerequisite for using and implementing this binding.

A.1  Using RDF for Meta-data as Compared to Pure XML

It is important to realize that an RDF binding can be done in a number of fundamentally different ways. This has to do with the semantic richness of RDF. In addition, in a pure XML approach such as the IMS Meta-data XML Binding of LOM, the structure of the XML instance is the result of choosing the most convenient syntax, creating the element hierarchy that best matches the structure of the data.

By contrast, in RDF the precise data model is not simply syntactic, but has semantic consequences. RDF is a highly object-oriented approach where objects have properties that relate them to other objects. The type of an object or property defines its interpretation, and is thus not simply a syntactic placeholder. In addition, while in the pure XML version of the IMS Binding, each structure is represented by an element. In RDF there are several different possibilities, where you can use properties, resources, or even namespaces to get the structure you want. And the choice matters, as those constructs have fundamentally different semantics.

Thus, a considerable amount of effort is needed to extract the desired semantic quality of each element in order to be able to represent it appropriately. If this reinterpretation is not done, you risk losing not only clarity for the human consumer, but you risk more serious damage to the usefulness of the model. Much of the effort that has gone into this binding has focused on creating such a well-formed semantics of the model.

A.2  Design Criteria for RDF Binding

Creating an RDF binding is very different from creating an IMS Meta-data XML binding, so formulating a more precise design criteria is necessary.

As a consequence of the nature of RDF, we cannot expect the RDF binding to fulfill the same purpose as the XML binding. The XML Binding defines an exchange format for meta-data. The meta-data might be contained in a database and an XML representation generated on demand, for export to other tools and environments. Thus, an XML meta-data record is a self-contained entity with a well-defined structure.

In contrast, an RDF representation is more often than not the definite representation of the meta-data. In addition, the meta-data is not all self-contained, but rather part of a global network of information, where anyone has the capability of adding meta-data to any resource. It is also not the case that meta-data for one resource need be contained in a single RDF document. Translations might be administrated separately, and different categories of meta-data might be separated. This dramatically strengthens the incentive both to reuse identical structures that are used repeatedly, as well as to create decentralized descriptions of resources. Both of these phenomena naturally lead to a fundamentally different approach to meta-data modelling than that found in the XML binding.

Thus, we expect to see much richer structures on many levels in an RDF representation than in the corresponding XML binding instance. In this perspective, we should expect to find that meta-data expressed in RDF using this binding probably can be exported to XML format without many problems; however, an XML meta-data record cannot be effortlessly translated to RDF.

Another aspect is that of compatibility. In XML, there is seldom a natural way to reuse other meta-data standards. By contrast, RDF is designed in a way that leads to naturally reuseable constructs. So, as can be seen in more detail below, this binding is directly compatible with Dublin Core and with vCard. However, this compatibly comes at the price of modeling freedom - some modeling restrictions are imposed on us. Fortunately, much of this compatibility comes for free when taking the approach that the data should be modeled to maximally exploit the expressivity of RDF.

Finally, as RDF is intended to be processed by software, and in many cases software with no explicit knowledge of LOM, it is important to use explicit data typing. This will be seen below in the representation of languages and dates. We have tried to avoid using string literals with only implicit typing. Thus, the purpose of this binding is to define a set of RDF constructs that facilitates introduction of LOM meta-data into the semantic web in the most convenient way.

A.3  Relationship to Other Standards

The RDF representation given here relies heavily on the Dublin Core meta-data element set, and its representation in RDF. We try to model IMS elements similarly to how the Dublin Core qualifiers are represented. The Dublin Core RDF usage model is taken from the latest DC-Architecture RDF draft. Understanding that work is helpful when trying to understand what is being described in this document.

A.3.1   Dublin Core

This appendix is aligned with the efforts to improve interoperability between Dublin Core and LOM. The RDF representation presented here is almost fully Dublin Core RDF compatible, in the sense that meta-data constructed according to this guide can be directly understood by Dublin Core-aware software. All the elements of the LOM Dublin Core mapping (in Appendix B of LOM WD 6.1) are compatibly represented, thus allowing the use of all the Dublin Core constructs in a compatible way. It is, however, at this time not possible to map any Dublin Core construct (made without reference to this guide) to a LOM element without some effort, as the LOM requires a more detailed structure in many elements. In short, this guide describes some restrictions to Dublin Core meta-data that are needed to be LOM compatible. The guiding principle has been that using the "dumb-down" algorithm described in Dublin Core Qualifiers draft (http://www.mathematik.uni-osnabrueck.de/projects/dcqual/qual21.3.1/) should result in correct Dublin Core meta-data.

Please note that the Dublin Core Qualifiers work referred to above has not yet reached its final version, so some constructs described here might change.

A.3.2   LOM/IMS XML

The Dublin Core compatibility is reached at the cost of full IMS XML binding compatibility, which is doomed to be lost anyway when using RDF. Close attention has been paid to LOM, and no structure representable in LOM should be problematic to represent in the RDF binding. But there are some differences from the IMS XML binding in structure, naming, and representation.

A.3.3   vCard

This binding also makes use of the vCard RDF binding by the W3C (http://www.w3.org/TR/vcard-rdf).

A.4  Guidelines to Specific Constructs

A.4.1.   Namespaces

Five external namespaces are used below.

In addition, this binding is separated into a number of namespaces. Each LOM category has its own namespace, and in addition there is a root namespace containing common constructs. The following abbreviations are used:

In addition, the namespace myVoc is used when referring to any resource that can be defined by users and implementers. It uses the URI "http://www.myVocabulary.com/someVocab#".

A.4.2   rdf:value and Other Constructs

In this binding, we make heavy use of the rdf:value construct. This construct is a standard way to add qualifying information to RDF statements. Its use is compatible with Dublin Core Qualifiers draft, where it is also described in some detail. In short, this construct is used when a value of a property needs additional information. The property can then be pointed to a new resource, having an rdf:value property pointing to the original value, and any number of new properties qualifying this value. Thus, the string value of the dc:title property in this example:

<dc:title>Sniffy the virtual rat</dc:title>

This can be qualified with a language in this way (see next section for details on language qualifiers):

<dc:title rdf:parseType="Resource">
<rdf:value>Sniffy the virtual rat</rdf:value>
<dc:language rdf:resource="#en"/>
</dc:title>

The title would be found to be the same in both cases, but in the second case, the language (English) of the string would also be known.

Dublin Core Qualifiers draft specifies a "dumb-down" algorithm that essentially removes all qualifying properties, leaving only the final string value. This binding has been designed with this algorithm in mind. This way, software can produce unqualified Dublin Core meta-data from LOM RDF meta-data in a straightforward and stnadardized way, by using the "dumb-down" algorithm.

In the absence of qualifying properties, it is legal to collapse the construct completely as in the following example (see next section for explanation on LangString):

<dc:title>
<lom:LangString rdf:ID="title">
<rdf:value rdf:parseType="Resource">
<rdf:value>Sniffy the virtual rat</rdf:value>
</rdf:value>
</lom:LangString>
</dc:title>

This is equivalent to:

<dc:title>Sniffy the virtual rat</dc:title>

This form of collapse is completely legal, and applications should support it for any element where it may occur. However, collapsing in this way is not always desirable. In the above case, collapsing the statement necessitates a restructuring when a translation of the title is to be made. So in many cases, keeping the full construct is the safest way to go, as it simplifies extensions.

Similarly, collapsing an rdf:Bag or other container in the case of only one element is allowed, but not always a good idea, as this may prevent adding additional resources from the outside. In short, care must be taken when using shortcuts such as these. However, they are syntactically and semantically legal constructs and thus must be supported.

A.4.3.   Language-Specific Strings

When encoding a string in a specific language, we do not use the xml:lang attribute (this is discussed in the W3C document located at http://www.w3.org/DesignIssues/InterpretationProperties.html). Instead, we follow the guidelines in Dublin Core Qualifiers draft (esp. section 4), using an explicit dc:language qualifier. An example of a language-tagged string follows:

<dc:title>
<rdf:value>Sniffy the virtual rat</rdf:value>
<dc:language rdf:resource="#en"/>
</dc:title>

Here "#en" is a separate language resource. This should be an instance of dcq:RCF1766, for example:

<dcq:RCF1766 rdf:ID="en">
<rdf:value>en</rdf:value>
<rdf:label>English</rdf:label>
<rdf:isDefinedBy rdf:resource="http://www.ietf.org/rfc/rcf1766.txt"/>
</rdf:Description>

It is recommended to put definitions of languages in a separate RDF document, so that they can be reused.

When encoding strings in several languages, always use the following construct (for a more formal description on LangString, see the section of the same title):

<dc:title>
<lom:LangString rdf:ID="title">
<rdf:value rdf:parseType="Resource">
<rdf:value>Sniffy the virtual rat</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
<lom:translation rdf:parseType="Resource">
<rdf:value>Sniffy le rat virtuel</rdf:value>
<dc:language rdf:resource="#fr"/>
</lom:translation>
</lom:LangString>
</dc:title>

This technique allows us to separate the original title from translations. It also allows Dublin Core-only RDF parsers to understand what the title is, via the "dumb-down" algorithm described in the previous section. Finally, it allows us to add translations in separate RDF documents. A necessary prerequisite for this is that all LangString instances are given an explicit ID as in the example above. For this reason, giving such an ID to each LangString is strongly recommended, even if it is generated automatically by the editing software.

It should be noted that, though allowed, the use of rdfs:label and rdfs:comment is discouraged. The reason is that there is no good way to add language qualifiers, as they point to string literals. Use dc:title and dc:description instead.

A.4.4   Ordered and Unordered Lists

In the IMS XML binding, lists are constructed using repetitions of the containing element. In RDF, there are four different possibilities, and all of them can be used when they express the desired semantics. The four ways are: repeated properties, rdf:Bag, rdf:Alt, and rdf:Seq. We provide guidelines below on which to choose to be maximally LOM compatible. Implementers are free to use any of these constructs if they feel that it better represents the semantics of their meta-data; however, keep in mind that such information might get lost when translating to the XML binding.

A.4.5   Pre-Defined Classes

In some cases Dublin Core has pre-defined classes for use as types of the values. Use of this construct is strongly encouraged, and the classes available for use are given in the table below. In some cases, there is a corresponding qualifier in LOM. For example, the class http://dublincore.org/2000/03/13/dcq#W3CDTF is used to represent dates and times in ISO8601 format, which is used in LOM. We strongly favor this kind of explicit datatyping using RDF classes (see the dc:language example above).

A.4.6   Vocabularies

Vocabularies are represented in several different ways in this binding. The fundamental idea is that the (source, value) construct in LOM is best represented in RDF using the (namespace, value) construct that is naturally contained in a resource URI in RDF. Thus, vocabulary values are resources, and the source of a vocabulary is implicit in the URI of a resource.

This binding will provide resources for the restricted vocabularies defined in LOM. These resources can be used directly as values of the corresponding property, for example:

<lom_life:status rdf:resource="http://www.imsproject.org/rdf/imsmd_lifecyclev1p2#Draft"/>

Additionally, implementers are free to define their own RDF resources for use as values in vocabularies, for example:

<lom_life:status rdf:resource="http://www.myVocabulary.com/someVocab#FinalBeta"/>

The resource pointed to will most probably be an RDF resource that is part of an RDF Schema defining the vocabulary. Thus, vocabularies will need to be explicitly translated to RDF. This convention leads to some difficulties when interfacing with the XML binding. Further development in this area is necessary.

Note: In several cases, the vocabulary resource is not an RDFS Class, but rather a Property. This is the case with element 7.1. Relation.Kind, for example:

<dcq:hasPart rdf:resource="http://www.someContentProvider.com/someContent.html"/>

Here the relation is of kind "hasPart". Defining new vocabularies here is as simple as for the above case. The only difference is that, in the example, one would need to define a subPropertyOf dc:relation. This new property is again an RDF resource, and thus the same remarks are valid: explicit translation to RDF is necessary, and care must be taken when interfacing with the XML binding.

A definition of a private (not necessarily useful) vocabulary for Relation.Kind could look like:

<rdf:Property rdf:ID="hasPrerequisite">
<rdfs:subPropertyOf rdf:resource="http://purl.org/dc/elements/1.1/relation"/>
<dc:title>Has prerequisite</dc:title>
<dc:description>This property point to a resource that is a necessary
prerequisite for the learning object.</dc:description>
</rdf:Property>

This would then be used (with the appropriate namespace definition in place) as:

<myVoc:hasPrerequisite rdf:resource="http://www.someContentProvider.com/someContent.html"/>

A.4.7   Using Metameta-data

Generally, the metameta-data category is obsoleted in RDF. There is no real way in which one can talk about "meta-data instances", as the information is connected globally in a semantic web. Thus, the elements in this category must be represented in other ways. Two ways are provided by RDF, and both rely on reusing the normal (non-metameta-data) meta-data properties. But they are not applied to the learning resource, but to either of the following:

Both of these are perfectly valid approaches. Some additional guidance on the representation of LOM metameta-data elements is given in the table below. All of them should apply not to the learning resource being described, but to one of the above resources.

A.4.8   Classifications

This is the most complex category of all. We have decided to represent taxonomies separately from each meta-data instance. The idea is to represent a hierarchical taxonomy separately, and pointing into this hierarchy when classifying resources. In addition, we try to reuse the subject classifications from Dublin Core Qualifiers, for example:

<lom_cls:Taxonomy rdf:ID="MeSH">
<rdfs:label>Medical Subject Headings</rdfs:label>
<lom_cls:taxon>
<dcq:MeSH ID="A">
<rdf:value>A</rdf:value>
<rdfs:label>Anatomy</rdfs:label>
<lom_cls:taxon>
<dcq:MeSH ID="A01">
<rdf:value>A01</rdf:value>
<rdfs:label>Body Regions</rdfs:label>
<lom_cls:taxon>
<dcq:MeSH ID="A01.047">
<rdf:value>A01.047</rdf:value>
<rdfs:label>Abdomen</rdfs:label>
<lom_cls:taxon>
...

Using this will then look like:

<dc:subject>
<rdf:value rdf:resource="http://www.myVocabulary.com/taxonomy#A01.047"/>
<dc:description>...</dc:description>
</dc:subject>

A.5  Acknowledgements

This binding has been developed by Mikael Nilsson at the Center for user-oriented IT-design at the Royal Institute of Technology in Stockholm, Sweden, with cooperation from the Uppsala Learning Lab. Matthias Palmér from CID has contributed substantial critique of this document. Large parts of the binding come from previous work on LOM RDF schemas by researchers from Learning Lab Lower Saxony at KBS in Hannover, from the UNIVERSAL project. Significant contributions to the schema details have come from: Wolfgang Nejdl, Boris Wolf, Hadhami Dhraief, and Jan Brase from KBS, and Gustaf Neumann, Susanne Guth, Bernd Simon, and Thomas Enzi from Wirtschaftsuniversität Wien, part of the UNIVERSAL project.

A.6  The Binding Table

This table defines, for each element in the IMS Meta-data Information Model v1.2, the corresponding RDF property to use. It specifies how to repeat the element in conformance with the Information Model and gives usage examples. Note that the RDF Schema definition files in some cases provide more precise definitions, especially for vocabulary creators.

Note: Elements 1.1 and 3.1 are special cases that are not represented as properties, but instead use the RDF rdf:about attribute.

1.   General Category

LOM element

Usage guidelines

Ordering representation

Example

1.1 Identifier

Use the RDF rdf:about attribute. Use dc:identifier only for special needs.

Do not repeat the dc:identifier.

<rdf:Description rdf:about="http://www.someContentProvider.com/someContent.html">
...
</rdf:Description>

1.2 Title

Use dc:title, pointing to a lom:LangString.

Do not repeat.

<dc:title>
<lom:LangString rdf:ID="title">
<rdf:value rdf:parseType="Resource">
<rdf:value>Sniffy the virtual rat</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
<lom:translation rdf:parseType="Resource">
<rdf:value>Sniffy le rat virtuel</rdf:value>
<dc:language rdf:resource="#fr"/>
</lom:translation>
</lom:LangString>
</dc:title>

1.3 Catalogentry

Use lom_gen:catalogentry. Catalogs are represented as RDF Classes, and this property should point to an instance of such a class. The instance should have an rdf:value property pointing to the entry. There are no pre-defined classes to use, so implementers will need to create classes. It is expected that standardized catalog classes will be developed.

Use repeated properties.

<lom_gen:catalogentry>
<myVoc:ISBN>
<rdf:value>0-226-10389-7</rdf:value>
</myVoc:ISBN>
</lom_gen:catalogentry>

1.4 Language

Use dc:language. Use instances of dcq:RFC1766.

Use repeated properties.

<dc:language rdf:resource="#en"/>

1.5 Description

Use dc:description pointing to a lom:LangString.

Use repeated properties for separate descriptions.

<dc:description>
<lom:LangString rdf:ID="desc1">
<rdf:value rdf:parseType="Resource">
&tl;rdf:value>A computer program ...</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
<lom:translation rdf:parseType="Resource">
&tl;rdf:value>Un programme machine ...</rdf:value>
<dc:language rdf:resource="#fr"/>
</lom:translation>
</lom:LangString>
</dc:description>

1.6 Keywords

Use dc:subject pointing to a LangString.

Use repeated properties for separate keywords.

<dc:subject>
<lom:LangString rdf:ID="keyword1">
<rdf:value rdf:parseType="Resource">
&tl;rdf:value>psychology</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
<lom:translation rdf:parseType="Resource">
&tl;rdf:value>psychologie</rdf:value>
<dc:language rdf:resource="#fr"/>
</lom:translation>
</lom:LangString>
</dc:subject>

1.7 Coverage

Use dc:coverage, dcq:spatial, or dcq:temporal. Available classes are:

  • dcq:TGN, dcq:ISO3166, dcq:Box and dcq:Point for dcq:spatial values

  • dcq:W3CDTF and dcq:Period for dcq:temporal values.

For textual descriptions, use lom:LangString.

Use repeated properties for separate coverage.

<dcq:temporal>
<dcq:W3CDTF>
<rdf:value>1776-07-04</rdf:value>
</dcq:W3CDTF>
</dcq:temporal>
<dcq:spatial>
<lom:LangString rdf:ID="USA">
<rdf:value rdf:parseType="Resource">
<rdf:value>United States of America</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
</lom:LangString>
</dcq:spatial>

1.8 Structure

Use lom_gen:structure. For LOM restricted vocabulary, use: lom_gen:Collection, lom_gen:Mixed, lom_gen:Linear, lom_gen:Hierarchical, lom_gen:Networked, lom_gen:Branched, lom_gen:Parceled or lom_gen:Atomic.

Do not repeat.

<lom_gen:structure rdf:resource="http://www.imsproject.org/rdf/imsmd_generalv1p2#Mixed"/>

1.9 Aggregation Level

Use lom_gen:aggregationlevel. For LOM restricted vocabulary, use: lom_gen:Level1, lom_gen:Level2, lom_gen:Level3, lom_gen:Level4.

Do not repeat.

<lom_gen:aggregationlevelrdf:resource="http:// www.imsproject.org/rdf/imsmd_generalv1p2#Level2"/>

2.   Lifecycle Category

LOM element

Usage guidelines

Ordering representation

Example

2.1 Version

Use lom_life:version, pointing to a lom:LangString.

Do not repeat.

<lom_life:version>
<lom:LangString rdf:ID="version">
<rdf:value rdf:parseType="Resource">
&tl;rdf:value>2.3</rdf:value>
<dc:language rdf:resource="#x-none"/>
</rdf:value>
</lom:LangString>
</lom_life:version>

or (not specifying language or allowing translations)

<lom_life:version>2.3</lom_life:version>

2.2 Status

Use lom_life:status. For LOM restricted vocabulary, use: lom_life:Draft, lom_life:Final, lom_life:Revised or lom_life:Unavailable.

Do not repeat.

<lom_life:status rdf:resource="http://www.imsproject.org/rdf/imsmd_lifecyclev1p2#Final"/>

2.3 Contribute

There are three possibilities:

1. Use dc:publisher pointing to the contributing entity, in VCard format. The role is implicitly lom_life:publisher, and the date implicitly the date contained in dcq:issued or if this is missing, dc:date.

2. Use dc:creator pointing to the contributing entity, in VCard format. The role is implicitly lom_life:author, and the date implicitly the date contained in dcq:created or if this is missing, dc:date.

3. Use a subPropertyOf dc:contributor with rdf:value pointing to the contributing entity, in VCard format, and dc:date pointing to the date of the contribution.

The dc:date should point to an instance of dcq:W3CDTF.

For LOM restricted vocabulary for the contribution, use one of the following pre-defined subPropertiesOf dc:contributor as in case 3 above: lom_life:unknown, lom_life:initiator, lom_life:terminator, lom_life:validator, lom_life:editor, lom_life:graphicaldesigner, lom_life:technicalimplementer, lom_life:contentprovider, lom_life:technicalvalidator, lom_life:educationalvalidator, lom_life:scriptwriter or lom_life:instructionaldesigner. The use of lom_life:publisher or lom_life:author is not allowed. Instead use the corresponding Dublin Core constructs.

Use repeated properties. For multiple entities within one contribute element, use rdf:Seq. Do not use repeated rdf:value. Do not repeat the dc:date properties within a contribute element.

<dc:creator rdf:parseType="Resource">
<vCard:fn>Erik Duval</vCard:fn>
</dc:creator>

<dcq:created>
<dcq:W3CDTF>
<rdf:value>2000-12-16</rdf:value>
</dcq:W3CDTF>
</dcq:created>

<lom_life:editor rdf:parseType="Resource">
<rdf:value>
<rdf:Seq>
<rdf:li rdf:parseType="Resource">
<vCard:fn>Tom Wason</vCard:fn>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<vCard:fn>Eric Duval</vCard:fn>
</rdf:li>
</rdf:Seq>
</rdf:value>
<dc:date>
<dcq:W3CDTF>
<rdf:value>1998</rdf:value>
<dc:description>A few years ago.</dc:description>
</dcq:W3CDTF>
</dc:date>
</lom_life:editor>

3.   Metametadata Category

Note that all elements below apply not to the learning resource, but to the metadata about the resource. Please see the example document for examples.

LOM element

Usage guidelines

Ordering representation

Example

3.1 Identifier

Use exactly as 1.1 Identifier.

Do not repeat.

<rdf:Description rdf:about="http://www.someContentProvider.com/someContentMetadata.rdf">
...
</rdf:Description>

or

<rdf:Description rdf:about="http://www.someContentProvider.com/someContentMetadata.rdf#bagOfStatements">
...
</rdf:Description>

3.2 Catalog Entry

Use exactly as 1.3 Catalog Entry.

Use repeated properties.


3.3 Contribute

Use exactly as 2.3 Contribute, but use only the roles dc:creator and lom_life:validator for full LOM compliance.

Use repeated properties. Group contributions just as in 2.3 Contribute.


3.4 Metadata Scheme

If the metadata is compatible with this guide, use lom_meta:metadatascheme pointing to lom_meta:IMSMD_1.2, lom_meta:LOMv1.0 and lom_meta:ARIADNEv3. This will guide software in interpreting the metadata as a LOM description.

Use repeated properties.

<lom_meta:metadatascheme rdf:resource="http://www.imsproject.org/rdf/imsmd_metametadatav1p2#LOMv1.0"/>
<lom_meta:metadatascheme rdf:resource="http://www.imsproject.org/rdf/imsmd_metametadatav1p2#ARIADNEv3"/>
<lom_meta:metadatascheme rdf:resource="http://www.imsproject.org/rdf/imsmd_metametadatav1p2#IMSMD_1.2"/>

3.5 Language

Use exactly as 1.4 Language. Note that this language may be used in accordance with the LOM Standard to specify a default language for all literals.

Do not repeat.


4. Technical Category

LOM element

Usage guidelines

Ordering representation

Example

4.1 Format

Use dcq:medium with a value of rdf:type dcq:IMT. Instances of this class represent mime-types. For non-digital resources, use a value of type lom_tech:NonDigital.

Use repeated properties.

<dcq:medium>
<dcq:IMT>
<rdf:value>text/html</rdf:value>
<rdfs:label>HTML document</rdfs:label>
</dcq:IMT>
</dcq:medium>

4.2 Size

Use dcq:extent with a value of rdf:type lom_tech:ByteSize with an rdf:value pointing to the value literal.

Do not repeat.

<dcq:extent>
<lom_tech:ByteSize>
<rdf:value>124032</rdf:value>
</lom_tech:ByteSize>
</dcq:extent>

4.3 Location

Use lom_tech:location either pointing to the resource URI, or for non-URI locations, a string literal.

Use only rdf:Seq.

<lom_tech:location rdf:resource="http://www.someContentProvider.com/someDocument.pdf"/>

4.4 Requirements

Use a subPropertyOf lom_tech:requirement pointing to an instance of lom_tech:TechnologyRequirement with lom_tech:minimumversion and lom_tech:maximumversion pointing to the corresponding version literals.



For LOM restricted vocabulary for the requirement type, use: lom_tech:operatingsystem or lom_tech:browser.



For LOM restricted vocabulary for the required technology, use instances of: lom_tech:PC-DOS, lom_tech:MS-Windows, lom_tech:MacOS, lom_tech:Unix, lom_tech:Multi-OS or lom_tech:None for operating systems, and instances of lom_tech:Any, lom_tech:NetscapeCommunicator, lom_tech:MicrosoftInternetExplorer, lom_tech:Opera or lom_tech:Amaya for browser. All these are subClassesOf lom_tech:TechnologyRequirement

Use repeated properties. Do not repeat any of lom_tech:minimumversion or lom_tech:maximumversion.

<lom_tech:operatingsystem>
<lom_tech:Multi-OS/>
</lom_tech:operatingsystem>

<lom_tech:browser>
<lom_tech:NetscapeCommunicator>

<lom_tech:minimumversion>4.7</lom_tech:minimumversion>
<lom_tech:NetscapeCommunicator>
</lom_tech:browser>

4.5 Installation Remarks

Use lom_tech:installationremarks pointing to a lom:LangString.

Do not repeat.

<lom_tech:installationremarks>
<lom:LangString rdf:ID="instremarks">
<rdf:value rdf:parseType="Resource">
<rdf:value>First install ...</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
</lom:LangString>
</lom_tech:installationremarks>

4.6 Other Platform Requirements

Use lom_tech:otherplatformrequirements pointing to a lom:LangString.

Do not repeat.

<lom_tech:otherplatformrequirements>
<lom:LangString rdf:ID="otherreq">
<rdf:value rdf:parseType="Resource">
<rdf:value>You will also need ...</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
</lom:LangString>
</lom_tech:otherplatformrequirements>

4.7 Duration

Use dcq:extent with a value of type lom:ISO8601.

Do not repeat.

<dcq:extent>
<lom:ISO8601>
<rdf:value>PT1H20M</rdf:value>
</lom:ISO8601>
</dcq:extent>

5. Educational Category

LOM element

Usage guidelines

Ordering representation

Example

5.1 Interactivity Type

Use lom_edu:interactivitytype. For LOM restricted vocabulary, use: lom_edu:Active, lom_edu:Expositive, lom_edu:Mixed or lom_edu:Undefined.

Do not repeat.

<lom_edu:interactivitytype rdf:resource="http://www.imsproject.org/rdf/imsmd_educationalv1p2#Active"/>

5.2 Learning Resource Type

Use rdf:type. For LOM restricted vocabulary, use: lom_edu:Exercise, lom_edu:Simulation, lom_edu:Questionnaire, lom_edu:Diagram, lom_edu:Figure, lom_edu:Graph, lom_edu:Index, lom_edu:Slide, lom_edu:Table, lom_edu:NarrativeText, lom_edu:Exam, lom_edu:Experiment, lom_edu:ProblemStatement or lom_edu:SelfAssesment.

Use repeated properties. This conflicts with LOM, which specifies that this element is ordered.

<rdf:Description rdf:about="http://www.someContentProvider.com/someContent.html">
<dc:title>...</dc:title>
...
<rdf:type rdf:resource="http://www.imsproject.org/rdf/imsmd_educationalv1p2#Exercise"/>
...
</rdf:Description>

or, using RDF shorthand notation:

<lom_edu:Exercise rdf:about="http://www.someContentProvider.com/someContent.html">
<dc:title>...</dc:title>
...
</lom_edu:Exercise>

5.3 Interactivity Level

Use lom_edu:interactivitylevel. For LOM restricted vocabulary, use: lom_edu:VeryLowInteractivity, lom_edu:LowInteractivity, lom_edu:MediumInteractivity, lom_edu:HighInteractivity or lom_edu:VeryHighInteractivity

Do not repeat.

<lom_edu:interactivitylevel rdf:resource="http://www.imsproject.org/rdf/imsmd_educationalv1p2#LowInteractivity"/>

5.4 Semantic Density

Use lom_edu:semanticdensity. For LOM restricted vocabulary, use: lom_edu:VeryLowDensity, lom_edu:LowDensity, lom_edu:MediumDensity, lom_edu:HighDensity or lom_edu:VeryHighDensity

Do not repeat.

<lom_edu:semanticdensity rdf:resource="http://www.imsproject.org/rdf/imsmd_educationalv1p2#HighDensity"/>

5.5 Intended End User Role

Use lom_edu:intendedenduserrole. For LOM restricted vocabulary, use: lom_edu:Teacher, lom_edu:Author, lom_edu:Learner or lom_edu:Manager.

Use rdf:Seq for repetition.

<lom_edu:intendedenduserrole rdf:resource="http://www.imsproject.org/rdf/imsmd_educationalv1p2#Manager"/>

5.6 Context

Use lom_edu:context.

For LOM restricted vocabulary, use: lom_edu:PrimaryEducation, lom_edu:SecondaryEducation, lom_edu:HigherEducation, lom_edu:UniversityFirstCycle, lom_edu:UniversitySecondCycle, lom_edu:UniversityPostgrade, lom_edu:TechnicalSchoolFirstCycle, lom_edu:TechnicalSchoolSecondCycle, lom_edu:ProfessionalFormation, lom_edu:ContinuousFormation or lom_edu:VocationalTraining.

Use repeated properties.

<lom_edu:context rdf:resource="http://www.imsproject.org/rdf/imsmd_educationalv1p2#PrimaryEducation"/>

5.7 Typical Age Range

Use lom_edu:typicalagerange pointing to a lom:LangString.

For distinct age ranges, use separate properties.

<lom_edu:typicalagerange>
<lom:LangString rdf:ID="typagerange">
<rdf:value rdf:parseType="Resource">
<rdf:value>Over fifteen years of age.</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
</lom:LangString>
</lom_edu:typicalagerange>

5.8 Difficulty

Use lom_edu:difficulty.

For LOM restricted vocabulary, use: lom_edu:VeryEasy, lom_edu:Easy, lom_edu:MediumDifficulty, lom_edu:Difficult or lom_edu:VeryDifficult.

Do not repeat.

<lom_edu:difficulty rdf:resource="http://www.imsproject.org/rdf/imsmd_educationalv1p2#Easy"/>

5.9 Typical Learning Time

Use lom_edu:typicallearningtime, with a value of type lom:ISO8601.

Do not repeat.

<lom_edu:typicallearningtime>
<lom:ISO8601>
<rdf:value>PT1H20M</rdf:value>
</lom:ISO8601>
</lom_edu:typicallearningtime>

5.10 Description

Use lom_edu:description, pointing to a lom:LangString.

Do not repeat.

<lom_edu:description>
<lom:LangString rdf:ID="edudesc">
<rdf:value rdf:parseType="Resource">
<rdf:value>This is intended to be used ...</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
</lom:LangString>
</lom_edu:description>

5.11 Language

Use lom_edu:language. Use instances of dcq:RFC1766.

Use repeated properties.

<lom_edu:language rdf:resource="#fr"/>

6. Rights Category

In this category, we disagree with LOM in that the Dublin Core property dc:rights maps to this whole category. We think it only maps to element 6.3, Rights.Description (as was the case in IMS Meta-data v1.1). This is reflected below.

LOM element

Usage guidelines

Ordering representation

Example

6.1 Cost

Use lom_rights:cost. For LOM restricted vocabulary, use: lom_rights:SomeCost or lom_rights:NoCost.

Do not repeat.

<lom_rights:cost rdf:resource="http://www.imsproject.org/rdf/imsmd_rightsv1p2#NoCost"/>

6.2 Copyright and Other Restrictions

Use lom_rights:copyrightandotherrestrictions. For LOM restricted vocabulary, use: lom_rights:SomeRestriction or lom_rights:NoRestriction.

Do not repeat.

<lom_rights:copyrightandotherrestrictions rdf:resource="http://www.imsproject.org/rdf/imsmd_rightsv1p2#SomeRestriction"/>

6.3 Description

Use dc:rights, pointing to a lom:LangString.

Do not repeat.

<dc:rights>
<lom:LangString rdf:ID="rights">
<rdf:value rdf:parseType="Resource">
<rdf:value>Copyright 1999 ...</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
</lom:LangString>
</dc:rights>

7. Relation Category

This is strictly no category, but an element. Due to the nature of RDF in the semantic web environment, the elements 7.2.2 Description and 7.2.3 Catalog Entry are not used directly. Instead, the intention is that they can be attached to the resource pointed to. In the example below, the related resource is defined by an ISBN number.

LOM element

Usage guidelines

Ordering representation

Example

7 Relation

There are two ways to use this element.

1. Use a pre-defined subproperty of dc:relation, one for each element in the restricted LOM vocabulary. There are three cases:

a. Use one of the Dublin Core qualifying properties dcq:isVersionOf, dcq:hasVersion, dcq:isReplacedBy, dcq:replaces, dcq:isRequiredBy, dcq:requires, dcq:isPartOf, dcq:hasPart, dcq:isReferencedBy, dcq:references, dcq:isFormatOf, dcq:hasFormat.

b. Use dc:source when the Relation.Kind is "IsBasedOn".

c. Use lom_rel:isBasisFor.

2. For your own Relation.Kind vocabularies, you can define your own subproperty of dc:relation.

Use repeated properties.

<dcq:hasPart rdf:resource="http://www.someContentProvider.com/someOtherContent.html"/>
<dcq:isReferencedBy>
<rdf:Description rdf:about="http://www.someContentProvider.com/someOtherContent.html"/>
<lom_gen:catalogentry>
<myVoc:ISBN>
<rdf:value>0-226-10389-7</rdf:value>
</myVoc:ISBN>
</lom_gen:catalogentry>
<rdf:Description>
</dcq:isReferencedBy>

8. Annotation Category

This is strictly speaking no category, but an element in itself.

LOM element

Usage guidelines

Ordering representation

Example

8. Annotation

Use lom_ann:annotation with lom_ann:person giving a VCard for the annotating person, an dc:date with a value of type dcq:W3CDTF, giving the date of the annotation, and an rdf:value for the actual annotation (a lom:LangString).

Use repeated properties. Use only one lom_ann:person, only one dc:date, and only one rdf:value.

<lom_ann:annotation rdf:parseType="Resource">
<lom_ann:person rdf:parseType="Resource">
<vCard:fn>Philip Dodds</vCard:fn>
</lom_ann:person>
<dc:date>
<dcq:W3CDTF>
<rdf:value>2000-12-17</rdf:value>
</dcq:W3CDTF>
</dc:date>
<rdf:value>
<lom:LangString rdf:ID="ann1">
<rdf:value rdf:parseType="Resource">
<rdf:value>I think this document is ...</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
</lom:LangString>
</lom_ann:annotation>

9. Classification Category

This is strictly speaking no category, but an element in itself.

LOM element

Usage guidelines

Ordering representation

Example

9. Classification

Use subPropertiesOf lom_cls:classification. There are three possibilities:

1. When Classification.Purpose is "Discipline" or "Idea", use dc:subject. This usage is defined by the LOM-DC mapping.

2. For LOM restricted vocabulary for the purpose, use: lom_cls:prerequisite, lom_cls:educationalobjective, lom_cls:accessibilityrestrictions, lom_cls:educationallevel, lom_cls:skilllevel, lom_cls:securitylevel.

The use of lom_cls:discipline and lom_cls:idea, while allowed, is discouraged. Instead use the first construct above, with dc:subject.

3. Define your own subPropertyOf lom_cls:classification to use private purposes.

This property should point to a taxon in a taxonomy hierarchy. Such an hierarchy is an instance of lom_cls:Taxonomy, which is defined in a separate table.

The classification can be further qualified with a single dc:description and multiple dc:subject (keywords).

Use repeated properties. For giving several classifications with the same purpose, description and keywords, use an rdf:Bag as the value of the rdf:value property.

Using the example taxonomy in the taxonomy example in the taxonomy definition table:

<dc:subject>
<rdf:value rdf:resource="http://www.myVocabulary.com/taxonomy#A01.047"/>
<dc:description>...</dc:description>
<dc:subject>...</dc:subject>
</dc:subject>

A.7  LangString Definition

LOM element

Usage guidelines

Ordering representation

Example

LangString

Use instances of lom:LangString to represent a natural language object with several translations.

Use an rdf:value pointing to the primary translation. For other translations, use lom:translation.

Each translation is represented as a resource with an rdf:value pointing to the string literal, and a dc:language pointing to an instance of dcq:RFC1766 representing a language.

Use one and only one instance of lom:LangString to represent the same natural language object. Do not repeat rdf:value. dc:language can be repeated if an entry is in several languages. Use repeated properties to repeat lom:translation.

<dc:title>
<lom:LangString rdf:ID="title">
<rdf:value rdf:parseType="Resource">
<rdf:value>Sniffy the virtual rat</rdf:value>
<dc:language rdf:resource="#en"/>
</rdf:value>
<lom:translation rdf:parseType="Resource">
<rdf:value>Sniffy le rat virtuel</rdf:value>
<dc:language rdf:resource="#fr"/>
</lom:translation>
</lom:LangString>
</dc:title>

A.8  Taxonomies

This table defines how to construct reusable taxonomies.

LOM element

Usage guidelines

Ordering representation

Example

Taxonomy

Taxonomies are instances of lom_cls:Taxonomy. Each taxonomy is a hierarchy of taxons. The first-level taxons are pointed to by lom_cls:taxon properties. Each such taxon can be an instance of one of the pre-defined classes dcq:LCSH, dcq:MeSH, dcq:DDC, dcq:LCC or dcq:UDC, or of a locally defined class.

Each such taxon must have an rdf:value pointing to the code of the taxon, or a dc:title (or rdfs:label) giving the label of the entry. lom:LangString constructs are allowed.

The taxon can also have sub-taxons, in the form of a lom_cls:taxon property pointing to the sub-taxon, and so on recursively.


In a separate file (http://www.myVocabulary.com/taxonomy):

<lom_cls:Taxonomy rdf:ID="MeSH">
<dc:title>Medical Subject Headings</dc:title>
<lom_cls:taxon>
<dcq:MeSH ID="A">
<rdf:value>A</rdf:value>
<dc:title>Anatomy</dc:title>
<lom_cls:taxon>
<dcq:MeSH ID="A01">
<rdf:value>A01</rdf:value>
<dc:title>Body Regions</dc:title>
<lom_cls:taxon>
<dcq:MeSH ID="A01.047">
<rdf:value>A01.047</rdf:value>
<dc:title>Abdomen</dc:title>
<lom_cls:taxon>
...