<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Controlled Vocabularies | museum-digital: blog</title>
	<atom:link href="https://blog.museum-digital.org/tag/controlled-vocabularies/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.museum-digital.org</link>
	<description>A blog on museum-digital and the broader digitization of museum work.</description>
	<lastBuildDate>Tue, 25 Nov 2025 16:54:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.museum-digital.org/wp-content/uploads/2020/01/cropped-mdlogo-code-512px-32x32.png</url>
	<title>Controlled Vocabularies | museum-digital: blog</title>
	<link>https://blog.museum-digital.org</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="search" type="application/opensearchdescription+xml" title="Search museum-digital: blog" href="https://blog.museum-digital.org/wp-json/opensearch/1.1/document" />	<item>
		<title>State of Dev, September 2025</title>
		<link>https://blog.museum-digital.org/2025/11/25/state-of-dev-september-2025/</link>
					<comments>https://blog.museum-digital.org/2025/11/25/state-of-dev-september-2025/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Tue, 25 Nov 2025 16:54:06 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4554</guid>

					<description><![CDATA[Recent (technical) development around museum-digital in September 2025.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Development</h2>



<h3 class="wp-block-heading"><a href="https://en.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li>Objects that are linked to a source as referencing the source or being referenced in it are now listed on the source&#8217;s page
<ul class="wp-block-list">
<li>Example: <a href="https://hessen.museum-digital.de/source/1950">&#8220;Novalis Schriften. Die Werke Friedrich von Hardenbergs. Historisch-kritische Ausgabe. Erster Band: Das dichterische Werk. 3. Auflage&#8221;</a></li>
</ul>
</li>



<li>The object page now displays the new transcription fields for notes, status, and type of the transcription</li>



<li>New types of classifications for the link between an object and a tag
<ul class="wp-block-list">
<li>Taxon</li>



<li>Topic</li>



<li>Mentioned subject (similar to the existing &#8220;display subject&#8221;)</li>
</ul>
</li>



<li>Dependencies
<ul class="wp-block-list">
<li>Updated OpenLayers to Version 10.6</li>
</ul>
</li>
</ul>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="576" src="https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-1024x576.webp" alt="Screenshot: Objects referenced in source on source pages" class="wp-image-4548" srcset="https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-1024x576.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-300x169.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png-1536x864.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2025/11/20251125_referenced-sources_en.png.webp 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Source pages in the public frontend / portals of museum-digital now display all objects linked to the source as either referencing the source or being referenced by their source.</figcaption></figure>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/musdb/">musdb</a></h3>



<ul class="wp-block-list">
<li>Renaming vocabulary entries to blacklisted terms is now impossible
<ul class="wp-block-list">
<li>Someone managed to create an actor &#8220;unknown&#8221; by adding a different actor and renaming the new actor entry to &#8220;unknown&#8221; afterwards.</li>
</ul>
</li>



<li>Added a sidebar to object group overview pages for additional filtering options</li>



<li>New types of classifications for the link between an object and a tag
<ul class="wp-block-list">
<li>Taxon</li>



<li>Topic</li>



<li>Mentioned subject (similar to the existing &#8220;display subject&#8221;)</li>
</ul>
</li>



<li>New APIs for listing all vocabulary entries linked to the objects of a museum</li>



<li>Dependencies
<ul class="wp-block-list">
<li>Updated OpenLayers to Version 10.6</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">Importer</h3>



<ul class="wp-block-list">
<li>Core
<ul class="wp-block-list">
<li>Deaccessions are now covered by the import tool</li>



<li>Recipients of deaccessions are linked to the address book / contact list</li>
</ul>
</li>



<li>Parser
<ul class="wp-block-list">
<li>CSVXML: The CSVXML parser now covers deaccessions as well</li>



<li>ImageByInvno: Added an option to ignore any characters before a given starting combination of characters (if there is a consistent start of the inventory number).</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><a href="https://csvxml.imports.museum-digital.org/">CSVXML</a></h3>



<ul class="wp-block-list">
<li>New fields
<ul class="wp-block-list">
<li>tag_related_identifier_type</li>



<li>tag_related_identifier</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Dissemination</h2>



<ul class="wp-block-list">
<li><a href="https://www.jrenslin.de/talks/von-museum-digital-zum-eigenen-online-katalog-ag-digitalisierung-mv-rlp/">Presentation</a> &#8220;Von museum-digital zum eigenen Online-Katalog&#8221; for the Working Group Digitization of the State Museum Association of Rhineland-Palatine
<ul class="wp-block-list">
<li><a href="https://files.museum-digital.org/de/Praesentationen/2025-09-10_Von-museum-digital-zum-eigenen-Online-Katalog_JRE.pdf">Slides: PDF</a></li>



<li><a href="https://files.museum-digital.org/de/Praesentationen/2025-09-10_Von-museum-digital-zum-eigenen-Online-Katalog_JRE.odp">Slides: ODP</a></li>
</ul>
</li>
</ul>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2025/11/25/state-of-dev-september-2025/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2025/11/AI-gen-blog-202511-state-of-2025-09.png-scaled.webp</url><width>600</width><height>467</height></post-thumbnail>	</item>
		<item>
		<title>State of Dev, December 2024 &#038; January 2025</title>
		<link>https://blog.museum-digital.org/2025/02/14/state-of-dev-december-2024-january-2025/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Thu, 13 Feb 2025 23:48:42 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[nodac]]></category>
		<category><![CDATA[Batch editing]]></category>
		<category><![CDATA[Change log]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Imports]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[TEI]]></category>
		<category><![CDATA[Version control]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4306</guid>

					<description><![CDATA[Once again a simple change log of the recent updates to museum-digital's different tools.]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">December 2024</h2>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li>Dates in <a href="https://de.wikipedia.org/wiki/Text_Encoding_Initiative">TEI</a> transcriptions are parsed, irrespective of whether <code>when=""</code> oder <code>when=''</code> was used</li>



<li>Notes for markings are now publicly displayed<br><em>This was missing thus far and is now implemented similar to how event notes are displayed. If a note exists, a small &#8220;[?]&#8221; appears behind the marking title line. Upon hovering over it, a tooltip appears with the relevant information.</em></li>
</ul>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/musdb/">musdb</a></h3>



<ul class="wp-block-list">
<li>Names and descriptions of exhibitions and object groups can now be translated</li>



<li><a href="https://blog.museum-digital.org/2025/01/13/version-control-batch-transfer-between-data-fields-of-object-records/">Version control</a></li>



<li>Log of “current locations&#8221; of an object can be exported as a CSV file</li>



<li>Uploaded object images can now be hidden or published in one batch operation</li>



<li><a href="https://de.handbook.museum-digital.info/musdb/API/index.html">API</a> extended
<ul class="wp-block-list">
<li>(New functions)</li>



<li>Transfer object dimensions</li>



<li>List images and resources for an object</li>



<li>Image metadata</li>



<li>Publish / hide object images</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">January 2025</h2>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/frontend/">Frontend</a></h3>



<ul class="wp-block-list">
<li><em>Objects can now be sorted by the aesthetics of the thumbnail</em> (A dedicated blog post on this will follow soon)</li>
</ul>



<h2 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/musdb/">musdb</a></h2>



<ul class="wp-block-list">
<li><a href="https://blog.museum-digital.org/de/2025/01/13/versionierung-transfer-zwischen-datenfeldern/">Batch transfer between between free text fields of object data</a></li>



<li>Alignment of the maximum field length for notes on opening hours is now consistent between UI and database</li>



<li>Bug fixed with switching between institutions during consistency checks fixed (relevant only to users with administrative access to multiple museums)</li>



<li>Literature can now be searched by editors</li>
</ul>



<h3 class="wp-block-heading"><a href="https://blog.museum-digital.org/de/category/technik-design/importer-de/">Importer</a></h3>



<ul class="wp-block-list">
<li>Core
<ul class="wp-block-list">
<li>Automatic transformation of life dates for actors
<ul class="wp-block-list">
<li>Year of death “01.01.2012” now becomes “2012”, instead of 01.01 as before</li>
</ul>
</li>



<li>&#8220;?&#8221; and &#8220;(?)&#8221; are removed from the beginning and end of imported keywords</li>



<li>Various types of brackets in keyword names are converted to regular brackets</li>
</ul>
</li>



<li>Parser
<ul class="wp-block-list">
<li>Stricter internal implementation of settings, all imports can now implement the <code>start_at</code> setting
<ul class="wp-block-list">
<li>This is particularly useful for the repeated execution of imports that abort due to new, previously uncovered elements and other debugging.</li>
</ul>
</li>



<li>New parsers:
<ul class="wp-block-list">
<li><a href="https://de.wikipedia.org/wiki/Metadata_Object_Description_Schema">MODS</a> (mainly used in library contexts)</li>



<li>Parser for Exports from Faust for the <a href="https://st.museum-digital.de/institution/87">Händel-Haus</a></li>



<li>Parser for XML dumps from MuseumPlus Classic (MsSQL > XML export per table > Import)</li>



<li>Bugfixes
<ul class="wp-block-list">
<li>Field “Verwender” in Primus parser was mapped to production events</li>



<li>Material / technology are now imported correctly in the parser for BeeCollect exports for the Industrial Museums of Saxony</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>



<li>„Frontend“
<ul class="wp-block-list">
<li>CLI now also has options for switching off the import of individual areas</li>



<li>Help text for command line tool</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading"><a href="https://de.about.museum-digital.org/software/nodac/">nodac</a></h3>



<ul class="wp-block-list">
<li>Splitting of keywords now also recognizes keywords that should be split into places, times, etc.
<ul class="wp-block-list">
<li>Bsp.: „Helm; Berlin“ > Schlagwort „Helm“ + Ort „Berlin“</li>



<li>Example: “helmet; Berlin” > keyword “helmet” + place “Berlin”</li>
</ul>
</li>



<li>When searching for keywords with ambiguous names, both keywords and generally ambiguous terms are now taken into account</li>



<li>Times can now be merged with others directly from the time edit page</li>
</ul>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2025/02/typing-2025-01.avif</url><width>600</width><height>336</height></post-thumbnail>	</item>
		<item>
		<title>Reconciliation APIs arrive to museum-digital</title>
		<link>https://blog.museum-digital.org/2024/07/03/reconciliation-apis-arrive-to-museum-digital/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Wed, 03 Jul 2024 01:36:15 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[md:term]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Data quality]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Reconciliation API]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=4164</guid>

					<description><![CDATA[Imagine you have a spreadsheet with potentially unclean data or data that is not confirmed to be interoperable. A museum may want to migrate their data to a different system or share it with an aggregator or a researcher may want to analyze data from different museums where each has their own thesaurus. To make <a href="https://blog.museum-digital.org/2024/07/03/reconciliation-apis-arrive-to-museum-digital/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Imagine you have a spreadsheet with potentially unclean data or data that is not confirmed to be interoperable. A museum may want to migrate their data to a different system or share it with an aggregator or a researcher may want to analyze data from different museums where each has their own thesaurus. To make the data legible to an external service or to understand that where one museum says &#8220;shoe&#8221; and another says &#8220;shoes&#8221; the exact same thing is meant, it makes sense to check the terms in question against larger (norm data) databases and add their ID for the entity in question. Thus, &#8220;shoe&#8221; and &#8220;shoes&#8221; become understandable as the same.</p>



<p>This process is called reconciliation. One of the most used tools to actually connect to external services and reconcile data this way is OpenRefine. But to do so, OpenRefine needs to be able to communicate with such services. The open standard by which they communicate is the <a href="https://www.w3.org/community/reports/reconciliation/CG-FINAL-specs-0.2-20230410/">Reconciliation API</a> specification. Depending on how completely the API has been implemented, the consuming software may offer additional features such as offering alternatives, suggesting entries or displaying previews of entries made available through the API.</p>



<p>Since this weekend, museum-digital offers such APIs for different types of data.</p>



<p>In md:term, reconciliation APIs were added for each of the available controlled vocabularies. Besides the controlled vocabularies of museum-digital (tags, actors, places, times) this means that users of OpenRefine can now reconcile their data with select other vocabularies such as the <em>Oberbegriffsdatei</em> or the <em>hessische Systematik</em>. Besides implementing exact and partial matching of requested terms, this implementation features previews.</p>



<p>Two additional points are noteworthy in terms of md:term&#8217;s implementation of the reconciliation API specification.</p>



<p>1) Similar to museum-digital&#8217;s import tool, md:term&#8217;s reconciliation service attempts to clean up entered terms before reconciling. As such times are automatically rewritten (&#8220;1912 bis 1914&#8221; [1912 through 1914] becomes &#8220;1912-1914&#8221;), question marks and other markers of uncertainty are removed, and &#8211; whereever known &#8211; autocorrections stored in the city (Frankfurt a.M. &gt; Frankfurt am Main) are applied to the terms.<br>2) Multilinguality: Whereas the current version of the regular reconciliation API does not consider multilinguality, the above-mentioned auto-corrections and rewriting are language-dependent. And so are previews and names of entities in md:term for museum-digital&#8217;s vocabularies. Hence, an additional parameter for the requested language can be supplied.</p>



<p>Reconciliation APIs for md:term may be found on the download page linked in the sidebar. Going this way, the language parameter is automatically set to the user&#8217;s current language.</p>



<h2 class="wp-block-heading">Reconciliation by Inventory Number</h2>



<p>To identify objects available published through museum-digital, a reconciliation API now exists in the frontend as well. It can be found at <code>/reconcile/invno/</code> on each instance of museum-digital (e.g. <a href="https://hessen.museum-digital.de/reconcile/invno/">here</a> for the Hessian instance.<br>It reconciles entries by their inventory number. An additional number may be added to the URL to search only within a single institution. Where <code>https://hessen.museum-digital.de/reconcile/invno/</code> allows matching objects by inventory numbers across all institutions publishing their objects on the Hessian instance of museum-digital, the <code>https://hessen.museum-digital.de/reconcile/invno/1</code> will thus only search within the collections of the Freies Deutsches Hochstift / Frankfurter Goethe-Museum (the institution of the ID 1).</p>



<h2 class="wp-block-heading">Reconciling GLAM data using the MD:term reconciliation API: an example</h2>



<p><em>As they have much more experience with OpenRefine, I asked the colleagues from digiS whether they could provide a description of how to actually use the reconciliation API from a user perspective. This section is theirs:</em></p>



<p>Using the reconciliation API in OpenRefine is straightforward (cf. the <a href="https://openrefine.org/docs/manual/reconciling">OpenRefine documentation</a> for a general introduction). Let’s walk through a typical workflow using GLAM data and the MD:term API!</p>



<p>Our sample dataset (adapted from <a href="https://berlin.museum-digital.de/collection/806">actual data provided by the Sportmuseum Berlin</a>) features, among others, columns on material/technique, object type and places.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="398" data-id="4166" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-01-Overview-1024x398.png" alt="" class="wp-image-4166" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-01-Overview-1024x398.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-01-Overview-300x116.png 300w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-01-Overview-1536x596.png 1536w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-01-Overview.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>These elements are just strings and consequently not linked to any authority file. Strings are not guaranteed to be unequivocal, nor are they particularly suitable for retrieval, programmatic reuse or multilingual contexts. In order for the data to be as useful as possible, let’s reconcile them with an authority file, in our case the MD:term vocabularies now readily accessible also via a reconciliation API.</p>



<p>If you have never used the MD:term reconciliation service you first have to add it to OpenRefine. Click on the small triangle in the header of the column you want to reconcile. Select <em>Reconcile → Start reconciling. </em></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="838" height="1024" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-02-Start-reconcile-838x1024.png" alt="" class="wp-image-4167" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-02-Start-reconcile-838x1024.png 838w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-02-Start-reconcile-245x300.png 245w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-02-Start-reconcile.png 903w" sizes="auto, (max-width: 838px) 100vw, 838px" /></figure>



<p>In the following window, add the API endpoint you want to use (cf. <a href="https://term.museum-digital.de/downloads">https://term.museum-digital.de/downloads</a> for a list of MD:term endpoints).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1004" height="306" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-03-add-service.png" alt="" class="wp-image-4168" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-03-add-service.png 1004w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-03-add-service-300x91.png 300w" sizes="auto, (max-width: 1004px) 100vw, 1004px" /></figure>



<p>Now you can select the service for reconciliation:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="928" height="473" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-04-Reconcile1.png" alt="" class="wp-image-4169" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-04-Reconcile1.png 928w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-04-Reconcile1-300x153.png 300w" sizes="auto, (max-width: 928px) 100vw, 928px" /></figure>



<p>In the following window, the only really important decision you have to take is whether or not to automatically match “candidates with high confidence”. Auto-matching speeds up the whole process, but you have less control over what happens with your data.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="671" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-05-Reconcile2-1024x671.png" alt="" class="wp-image-4170" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-05-Reconcile2-1024x671.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-05-Reconcile2-300x197.png 300w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-05-Reconcile2-1536x1006.png 1536w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-05-Reconcile2.png 1804w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Hit “Start reconciling” to trigger the reconciliation process. You can now see that the strings have become links. In fact, they have been linked to possible entries in MD:term. If you choose the auto-match option, the most probable candidates have been selected automatically. If not, you have to select the candidate you want to match manually by clicking the arrow to the left. One arrow matches the value in the selected row only, two arrow match all identical values in the entire columns automatically.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1022" height="626" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-06-Enriched.png" alt="" class="wp-image-4171" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-06-Enriched.png 1022w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-06-Enriched-300x184.png 300w" sizes="auto, (max-width: 1022px) 100vw, 1022px" /></figure>



<p>Once you’re done with the reconciliation you can, for example, write the IDs of the reconciled values into a new column. Click once again on the small triangle on the left side of the top row of the column you’re working on. Go to <em>Reconcile </em>and <em>Add entity identifiers column.</em></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="696" height="590" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-07-Add-identifier-column.png" alt="" class="wp-image-4172" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-07-Add-identifier-column.png 696w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-07-Add-identifier-column-300x254.png 300w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Name the column that is to be added and you will have a new column that contains the MD:term IDs.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="406" src="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-08-final-1024x406.png" alt="" class="wp-image-4173" srcset="https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-08-final-1024x406.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-08-final-300x119.png 300w, https://blog.museum-digital.org/wp-content/uploads/2024/07/OpenRefine-08-final.png 1362w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automatically enforcing consistent naming of places</title>
		<link>https://blog.museum-digital.org/2023/11/27/automatically-enforcing-consistent-naming-of-places/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Mon, 27 Nov 2023 14:10:12 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Autocorrection]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3978</guid>

					<description><![CDATA[Last week I wrote about how new actors find their way into museum-digital&#8217;s controlled vocabulary for actors during imports. One of the first steps detailed in the post is the automatic cleanup of the actor&#8217;s name and the application of some rules to ensure a consistent naming of actors. For time names a much more <a href="https://blog.museum-digital.org/2023/11/27/automatically-enforcing-consistent-naming-of-places/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Last week I wrote about how new actors find <a href="https://blog.museum-digital.org/2023/11/22/importing-actors/">their way into museum-digital&#8217;s controlled vocabulary for actors during imports</a>. One of the first steps detailed in the post is the automatic cleanup of the actor&#8217;s name and the application of some rules to ensure a consistent naming of actors.</p>



<p>For time names a much more extensive cleaning is done, both in the case of imports and when working directly in musdb. Time names in the sense of the controlled vocabulary of museum-digital describe clearly defined times. This may be timespans, years, or full dates. But the number of possible input values is thus already significantly limited. In fact, it is small enough, and timespans, years, etc. are uniform enough to allow the automatic parsing of time names. Where that is possible, they are automatically rewritten to their default form in the controlled vocabulary and automatically translated to some 30 languages.</p>



<p>In the case of place names a similar cleaning and consolidating of place names was limited to the simple stripping of leading and trailing spaces and commas and the removal of indicators for uncertainty (e.g. trailing question marks). Since the weekend, place names are more extensively rewritten to ease the work of the vocabulary editors and ensure a more immediately consistent data entry both in musdb and when importing.</p>



<h2 class="wp-block-heading">General rewriting</h2>



<h3 class="wp-block-heading">1. Simple spelling issues</h3>



<p>The very first step in rewriting entered place names remains the removal of superfluous characters. As such, duplicate white spaces, trailing commas, etc. are removed.</p>



<p><strong>Example</strong>: <code>, Berlin ,</code> &gt; <code>Berlin</code></p>



<h3 class="wp-block-heading">2. Removal of indicators for uncertainty</h3>



<p>Next, known indicators for uncertainty are used to update the dedicated flag describing the certainty of the link to the place and then stripped. As they indicate the relation between object and place, they are not actually part of the place name and can thus be removed safely.</p>



<p><strong>Example 1</strong>: <code>Berlin ?</code> &gt; <code>Berlin</code><br><strong>Example 2</strong>: <code>Maybe Budapest</code> &gt; <code>Budapest</code></p>



<h3 class="wp-block-heading">3. Removal of duplicates in enumerations</h3>



<p>Commas are used in input place names in two ways. On the one hand, they may be used to further specify a place name (<code>Beijing, PRC</code>), on the other, they are often used in import data to designate multiple space names at a time (<code>Beijing, Tokyo, Nairobi</code>; this contradicts the logic of a database altogether and needs to be cleaned up manually be the vocabulary editors).</p>



<p>In both cases, duplicate names in the enumeration are superfluous and can be removed.</p>



<p><strong>Example 1</strong>: <code>Berlin, Germany, Germany</code> &gt; <code>Berlin, Germany</code></p>



<h3 class="wp-block-heading">4. Language-dependent rewriting</h3>



<p>The next steps in rewriting entries depend on the language of the entry. In musdb, the language the user set to use musdb is used to guess the language they are entering data in. In the case of imports, the default language of the given instance of museum-digital that a museum imports to is used.</p>



<h4 class="wp-block-heading">4.1. Extension of common abbreviations</h4>



<p>Where there are abbreviations, there are also unabbreviated names. And surely, both will be used. Will inevitably leads to duplicate entries. In the case of some common abbreviations, they are thus automatically rewritten to a canonical form.</p>



<p><strong>Example (German)</strong>: <code>Adalberthstr. 12 (Berlin)</code> &gt; <code>Adalbertstraße 12 (Berlin)</code><br><strong>Example (Hungarian)</strong>: <code>Vaci u. 12 (Budapest)</code> &gt; <code>Vaci utca 12 (Budapest)</code></p>



<h4 class="wp-block-heading">4.2. Reordering names in commas based on indicators for more specific place names</h4>



<p>As stated above (3.), commas may either indicate a specification of a single place, or they may indicate that the entry actually refers to more than one place. Some components of a name can be used to almost certainly determine that the former is the case &#8211; and which place of the given list is the specific one and which one is a superordinate named mainly for clarification. Common such names are &#8220;street&#8221;, &#8220;plaza&#8221;, &#8220;pier&#8221;.</p>



<p>If there is exactly one comma and such a name component is encountered, the entered place name can be rewritten to contain the less specific name only in brackets.</p>



<p><strong>Example (German)</strong>: <code>Berlin, Adalberthstraße 12</code> &gt; <code>Adalbertstraße 12 (Berlin)</code><br><strong>Example (Hungarian)</strong>: <code>Vaci utca 12, Budapest</code> &gt; <code>Vaci utca 12 (Budapest)</code></p>



<p>If both names contain such an indicator, no rewriting is applied. <code>Vaci utca 12, Vaci utca 13</code>&#8216; is thus not rewritten.</p>



<h4 class="wp-block-heading">4.3. Budapest special: Extending the names of districts</h4>



<p>Street names in Budapest are usually referred to including the naming of the district. These districts are referred to in a number of ways. If they are referred to using roman numerals, this is automatically extended to the canonical form.<br>This rewrite is only applied if the language is set to Hungarian.</p>



<p><strong>Example</strong>: <code>Petőfi Sándor utca 3. Budapest, IV.</code> &gt; <code>Petőfi Sándor utca 3. (Budapest, 4. kerület)</code></p>



<h4 class="wp-block-heading">4.4. Reordering names in commas based on country names</h4>



<p>Similar to the rewrites described in 4.2., country names can be used to indicate a hierarchical relationship between two places in a comma-separated list. If one given name is a country name and the other is not, it is likely that the non-country name is part of the given country. The comma can be replaced with brackets while the name can be reordered into the preferred <code>specific (unspecific)</code> form.<br>This check is also applied to names separated by hyphens.</p>



<p><strong>Example (German)</strong>: <code>Budapest, Ungarn</code> &gt; <code>Budapest (Ungarn)</code><br><strong>Example (Hungarian)</strong>: <code>Berlin-Németország</code> &gt; <code>Berlin (Németország)</code></p>



<p>There are however some common cases in which this logic does not apply &#8211; significantly cardinal directions. If one such term is found to be the non-country part, the rewrite is not applied. As such <code>West-Deutschland</code> remains <code>West-Deutschland</code> without being rewritten.</p>



<p>The list of names of countries and historical countries used stems from Wikidata (thanks!).</p>



<h2 class="wp-block-heading">Where do these rewrites apply?</h2>



<p>The rewrites listed above are now implemented in musdb, the import tool, and nodac.</p>



<p>They have also been used to consolidate existing place names, allowing us to identify some 500 duplicate place entries over the weekend (that amounts to almost 0.7 percent of the whole vocabulary). Clearly, identifying similar cases of regularly appearing, varied ways to express the same thing, and determining a canonical way of naming places in such cases holds a lot of potential for reducing the editors workload and improving data quality for everybody.</p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Importing actors</title>
		<link>https://blog.museum-digital.org/2023/11/22/importing-actors/</link>
					<comments>https://blog.museum-digital.org/2023/11/22/importing-actors/#comments</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Wed, 22 Nov 2023 16:43:03 +0000</pubDate>
				<category><![CDATA[Importer]]></category>
		<category><![CDATA[nodac]]></category>
		<category><![CDATA[Autocorrection]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Imports]]></category>
		<category><![CDATA[Write-ups]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3922</guid>

					<description><![CDATA[A critical part of museum-digital is the usage of shared controlled vocabularies for actors, places, times, and tags. All museums using museum-digital use these same vocabularies for recording the creation of objects, their use, destruction, etc. Similarly, they are used for a rougher tagging of the objects. Only contacts who are recorded purely for internal <a href="https://blog.museum-digital.org/2023/11/22/importing-actors/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>A critical part of museum-digital is the usage of shared controlled vocabularies for actors, places, times, and tags. All museums using museum-digital use these same vocabularies for recording the creation of objects, their use, destruction, etc. Similarly, they are used for a rougher tagging of the objects. Only contacts who are recorded purely for internal purposes &#8211; like the current owners of objects &#8211; are kept in a separate, museum-specific address book.</p>



<p>On the one hand, using shared controlled vocabularies allows for a centralized editing team. Work that&#8217;s been done for one museum is available for all. This allows for a generally higher data quality, improved search options, etc. The only downside to centralized vocabularies is rules: Without everybody following a basic set of rules for the different vocabularies the vocabularies would surely be overcome by chaos quickly.</p>



<p>The two most basic rules are that 1) all entries need to be clearly identifiable and 2) actor names &#8211; from actual people to companies and governments to peoples &#8211; belong to the controlled vocabularies for actors; place names &#8211; cities, countries, streets &#8211; belong to the vocabulary for places, and so on. In effect, this means that an actor entry &#8220;Gaius Iulius Caesar&#8221; (better yet, &#8220;Gaius Iulius Caesar (-100&#8211;44)&#8221;) is a good one. It is clearly identifiable. An actor name &#8220;Bosch&#8221; should not end up in the controlled vocabularies &#8211; there are many people and companies sharing that name. If one means to actually record the German tool maker, one can specify as much using brackets and / or using the full name, e.g. &#8220;Robert Bosch GmbH&#8221; or &#8220;Bosch (tool making company)&#8221;.</p>



<p>musdb comes with selection lists enabling a simple reuse of existing vocabulary entries. Where a term or a name has not yet been recorded in museum-digital&#8217;s controlled vocabularies, the option to import vocabulary data from Wikipedia / Wikidata and the Gemeinsame Normdatei, and alternatively the need to add a description of at least ten characters enforce some level of identifiable and minimally researched entries.</p>



<p>And then there are imports. During imports, there is no way to force importing users to add additional data. To the contrary, especially during data migrations museums import data from different departments and different decades, leaving one with different spellings for the same person and a very varied quality of the recording overall. Importing thus often means bringing unclean, non-uniform data into the vocabularies. Often enough manual cleanup and enrichment are required to make the data usable &#8211; and to stop the &#8220;unclean&#8221; data from disturbing other users, e.g. by appearing in selection lists and then being falsely linked to another museums entries (a classic example are place entries like &#8220;Frankfurt&#8221;. Both Frankfurt an der Oder and Frankfurt am Main are significant places &#8211; how significant they are depends on where a museum may be located. Leaving the unidentifiable place (name) in the database will easily lead to other museums linking the same entry while actually referring to the <em>other</em> Frankfurt).</p>



<p>Automation can however significantly reduce the work of the colleagues manually editing the vocabularies while also allowing their efforts to have longer-lasting internal benefits to the system. The import tool thus features a number of checks to identify the entries actually referred to. Those checks relevant to the import of references to actors will be introduced over the rest of this blog post.</p>



<h2 class="wp-block-heading">Rough outline</h2>



<p>Actors from (or for) the controlled vocabularies usually enter museum-digital by being linked to objects via events. The same usually happens in the case of imports: The import data states that an object was, e.g., created by a given person. This translates to a new event (what happened to the object? And who did it when and where?) being created. The actor of this event is then set based on the provided name, optionally taking into accounts life dates and links to norm data repositories, in so far as they are made available in the import data.</p>



<h3 class="wp-block-heading">Preparation</h3>



<h4 class="wp-block-heading">Cleaning the name</h4>



<p>To identify the actor name, it is first cleaned and made slightly more uniform on a simple level of spelling.</p>



<ul class="wp-block-list">
<li>Leading and trailing spaces, semi colons, tab stops and newlines are removed</li>



<li>Duplicate white spaces are removed</li>



<li>Brackets of the different types (&#8220;()&#8221;, &#8220;{}&#8221;, &#8220;[]&#8221;) are replaced with simple brackets (&#8220;()&#8221;)</li>



<li>Unwanted components / specifiers of a name are removed (e.g. &#8220;mythological creature&#8221; or empty brackets)</li>



<li>Language-specific name components are replaced with their preferred variants in the vocabularies (German: &#8220;d.Ä.&#8221; is extended to &#8220;(der Ältere)&#8221; [the Elder])</li>



<li>Indicators for uncertainty are stripped from the name, e.g. trailing question marks. They are separately used to identify the certainty of an actor link in a dedicated fields that describes exactly that.</li>
</ul>



<p>Thus, a name stated in the import data as &#8220;; Hans Holbein d.Ä.?&#8221; will be imported as &#8220;Hans Holbein (der Ältere)&#8221;.</p>



<h4 class="wp-block-heading">Parsing life dates from the input name</h4>



<p>If no life dates have been provided explicitly in the import data, they may still be included as part of the actor name. Some museums whose database does not feature dedicated fields for an actor&#8217;s date of birth and death will append the years in brackets. Hence, a check is done to see if there are any brackets at the end of the name &#8211; and if so, whether the bracket contains a parsable time span. In this case, the time span identified will be used for the actor&#8217;s life dates and the brackets&#8217; content will removed from the name (it is not actually a part of the actor&#8217;s name after all).</p>



<p>&#8220;Hans Holbein (der Ältere) (1465-1524)&#8221; with no explicitly provided years of birth and death will thus be transformed to &#8220;Hans Holbein (der Ältere)&#8221;, born 1465 and dead since 1524.</p>



<h3 class="wp-block-heading">Identifying the actor</h3>



<p>After preparing the inputted actor data, it is checked against the database in various ways. The listed checks below take place in a chronological order. If one returns a positive result and works to identify the actor, no following checks are run.</p>



<h4 class="wp-block-heading">Checking based on norm data links</h4>



<p>If links to external norm data repositories (the Library of Congress authority files, the National Diet Library, the French National Library, etc.) are provided in the import data, the actor vocabulary at museum-digital is checked whether it contains an entry featuring the same external ID. If that is the case, this actor is doubtlessly identified.</p>



<h4 class="wp-block-heading">Checking global rewrites</h4>



<p>For many names, there are different spellings. Similarly, many people use different names over the course of their lives. But the person referred to stays the same.</p>



<p>As not all names are significant enough to be listed as synonyms in their own right, museum-digital features a global (though language-specific) list of &#8220;permanent rewrites&#8221;. If a museum exported a reference to a &#8220;Julius Caesar&#8221;, this will be automatically rewritten to &#8220;Gaius Iulius Caesar&#8221;, thus identifying the person of the same name.</p>



<p>This central list is built and extended as the vocabulary editors do their work. Whenever two actor entries are merged in <a href="https://en.about.museum-digital.org/software/nodac/">nodac</a>, editors have the option to mark the name of the actor being merged into the other as to be permanently rewritten.</p>



<h4 class="wp-block-heading">Checking institution-level rewrites</h4>



<p>Whenever a new actor entry is added through musdb or by the way of imports, this is marked down in the database. <em>Which museum</em> used <em>what term</em>, resulting in <em>which entry</em>. <em>Which entry</em> may in the future be updated to refer to another. This is most simply explained using an example from the realm of places &#8211; the above-used example of &#8220;Frankfurt&#8221;:</p>



<p>If a museum newly brings &#8220;Frankfurt&#8221; to the controlled vocabulary for places, an additional entry is made in the database to note that the museum was the first to add an entry named &#8220;Frankfurt&#8221;, and that that finally resulted in the creation of a new place with the ID #99999. The object data itself makes it clear that the museum actually referred to &#8220;Frankfurt am Main&#8221; (ID: #217). If the vocabulary editors thus merge &#8220;Frankfurt&#8221; (#99999) with &#8220;Frankfurt am Main&#8221; (#217), this obviously cannot be a permanent rewrite. But the museum-specific log can be updated: The museum entered &#8220;Frankfurt&#8221;, and it referred to the entry #217 (Frankfurt am Main). If the museum thus enters &#8220;Frankfurt&#8221; without any further specification in the future, the importer and musdb can automatically identify Frankfurt am Main as the place actually referred to. The same logic applies to the import of actor data.</p>



<p>This check is obviously based on the assumption of some level of uniformity between different workers at the same museum. If a museum in Frankfurt an der Oder has almost all of their employees referring to Frankfurt an der Oder as the <em>canonical</em> &#8220;Frankfurt&#8221;, except for one, this will obviously backfire. But it is to be hoped that this case is rare enough &#8211; and that such a very different colleague would recognize their own non-conformity and choose to use the full names for both places to be able to clearly document (and communicate overall) with their colleagues.</p>



<h4 class="wp-block-heading">Checking by name and life dates</h4>



<p>If all the above checks did not work, the actor&#8217;s name and life dates are checked against the controlled vocabulary for actors itself. Does anybody with the same name, who was born and died at the provided years, exist in the actor vocabulary (either going by the language-specific translation of the name or by the &#8220;base entry&#8221; of an any language).</p>



<p>If that is not the case, the actor likely does not exist in the database yet.</p>



<h3 class="wp-block-heading">Identification failed. Should a new entry be created?</h3>



<p>If the actor does not exist in the database yet, they need to be added. Maybe.</p>



<p>Some names are known to be in clear conflict with the rules of the vocabulary for actors.</p>



<h4 class="wp-block-heading">Checking the blacklist</h4>



<p>museum-digital keeps a centralized blacklist for actor names that are known to be in clear conflict to the rules of the actor vocabulary. This list mainly contains either deliberately unspecific actor names (&#8220;unknown&#8221;; &#8220;unidentified&#8221;) or very unspecific ones (&#8220;John&#8221; [a random given name without a family name], &#8220;painter&#8221; [the name of a profession, not even of the actor themselves]).</p>



<p>If the entered actor name is contained in this blacklist, the attempt to link any actor to the event is aborted. The free-text note about the event is instead extended to mark that an actor of the blacklisted name was noted to be related to the event.</p>



<h4 class="wp-block-heading">Checking if the actor is actually a place, time, or tag</h4>



<p>A classic problem is vocabulary entries being entered in an unsuitable vocabulary &#8211; often for simple reasons likely colleagues slipping to a wrong column when working with a table calculation program. And thus one is asked to import an actor &#8220;14th century&#8221;.</p>



<p>The &#8220;14th century&#8221; is obviously a time, not an actor. For this, too, there is a centralized list that can be extended using nodac. Whenever the vocabulary editors move an entry from one vocabulary to another, they have the option to mark the entry&#8217;s name as always being of the target type.</p>



<p>Say the 14th century was previously entered as a tag. A vocabulary editor moved the entry to the vocabulary for times and marked the string &#8220;14th century&#8221; as one always referring to a time. If one then attempts to link a new actor &#8220;14th century&#8221;, the import tool can automatically recognize that this name actually refers to a time and link a time instead of an actor to the event. The attempt to add an actor is thus redirected to a different category.</p>



<h3 class="wp-block-heading">All else failed: The actor is being added</h3>



<p>If all the above checks did neither result in identifying a pre-existing record, nor in identifying the input name as invalid in one way or another, the actor is added to the controlled vocabularies and linked to the event. The entry now needs to be cleaned and enriched manually by the vocabulary editors.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2023/11/22/importing-actors/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Categorizing an object&#8217;s tags</title>
		<link>https://blog.museum-digital.org/2023/05/11/categorizing-an-objects-tags/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Thu, 11 May 2023 14:45:14 +0000</pubDate>
				<category><![CDATA[Importer]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[New Features]]></category>
		<category><![CDATA[Object editing (musdb)]]></category>
		<category><![CDATA[Object selection (musdb)]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=3733</guid>

					<description><![CDATA[… or &#8220;musdb finally supports materials, techniques, etc. from controlled vocabularies&#8221;. At museum-digital, there are four main centrally controlled vocabularies &#8211; actors, places, times, and tags. In more traditional collection management software however, the main field to control is usually the object type (is the object a helmet or a painting?). Simple tagging of the <a href="https://blog.museum-digital.org/2023/05/11/categorizing-an-objects-tags/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>… or &#8220;musdb finally supports materials, techniques, etc. from controlled vocabularies&#8221;.</p>



<p>At museum-digital, there are four main centrally controlled vocabularies &#8211; actors, places, times, and tags. In more traditional collection management software however, the main field to control is usually the object type (is the object a helmet or a painting?). Simple tagging of the objects can serve as a rather good replacement for a controlled set of object types if one simply repeats the object type as a tag.</p>



<p>As long as one only uses simple tagging, it can however do so only to some extend. If the object is a painting that displays a hammer, the object would feature the tags &#8220;painting&#8221; and &#8220;hammer&#8221;. If the object is a hammer with an engraving of a painting, it would feature the very same tags. Take the first example: If one wanted to be able to express that &#8220;painting&#8221; is the object type and &#8220;hammer&#8221; is something displayed on the object, one would either need to skip using tags again and use the dedicated fields again &#8211; or one needs to be able to categorize tags.</p>



<p>We doubled down on tagging by implementing a categorization mechanism for object tags while streamlining the tagging process in musdb and making it faster and easier to use overall.</p>



<h2 class="wp-block-heading">The new tagging overlay</h2>



<p>When clicking the usual link for linking (new) tags with an object in musdb, one will now be presented with an overlay that replaces the previous page of the same functionality. The layout is rather similar to the previous page &#8211; new tags and simple links to actors, places, and times are usually be entered using input fields on the left of the overlay. By typing in the relevant input field, a drop-down list appears, from which entries to be linked can be selected. A new tag, actor, place or time entry can be entered by pressing the &#8220;enter&#8221; key after typing the name. A sidebar on the right of the overlay allows the simple repetition of the last 10 tags, actors, places, or times the user linked to objects.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="426" src="https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-old-page-1024x426.webp" alt="" class="wp-image-3737" srcset="https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-old-page-1024x426.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-old-page-300x125.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-old-page-1536x638.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-old-page.webp 1800w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">The old object tagging interface in musdb</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="656" src="https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-new-overlay-1024x656.webp" alt="" class="wp-image-3736" srcset="https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-new-overlay-1024x656.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-new-overlay-300x192.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-new-overlay-1536x984.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-new-overlay.webp 1800w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">The new object tagging overlay.</figcaption></figure>



<p>The differences between the old page and the new overlay play out on two levels. First, there is the simple fact of the new implementation moving a lot of the logic to the client side, i.e. your browser. If one only selects entries from the drop-down menus, this means that all communication with the server runs in the background. Page reloads are thus only necessary when one enters a new, thus far unknown, tags etc. As the overlay does not close after linking a tag, multiple pre-existing tags can be linked quickly one after the other. In effect, this amounts to a much smoother experience in tagging objects than before.</p>



<p>On the other hand, the overlay unites the existing tagging-related functionalities in one. To do so, the currently linked tags, actors, places, and times are displayed in the overlay as small tiles and can be deleted from there using the trash can icon. Tiles for tags feature an additional select field for categorizing the relationship between object and tag. By default, the relationship is set to the generic &#8220;tag&#8221;. Alternative categorization options are currently:</p>



<ul class="wp-block-list">
<li>Object type</li>



<li>Material</li>



<li>Technique</li>



<li>Display subject</li>
</ul>



<p>By categorizing the tags in the appropriate way, one keeps all the advantages the controlled vocabulary for tags brings &#8211; multilinguality, links to norm data repositories, and findability using hierarchichal searches, while now being specific about the relationship.</p>



<p>Additionally, another icon (the arrow downwards in a hexagon) offers narrowing down the tag to a more specific version. If an object has for example been tagged as a &#8220;portrait&#8221;, pressing on the icon will open a sidebar suggesting to replace that tag with &#8220;self-portrait&#8221;.</p>



<h2 class="wp-block-heading">Effects on search</h2>



<p>Of course, categorizing the links helps little without the relevant search options. Hence, we added five new search fields in the extended search menu: Tags (object type), tags (material), etc.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="653" src="https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-search-1024x653.webp" alt="" class="wp-image-3738" srcset="https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-search-1024x653.webp 1024w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-search-300x191.webp 300w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-search-1536x979.webp 1536w, https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-search.webp 1800w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Screenshot: Searching by tag categorization.</figcaption></figure>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2023/05/20230511_Screenshot-tag-categories-tag-categorization-tab.webp</url><width>600</width><height>394</height></post-thumbnail>	</item>
		<item>
		<title>&#8220;Smarter&#8221; Entry of Links to Vocabularies in musdb</title>
		<link>https://blog.museum-digital.org/2020/09/21/smarter-entry-of-links-to-vocabularies-in-musdb/</link>
					<comments>https://blog.museum-digital.org/2020/09/21/smarter-entry-of-links-to-vocabularies-in-musdb/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Mon, 21 Sep 2020 12:17:42 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Terminology]]></category>
		<category><![CDATA[Translations]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Object selection (musdb)]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=1216</guid>

					<description><![CDATA[Many imports of data confront us with Places like &#8220;Berlin ?&#8221; and times like &#8220;ca. 1328&#8221; konfrontiert. The import tool of museum-digital has been able to handle such entries for quite a time: &#8220;Berlin ?&#8221; is recognized to mean that the place is actually &#8220;Berlin&#8221;, but that the entry is not made with complete certainty. <a href="https://blog.museum-digital.org/2020/09/21/smarter-entry-of-links-to-vocabularies-in-musdb/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Many imports of data confront us with Places like &#8220;Berlin ?&#8221; and times like &#8220;ca. 1328&#8221; konfrontiert. The import tool of museum-digital has been able to handle such entries for quite a time: &#8220;Berlin ?&#8221; is recognized to mean that the place is actually &#8220;Berlin&#8221;, but that the entry is not made with complete certainty.</p>



<p>In a similar fashion, the vocabulary control tool of museum-digital, <a href="https://en.about.museum-digital.org/software/term_nodac">nodac</a>, has been able to parse and normalize time names for some times. While the canonical formulation of e.g. a single day is the German date format DD.MM.YYYY, similar times like &#8220;15. Januar 1920&#8221; (German) or &#8220;1920. január 15&#8221; (Hungarian) are entered often. These would have been transformed into 15.01.1920 upon the push of a button and then translated to many languages upon the push of another.</p>



<p>In line with some larger imports, we have now improved these and moved them into a dedicated module, that are now also used in the general input tool, <a href="https://en.about.museum-digital.org/software/musdb">musdb</a>.</p>



<h2 class="wp-block-heading">Recognizing Uncertainty and Normalizing Times in musdb</h2>



<p>musdb can thus recognize uncertainty based on a given list of indicators of uncertainty. In the case of times, these are e.g. &#8220;um  &#8221; (&#8220;about&#8221; in German), &#8220;wohl um &#8221; (&#8220;likely about&#8221;), &#8220;circa &#8220;, &#8220;ca. &#8221; oder &#8220;ca &#8221; in the beginning of an entered time term and  &#8220;(?)&#8221; oder &#8220;?&#8221; at its end. If one of these indicators is present, the time name is freed of the indicator and the entry is saved as uncertain. The same works with links between events and actors and places.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="387" height="261" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Orte-1.png" alt="" class="wp-image-1206" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Orte-1.png 387w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Orte-1-300x202.png 300w" sizes="auto, (max-width: 387px) 100vw, 387px" /><figcaption>Entering a place with an indicator of uncertainty &#8230;</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="933" height="540" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Orte-2.png" alt="" class="wp-image-1207" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Orte-2.png 933w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Orte-2-300x174.png 300w" sizes="auto, (max-width: 933px) 100vw, 933px" /><figcaption>&#8230; the indicator is stripped off the entry and translated into uncertainty of the reference.</figcaption></figure>



<p>In a similar fashion, many entered times can be automatically normalized and cleaned. Thus far, entries in German and Hungarian for single days and months (15. January 1920 and January 1920) can thus be automatically parsed and cleaned.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="376" height="231" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Zeiten1.png" alt="" class="wp-image-1208" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Zeiten1.png 376w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Zeiten1-300x184.png 300w" sizes="auto, (max-width: 376px) 100vw, 376px" /><figcaption>Entering a normalizable and uncertain time &#8230;.</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="922" height="477" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Zeiten2.png" alt="" class="wp-image-1209" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Zeiten2.png 922w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Ungewisse-Zeiten2-300x155.png 300w" sizes="auto, (max-width: 922px) 100vw, 922px" /><figcaption>&#8230; results in a normalized entry. The reference to the event is stored as uncertain.</figcaption></figure>



<p>Together with normalizing the time term, the entries can in many cases be automatically translated. This is especially important for times before 1000 CE, where an indication of whether they are BCE or CE is often necessary for a quick understanding. This is thus far implemented for time spans before 1000 CE: &#8220;312 &#8211; 315&#8221; is automatically translated to &#8220;312-315 n. Chr&#8221; in German, &#8220;312-315 CE&#8221; in English and &#8220;西暦312年から315年&#8221; in Japanese.</p>



<h2 class="wp-block-heading">Batch Publishing or Hiding by Object Selection</h2>



<p>A small improvement on a sidenote, we have now added batch publishing and hiding of objects to the options available through the object selection tool in musdb. To use it, the objects to be manipulated can be selected by first dragging one with the mouse and then clicking on the others. Finally, the respective menu option at the top of the page (red in the screenshot can be pressed).</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="631" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Stapelveroeffentlichung-1024x631.png" alt="" class="wp-image-1212" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Stapelveroeffentlichung-1024x631.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Stapelveroeffentlichung-300x185.png 300w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Stapelveroeffentlichung.png 1494w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Menu options for batch hiding or publishing can be found at the top right (in red borders).</figcaption></figure>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2020/09/21/smarter-entry-of-links-to-vocabularies-in-musdb/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>More Stability and Some New Features</title>
		<link>https://blog.museum-digital.org/2020/09/15/more-stability-and-some-new-features/</link>
					<comments>https://blog.museum-digital.org/2020/09/15/more-stability-and-some-new-features/#respond</comments>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Tue, 15 Sep 2020 10:25:10 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[musdb]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Minor Improvements]]></category>
		<category><![CDATA[New Features]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=1195</guid>

					<description><![CDATA[Over the last months, we have not been inactive in further developing museum-digital. We mainly worked to improve the legibility of our code under the hood &#8211; say, most changes will hopefully not be noticeable, but an improved speed of especially searches for objects may be a positive and visible effect. Either way, we have <a href="https://blog.museum-digital.org/2020/09/15/more-stability-and-some-new-features/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Over the last months, we have not been inactive in further developing museum-digital. We mainly worked to improve the legibility of our code under the hood &#8211; say, most changes will hopefully not be noticeable, but an improved speed of especially searches for objects may be a positive and visible effect.</p>



<p>Either way, we have also worked on some new features:  A dedicated area for markings (stamps, watermarks, etc.), one for references and reception (e.g. the publication history of an object), and entering uniform information for the field &#8220;object type&#8221; has gotten easier. Most importantly, we have added some new event types to better meet the requirements of provenance research.</p>



<h2 class="wp-block-heading">Markings</h2>



<p>Especially for art historians, a precise recording of information on different types of markings, that have been added to an object for indicating authorship and ownership are essential. Be it stamps, watermarks, signatures. Thus far, information on these could only be added using the unspecific field &#8220;Inscription&#8221; in museum-digital. The new &#8220;markings&#8221; area (to be found at the bottom of the tab &#8220;Addendum&#8221; in musdb) aims to tackle this problem. The term &#8220;markings&#8221; is deliberately chosen to be wide in meaning to also emcompass logos and other types of markings that are more relevant for e.g. technical collections.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1009" height="784" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Marking-Ausgefuellt-EN.png" alt="" class="wp-image-1196" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Marking-Ausgefuellt-EN.png 1009w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Marking-Ausgefuellt-EN-300x233.png 300w" sizes="auto, (max-width: 1009px) 100vw, 1009px" /><figcaption>Markings in musdb can be found at the bottom of the &#8220;addendum&#8221; tab.</figcaption></figure>



<p>If a user of musdb wants to add a new marking, they can scroll down to the bottom of the &#8220;Addendum&#8221; tab and find an accordion button. A click on this button toggles open the area for adding new markings. First, the tye of the marking and its position on the object need to be selected. A transcription must also be provided to safe. Additional information to add are the creator, a possible mentioned time on the marking, its size and a note.</p>



<p>Creators and times are drawn from the centralized controlled vocabularies for actors and times respectively. Hence, they can be entered by tiping the given term and then selecting the correct value from a drop down menu appearing as one types. If the term does not exist yet, it can be added by clicking on the &#8220;+&#8221; symbol right before the text field.</p>



<p>Once a marking has been entered, it is public for now, even though we consider adding an option to hide markings even when their object is public.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Markings-Frontend-1024x576.png" alt="" class="wp-image-1181" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Markings-Frontend-1024x576.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Markings-Frontend-300x169.png 300w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Markings-Frontend-1536x864.png 1536w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Markings-Frontend.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Markings in the frontend of museum-digital (at the top left of the screenshot).</figcaption></figure>



<h2 class="wp-block-heading">Reception and References</h2>



<p>With &#8220;reception&#8221;, there is a whole new tab in musdb for linking objects with sources. These sources come from a new controlled vocabulary for sources, which is used together by all institutions and runs on a similar level as actors, times, places, and tags. Reception now describes all instances, in which an object is referenced in a source &#8211; e.g. if a painting was printed in a book, or a photo published in a newspaper. Similarly, the discussion of a custom-made car in a car magazine may be recorded here.</p>



<p>The counterpoint to this is the &#8220;is reference&#8221; area just below reception: This can be used, if the object itself references a publication. E.g., a painting may be drawn after a scene from a book.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="593" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-EN-1024x593.png" alt="" class="wp-image-1198" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-EN-1024x593.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-EN-300x174.png 300w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-EN-1536x889.png 1536w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-EN.png 1586w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Reception and references in musdb</figcaption></figure>



<p>Like markings, reception and references are by default public.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="521" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-Reference-Frontend-EN-1-1024x521.png" alt="" class="wp-image-1199" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-Reference-Frontend-EN-1-1024x521.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-Reference-Frontend-EN-1-300x153.png 300w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Reception-Reference-Frontend-EN-1.png 1424w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>References and reception are shown at the bottom of object pages. A click on a source name opens the source page, where one can find all objects referencing the given source.</figcaption></figure>



<h2 class="wp-block-heading">Object Types From a List</h2>



<p>museum-digital traditonally treats object types as a free text field, while many &#8211; if not most &#8211; museum databases provide controlled lists of available object types. We use keywords / tags to provide the same functionality, but it surely makes sense to also have some level of uniformity in the field &#8220;object type&#8221;.</p>



<p>Hence, there is a new aid in adding uniform object types when adding a new object in musdb. As one types in the field, a drop-down list of similarly-phrased keywords appears. Clicking on an entry from that list enters its value into the &#8220;object type&#8221; field and (if one is adding a new object) automatically links the object with the selected tag.</p>



<h2 class="wp-block-heading">JSON-LD Metadata for Image Licenses</h2>



<p>Another minor improvement is that single image pages now feature JSON-LD markup describing the respective image license. This enables especially Google, to provide users with a more detailed view on how to attain the license to use a given image file.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Google-Licensable-Images-1024x576.png" alt="" class="wp-image-1187" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Google-Licensable-Images-1024x576.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Google-Licensable-Images-300x169.png 300w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Google-Licensable-Images-1536x864.png 1536w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Google-Licensable-Images.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption>Google Images shows a small &#8220;Licennsable&#8221; marker at the left of an image. Clicking on it shows more information on the image license at the right.</figcaption></figure>



<p>Importantly, images from museum-digital now also appear in Google Images if one opts to only view Creative Commons-licensed works.</p>



<h2 class="wp-block-heading">Events: New Event Types and References for Events</h2>



<p>The probably most important change are the changes made for entering events in museum-digital. One the one hand, important missing event types have been added. These are:</p>



<ul class="wp-block-list"><li>Assembled (to be used for objects, that have been assembled from parts. E.g. a car)</li><li>Auctioned</li><li>Bought</li><li>Owned</li><li>Sold</li><li>Restorated</li><li>Damaged</li><li>Destroyed</li><li>Lost</li><li>Edited (for books and publications, that have an editor)</li></ul>



<p>As can be seen from the list, most of the new event types are related to provenances (for all museums that want to use these event types: Please (!!) ensure that you have cleared the necessary rights to publish this information, as events are public). To make events at museum-digital more closely meet the requirements of provenance researchers, a missing piece were also sources for events, which can now also be added.</p>



<p>To do so, the addition of sources for events must first be activated on a museum-level. To do so, a museum director or user with similar permissions must first navigate to the &#8220;institution-wide settings&#8221; page in musdb, and activate the event sources there.</p>



<p>Once they are activated, an accordion button appears on event editing pages (accessible by clicking on the event type of an already added event). Here, sources can be linked using a drop-down menu similar to the ones used in the features described above.</p>



<p>Finally, with options to add event annotations and sources, there was an increased danger of cluttering the object page in the frontend of museum-digital. Hence, we redesigned the display of event annotations to now appear in a tooltip &#8211; if an event has an annotation or a source, an &#8220;i&#8221;-symbol appears next to the respective element for the event type. Hovering over that element makes sources and annotations visible.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="370" src="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Sources-Event-Notes-1-1024x370.png" alt="" class="wp-image-1201" srcset="https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Sources-Event-Notes-1-1024x370.png 1024w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Sources-Event-Notes-1-300x108.png 300w, https://blog.museum-digital.org/wp-content/uploads/2020/09/Screenshot-Sources-Event-Notes-1.png 1149w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><em>Beitragsbild: <a href="https://brandenburg.museum-digital.de/object/11898">Caravaggio: „Der ungläubige Thomas“ (CC BY-NC-SA @ Stiftung Preußische Schlösser und Gärten Berlin-Brandenburg / Murza, Gerhard)</a></em></p>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.museum-digital.org/2020/09/15/more-stability-and-some-new-features/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2020/09/caravaggio-michelangelo-merisi-da-der-unglaeubige-thomas-um-1601-gk-i-5438-11898-scaled.jpg</url><width>600</width><height>448</height></post-thumbnail>	</item>
		<item>
		<title>Multilinguality in md:term</title>
		<link>https://blog.museum-digital.org/2020/02/02/multilinguality-in-mdterm/</link>
		
		<dc:creator><![CDATA[Joshua Ramon Enslin]]></dc:creator>
		<pubDate>Sun, 02 Feb 2020 13:16:55 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[md:term]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Controlled Vocabularies]]></category>
		<category><![CDATA[Multilinguality]]></category>
		<guid isPermaLink="false">https://blog.museum-digital.org/?p=731</guid>

					<description><![CDATA[Since last weekend, the last publicly accessible page of museum-digital has been made fully multilingual: md:term. md:term is the central public frontend for our controlled vocabularies of actors, places, tags, and time terms. The probably most important part of md:term is its API, which is also &#8211; for example &#8211; used by the &#8220;graph navigation&#8221; <a href="https://blog.museum-digital.org/2020/02/02/multilinguality-in-mdterm/" class="more-link">...</a>]]></description>
										<content:encoded><![CDATA[
<p>Since last weekend, the last publicly accessible page of museum-digital has been made fully multilingual:  <a href="https://de.about.museum-digital.org/software/term_nodac">md:term</a>. md:term is the central public frontend for our controlled vocabularies of actors, places, tags, and time terms.</p>



<p>The probably most important part of md:term is its API, which is also &#8211; for example &#8211; used by the <a href="https://blog.museum-digital.org/de/2019/05/09/die-graphennavigation-netzwerke-und-verbindungen-in-museum-digital-erkennen/">&#8220;graph navigation&#8221;</a> and is available for external use as well. Since we &#8211; like anywhere else &#8211; do not require authentication for accessing the md:term API, we don&#8217;t have a full list of API consumers which we could contact about API changes. Hence, we hope that this blog post will also alert them to make necessary changes.</p>



<span id="more-731"></span>



<p>How then, is md:term made multilingual? And how does it express itself in md:term?</p>



<p>Months ago, we implemented the multilinguality in our controlled vocabularies by adding an additional translation table, which means that there is the base entry, which is entered by the museums. The &#8220;norm data editors&#8221; then enrich the data and also attempt to add translations to a separate table by fetching data from <a href="https://www.wikidata.org/">Wikidata</a>. If translations in the user&#8217;s language are available, they replace the &#8220;base entry&#8221; when outputting the data.</p>



<p>In the API, the base entries are replaced as well. If they are used, it hence makes sense to explicitly state the wanted language of the entry. To fetch German language information on Berlin easily, one should thus query  <code><a href="https://term.museum-digital.de/md-de/place/61/json?lang=de">https://term.museum-digital.de/md-de/place/61/json?lang=de</a></code> instead of <code><a href="https://term.museum-digital.de/md-de/place/61/json">https://term.museum-digital.de/md-de/place/61/json</a></code> (which, before multilinguality, would have been the appropriate URL).</p>



<p>Alternatively, there is a new section in the JSON API: <code>langs</code>. All available translations can be found there listed by language.</p>



<div class="wp-block-cgb-cc-by message-body" style="background-color:white;color:black"><img loading="lazy" decoding="async" src="https://blog.museum-digital.org/wp-content/plugins/creative-commons/includes/images/by.png" alt="CC" width="88" height="31"/><p><span class="cc-cgb-name">This content</span> is licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International license.</a> <span class="cc-cgb-text"></span></p></div>
]]></content:encoded>
					
		
		
		<post-thumbnail><url>https://blog.museum-digital.org/wp-content/uploads/2020/02/Screenshot-md-term-Multilinguality-2020-02-1.png</url><width>600</width><height>401</height></post-thumbnail>	</item>
	</channel>
</rss>
