SAA-SDT / eac-cpf-schema

https://eac.staatsbibliothek-berlin.de/
10 stars 4 forks source link

<control> #81

Open SJagodzinski opened 4 years ago

SJagodzinski commented 4 years ago

Control

Creator of issue

  1. Silke Jagodzinski
  2. TS-EAS: EAC-CPF subgroup
  3. silkejagodzinski@gmail.com

Related issues / documents

<control>: add child element #9 <control>: express more adequately #23 @countryencoding #120

EAD3 Reconciliation

Additional EAD 3 attributes @altrender - Optional @audience - Optional (values limited to: external, internal) @countryencoding - Optional (values limited to: iso3166-1, othercountryencoding) @dateencoding - Optional (values limited to: iso8601, otherdateencoding) @encodinganalog - Optional @langencoding - Optional (values limited to: iso639-1, iso639-2b, iso639-3, otherlangencoding) @relatedencoding - Optional @repositoryencoding - Optional (values limited to: iso15511, otherrepositoryencoding) @script - Optional @scriptencoding - Optional (values limited to: iso15924, otherscriptencoding)

Additional EAD 3 element <representation>: for recording a link to a transformed and deliverable version of the EAD instance. <filedesc>: binds together bibliographic information about an EAD instance

Decision from EAC-EAD-Schema joint meeting, 28 Jan 2020: do not include @altrender in EAC-CPF

Context

The element of the instance that contains control information about its identity, creation, maintenance, status, and the rules and authorities used in the composition of the description.

May contain: <conventionDeclaration>, <languageDeclaration>, <localControl>, <localTypeDeclaration>, <maintenanceAgency>, <maintenanceHistory>, <maintenanceStatus>, <otherRecordId>, <publicationStatus>, <recordId>, <rightsDeclaration>, <sources> May occur within: <eac-cpf> Attributes: @xml:base, @xml:id, @xml:lang Availability: Mandatory, Non-repeatable

Solution documentation

Rephrasing Summary, Description and Usage and Attribute usage needed?

May contain: <conventionDeclaration>, <languageDeclaration>, <localControl>, <localTypeDeclaration>, <maintenanceAgency>, <maintenanceHistory>, <maintenanceStatus>, <otherRecordId>, <publicationStatus>, <recordId>, <rightsDeclaration>, <representation>, <sources> May occur within: <eac-cpf> Attributes: @audience - optional (values limited to: external, internal) @base - optional @countryEncoding - optional @dateEncoding - optional @id - optional @languageEncoding - optional @languageOfElement - optional @maintenanceStatus - required (values limited to: cancelled, deleted, deletedMerged, deletedReplaced, deletedSplit, derived, new, revised) @publicationStatus - optional (values limited to: approved, inProcess, published) @repositoryEncoding - optional @scriptEncoding - optional @scriptOfElement - optional

Availability: Required, not repeatable

Example encoding

<eac>
<control audience="external" countryEncoding="iso3166-1" dateEncoding="iso8601" id="control1" languageEncoding="iso639-1" languageOfElement="en" maintanceStatus="new" publicationStatus="inProcess" repositoryEncoding="iso15511" scriptEncoding="iso15924" scriptOfElement="lat">
  <recordId>records identifier</recordId>
  <maintenanceStatus value="new"/>
  <maintenanceAgency>[...]</maintenanceAgency>
  <maintenanceHistory>[...] >/maintenanceHistory>
 </control>
</eac>
fordmadox commented 4 years ago

I know that EAD3 included @audience on control, but what's the use case? Isn't the control section always "internal" in the sense that it's administrative metadata?

kerstarno commented 4 years ago

Administrative data, yes, but not necessarily always only "internal". There are parts like e.g. <recordId> or <otherRecordId> that one might want to treat as "external". Not to speak about <conventionDeclaration>, <source>, <maintenanceEvent>, and potentially even <localTypeDeclaration> when we want the new @...Reference attributes to have a target that can e.g. be shown to users in an HTML display :-)

fordmadox commented 4 years ago

Right, and this might not be an issue at all, but I'm primarily curious about the use case of setting that attribute to "internal" on any required element that cannot repeat (e.g. <control>, <recordId>, etc.), which if removed would invalidate the EAD/C file. It seems like this attribute can serve many purposes, but the documentation just mentions, essentially, that "external = everyone" and "internal = repository staff". Granted, you could always do this in EAD2002, so I've tried to steer clear of using that attribute in eadheader in the past (and ditto for archdesc).

There are two main uses I can think of for @audience:

  1. To determine what's shared with an aggregator or anyone else (e.g. internal = not shared) when the source EAC/D file is distributed. But here we get into the problem of an invalid EAC file if one of those required elements is removed before sharing. So, what differentiates this particular use from another valid use of audience='internal' to designate an internal-only element that is not required?
  2. To determine what gets published/kept when the source file is transformed into another format (e.g. EAD -> HTML, where internal = do not put online). Here it doesn't matter if required elements get removed, but I don't really understand the use case at this particular level of the file. e.g. it's logically conflicting to say the entire "control" section should be unpublished (keeping with this use case), but that any of the descendants of the section should be published.

