Print

Print


On Tue, 16 Dec 2003, Paul Fogel wrote:

> Bruce had requested that I post these documents to the list.  I hope that
> someone may find them useful and I encourage all feedback and criticism.
>
> These were developed to transform MODS (encoded in METS) into Dublin Core
> for internal indexing purposes.  While this is not a final version, it is
> in production and seems to be doing what it is supposed to.  A slightly
> modified production version can be viewed at
> http://ark.cdlib.org/xslt/extract-dc/OAC-LSTA-MODS2DC.qdc21.xsl.
>
> I took the DC to MODS mapping stylesheet as a starting point, but as we all
> know round-tripping is never the same both ways and I had to make a lot of
> logical modification.  Also, we are still working with MODS 2.0 so this
> will need work when we make the transition.
>
> I have attached the documents (an .xslt and a .txt) and have also pasted
> them below.  Again, please let me hear any opinions you may have.
>
> Paul Fogel
> California Digital Library
> [log in to unmask]
> 510.987.0680
>          <xsl:apply-templates mode="makeIsPartOf"/>
>        </xsl:when>
>      </xsl:choose>
>    </xsl:for-each>
> </xsl:template>
>
> <xsl:template match="*" mode="makeIsPartOf">
>    <xsl:apply-templates mode="makeIsPartOf"/>
> </xsl:template>
>
> <xsl:template match="text()" mode="makeIsPartOf">
>    <xsl:if test="normalize-space(.) != ''">
>      <dcterms:isPartOf>
>        <xsl:value-of select="normalize-space(.)"/>
>      </dcterms:isPartOf>
>    </xsl:if>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> MODS to Dublin Core Mapping
>
>
>
> By Dublin Core Element, from MODS Element
>
> Title:
> //mods/titleInfo/title - A conditional IF statement is included to catch
> <titleInfo><subTitle> and append it to the title, separated by colon space
> (: ).
>
> Creator:
> //mods/name/namePart -  when //mods/name/role[. = 'creator']
> //mods/recordInfo/recordContentSource
>
> Subject:
> //mods/subject/topic
> //mods/subject/name
> //mods/subject/titleInfo/title
>
> Description:
> //mods/abstract
> //mods/tableOfContents
> //mods/note
> //mods/subject/name<description>
>
> Publisher:
> //mods/originInfo/publisher
> //mods/publicationInfo/publisher - to accommodate earlier encoding
> practices; this usage is outdated
>
> Contributor:
> //mods/name/namePart -  when //mods/name/role/text[. = 'contributor']
>
> Date:
> Mapped from:
> //mods/originInfo/dateIssued
> //mods/originInfo/dateCreated
> //mods/originInfo/dateCaptured
> //mods/originInfo/dateOther
> //mods/publicationInfo/dateIssued - to accommodate earlier encoding
> practices; this usage is outdated
>
> Type:
> //mods/typeOfResource
> //mods/genre
>
> Format:
> //mods/physicalDescription/extent
> //mods/physicalDescription/form
> //mods/physicalDescription/internetMediaType
> //mods/physicalDescription/digitalOrigin
> //mods/physicalDescription/note
>
> Identifier:
> //mods/identifier - If @TYPE= 'isbn', 'issn', 'lccn', 'doi' or 'uri', then
> this value precedes the data, separated by colon space.
>          Example:        <identifier>uri:
> http://www.ucpress.edu/books/pages/6178.html&amp;isbn=0520081994</identifier>
>          If there is no TYPE attribute, or if it is not set to one of these
> values, the data is mapped without qualification.
>
> Source:
> //mods/relatedItem[@TYPE='original']
>
> Language:
> //mods/language
>
> Relation:
> //mods/relatedItem - except when relatedItem[(@TYPE='original') or
> (@TYPE='series')]
>
> Coverage:
> Mapped from:
> //mods/subject/geographic
> //mods/subject/temporal
> //mods/subject/hierarchicalGeographic
> //mods/subject/cartographic
> //mods/classification
>          The hierarchicalGeographic and cartographic nodes are flattened so
> that repeating values as well as sub-elements (and their children) are
> strung into one element.
>
> Rights:
> //mods/accessCondition
>
> DCTerms:Abstract:
> //mods/abstract - this data is also mapped (see above) into Description, so
> that data is not lost in Unqualified Dublin Core.
>
> DCTerms:Created
> //mods/recordInfo/recordCreationDate.  This is also mapped to Date, so that
> data is not lost in Unqualified Dublin Core.
>
> DCTerms:Modified
> //mods/recordInfo/recordChangeDate.  This is also mapped to Date, so that
> data is not lost in Unqualified Dublin Core.
>
> DCTerms:isPartOf
> //mods/relatedItem - when //mods/relatedItem[@TYPE='series'].  This is also
> mapped to Relation, so that data is not lost in Unqualified Dublin Core.
>
>
>
>
>
>
>
> By MODS Element, to Dublin Core Element
>
> ELEMENT MAPPED TO
> //mods/titleInfo/title                          title
> //mods/titleInfo/subTitle                       title
> //mods/titleInfo/partNumber                     ignored
> //mods/titleInfo/partName                       ignored
> //mods/titleInfo/nonSort                        ignored
>
> //mods/name/namePart                            creator, contributor (see
> above)
> //mods/name/displayForm                         ignored
> //mods/name/affiliation                         ignored
> //mods/name/role                                Used to assign creator and
> contributor, otherwise ignored.
> //mods/name/description                         description
>
> //mods/typeOfResource                           type
>
> //mods/genre                                    type
>
> //mods/originInfo/place                         ignored
> //mods/originInfo/publisher                     publisher
> //mods/originInfo/dateIssued                    date
> //mods/originInfo/dateCreated                   date, dcterms:created
> //mods/originInfo/dateCaptured                  date
> //mods/originInfo/dateOther                     date
> //mods/originInfo/edition                       ignored
> //mods/originInfo/issuance                      ignored
> //mods/originInfo/frequency                     ignored
>
> //mods/language                                 language
>
> //mods/physicalDescription/form                 format
> //mods/physicalDescription/reformattingQuality  ignored
> //mods/physicalDescription/internetMediaType    format
> //mods/physicalDescription/extent               format
> //mods/physicalDescription/digitalOrigin        format
> //mods/physicalDescription/note                 format
>
> //mods/abstract                                 description, dcterms:absctract
>
> //mods/tableOfContents                          description
>
> //mods/targetAudience                           ignored
>
> //mods/note                                     description
>
> //mods/subject/topic                            subject
> //mods/subject/geographical                     coverage
> //mods/subject/temporal                         coverage
> //mods/subject/titleInfo/title                  subject
>          (other subelements for titleInfo ignored)
> //mods/subject/name<description>                subject
>          (other subelements for name ignored)
> //mods/subject/hierarchicalGeographic           coverage
>          (subelements flattened to appear in one string)
> //mods/subject/cartographic                     coverage
>          (subelements flattened to appear in one string)
> //mods/classification                           coverage
>
> //mods/relatedItem[@type='original']            source
> //mods/relatedItem[@type='series']              dcterms:isPartOf
> //mods/relatedItem[@type='*']                   relation
>          (subelements flattened to appear in one string)
>
> //mods/identifier                               identifier
>          (if type is issn, isbn, lccn, uri, or doi, it is applied at
> beginning of data string; otherwise data is applied as is)
>          Ex. <dc:identifier>isbn: 0123456789</dc:identifier>
>              <dc:identifier>12-34567-8901234-5-67</dc:identifier>
>
> //mods/location                                 ignored
>
> //mods/accessCondition                          rights
>
> //mods/extension                                ignored
>
> //mods/recordInfo/recordContentSource           creator,
> //mods/recordInfo/recordCreationDate            dcterms:created
> //mods/recordInfo/recordChangeDate              dcterms:modified
> //mods/recordInfo/recordIdentifier              ignored
> //mods/recordInfo/languageOfCataloging          ignored
>
>
>