-----Original Message-----
From: Kyle Banerjee <kyle.banerjee_at_GMAIL.COM>
Date: Fri, 4 Jun 2010 09:00:47 -0700
>
> MARC is just a container. As such, you can normalize the data and structure
> to make the data useful for an application. But there is no technical fix
> for conceptual problems.
My professional bias is toward fine granularity and I'm not really close to apostasy :-)
But looking at how much time my (rare books) catalogers are spending on marking some details only for presentation, with detriment to the subject headings, for instance, I doubt the cost
effectiveness.
I acknowledge that if a record is to be exposed as MLA or APA or Chicago, subfield codes are much better than ISBD punctuation :-) However, I still wander if the price is right.
Let's look at the granularity from the "linked data" perspective.
Last year I spent some time in order to devise an XML schema more ambitious than MODS, able - for instance - to detect if the parallel sequences are "balanced", i.e. the sequence to the
right of = is isomorphic to the sequence to the left of =. (For the curious, I added at the end of the post the ridiculously long XML Schema fragment for this).
See two simplified examples (reduced to the title area):
<manifestation pml:guid="8f8d4b0f-161b-4204-b1cd-3571c1529c8b" pml:compilationTime="2010-06-04T22:21:13">
<titleAndResposibilityArea>
<titleProper xml:lang="en">Applications of ecological (biophysical) land classification in Canada</titleProper>
<titleInformation>proceedings of second meeting, 4-7 April 1978, Victoria, British Columbia</titleInformation>
<parallelTitleProper xml:lang="fr">Applications de la classification ecologique (biophysique) du territoire au Canada</parallelTitleProper>
<parallelTitleInformation>compte rendu de la deuxième réunion, 4-7 avril 1978, Victoria, British Columbia</parallelTitleInformation>
<responsibility>Canada Committee on Ecological (Biophysical) Land Classification</responsibility>
<responsibility>compiled and edited by C.D.A. Rubec</responsibility>
</titleAndResposibilityArea>
</manifestation>
<manifestation pml:guid="a657df1b-565f-4150-99e1-438d3acc22b5" pml:compilationTime="2010-06-04T22:26:24">
<titleAndResposibilityArea>
<titleProper>Contre les valeurs bourgeoises</titleProper>
<responsibility>par Gilbert Ganne</responsibility>
<titleProper>Pour les valeurs bourgeoises</titleProper>
<responsibility>par Georges Hourdin</responsibility>
</titleAndResposibilityArea>
</manifestation>
Now, imagine that I want to expose the last manifestation as RDF triples (I'm not a fan of RDF, but it's so fashionable these days...:-). How should I do that ?
As one triple ?
subject: a657df1b-565f-4150-99e1-438d3acc22b5
predicate: title & responsibility area
object: Contre les valeurs bourgeoises / par Gilbert Ganne. Pour les valeurs bourgeoises / par Georges Hourdin
Or each element as a distinct triple ?
subject: a657df1b-565f-4150-99e1-438d3acc22b5
predicate: title & responsibility area
object: a
subject: a
predicate: title group
object: a1
subject: a
predicate: title group
object: a2
subject: a1
predicate: title proper
object: Contre les valeurs bourgeoises
subject: a1
predicate: responsibility
object: par Gilbert Ganne
subject: a2
predicate: title proper
object: Pour les valeurs bourgeoises
subject: a2
predicate: responsibility
object: par Georges Hourdin
The second solution seems over kill to me. Besides, I loose the order of the two titles within the area !
So, which is the reasonable granularity ?
Dan
====================================================================================
Appendix
<xs:group name="group.title">
<xs:sequence>
<xs:element name="avantTitre" type="pml:type.statement" minOccurs="0"/>
<xs:element name="titleProper" type="pml:type.statement"/>
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0" maxOccurs="unbounded"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="or" type="pml:type.statement"/>
<xs:element name="alternativeTitle" type="pml:type.statement"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelOr" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelAlternativeTitle" type="pml:type.statement" minOccurs="0"/>
</xs:sequence>
</xs:sequence>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="subtitle" type="pml:type.statement"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelSubtitle" type="pml:type.statement"/>
</xs:sequence>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="or" type="pml:type.statement"/>
<xs:element name="alternativeTitle" type="pml:type.statement"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelOr" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelAlternativeTitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelSubtitle" type="pml:type.statement" minOccurs="0"/>
</xs:sequence>
</xs:sequence>
</xs:sequence>
<xs:sequence minOccurs="0">
<xs:element name="genre" type="pml:type.statement"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelOr" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelAlternativeTitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelSubtitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelGenre" type="pml:type.statement" minOccurs="0"/>
</xs:sequence>
</xs:sequence>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="titleInformation" type="pml:type.statement"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelOr" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelAlternativeTitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelSubtitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelGenre" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelTitleInformation" type="pml:type.statement" minOccurs="0"/>
</xs:sequence>
</xs:sequence>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="part">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="number" type="pml:type.statement" minOccurs="0"/>
<xs:group ref="pml:group.title" minOccurs="0"/>
</xs:sequence>
<xs:attributeGroup ref="pml:att.elementMetadata"/>
<xs:attributeGroup ref="pml:att.sortMetadata"/>
</xs:complexType>
</xs:element>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelOr" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelAlternativeTitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelSubtitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelGenre" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelTitleInformation" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelPart" minOccurs="0">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="number" type="pml:type.statement" minOccurs="0"/>
<xs:element name="title" type="pml:type.statement" minOccurs="0"/>
<xs:element name="subtitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="genre" type="pml:type.statement" minOccurs="0"/>
<xs:element name="titleInformation" type="pml:type.statement" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="responsibility" type="pml:type.statement" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attributeGroup ref="pml:att.elementMetadata"/>
<xs:attributeGroup ref="pml:att.sortMetadata"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:sequence>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="responsibility" type="pml:type.statement"/>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element name="parallelTitleProper" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelOr" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelAlternativeTitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelSubtitle" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelGenre" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelTitleInformation" type="pml:type.statement" minOccurs="0"/>
<xs:element name="parallelResponsibility" type="pml:type.statement" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:sequence>
</xs:sequence>
</xs:group>
Received on Fri Jun 04 2010 - 17:41:27 EDT