4 minute read.

The Second Wave


thammond – 2007 September 11

In Metadata

You might have been wondering why I’ve been banging on about XMP here. Why the emphasis on one vendor technology on a blog focussed on an industry linking solution? Well, this post is an attempt to answer that.

Four years ago we at Nature Publishing Group, along with a select few early adopters, started up our RSS news feeds. We chose to use RSS 1.0 as the platform of choice which allowed us to embed a rich metadata term set using multiple schemas - especially Dublin Core and PRISM. We evangelized this much at the time and published documents on (Jul. ’03) and in D-Lib Magazine (Dec. ’04) as well as speaking about this at various meetings and blogging about it. Since that time many more publishers have come on board and now provide RSS routinely, many of them choosing to enrich their feeds with metadata.

Well, RSS can be seen in hindsight as being the First Wave of projecting a web presence beyond the content platform using standard markup formats. With this embedded metadata a publisher can expand their web footprint and allow users to link back to their content server.

Now, XMP with its potential for embedding metadata in rich media can be seen as a Second Wave. Media assets distributed over the network can now carry along their own metadata and identity which can be leveraged by third-party applications to provide interesting new functionalities and link-back capability. Again a projection of web presence.


XMP has much in common with RSS 1.0. They are both profiles of RDF/XML. They are both flawed in certain respects because of self-imposed limitations. But they both build on a robust and open data model for the web (RDF) and are reasonably open, at least they are extensible. One (RSS 1.0) was defined in an open process by committee, the other is an open (i.e published) specification provided by a vendor.

From our point of view both specifications are sufficiently advanced to be immediately useful. I’m not sure how one could interact with the further development of either specification. RSS 1.0 is essentially frozen with Atom being posed as a successor technology, although Atom does not conform to the RDF model. (The upshot is that an RSS 1.0 feed can be consumed completely by an RDF-aware application, while an Atom feed would need to be pre-processed before any RDF “goodness” could be gleaned from it.) By contrast, XMP is a vendor-defined technology and alive, if not perhaps kicking. I am unaware of any process to formally contribute to the XMP development apart from shouting from the terraces. None the less, both technologies are usable as is.