Those two use case often don't conflict, but they do at certain places, which leads me to wonder if there is ever a good reason to specify a required, non-repeatable element as internal only? I do see the use case of using @audience='internal' at the document level, however, since that's an easy way to indicate that the entire file is (still) internal only. But when you remove that document node due to it being indicated as internal only, you do not wind up with an invalid EAD/C file. You just wind up with a well-formed, practically empty XML file.

kerstarno commented 4 years ago

Hm...

My two cents on these two use cases:

  1. Speaking from an aggregator's perspective, we would never remove a required element completely during the aggregation process based on it being marked as "internal" (while we most likely would for optional elements being marked in the same way). However, we might suppress or remove element's content to make sure it doesn't slip through in any data processing. And, yes, I'm aware of the fact that <recordId> in EAC-CPF currently is required to have content, but it isn't in EAD3.
  2. Sorry, but how is this example (indicating a whole section as being "internal", but then specifying certain sub-elements as being "external") more logically conflicting than doing the same e.g. with language attribution (i.e. indicating a whole section as being in English, but then specifying certain sub-elements as being in another language)? I mean, yes, "external" and "internal" are mutually exclusive - when not looking at them based on the logic of XML inheritance - but, apart maybe from terms adopted in one language from another, I would argue the same for languages; or do we have examples of something being in English and, let's say, in Chinese at the same time?
ailie-s commented 4 years ago

DRAFT Tag Library text:

Summary: A required child element of <eac> that contains information about the creation, maintenance, status and the rules and authorities used in the composition of the EAC-CPF instance. May contain: <conventionDeclaration> (0..n), <languageDeclaration> (0..n), <localControl> (0..n), <localTypeDeclaration> (0..n), <maintenanceAgency> (1..1), <maintenanceHistory> (1..1), <otherRecordId> (0..n), <recordId> (1..1), <rightsDeclaration> (0..n), <representation> (0..n), <sources> (0..1) May occur within: <eac-cpf> Attributes: @audience - optional (values limited to: external, internal) @base - optional @countryEncoding - optional @dateEncoding - optional @id - optional @languageEncoding - optional @languageOfElement - optional @maintenanceStatus - required (values limited to: cancelled, deleted, deletedMerged, deletedReplaced, deletedSplit, derived, new, revised) @publicationStatus - optional (values limited to: approved, inProcess, published) @repositoryEncoding - optional @scriptEncoding - optional @scriptOfElement - optional Description: This required wrapper element within <eac> contains the information necessary to manage the instance. This includes information about its creation, maintenance and status as well the languages, rules and authorities used in the composition of the description.

It must contain a unique identifier for the instance within the <recordId> element. Other associated identifiers may be given in <otherRecordId>. There must be a description of the agency responsible for its creation and maintenance in <maintenanceAgency> as well as statements about its current drafting status in @maintenanceStatus and the creation, maintenance, and disposition of the instance in <maintenanceHistory>.

There are optional elements available to declare languages, rules, conventions and sources used in the EAC-CPF instance. Other control elements considered necessary but not otherwise included may be given in the <localControl> element.

The available child elements (both required and optional) are: <recordId> - Required. Contains the unique identifier for the EAC-CPF instance. <otherRecordId> - Optional. An element that allows the recording of additional identifiers that may be associated with the EAC-CPF instance. <maintenanceAgency> - Required. Contains the name and coded information about the institution or service responsible for the creation, maintenance, and/or dissemination of the EAC-CPF instance. <languageDeclaration> - Optional. Contains coded and natural language information about the language or languages of the EAC-CPF instance. <conventionDeclaration> - Optional. Contains information on the rules or conventions used to construct the EAC-CPF instance. <rightsDeclaration> - Optional. Contains information about the usage rights of the EAC-CPF instance. <localTypeDeclaration> - Optional. Contains information about local conventions used in the @localType attribute. <localControl> - Optional. Contains any administrative metadata necessary due to local practice that are not represented by the other elements in . <maintenanceHistory> - Required. Contains information about the date, type and events within the life cycle of an EAC-CPF instance. <sources> - Optional. Contains information about the sources consulted in creating the description of the entity or entities in the EAC-CPF instance. <representation> - Optional. Used for recording a link to a transformed and deliverable version of the EAC-CPF instance.

Attribute Usage: @maintenanceStatus is a required attribute of <control> that is used to document the current version status of the EAC-CPF instance. @publicationStatus is an optional attribute that can be used to record the editorial status of the EAC-CPF instance.

Availability: Required, not repeatable

SJagodzinski commented 4 years ago

Outcome EAC-CPF September meeting 2020:

Keep the attribute @audience as is. No need to add additional use cases as all agree it is clear at the moment.

kerstarno commented 4 years ago

Schema team, schema tests:

I've tested the draft XSD and RNG schemas for EAC-CPF 2.0 with regard to "control" and can confirm the following:

Schema test successful. Detailed tests for sub-elements and attributes to follow within the according element and attribute issues.