source: gs3-installations/intermuse/trunk/sites/intermuse/collect/programmes-and-performers/etc/collectionConfig.xml@ 37227

Last change on this file since 37227 was 37227, checked in by davidb, 15 months ago

Updated collection

File size: 35.5 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<CollectionConfig xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat" xmlns:gslib="http://www.greenstone.org/skinning" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3 <security default_access="public" scope="collection">
4 <exception>
5 <group name="atea"/>
6 </exception>
7 </security>
8 <metadataList>
9 <metadata lang="en" name="creator"/>
10 <metadata lang="en" name="maintainer"/>
11 <metadata lang="en" name="public">true</metadata>
12 </metadataList>
13 <displayItemList>
14 <displayItem lang="en" name="name">HMS Programmes and Performers</displayItem>
15 <displayItem lang="en" name="text">text</displayItem>
16 <displayItem lang="en" name="ex.im.Work,dc.Title,ex.dc.Title,Title">titles</displayItem>
17 <displayItem lang="en" name="Source">filenames</displayItem>
18 <displayItem lang="en" name="document:text">text</displayItem>
19 <displayItem lang="en" name="document:ex.Title">Title</displayItem>
20 <displayItem lang="en" name="document:ex.Source">Source</displayItem>
21 <displayItem lang="en" name="document">document</displayItem>
22 <displayItem lang="en" name="section">section</displayItem>
23 <!--
24 <displayItem lang="en" name="shortDescription">Programmes from the InterMusE corpus enhanced at ingest time using the Google Vision API</displayItem>
25 -->
26 <displayItem lang="en" name="shortDescription">OCR'd programmes from the InterMusE corpus enriched with metadata about the performances and performers</displayItem>
27 </displayItemList>
28 <format>
29 <gsf:template name="choose-title">
30 <gsf:choose-metadata>
31 <gsf:metadata name="ex.im.Work"/>
32 <gsf:metadata name="dc.Title"/>
33 <gsf:metadata name="exp.Title"/>
34 <gsf:metadata name="ex.dc.Title"/>
35 <gsf:metadata name="ex.Title"/>
36 <gsf:metadata name="Title"/>
37 <gsf:default>Untitled</gsf:default>
38 </gsf:choose-metadata>
39 </gsf:template>
40
41 <xsl:template name="document-link-mirador-ahref">
42 <xsl:param name="embed"/>
43 <xsl:variable name="href"><xsl:value-of select="$library_name"/><xsl:text>/collection/</xsl:text><xsl:value-of select="/page/pageResponse/collection/@name"/><xsl:text>/document/</xsl:text><xsl:choose><xsl:when test="@OID"><xsl:value-of select="@OID"/></xsl:when><xsl:when test="@OIDmetadata"><xsl:variable name="OIDmeta" select="@OIDmetadata"/><xsl:value-of select="metadataList/metadata[@name='{$OIDmeta}']"/></xsl:when><xsl:otherwise><xsl:value-of select="@nodeID"/></xsl:otherwise></xsl:choose><xsl:text>?book=mirador&amp;ed=1</xsl:text></xsl:variable>
44 <a>
45 <xsl:attribute name="href"><xsl:value-of select="$href"/></xsl:attribute>
46 <xsl:copy-of select="$embed"/>
47 </a>
48 </xsl:template>
49
50<!--
51 <xsl:template match="documentNode-CSVMetadata-or-IIIFViewer">
52 <gsf:switch>
53 <gsf:metadata name="HasGoogleVisionDocumentOCRJSON"/>
54 <gsf:when test="exists">
55 <td valign="top">
56 <xsl:call-template name="document-link-mirador-ahref">
57 <xsl:with-param name="embed"><gsf:icon style="vertical-align:middle;" type="document"/></xsl:with-param>
58 </xsl:call-template>
59 </td>
60 <td>
61 <xsl:call-template name="document-link-mirador-ahref">
62 <xsl:with-param name="embed">
63 <xsl:call-template name="choose-title"/>
64 < ! - - The following currently isn't triggered, as Programmes don't have Artist metadata - - >
65 <gsf:switch>
66 <gsf:metadata name="ex.im.Artist"/>
67 <gsf:when test="exists">, performed by<gsf:metadata name="ex.im.Artist"/></gsf:when>
68 </gsf:switch>
69 </xsl:with-param>
70 </xsl:call-template>
71 </td>
72 </gsf:when>
73 <gsf:otherwise>
74 <td valign="top">
75 <gsf:link type="document">
76 <gsf:choose-metadata>
77 <gsf:metadata name="thumbicon"/>
78 <gsf:metadata name="srcicon"/>
79 <gsf:default>
80 <gsf:icon style="vertical-align:middle;" type="document"/>
81 </gsf:default>
82 </gsf:choose-metadata>
83 </gsf:link>
84 </td>
85 <td valign="top">
86 <gsf:link type="document">
87 <xsl:call-template name="choose-title"/>
88 <gsf:switch>
89 <gsf:metadata name="ex.im.Composer"/>
90 <gsf:when test="exists">
91 <i> (<gsf:metadata name="ex.im.Composer"/>)</i>
92 </gsf:when>
93 </gsf:switch>
94 <gsf:switch>
95 <gsf:metadata name="ex.im.Artist"/>
96 <gsf:when test="exists">, performed by <gsf:metadata name="ex.im.Artist"/></gsf:when>
97 </gsf:switch>
98 </gsf:link>
99 </td>
100 </gsf:otherwise>
101 </gsf:switch>
102 </xsl:template>
103 -->
104 <!--
105 modify the collection description template to output the "this collection contains X documents and was last built Y days ago" message
106 -->
107 <xsl:template name="coll-description">
108 <div style="float: right; width: 300px;">
109 <img style="width: 100%;" src="interfaces/{$interface_name}/images/intermuse-title-logo.png" />
110 </div>
111
112 <p style="padding-top: 0.7rem;">
113
114 Live musical events play a vital role in community life across the
115 globe, yet their very ‘liveness’ means they often leave only faint
116 traces on the historical record, even in modern times. While
117 musicologists have used some types of concert ephemera to capture the
118 nature and identity of musical events, by their very nature these
119 resources can be confusingly inconsistent, tantalisingly incomplete,
120 and often scattered between different archives and collections.
121 </p>
122 <!--
123 <p>
124 This <i>prototype</i> InterMusE Digital Library is a resource developed as the result
125 of a two-year project, funded by AHRC’s UK-US New Directions for Digital
126 Scholarship in Cultural Institutions programme, that seeks
127 to better capture and represent these historical events.
128
129 Using natural-language processing, optical character recognition (OCR),
130 and other forms of artificial intelligence, this digital library
131 brings together an array of digitised resources sourced from:
132 </p>
133 -->
134
135 <p>
136 This <a href="https://intermuse.datatodata.org/" target="_blank">InterMusE Project</a>
137 is a two-year research endeavour,
138 funded by AHRC’s UK-US New Directions for Digital
139 Scholarship in Cultural Institutions programme, that seeks
140 to better capture and represent these historical events,
141 leveraging natural-language processing, optical character recognition (OCR),
142 and other forms of artificial intelligence.
143 To illustrate the potential of the approach we work with digitised resources
144 sourced from:
145 </p>
146
147 <ul>
148 <li>
149 University of York’s <a href="https://www.york.ac.uk/borthwick/" target="_blank" rel="noreferrer noopener">Borthwick Institute for Archives</a>,
150 </li>
151 <li>
152 <a href="https://krannertcenter.com/" target="_blank" rel="noreferrer noopener">Krannert Center for the Performing Arts</a> (University of Illinois at Urbana-Champaign),
153 </li>
154 <li>
155 <a href="https://linenhall.com/?gclid=CjwKCAiAmrOBBhA0EiwArn3mfAtN1-wdaaatezqK2X672WkKTS2he3g-8eDTZPc2INaYSHIdBQ4DExoCh-kQAvD_BwE" target="_blank" rel="noreferrer noopener">Linen Hall Library (Belfast</a>), and
156 </li>
157 <li>
158 <a href="https://www.rcm.ac.uk/" target="_blank" rel="noreferrer noopener">Royal College of Music</a>.
159 </li>
160 </ul>
161 <p>Material is also sourced from three former chapters of the British Music Society (est. 1918):</p>
162 <ul>
163 <li>
164 <a href="http://www.huddersfield-music-society.org.uk/" target="_blank" rel="noreferrer noopener">Huddersfield Music Society</a>,
165 </li>
166 <li>
167 <a href="http://www.bms-york.org.uk/" target="_blank" rel="noreferrer noopener">British Music Society of York</a>, and
168 </li>
169 <li>
170 <a href="https://www.belfastmusicsociety.org/" target="_blank" rel="noreferrer noopener">Belfast Music Society</a>.
171 </li>
172 </ul>
173
174
175
176 <h3>Prototype Digital Library</h3>
177
178 <p>
179 Greenstone3 is an open source digital library system with a
180 versatile service-based software architecture, managed through an extension
181 mechanism.
182 Taking the Huddersfield Music Society Programmes as the
183 set of digitised content processed,
184 this online resource demonstrates how Greenstone3 can be used
185 to meet the aspirations of the InterMuSe project.
186 of the InterMusE project we have
187 </p>
188
189 <!--
190 <p>
191 This prototype collection contains <xsl:value-of select="$numdocs"/> documents
192 focusing on a sample of programmes from the Huddersfield Music Society.
193 </p>
194 -->
195
196 <p>
197 <!-- Linked Open Data is used to unify these resources. -->
198
199 When content is added to the Digital Library it is automatically
200 processed using the Google Vision API, and any text extracted added
201 to the digital library's full-text index
202 as well as stored as Linked Open Data using the
203 <a href="https://dev.gdmrdigital.com/" target="_blank">Simple Annotation Server</a>.
204 We make the OCR'd text available asOpen Annotations,
205 accessible through a <a href="https://projectmirador.org/" target="_blank">Mirador3 Image Viewer</a>
206 embedded into the digital library.
207 Through the Mirador3 Viewer, annotations can be edited (correcting OCR errors, for example),
208 and well allowing for the
209 addition of complete new annotations (unrelated to the OCR'd text, if so desired).
210 As we use <a href="https://jena.apache.org/" target="_blank">Apache Jena Fuseki</a>
211 as the internal triplestore the Simple Annotation Server uses.
212 This means all the OCR'd content—along with
213 all the other metadata amassed in the digital library—can also be accessed via a SPARQL endpoint.
214 More details are available through the
215 <a href="https://intermuse.datatodata.org/" target="_blank">InterMuse project website</a>.
216 </p>
217
218 <p>
219 In addition to the automatically generated OCR'd content,
220 through the InterMusE Project an Excel spreadsheet
221 has been painstakingly assembled from the programmes,
222 recording who the performers were, and which musical works they performed at what concert.
223 We fold this into the digital library collection, both as information to display, but
224 also as metadata that can be used to enrich how users can locate content of
225 interest to them in the collection.
226 </p>
227
228 <h3>Designed for Different Types of User</h3>
229 <p>
230 Use the browsing and searching features the digital library provides to locate content
231 of interest. Register as a user to become an annotator/editor of the content.
232 As an external developer, interested in further enriching the forms of access to this content,
233 a machine-readable version of the content is accessible through the following
234 <a href="{$library_name}/collection/{$collName}/page/sparql">SPARQL endpoint</a>
235 </p>
236 <p>
237 <gslib:collectionDescriptionTextAndServicesLinks/>
238 </p>
239
240 <xsl:variable name="raw_date">
241 <gslib:collectionMeta name="buildDate"/>
242 </xsl:variable>
243 <xsl:variable name="formatted_date">
244 <xsl:value-of select="util:formatTimeStamp($raw_date, 0, 3, /page/@lang)"/>
245 </xsl:variable>
246 <xsl:variable name="numdocs">
247 <gslib:collectionMeta name="numDocs"/>
248 </xsl:variable>
249 <p>
250 This prototype collection contains <xsl:value-of select="$numdocs"/> documents focusing on a sample of programmes from the Huddersfield Music Society.
251 <!--
252 <xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'about.standarddescriptiondays', concat($numdocs, ';', $formatted_date))"/>
253 -->
254 </p>
255
256
257 <h3>Implementation Details</h3>
258
259 <p>
260 To form this prototype InterMusE digital library we have taken
261 the base digital library system and added in Greenstone's
262 extensions for:
263 <ul>
264 <li>
265 <a href="https://trac.greenstone.org/browser/gs3-extensions/structured-image/trunk">structured-image</a>
266 to automatically perform OCR on programme pages using Google Vision's API;
267 </li>
268 <li>
269 <a href="https://trac.greenstone.org/browser/gs3-extensions/iiif-servlet/trunk/src">iiif-servlet</a>
270 to allow images in the digital library to be
271 available at a range of resolutions via the IIIF Image API; and
272 </li>
273 <li>
274 <a href="https://trac.greenstone.org/browser/gs2-extensions/apache-jena/trunk/src">apache-jena</a>
275 so content—such as annotations added to
276 programme pages—can be accessed as Linked Data.
277 </li>
278 </ul>
279 </p>
280
281 <p>
282 A key strength to the Greenstone3 software architecture is its
283 ability to be customised, which is aligned with its three phases
284 to forming a digital library collection: importing, building,
285 and runtime presentation. The first two phases typically go
286 hand-in-hand, and form the ingest process by which content
287 selected for the digital library collection is turned into a
288 browseable and searchable online resource.
289 </p>
290 <p>
291 Importing centres around a pipeline of document processing
292 plugins, written in Perl, that turn a wide array of document
293 and metadata formats into a canonical format known as
294 GreenstoneXML. Using one folder per document, this format
295 represents everything that constitutes the processed document:
296 the text and metadata of the document,
297 along with any supporting files. The internal format
298 allows for hierarchical structure, such as occurs
299 in Word, PDF, and HTML documents using headings.
300 Metadata can be attached to any level of the hierarchy.
301 Examples of associated files include automatically generated
302 web-friendly resources such as
303 <!-- as an MP3 version of
304 a high quailty FLAC audio recording, for instance, -->
305 screen-sized and thumbnail-sized images in the case
306 of photos, embedded resources, and the original file itself so it can be
307 downloaded.
308
309 <!-- GreenstoneMETS -->
310 </p>
311 <p>
312 In terms of customisation, plugins support a
313 myriad of settings for fine-tuning how the processing is
314 undertaken. New plugins can also be introduced at any time,
315 with the digital library system automatically detecting their
316 presence.
317 </p>
318
319 <p>
320 The building step takes the standardised XML form, and processes
321 it to form the backend indexes and database structures needed to
322 deliver the forms of searching—such as full-text search, and
323 search by title—and browsing—such as a hierarchical subject
324 classification—specified in the collection's configuration file.
325
326 Effectively the building phase turns the standardised/serialised
327 GreenstoneXML form back into in-memory data-structures representing
328 a document's hierarchical structure of text and metadata, along
329 with how supporting files relate to that.
330 Following the directives specified in the collection's
331 configuration file, it is
332 then a simple matter to transmit this text, metadata, and associated
333 files as needed to the digital libraries indexing/database/backing-store.
334 <!--
335 so it can be used by the runtime system to provide the
336
337 to be used by the runtime system
338 -->
339 </p>
340 <p>
341 Beyond the customisations that can be specified in a collection
342 configuration file for the building phase, Greenstone supports
343 orthogonal indexers. Like the document processing plugins used
344 in importing, orthogonal indexers are modules written in Perl,
345 and their inclusion is automatically detected by the Greenstone3
346 installation. Orthogonal indexers get presented the same of
347 in-memory stream of &quot;reconstructed&quot; documents,
348 allowing them to undertake additional processing if
349 required (such as computing audio features), which can
350 then be transmitted to specialist indexing/database/backing-store
351 (such as a content-based music recommender system), or otherwise
352 added to the existing indexing/database/backing-store.
353 </p>
354 <p>
355 The third phase of the Greenstone3 digital library architecture
356 governs how functionality is accessed and data is extracted from
357 the digital library and presented to the user. The Greenstone3
358 runtime is a service-based architecture, written in Java,
359 consisting of a network of connected modules. Modules are
360 self-describing and advertise the services they offer.
361 Communication between modules is by XML messages, with the
362 service handling the final layer of communication responsible
363 for presentation. Here, XSL Transforms (XSLTs) are used to
364 convert the underlying XML content into the web page displayed
365 by the digital library, blending in CSS and Javascript
366 files that control appearance and functionality.
367 files.
368 </p>
369 <p>
370 The XSLT files are grouped together in one place, forming the
371 interface for the digital libary. An inheritance mechanism is
372 deployed throughout this part of the design. A collection can
373 override individual XSLT template rules as required to tweak
374 presentation details. A collection can also provide an entire
375 replacement XSLT file if so desired. For more substantial
376 changes a new interface is typically developed.
377 </p>
378
379 <p>
380
381 In terms of crafting the features and functionality to form this digital library,
382 we made use of all three area of customisation. ...
383
384<!--
385 there
386 are three keys parts of the Greenstone3 design where
387
388 area where customisation
389
390
391 digital library collection into
392
393 the online resource
394
395 features and functionality
396
397 In developing a Greenstone3 digital library collection, there are three key phases
398 to consider: importing, building, and runtime-display.
399
400 The first
401 XML message based .. XSL Transforms (XSLT)
402
403 The there are three key phases to the
404
405 Its modular design
406
407 The modular design of Greenstone3 provides several stages where
408
409 ...
410
411 importing
412 building
413 runtime-display
414
415 orthogonal indexes
416-->
417
418 <!--
419 Three key 'hook-in' points within the Greenstone3 software architecture
420 for customisation are: the Perl-based document processing plugins
421 used in the content ingest pipeline, through which
422 content and metadata are ingested into a digital library
423 collection
424
425 Perl-based document processing pipeline
426
427 Woven together in the following way
428
429 We have applied
430
431 Mirador
432 SimpleAnnotationServer
433
434 This forms the framework for this developed
435
436 In developing this online resource, we have applied it
437 -->
438 </p>
439
440
441 </xsl:template>
442 </format>
443 <search type="solr">
444 <index name="text">
445 <displayItem lang="en" name="name">text</displayItem>
446 </index>
447 <index name="ex.im.Work,dc.Title,ex.dc.Title,Title">
448 <displayItem lang="en" name="name">work titles</displayItem>
449 </index>
450 <index name="ex.im.Artist">
451 <displayItem lang="en" name="name">artists</displayItem>
452 </index>
453 <index name="ex.im.Composer">
454 <displayItem lang="en" name="name">composers</displayItem>
455 </index>
456 <index name="ex.im.Venue">
457 <displayItem lang="en" name="name">venues</displayItem>
458 </index>
459 <defaultIndex name="text"/>
460
461 <level name="document">
462 <displayItem lang="en" name="name">document</displayItem>
463 </level>
464 <level name="section">
465 <displayItem lang="en" name="name">page</displayItem>
466 </level>
467 <defaultLevel name="section"/>
468
469 <sort name="rank">
470 <displayItem lang="en" name="name">rank</displayItem>
471 </sort>
472 <sort name="none">
473 <displayItem lang="en" name="name">natural (build) order</displayItem>
474 </sort>
475
476
477 <facet name="ex.im.Artist">
478 <displayItem lang="en" name="name">artist</displayItem>
479 </facet>
480 <facet name="ex.im.Composer">
481 <displayItem lang="en" name="name">composer</displayItem>
482 </facet>
483 <facet name="ex.im.Venue">
484 <displayItem lang="en" name="name">venue</displayItem>
485 </facet>
486 <searchType name="plain"/>
487 <searchType name="advancedform"/>
488
489 <format>
490 <gsf:template match="documentNode">
491 <!--
492 <xsl:call-template name="documentNode-CSVMetadata-or-IIIFViewer"/>
493-->
494
495 <gsf:switch>
496 <gsf:metadata name="HasGoogleVisionDocumentOCRJSON"/>
497 <gsf:when test="exists">
498 <td valign="top">
499 <xsl:call-template name="document-link-mirador-ahref">
500 <xsl:with-param name="embed"><gsf:icon style="vertical-align:middle;" type="document"/></xsl:with-param>
501 </xsl:call-template>
502 </td>
503 <td valign="top" style="width: 100%"> <!-- causes this (final) table cell to autofill -->
504 <xsl:call-template name="document-link-mirador-ahref">
505 <xsl:with-param name="embed">
506 <xsl:call-template name="choose-title"/>
507 <!-- The following currently isn't triggered, as Programmes don't have Artist metadata -->
508 <gsf:switch>
509 <gsf:metadata name="ex.im.Artist"/>
510 <gsf:when test="exists">, performed by<gsf:metadata name="ex.im.Artist"/></gsf:when>
511 </gsf:switch>
512 </xsl:with-param>
513 </xsl:call-template>
514 </td>
515 </gsf:when>
516 <gsf:otherwise>
517 <td valign="top">
518 <gsf:link type="document">
519 <gsf:choose-metadata>
520 <gsf:metadata name="thumbicon"/>
521 <gsf:metadata name="srcicon"/>
522 <gsf:default>
523 <gsf:icon style="vertical-align:middle;" type="document"/>
524 </gsf:default>
525 </gsf:choose-metadata>
526 </gsf:link>
527 </td>
528 <td valign="top" style="width: 100%"> <!-- causes this (final) table cell to autofill -->
529 <gsf:link type="document">
530 <xsl:call-template name="choose-title"/>
531 <gsf:switch>
532 <gsf:metadata name="ex.im.Composer"/>
533 <gsf:when test="exists">
534 <i> (<gsf:metadata name="ex.im.Composer"/>)</i>
535 </gsf:when>
536 </gsf:switch>
537 <gsf:switch>
538 <gsf:metadata name="ex.im.Artist"/>
539 <gsf:when test="exists">, performed by <gsf:metadata name="ex.im.Artist"/></gsf:when>
540 </gsf:switch>
541 </gsf:link>
542 </td>
543 </gsf:otherwise>
544 </gsf:switch>
545
546
547 </gsf:template>
548
549 </format>
550 </search>
551
552 <!--
553 <search type="jenaTDB" orthogonal="true"/>
554 -->
555
556 <infodb type="jdbm"/>
557
558 <import>
559 <pluginList>
560 <plugin name="ZIPPlugin"/>
561 <plugin name="GreenstoneXMLPlugin"/>
562 <plugin name="CSVPlugin">
563 <option name="-use_namespace_for_field_names" value="ex.im"/>
564 <option name="-OIDtype" value="assigned"/>
565 <option name="-OIDmetadata" value="ex.im.GSFriendlyID"/>
566 <option name="-metadata_value_separator" value=",(?!\s\w\.)"/>
567 <option name="-metadata_separate_fields" value="ex.im.Artist,ex.im.Composer"/>
568 <option name="-store_field_values_as_document_text"/>
569 </plugin>
570 <plugin name="GoogleVisionPagedImagePlugin">
571 <option name="-enable_cache"/>
572 <option name="-enable_document_ocr"/>
573 <option name="-OIDtype" value="filename"/>
574 <option name="-create_screenview" value="true"/>
575 <option name="-create_thumbnail" value="true"/>
576 <option name="-screenviewtype" value="png"/>
577 <option name="-thumbnailtype" value="png"/>
578 </plugin>
579 <plugin name="GoogleVisionImagePlugin">
580 <option name="-enable_cache"/>
581 <option name="-enable_document_ocr"/>
582 <option name="-enable_image_labelling"/>
583 </plugin>
584 <plugin name="TextPlugin">
585 <option name="-process_exp" value="(?=(?i).te?xt\$)(?=^(?!.*tk_))"/>
586 </plugin>
587 <plugin name="HTMLPlugin"/>
588 <plugin name="EmailPlugin"/>
589 <plugin name="PDFv2Plugin"/>
590 <plugin name="UnknownConverterPlugin">
591 <option name="-exec_cmd" value="java -jar $GSDLHOME/ext/tika/tika-app-*.jar --html --pretty-print --encoding=UTF-8 %%INPUT_FILE > %%OUTPUT"/>
592 <option name="-convert_to" value="html"/>
593 <option name="-mime_type" value="application/vnd.openxmlformats-officedocument.wordprocessingml.document"/>
594 <option name="-srcicon" value="icondocx"/>
595 <option name="-process_extension" value="docx"/>
596 </plugin>
597 <plugin name="RTFPlugin"/>
598 <plugin name="WordPlugin"/>
599 <plugin name="PostScriptPlugin"/>
600 <plugin name="PowerPointPlugin"/>
601 <plugin name="ExcelPlugin"/>
602 <plugin name="ISISPlugin"/>
603 <plugin name="NulPlugin"/>
604 <plugin name="OAIPlugin"/>
605 <plugin name="MetadataXMLPlugin"/>
606 <plugin name="ArchivesInfPlugin"/>
607 <plugin name="DirectoryPlugin"/>
608 </pluginList>
609 </import>
610 <browse>
611 <classifier name="List">
612 <!--
613 <option name="-metadata" value="dc.Title,Title"/>
614 -->
615 <option name="-metadata" value="Volume"/>
616 <option name="-buttonname" value="Programmes"/>
617 <option name="-partition_type_within_level" value="approximate_size"/>
618 <option name="-numeric_partition_type_within_level" value="approximate_size"/>
619 <option name="-metadata_selection_mode_within_level" value="firstvalue"/>
620
621 <format>
622 <gsf:template match="documentNode">
623 <td valign="top">
624 <!--
625 <gsf:link type="document"><gsf:icon style="vertical-align:middle;" type="document"/> (Page view)</gsf:link>
626 -->
627 <xsl:call-template name="document-link-mirador-ahref">
628 <xsl:with-param name="embed"><gsf:icon style="vertical-align:middle;" type="document"/></xsl:with-param>
629 </xsl:call-template>
630 </td>
631 <td valign="top">
632 <xsl:call-template name="document-link-mirador-ahref">
633 <xsl:with-param name="embed">
634 <xsl:call-template name="choose-title"/>
635 <gsf:switch>
636 <gsf:metadata name="ex.im.Artist"/>
637 <gsf:when test="exists">, performed by<gsf:metadata name="ex.im.Artist"/></gsf:when>
638 </gsf:switch>
639 </xsl:with-param>
640 </xsl:call-template>
641 </td>
642 <!--
643 <td valign="top">
644 <gsf:link type="document">
645 <xsl:call-template name="choose-title"/>
646 <gsf:switch>
647 <gsf:metadata name="ex.im.Artist"/>
648 <gsf:when test="exists">, performed by<gsf:metadata name="ex.im.Artist"/></gsf:when>
649 </gsf:switch>
650
651 </gsf:link>
652 </td>
653 -->
654 </gsf:template>
655 <gsf:template match="classifierNode[@classifierStyle = 'VList']">
656 <td valign="top">
657 <gsf:link style="static" type="classifier">
658 <gsf:icon type="classifier"/>
659 </gsf:link>
660 </td>
661 <td valign="top">
662 <gsf:link type="classifier">
663 <gsf:metadata name="Title"/>
664 </gsf:link>
665 </td>
666 </gsf:template>
667 <gsf:template match="classifierNode[@classifierStyle = 'HList']">
668 <gsf:link style="static" type="classifier">
669 <gsf:metadata name="Title"/>
670 </gsf:link>
671 </gsf:template>
672 </format>
673 </classifier>
674
675 <classifier name="AZCompactList">
676 <option name="-metadata" value="ex.im.Work"/>
677 <option name="-buttonname" value="Performances"/>
678 <option name="-mingroup" value="2"/>
679 </classifier>
680 <!--
681 <classifier name="AZCompactList">
682 <option name="-metadata" value="ex.im.No"/>
683 <option name="-buttonname" value="IntermusE IDs"/>
684 </classifier>
685 -->
686 <classifier name="AZCompactList">
687 <option name="-metadata" value="ex.im.Artist"/>
688 <option name="-buttonname" value="Artists"/>
689 <option name="-removesuffix" value="\s*\([^)]*\)"/>
690 </classifier>
691 <classifier name="AZCompactList">
692 <option name="-metadata" value="ex.im.Composer"/>
693 <option name="-buttonname" value="Composers"/>
694 <option name="-removeprefix" value="arr(\.?)\s*"/>
695 </classifier>
696 <classifier name="AZCompactList">
697 <option name="-metadata" value="ex.im.Venue"/>
698 <option name="-buttonname" value="Venues"/>
699 </classifier>
700
701
702
703 <format>
704 <gsf:template match="documentNode">
705 <td valign="top">
706 <gsf:link type="document">
707 <gsf:choose-metadata>
708 <gsf:metadata name="thumbicon"/>
709 <gsf:metadata name="srcicon"/>
710 <gsf:default>
711 <gsf:icon style="vertical-align:middle;" type="document"/>
712 </gsf:default>
713 </gsf:choose-metadata>
714 </gsf:link>
715 </td>
716 <td valign="top">
717 <gsf:link type="document">
718<!--
719Defined in the global format statement
720-->
721 <xsl:call-template name="choose-title"/>
722 <gsf:switch>
723 <gsf:metadata name="ex.im.Composer"/>
724 <gsf:when test="exists">
725 <i> (<gsf:metadata name="ex.im.Composer"/>)</i>
726 </gsf:when>
727 </gsf:switch>
728 <gsf:switch>
729 <gsf:metadata name="ex.im.Artist"/>
730 <gsf:when test="exists">, performed by <gsf:metadata name="ex.im.Artist"/></gsf:when>
731 </gsf:switch>
732 </gsf:link>
733 </td>
734 </gsf:template>
735 <gsf:template match="classifierNode[@classifierStyle = 'VList']">
736 <td valign="top">
737 <gsf:link styleXX="static" type="classifier">
738 <gsf:icon style="vertical-align:middle;" type="classifier"/>
739 </gsf:link>
740 <gsf:link styleXX="static" type="classifier">
741 <span style="padding: 2px 2px 2px 0px;">[<gsf:metadata name="numleafdocs"/>]</span>
742 </gsf:link>
743 </td>
744 <td valign="top">
745 <gsf:link type="classifier">
746 <gsf:metadata name="Title"/>
747 </gsf:link>
748 </td>
749 </gsf:template>
750 <gsf:template match="classifierNode[@classifierStyle = 'HList']">
751 <gsf:link style="static" type="classifier">
752 <gsf:metadata name="Title"/>
753 </gsf:link>
754 </gsf:template>
755 </format>
756
757 </browse>
758 <display>
759 <format>
760 <gsf:headMetaTags>
761 <gsf:metadata name="Title"/>
762 <gsf:metadata name="Image"/>
763 <gsf:metadata name="HasGoogleVisionDocumentOCRJSON"/>
764 <gsf:metadata name="GVDocumentOCRJSON"/>
765
766 <gsf:metadata name="ex.im.No"/>
767 <gsf:metadata name="ex.im.Work"/>
768 <gsf:metadata name="ex.im.Date"/>
769 <gsf:metadata name="ex.im.Artist"/>
770 <gsf:metadata name="ex.im.Venue"/>
771 <gsf:metadata name="ex.im.Composer"/>
772 <gsf:metadata name="ex.im.Date"/>
773 <gsf:metadata name="ex.im.ProgAndPage"/>
774
775 </gsf:headMetaTags>
776
777 <gsf:option name="TOC" value="true"/>
778 <gsf:option name="allowUserComments" value="true"/>
779 <gsf:option name="allowDocumentEditing" value="true"/>
780 <gsf:option name="allowMapGPSEditing" value="true"/>
781
782
783 <gsf:option name="includeFileAssocOpenAnnotations" value="false"/>
784 <gsf:option name="includeEditableOpenAnnotations" value="true" endpointURL="/simpleAnnotationStore/annotation" />
785 <!--
786 <gsf:option name="includeEditableOpenAnnotations" value="true" endpointURL="localStorage" />
787 -->
788
789 <!--
790 <gsf:variable name="openAnnotationEndpoint">https://intermuse.sowemustthink.space/simpleAnnotationStore/annotation</gsf:variable>
791 -->
792
793 <!--
794 Overwriting this template allows you to change the heading of the document.
795 -->
796 <!--
797 <gsf:template name="documentHeading">
798 <span style="font-weight:italic; font-size: 120%;">
799 <xsl:call-template name="choose-title"/>
800 </span>
801 </gsf:template>
802 -->
803 <xsl:template name="documentHeading">
804 <!--
805 <gsf:metadata hidden="true" name="HasGoogleVisionDocumentOCRJSON"/>
806 <gsf:metadata hidden="true" name="GVDocumentOCRJSON"/>
807 <gsf:metadata hidden="true" name="Image"/>
808 -->
809 <!--
810 **** currently needed to ensure ILT TOC gets Image (rather than Source) metadata ?????
811 -->
812
813 <gsf:metadata hidden="true" name="im.Programme" select="root"/>
814 <gsf:metadata hidden="true" name="SASShortID" />
815 <gsf:metadata hidden="true" name="ex.im.GSFriendlyProg"/>
816 <gsf:metadata hidden="true" name="ex.im.GSFriendlyPage"/>
817
818 <xsl:if test="$bookswitch != 'mirador'">
819 <span style="font-weight:bold; font-size: 120%;">
820 <xsl:call-template name="choose-title"/>
821 </span>
822 </xsl:if>
823
824 <gsf:metadata-table>
825 <gsf:metadata name="ex.im.No" >Performance ID:</gsf:metadata>
826 <gsf:metadata name="ex.im.Work" >Work: </gsf:metadata>
827 <gsf:metadata name="ex.im.Artist" >Artist(s): </gsf:metadata>
828 <gsf:metadata name="ex.im.Composer" >Composer: </gsf:metadata>
829 <gsf:metadata name="ex.im.Venue" >Venue: </gsf:metadata>
830 <gsf:metadata name="ex.im.Date" >Date: </gsf:metadata>
831 <gsf:metadata name="ex.im.ProgAndPage">Programme/Concert:</gsf:metadata>
832 </gsf:metadata-table>
833 </xsl:template>
834<!--
835Overwriting this template can be used to redefine the content of the whole document. This is useful for simple documents, but not recommended for more complex documents (e.g. hierachical and paged documents) as it can prevent any sub-sections from showing.
836-->
837<!--
838<gsf:template name="documentContent">
839 <div id="gs-document">
840 <xsl:call-template name="documentPre"/>
841 <xsl:call-template name="wrappedSectionImage"/>
842 <div id="gs-document-text">
843 <xsl:call-template name="documentNodeText"/>
844 </div>
845 </div>
846 </gsf:template>
847-->
848<!--
849Overwriting this template can be used to change the content of section headings.
850-->
851 <gsf:template name="sectionHeading">
852 <xsl:call-template name="choose-title"/>
853 </gsf:template>
854<!--
855Overwriting this template can be used to change the content of the top-level section.
856-->
857<!--
858<gsf:template name="topLevelSectionContent">
859<xsl:call-template name="wrappedSectionImage"/>
860<xsl:call-template name="wrappedSectionText"/>
861</gsf:template>
862-->
863<!--
864Overwriting this template can be used to change the content of sections.
865-->
866<!--
867<gsf:template name="sectionContent">
868<xsl:call-template name="wrappedSectionImage"/>
869<xsl:call-template name="wrappedSectionText"/>
870</gsf:template>
871-->
872 </format>
873 </display>
874 <replaceListRef id="gs2-standard"/>
875 <replaceListRef id="gs2-image"/>
876 <serviceRackList><!-- comment out the following serviceRack if you want to disable RSS for this collection -->
877 <serviceRack name="RSSRetrieve"/><!-- comment out the following serviceRack if you want to disable OAI for this collection -->
878 <serviceRack name="OAIPMH">
879 <setName>intermuseprogammes</setName>
880 <setDescription/><!-- uncomment the following and set the name attribute if
881 you want this collection to be part of a super set. --><!--<oaiSuperSet name="xxx"/>-->
882 <ListMetadataFormats><!--What metadata sets to support for this collection. You can select any set that is specified in OAIConfig.xml. To use a new set, you need to add a set definition in OAIConfig.xml, then reference it here, like:
883 <metadataFormat metadataPrefix="prefix"/> -->
884 <metadataFormat metadataPrefix="oai_dc"><!-- you can customize the mappings by adding elements in here. See resources/oai/OAIConfig.xml for the format--></metadataFormat>
885 </ListMetadataFormats>
886 </serviceRack>
887 <serviceRack name="IIIFPMH">
888 <setName>intermuseprogammes</setName>
889 <setDescription/><!-- uncomment the following and set the name attribute if
890 you want this collection to be part of a super set. --><!--<oaiSuperSet name="xxx"/>-->
891 <ListMetadataFormats><!--What metadata sets to support for this collection. You can select any set that is specified in OAIConfig.xml. To use a new set, you need to add a set definition in OAIConfig.xml, then reference it here, like:
892 <metadataFormat metadataPrefix="prefix"/> -->
893 <metadataFormat metadataPrefix="oai_dc"><!-- you can customize the mappings by adding elements in here. See resources/oai/OAIConfig.xml for the format--></metadataFormat>
894 </ListMetadataFormats>
895 </serviceRack>
896 </serviceRackList>
897</CollectionConfig>
Note: See TracBrowser for help on using the repository browser.