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&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
>
>
>
|