It is curious that no consistent packaging (and delivery) of metadata has yet been achieved with HTML, the original web interface. The HTML </tt> and <tt><meta></tt> elements are employed by publishers with various degrees of consistency. There are also RDF islands that can be embedded within HTML comments (as used e.g. by <a href="" target="_blank">CC licenses</a>). And then there are <a href="" target="_blank">COinS</a> objects. But it’s all a bit of a mish-mash to date. Certainly, I don’t recall seeing any guidelines from Crossref as to how machine readable metadata (even markup for the DOI itself) may be embedded within HTML pages, rather than on HTML pages for human readers.</p> <p>This lack of uniform metadata deployment for HTML pages could be something to do with context. With RSS and XMP we are dealing with remote objects, whereas with HTML we are generally accessing this directly on the content server and so have a semantic context. It could be though that metadata delivery from HTML pages will finally be more uniformly available with the further development of standards such as <a href="" target="_blank">microformats</a> and especially <a href="" target="_blank">RDFa</a>, <a href="" target="_blank">GRDDL</a>, etc. It is also interesting to note that an XMP packet could just as easily be embedded within the HTML page, and if this technology were to be adopted more widely for embedding in other media assets then why not consider the same technology for ordinary web pages?</p> <p>I can’t help feeling though that XMP has a lot of promise and is very timely. There are only three real obstacles: creating XMP packets, writing them and reading them. To my mind, once one has a good grasp of XMP then creating the packets can be done with common tools. The same, more or less, for reading the packets. I have shown earlier that this is readily achievable. The only major block is writing the packets into media files although there is support for create/write (if patchy) by open source libraries, as well as there being support (perhaps limited) from products for create/write. But, anyway, it’s certainly do-able.</p> <div> <h3>See also:</h3> <ul> <li><a href="/blog/open-funder-registry-to-transition-into-research-organization-registry-ror/">Open Funder Registry to transition into Research Organization Registry (ROR)</a></li> <li><a href="/blog/metadata-connects-the-global-community-summary-of-our-community-update-2023/">Metadata connects the global community – summary of our Community update 2023</a></li> <li><a href="/blog/2023-public-data-file-now-available-with-new-and-improved-retrieval-options/">2023 public data file now available with new and improved retrieval options</a></li> <li><a href="/blog/start-citing-data-now.-not-later/">Start citing data now. Not later</a></li> <li><a href="/blog/shooting-for-the-stars-asms-journey-towards-complete-metadata/">Shooting for the stars – ASM’s journey towards complete metadata</a></li> </ul> </div> <div id="discourse-comments"></div> <script type="text/javascript"> DiscourseEmbed = { discourseUrl: '', discourseEmbedUrl: "" }; (function() { var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true; d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d); })(); </script> </div> <div class="col-md-2"> <div class='blogsearchouter'> <form class='blogsearch' action='/site-search/' method='get'> <input type='hidden' name='refinementList[section][0]' id='refinementList[section][0]' value='Blog'/> <input placeholder='Search the blog' type='text' name='query' id='howcanwehelpsidebar'> </form> </div> <a href="/blog/index.xml"><i class="fa fa-rss" aria-hidden="true"></i> RSS Feed</a> <section> <div class="blog-box"> <h2>Recent Posts</h2> <div class="item"> <p class="headline"><a href="/blog/discovering-relationships-between-preprints-and-journal-articles/">Discovering relationships between preprints and journal articles</a></p> <p class="date">2023 December 07</p> </div> <div class="item"> <p class="headline"><a href="/blog/perspectives-madhura-amdekar-meeting-community-pursuing-research-integrity/">Perspectives: Madhura Amdekar on meeting the community and pursuing passion for research integrity</a></p> <p class="date">2023 December 05</p> </div> <div class="item"> <p class="headline"><a href="/blog/joint-statement-on-research-data/">Joint Statement on Research Data</a></p> <p class="date">2023 November 28</p> </div> <div class="item"> <p class="headline"><a href="/blog/what-was-the-talk-of-crossref2023/">What was the talk of #Crossref2023?</a></p> <p class="date">2023 November 21</p> </div> </section> <section> <div class="blog-box"> <h2>Categories</h2> <ul class="blog-categories"> <li><a href="/categories/metadata">Metadata</a> <span class="blog-count">(124)</span></li> <li><a href="/categories/community">Community</a> <span class="blog-count">(106)</span></li> <li><a href="/categories/identifiers">Identifiers</a> <span class="blog-count">(96)</span></li> <li><a href="/categories/member-briefing">Member Briefing</a> <span class="blog-count">(55)</span></li> <li><a href="/categories/collaboration">Collaboration</a> <span class="blog-count">(50)</span></li> <li><a href="/categories/linking">Linking</a> <span class="blog-count">(44)</span></li> <li><a href="/categories/content-registration">Content Registration</a> <span class="blog-count">(41)</span></li> <li><a href="/categories/citation">Citation</a> <span class="blog-count">(35)</span></li> <li><a href="/categories/crossref-live">Crossref Live</a> <span class="blog-count">(35)</span></li> <li><a href="/categories/apis">APIS</a> <span class="blog-count">(34)</span></li> <li><a href="/categories/event-data">Event Data</a> <span class="blog-count">(33)</span></li> <li><a href="/categories/crossref-labs">Crossref Labs</a> <span class="blog-count">(27)</span></li> <li><a href="/categories/news-release">News Release</a> <span class="blog-count">(27)</span></li> <li><a href="/categories/data">Data</a> <span class="blog-count">(25)</span></li> <li><a href="/categories/interoperability">Interoperability</a> <span class="blog-count">(24)</span></li> <li><a href="/categories/orcid">ORCID</a> <span class="blog-count">(24)</span></li> <li><a href="/categories/research-nexus">Research Nexus</a> <span class="blog-count">(24)</span></li> <li><a href="/categories/datacite">DataCite</a> <span class="blog-count">(23)</span></li> <li><a href="/categories/dois">DOIs</a> <span class="blog-count">(23)</span></li> <li><a href="/categories/board">Board</a> <span class="blog-count">(22)</span></li> <li><a href="/categories/persistence">Persistence</a> <span class="blog-count">(22)</span></li> <li><a href="/categories/search">Search</a> <span class="blog-count">(21)</span></li> <li><a href="/categories/annual-meeting">Annual Meeting</a> <span class="blog-count">(20)</span></li> <li><a href="/categories/governance">Governance</a> <span class="blog-count">(20)</span></li> <li><a href="/categories/meetings">Meetings</a> <span class="blog-count">(20)</span></li> <li><a href="/categories/research-funders">Research Funders</a> <span class="blog-count">(20)</span></li> <li><a href="/categories/standards">Standards</a> <span class="blog-count">(17)</span></li> <li><a href="/categories/api-case-study">Api Case Study</a> <span class="blog-count">(15)</span></li> <li><a href="/categories/infrastructure">Infrastructure</a> <span class="blog-count">(15)</span></li> <li><a href="/categories/linked-data">Linked Data</a> <span class="blog-count">(15)</span></li> <li><a href="/categories/outreach">Outreach</a> <span class="blog-count">(15)</span></li> <li><a href="/categories/preprints">Preprints</a> <span class="blog-count">(14)</span></li> <li><a href="/categories/publishing">Publishing</a> <span class="blog-count">(14)</span></li> <li><a href="/categories/staff">Staff</a> <span class="blog-count">(14)</span></li> <li><a href="/categories/strategy">Strategy</a> <span class="blog-count">(14)</span></li> <li><a href="/categories/wikipedia">Wikipedia</a> <span class="blog-count">(14)</span></li> <li><a href="/categories/xmp">XMP</a> <span class="blog-count">(14)</span></li> <li><a href="/categories/election">Election</a> <span class="blog-count">(12)</span></li> <li><a href="/categories/membership">Membership</a> <span class="blog-count">(12)</span></li> <li><a href="/categories/crossmark">Crossmark</a> <span class="blog-count">(11)</span></li> <li><a href="/categories/handle">Handle</a> <span class="blog-count">(11)</span></li> <li><a href="/categories/citation-formats">Citation Formats</a> <span class="blog-count">(10)</span></li> <li><a href="/categories/discussion">Discussion</a> <span class="blog-count">(10)</span></li> <li><a href="/categories/education">Education</a> <span class="blog-count">(10)</span></li> <li><a href="/categories/rss">RSS</a> <span class="blog-count">(10)</span></li> </ul> </div> <div class="blog-box"> <h2>Archives</h2> <ul class="blog-categories"> <li><a href="/archives/2023">2023</a> <span class="blog-count">(31)</span></li> <li><a href="/archives/2022">2022</a> <span class="blog-count">(31)</span></li> <li><a href="/archives/2021">2021</a> <span class="blog-count">(25)</span></li> <li><a href="/archives/2020">2020</a> <span class="blog-count">(34)</span></li> <li><a href="/archives/2019">2019</a> <span class="blog-count">(37)</span></li> <li><a href="/archives/2018">2018</a> <span class="blog-count">(55)</span></li> <li><a href="/archives/2017">2017</a> <span class="blog-count">(41)</span></li> <li><a href="/archives/2016">2016</a> <span class="blog-count">(50)</span></li> <li><a href="/archives/2015">2015</a> <span class="blog-count">(23)</span></li> <li><a href="/archives/2014">2014</a> <span class="blog-count">(4)</span></li> <li><a href="/archives/2013">2013</a> <span class="blog-count">(2)</span></li> <li><a href="/archives/2012">2012</a> <span class="blog-count">(5)</span></li> <li><a href="/archives/2011">2011</a> <span class="blog-count">(6)</span></li> <li><a href="/archives/2010">2010</a> <span class="blog-count">(9)</span></li> <li><a href="/archives/2009">2009</a> <span class="blog-count">(34)</span></li> <li><a href="/archives/2008">2008</a> <span class="blog-count">(56)</span></li> <li><a href="/archives/2007">2007</a> <span class="blog-count">(91)</span></li> <li><a href="/archives/2006">2006</a> <span class="blog-count">(21)</span></li> </ul> </div> </section> </div> </div> <div class="row infoline"> <div class="col-md-11 col-md-offset-1"> <p> Page owner: thammond   |   Last updated 2007-September-11 </p> </div> </div> </div> <footer class='top-footer'> <div class="container"> <div class="row"> <div class="home-slot col-md-3 col-md-offset-1"> <span class="strap">You are Crossref</span> </div> <div class="home-slot home-slot-col2 col-md-3"> <a href=''><button>Join the community</button></a> </div> <div class="home-slot col-md-3 strap"> <a href=''><button>Get email updates</button></a> </div> </div> </div> </footer> <footer class='bottom-footer'> <div class="container"> <div class="row"> <div class="home-slot col-md-3 col-md-offset-1"> <a href="/membership/" title="Become a member">Apply</a><br /> <a href="/membership/terms/" title="Membership terms">Member terms</a><br /> <a href="/fees/" title="Fees">Fees</a><br /> <a href="/community/sponsors/" title="Sponsors">Sponsors</a><br /> </div> <div class="home-slot home-slot-col2 col-md-3"> <a href="" title="Status page" target="_blank">Status page</a><br /> <a href="/documentation/" title="Documentation">Documentation</a><br /> <a href="" title="Community forum" target="_blank">Community forum</a><br /> <a href="/labs/" title="Labs">Labs</a><br /> </div> <div class="home-slot col-md-3"> <a href="/blog/" title="Blog">Blog</a><br /> <a href="/operations-and-sustainability/" title="Operations and sustainability">Operations and sustainability</a><br /> <a href="/board-and-governance/" title="Governance">Governance</a><br /> <a href="/contact/" title="Contact">Contact</a><br /> </div> </div> </footer> <footer class="very-bottom-footer"> <div class="container"> <div class="row"> <div class="col-md-10 col-md-offset-1"> <img class="footer-svg cc" src="/images/footer/cc.svg" /></i><img class="footer-svg by" src="/images/footer/by.svg" /> The content of this site is licensed under a <a href="" title="Creative Commons" target="_blank">Creative Commons Attribution 4.0 International License</a> </div> <div class="col-md-1"> <a href=''>Privacy</a> </div> </div> </div> </footer> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script type="text/javascript" language="javascript" src="//"></script> <script type="text/javascript" language="javascript" src="//"></script> <script type="text/javascript" language="javascript" src="//"></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script src=""></script> <script type="text/javascript" async src=""> </script> <script> $(document).ready(function () { $(".short-summary").text(function(index, currentText) { return currentText .split(' ', 35 ) .join(' ') + "\u2026"; }); }); </script> <script>(function(w,a,b,d,s){w[a]=w[a]||{};w[a][b]=w[a][b]||{q:[],track:function(r,e,t){this.q.push({r:r,e:e,t:t||+new Date});}};var e=d.createElement(s);var f=d.getElementsByTagName(s)[0];e.async=1;e.src='//';f.parentNode.insertBefore(e,f);})(window,'ActOn','Beacon',document,'script');ActOn.Beacon.track();</script> <script> function fakeClick(){ $('a[href="#tabs-metadatasearch"]').trigger('click'); } var $searchstring = ''; jQuery(document).ready(function ($) { var typingspeed = 80; var exampledelay = 3000; var MQL = 1170; var client = algoliasearch('QSQNJS2NQU', '7d7dfcf22bf2af9070353d9f5a7c89c0'); var index = client.initIndex('aws-production'); var doiPattern = /10\./ function checkPattern(input) { if (doiPattern.test(input)) { return true; } else { return false; } } var typing_loop; (function($) { $.fn.writeText = function(content) { var contentArray = content.split(""), current = 0, elem = this; elem.val(''); typing_loop = setInterval(function() { if(current <= contentArray.length) { elem.val(content.substring(0, current++)); elem.change(); } }, typingspeed); }; })(jQuery); var hcwhtopInput = document.getElementById("howcanwehelptop"); autocomplete('#howcanwehelptop', { hint: false, openOnFocus:true }, [{ source: autocomplete.sources.hits(index, {hitsPerPage: 5}), displayKey: 'title', templates: { header : function() { if (checkPattern(hcwhtopInput.value)){ doi = "<div class='aa-footer aa-meta-link'>It looks like you are searching for a specific DOI, do you want to <a target='_blank' href='" + hcwhtopInput.value + "'>try this as a Metadata Search?</a></div>"; } else { doi = ''; } return doi; }, suggestion: function(suggestion) { sectionValue = suggestion._highlightResult.section.value.replace(/\-/g, " ") titleValue = suggestion._highlightResult.title.value result ="<a href='" + suggestion.url + "'>" + "<div class='autosuggest-section'>" + sectionValue + "</div><div class='autosuggest-title'>" + titleValue + "</div></a>"; return result; }, empty: function() { return '<div class="aa-empty">We don\'t have anything on that topic. Please try editing your search or typing something new.</div>'; }, footer: function () { return "<div class='aa-footer'><span class='middle'>|</span><span class='left'><a href='/site-search/?query=" + hcwhtopInput.value + "'>More results</a></span><span class='right'><a target='_blank' href='" + hcwhtopInput.value + "'>Search metadata</a></span></div>"; } } } ]).on('autocomplete:selected', function(event, suggestion, dataset) { location.href = suggestion.url; }); var hcwhInput = document.getElementById("howcanwehelp"); var original_placeholder = $("#howcanwehelp").attr('placeholder'); var example_queries = []; example_queries.push("join an advisory group"); example_queries.push("sustainability plan"); example_queries.push("metadata schema library"); var counter = 0; var maxcounter = example_queries.length; var examples_loop = setInterval(function() { if(counter == maxcounter){ counter = 0; $("#howcanwehelp").val(''); clearInterval(examples_loop); } else { $("#howcanwehelp").writeText(example_queries[counter++]); } }, exampledelay); $( "#howcanwehelp" ).click(function() { clearInterval(typing_loop); clearInterval(examples_loop); $("#howcanwehelp").val(''); }); autocomplete('#howcanwehelp', { hint: false, openOnFocus:true }, [{ source: autocomplete.sources.hits(index, {hitsPerPage: 5}), displayKey: 'title', templates: { header : function() { if (checkPattern(hcwhInput.value)){ doi = "<div class='aa-footer aa-meta-link'>It looks like you are searching for a specific DOI, do you want to <a target='_blank' href='" + hcwhInput.value + "'>try this as a Metadata Search?</a></div>"; } else { doi = ''; } return doi; }, suggestion: function(suggestion) { sectionValue = suggestion._highlightResult.section.value.replace(/\-/g, " ") titleValue = suggestion._highlightResult.title.value result ="<a href='" + suggestion.url + "'>" + "<div class='autosuggest-section'>" + sectionValue + "</div><div class='autosuggest-title'>" + titleValue + "</div></a>"; return result; }, empty: function () { return '<div class="aa-empty">We don\'t have anything on that topic. Please try editing your search or typing something new.</div>'; }, footer: function () { return "<div class='aa-footer'><span class='middle'>|</span><span class='left'><a href='/site-search/?query=" + hcwhInput.value + "'>More results</a></span><span class='right'><a target='_blank' href='" + hcwhInput.value + "'>Search metadata</a></span></div>"; } } } ]).on('autocomplete:selected', function(event, suggestion, dataset) { location.href = suggestion.url; }); }); </script> <script type="text/javascript"> var _paq = _paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u=""; _paq.push(['setTrackerUrl', u+'piwik.php']); _paq.push(['setSiteId', '1']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src='//'; s.parentNode.insertBefore(g,s); })(); </script> <noscript> <img src="" style="border:0" alt="" /> </noscript> </body> </html>