CINXE.COM

Ten simple rules for making a vocabulary FAIR | PLOS Computational Biology

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:dc="http://purl.org/dc/terms/" xmlns:doi="http://dx.doi.org/" lang="en" xml:lang="en" itemscope itemtype="http://schema.org/Article" class="no-js"> <head prefix="og: http://ogp.me/ns#"> <link rel="stylesheet" href="/resource/css/screen.css?112d78c04dc25a6fb55b68d577e0729a"/> <!-- allows for extra head tags --> <!-- hello --> <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,600"> <link media="print" rel="stylesheet" type="text/css" href="/resource/css/print.css"/> <script type="text/javascript"> var siteUrlPrefix = "/ploscompbiol/"; </script> <script src="/resource/js/vendor/modernizr-v2.7.1.js" type="text/javascript"></script> <script src="/resource/js/vendor/detectizr.min.js" type="text/javascript"></script> <link rel="shortcut icon" href="/resource/img/favicon.ico" type="image/x-icon"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <link rel="canonical" href="https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1009041" /> <meta name="description" content="Author summary We present ten simple rules that support converting a list of terms not currently accessible using web standards into a vocabulary conforming to the FAIR principles&ndash;Findable, Accessible, Interoperable and Reusable. In a FAIR vocabulary each term has its own persistent web-identifier, and its definition can be downloaded in both human- and standard machine-readable formats. The goal is to enable terminology to be unambiguously cited within technical datasets, in both the dataset description, or individual fields within the data, so that data can be discovered and integrated. The rules consider arrangements for governance of a terminology alongside the technical aspects related to conversion of (typically) print-based forms to standards-based knowledge representations. The rules are presented in the sequence in which they should be considered in a conversion process." /> <meta name="citation_abstract" content="We present ten simple rules that support converting a legacy vocabulary&mdash;a list of terms available in a print-based glossary or in a table not accessible using web standards&mdash;into a FAIR vocabulary. Various pathways may be followed to publish the FAIR vocabulary, but we emphasise particularly the goal of providing a globally unique resolvable identifier for each term or concept. A standard representation of the concept should be returned when the individual web identifier is resolved, using SKOS or OWL serialised in an RDF-based representation for machine-interchange and in a web-page for human consumption. Guidelines for vocabulary and term metadata are provided, as well as development and maintenance considerations. The rules are arranged as a stepwise recipe for creating a FAIR vocabulary based on the legacy vocabulary. By following these rules you can achieve the outcome of converting a legacy vocabulary into a standalone FAIR vocabulary, which can be used for unambiguous data annotation. In turn, this increases data interoperability and enables data integration."> <meta name="keywords" content="Ontologies,Owls,Metadata,Data management,Data visualization,Controlled vocabularies,Metallic mercury,Semantics" /> <meta name="citation_doi" content="10.1371/journal.pcbi.1009041"/> <meta name="citation_author" content="Simon J. D. Cox"/> <meta name="citation_author_institution" content="CSIRO Land and Water, Melbourne, Australia"/> <meta name="citation_author" content="Alejandra N. Gonzalez-Beltran"/> <meta name="citation_author_institution" content="Science and Technology Facilities Council, Didcot, United Kingdom"/> <meta name="citation_author" content="Barbara Magagna"/> <meta name="citation_author_institution" content="Environment Agency Austria, Wien, Austria"/> <meta name="citation_author" content="Maria-Cristina Marinescu"/> <meta name="citation_author_institution" content="Barcelona Supercomputing Center (BSC-CNS), Barcelona, Spain"/> <meta name="citation_title" content="Ten simple rules for making a vocabulary FAIR"/> <meta itemprop="name" content="Ten simple rules for making a vocabulary FAIR"/> <meta name="citation_journal_title" content="PLOS Computational Biology"/> <meta name="citation_journal_abbrev" content="PLOS Computational Biology"/> <meta name="citation_date" content="Jun 16, 2021"/> <meta name="citation_firstpage" content="e1009041"/> <meta name="citation_issue" content="6"/> <meta name="citation_volume" content="17"/> <meta name="citation_issn" content="1553-7358"/> <meta name="citation_publisher" content="Public Library of Science"/> <meta name="citation_pdf_url" content="https://journals.plos.org/ploscompbiol/article/file?id=10.1371/journal.pcbi.1009041&type=printable"> <meta name="citation_article_type" content="Research Article"> <meta name="dc.identifier" content="10.1371/journal.pcbi.1009041" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="ploscompbiol"/> <meta name="twitter:title" content="Ten simple rules for making a vocabulary FAIR" /> <meta property="twitter:description" content="Author summary We present ten simple rules that support converting a list of terms not currently accessible using web standards into a vocabulary conforming to the FAIR principles&ndash;Findable, Accessible, Interoperable and Reusable. In a FAIR vocabulary each term has its own persistent web-identifier, and its definition can be downloaded in both human- and standard machine-readable formats. The goal is to enable terminology to be unambiguously cited within technical datasets, in both the dataset description, or individual fields within the data, so that data can be discovered and integrated. The rules consider arrangements for governance of a terminology alongside the technical aspects related to conversion of (typically) print-based forms to standards-based knowledge representations. The rules are presented in the sequence in which they should be considered in a conversion process." /> <meta property="twitter:image" content="https://journals.plos.org/ploscompbiol/article/figure/image?id=10.1371/journal.pcbi.1009041.t004&size=inline" /> <meta property="og:type" content="article" /> <meta property="og:url" content="https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1009041"/> <meta property="og:title" content="Ten simple rules for making a vocabulary FAIR"/> <meta property="og:description" content="Author summary We present ten simple rules that support converting a list of terms not currently accessible using web standards into a vocabulary conforming to the FAIR principles&ndash;Findable, Accessible, Interoperable and Reusable. In a FAIR vocabulary each term has its own persistent web-identifier, and its definition can be downloaded in both human- and standard machine-readable formats. The goal is to enable terminology to be unambiguously cited within technical datasets, in both the dataset description, or individual fields within the data, so that data can be discovered and integrated. The rules consider arrangements for governance of a terminology alongside the technical aspects related to conversion of (typically) print-based forms to standards-based knowledge representations. The rules are presented in the sequence in which they should be considered in a conversion process."/> <meta property="og:image" content="https://journals.plos.org/ploscompbiol/article/figure/image?id=10.1371/journal.pcbi.1009041.t004&size=inline"/> <meta name="citation_reference" content="citation_title=Ontologies Come of Age;citation_author=D Mcguinness;citation_journal_title=Spinning the Semantic Web: Bringing the World Wide Web to Its Full Potential;citation_first_page=171;citation_last_page=94;citation_publication_date=2003;"/> <meta name="citation_reference" content="citation_title=Best Practices for Implementing FAIR Vocabularies and Ontologies on the Web;citation_inbook_title=Studies on the Semantic Web;citation_author=D Garijo;citation_author=M Poveda-Villalón;citation_publication_date=2020;citation_publisher=IOS Press"/> <meta name="citation_reference" content="citation_title=D2.2 FAIR Semantics: First recommendations;citation_author=Y Le Franc;citation_author=J Parland-von Essen;citation_author=L Bonino;citation_author=H Lehväslaiho;citation_author=G Coen;citation_author=C Staiger;citation_journal_title=Zenodo;citation_publication_date=2020;"/> <meta name="citation_reference" content="citation_title=The FAIR Guiding Principles for scientific data management and stewardship;citation_author=MD Wilkinson;citation_author=M Dumontier;citation_author=IjJ Aalbersberg;citation_author=G Appleton;citation_author=M Axton;citation_author=A Baak;citation_journal_title=Sci Data;citation_volume=3;citation_number=3;citation_issue=1;citation_first_page=160018;citation_publication_date=2016;"/> <meta name="citation_reference" content="citation_title=Coming to Terms with FAIR Ontologies;citation_inbook_title=Knowledge Engineering and Knowledge Management;citation_author=M Poveda-Villalón;citation_author=P Espinoza-Arias;citation_author=D Garijo;citation_author=O Corcho;citation_first_page=255;citation_last_page=70;citation_publication_date=2020;citation_publisher=Springer International Publishing"/> <meta name="citation_reference" content="citation_title=Semantic Linking of Research Infrastructure Metadata;citation_inbook_title=Towards Interoperable Research Infrastructures for Environmental and Earth Sciences: A Reference Model Guided Approach for Common Challenges;citation_author=P Martin;citation_author=B Magagna;citation_author=X Liao;citation_author=Z Zhao;citation_first_page=226;citation_last_page=46;citation_publication_date=2020;citation_publisher=Springer International Publishing"/> <meta name="citation_reference" content="Courtot M, Malone J, Mungall CJ. Ten simple rules for biomedical ontology development. In: Proceedings of the Joint International Conference on Biological Ontology and BioCreative [Internet]. Corvallis, Oregon, US: CEUR Workshop Proceedings; 2016. p. 4. Available from: http://ceur-ws.org/Vol-1747/IT404_ICBO2016.pdf "/> <meta name="citation_reference" content="citation_title=Ten Simple Rules for Selecting a Bio-ontology;citation_author=J Malone;citation_author=R Stevens;citation_author=S Jupp;citation_author=T Hancocks;citation_author=H Parkinson;citation_author=C Brooksbank;citation_journal_title=PLOS Comput Biol;citation_volume=12;citation_number=12;citation_issue=2;citation_first_page=e1004743;citation_publication_date=2016;"/> <meta name="citation_reference" content="citation_title=Identifiers for the 21st century: How to design, provision, and reuse persistent identifiers to maximize utility and impact of life science data;citation_author=JA McMurry;citation_author=N Juty;citation_author=N Blomberg;citation_author=T Burdett;citation_author=T Conlin;citation_author=N Conte;citation_journal_title=PLOS Biol;citation_volume=15;citation_number=15;citation_issue=6;citation_first_page=e2001414;citation_publication_date=2017;"/> <meta name="citation_reference" content="citation_title=Best Practice Recipes for Publishing RDF Vocabularies;citation_author=D Berrueta;citation_author=J Phipps;citation_publication_date=2008;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=SKOS Simple Knowledge Organization System Primer;citation_author=A Isaac;citation_author=E Summers;citation_publication_date=2009;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=SKOS Simple Knowledge Organization System Reference;citation_author=A Miles;citation_author=S Bechhofer;citation_publication_date=2009;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=Key choices in the design of Simple Knowledge Organization System (SKOS).;citation_author=T Baker;citation_author=S Bechhofer;citation_author=A Isaac;citation_author=A Miles;citation_author=G Schreiber;citation_author=E Summers;citation_journal_title=J Web Semant;citation_volume=20;citation_number=20;citation_first_page=35;citation_last_page=49;citation_publication_date=2013;"/> <meta name="citation_reference" content="citation_title=OWL 2 Web Ontology Language Document Overview;citation_inbook_title=W3C Recommendation;citation_publication_date=2012;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=OWL 2 Web Ontology Language Primer;citation_author=P Hitzler;citation_author=M Krötzsch;citation_author=B Parsia;citation_author=PF Patel-Schneider;citation_author=S Rudolph;citation_publication_date=2012;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=The Dublin Core Metadata Element Set;citation_author=J Kunze;citation_author=T Baker;citation_volume=5013;citation_number=5,013;citation_publication_date=2007;citation_publisher=IETF RFC. Internet Engineering Task Force"/> <meta name="citation_reference" content="DCMI Usage Board. DCMI Metadata Terms [Internet]. 2020 [cited 2020 Oct 23]. Available from: https://dublincore.org/specifications/dublin-core/dcmi-terms/ "/> <meta name="citation_reference" content="Bechhofer S, Miles A. Using OWL and SKOS [Internet]. 2008 [cited 2020 Oct 23]. Available from: https://www.w3.org/2006/07/SWD/SKOS/skos-and-owl/master.html "/> <meta name="citation_reference" content="Noy NF, McGuinness DL. Ontology Development 101: A Guide to Creating Your First Ontology [Internet]. Available from: https://protegewiki.stanford.edu/wiki/Ontology101 "/> <meta name="citation_reference" content="citation_title=RDF 1.1 Concepts and Abstract Syntax;citation_author=R Cyganiak;citation_author=D Wood;citation_author=M Lanthaler;citation_journal_title=W3C Recommendation;citation_publication_date=2014;"/> <meta name="citation_reference" content="citation_title=RDF 1.1 Turtle;citation_inbook_title=W3C Recommendation;citation_author=D Beckett;citation_author=T Berners-Lee;citation_author=E Prud’hommeaux;citation_author=G Carothers;citation_publication_date=2014;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=Ontorat: automatic generation of new ontology terms, annotations, and axioms based on ontology design patterns;citation_author=Z Xiang;citation_author=J Zheng;citation_author=Y Lin;citation_author=Y He;citation_journal_title=J Biomed Semant;citation_volume=6;citation_number=6;citation_issue=1;citation_first_page=4;citation_publication_date=2015;"/> <meta name="citation_reference" content="citation_title=ROBOT: A Tool for Automating Ontology Workflows;citation_author=RC Jackson;citation_author=JP Balhoff;citation_author=E Douglass;citation_author=NL Harris;citation_author=CJ Mungall;citation_author=JA Overton;citation_journal_title=BMC Bioinformatics;citation_volume=20;citation_number=20;citation_issue=1;citation_first_page=407;citation_publication_date=2019;"/> <meta name="citation_reference" content="citation_title=Data Catalog Vocabulary (DCAT)—Version 2;citation_author=R Albertoni;citation_author=D Browning;citation_author=SJD Cox;citation_author=A Gonzalez-Beltran;citation_author=A Perego;citation_author=P Winstanley;citation_publication_date=2020;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=Metadata Recommendations For Linked Open Data Vocabularies;citation_author=P-Y Vandenbussche;citation_author=B Vatant;citation_journal_title=Metadata Recommendations For Linked Open Data Vocabularies;citation_first_page=4;citation_publication_date=2012;"/> <meta name="citation_reference" content="citation_title=Ontology Metadata Vocabulary and Applications;citation_inbook_title=On the Move to Meaningful Internet Systems 2005: OTM 2005 Workshops;citation_author=J Hartmann;citation_author=R Palma;citation_author=Y Sure;citation_author=MC Suárez-Figueroa;citation_author=P Haase;citation_author=A Gómez-Pérez;citation_first_page=906;citation_last_page=15;citation_publication_date=2005;citation_publisher=Springer"/> <meta name="citation_reference" content="citation_title=New Generation Metadata Vocabulary for Ontology Description and Publication;citation_inbook_title=Metadata and Semantic Research;citation_author=B Dutta;citation_author=A Toulet;citation_author=V Emonet;citation_author=C Jonquet;citation_first_page=173;citation_last_page=85;citation_publication_date=2017;citation_publisher=Springer International Publishing"/> <meta name="citation_reference" content="citation_title=Linked Open Vocabularies (LOV): A gateway to reusable semantic vocabularies on the Web;citation_author=P-Y Vandenbussche;citation_author=GA Atemezing;citation_author=M Poveda-Villalón;citation_author=B Vatant;citation_journal_title=Semantic Web;citation_volume=8;citation_number=8;citation_issue=3;citation_first_page=437;citation_last_page=52;citation_publication_date=2016;"/> <meta name="citation_reference" content="Svensson L. Indicating, Discovering, Negotiating, and Writing Profiled Representations [Internet]. IETF; 2020 Apr [cited 2020 Oct 23]. Available from: https://profilenegotiation.github.io/I-D-Profile-Negotiation/I-D-Profile-Negotiation "/> <meta name="citation_reference" content="citation_title=WIDOCO: A Wizard for Documenting Ontologies;citation_inbook_title=The Semantic Web–ISWC 2017;citation_author=D Garijo;citation_first_page=94;citation_last_page=102;citation_publication_date=2017;citation_publisher=Springer International Publishing"/> <meta name="citation_reference" content="citation_title=SPARQL 1.1 Protocol;citation_author=L Feigenbaum;citation_author=GT Williams;citation_author=KG Clark;citation_author=E Torres;citation_publication_date=2013;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=SPARQL 1.1 Query Language;citation_author=S Harris;citation_author=A Seaborne;citation_publication_date=2013;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=SPARQL 1.1 Update;citation_author=P Gearon;citation_author=A Passant;citation_author=A Polleres;citation_publication_date=2013;citation_publisher=World Wide Web Consortium"/> <meta name="citation_reference" content="citation_title=SISSVoc: A Linked Data API for access to SKOS vocabularies;citation_author=SJD Cox;citation_author=J Yu;citation_author=T Rankine;citation_journal_title=Semantic Web J;citation_volume=7;citation_number=7;citation_issue=1;citation_first_page=9;citation_last_page=24;citation_publication_date=2016;"/> <meta name="citation_reference" content="citation_title=Data on the Web Best Practices;citation_author=BF Lóscio;citation_author=C Burle;citation_author=N Calegari;citation_publication_date=2017;citation_publisher=World Wide Web Consortium"/> <!-- DoubleClick overall ad setup script --> <script type='text/javascript'> var googletag = googletag || {}; googletag.cmd = googletag.cmd || []; (function() { var gads = document.createElement('script'); gads.async = true; gads.type = 'text/javascript'; var useSSL = 'https:' == document.location.protocol; gads.src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js'; var node = document.getElementsByTagName('script')[0]; node.parentNode.insertBefore(gads, node); })(); </script> <!-- DoubleClick ad slot setup script --> <script id="doubleClickSetupScript" type='text/javascript'> googletag.cmd.push(function() { googletag.defineSlot('/75507958/PCOMPBIO_728x90_ATF', [728, 90], 'div-gpt-ad-1458247671871-0').addService(googletag.pubads()); googletag.defineSlot('/75507958/PCOMPBIO_160x600_BTF', [160, 600], 'div-gpt-ad-1458247671871-1').addService(googletag.pubads()); var personalizedAds = window.plosCookieConsent && window.plosCookieConsent.hasConsented('advertising'); googletag.pubads().setRequestNonPersonalizedAds(personalizedAds ? 0 : 1); googletag.pubads().enableSingleRequest(); googletag.enableServices(); }); </script> <script type="text/javascript"> var WombatConfig = WombatConfig || {}; WombatConfig.journalKey = "PLoSCompBiol"; WombatConfig.journalName = "PLOS Computational Biology"; WombatConfig.figurePath = "/ploscompbiol/article/figure/image"; WombatConfig.figShareInstitutionString = "plos"; WombatConfig.doiResolverPrefix = "https://dx.plos.org/"; </script> <script type="text/javascript"> var WombatConfig = WombatConfig || {}; WombatConfig.metrics = WombatConfig.metrics || {}; WombatConfig.metrics.referenceUrl = "http://lagotto.io/plos"; WombatConfig.metrics.googleScholarUrl = "https://scholar.google.com/scholar"; WombatConfig.metrics.googleScholarCitationUrl = WombatConfig.metrics.googleScholarUrl + "?hl=en&lr=&q="; WombatConfig.metrics.crossrefUrl = "https://www.crossref.org"; </script> <script defer="defer" src="/resource/js/defer.js?5d23b84e5e396356b27c"></script><script src="/resource/js/sync.js?5d23b84e5e396356b27c"></script> <script src="/resource/js/vendor/jquery.min.js" type="text/javascript"></script> <script type="text/javascript" src="https://widgets.figshare.com/static/figshare.js"></script> <script src="/resource/js/vendor/fastclick/lib/fastclick.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.js" type="text/javascript"></script> <script src="/resource/js/vendor/underscore-min.js" type="text/javascript"></script> <script src="/resource/js/vendor/underscore.string.min.js" type="text/javascript"></script> <script src="/resource/js/vendor/moment.js" type="text/javascript"></script> <script src="/resource/js/vendor/jquery-ui-effects.min.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.tooltip.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.dropdown.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.tab.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.reveal.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.slider.js" type="text/javascript"></script> <script src="/resource/js/util/utils.js" type="text/javascript"></script> <script src="/resource/js/components/toggle.js" type="text/javascript"></script> <script src="/resource/js/components/truncate_elem.js" type="text/javascript"></script> <script src="/resource/js/components/tooltip_hover.js" type="text/javascript"></script> <script src="/resource/js/vendor/jquery.dotdotdot.js" type="text/javascript"></script> <!--For Google Tag manager to be able to track site information --> <script> dataLayer = [{ 'mobileSite': 'false', 'desktopSite': 'true' }]; </script> <title>Ten simple rules for making a vocabulary FAIR | PLOS Computational Biology</title> </head> <body class="article ploscompbiol"> <!-- Google Tag Manager --> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-TP26BH" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script> (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-TP26BH'); </script> <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-MQQMGF" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= '//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-MQQMGF');</script> <!-- End Google Tag Manager --> <!-- Start of HubSpot Embed Code --> <script> // from https://developers.hubspot.com/docs/reference/api/analytics-and-events/cookie-banner/cookie-banner-api#example-using-a-third-party-cookie-banner-to-control-hubspot-cookies window.disableHubSpotCookieBanner = true; window._hsp = window._hsp || []; window._hsp.push(['setHubSpotConsent', { analytics: window.plosCookieConsent?.hasConsented('analytics'), advertisement: window.plosCookieConsent?.hasConsented('advertising'), functionality: window.plosCookieConsent?.hasConsented('functionality') } ]); </script> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/44092021.js"></script> <!-- End of HubSpot Embed Code --> <!-- New Relic --> <script type="text/javascript"> ;window.NREUM||(NREUM={});NREUM.init={distributed_tracing:{enabled:true},privacy:{cookies_enabled:true},ajax:{deny_list:["bam.nr-data.net"]}}; window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o||e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({1:[function(t,e,n){function r(t){try{s.console&&console.log(t)}catch(e){}}var o,i=t("ee"),a=t(32),s={};try{o=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(s.console=!0,o.indexOf("dev")!==-1&&(s.dev=!0),o.indexOf("nr_dev")!==-1&&(s.nrDev=!0))}catch(c){}s.nrDev&&i.on("internal-error",function(t){r(t.stack)}),s.dev&&i.on("fn-err",function(t,e,n){r(n.stack)}),s.dev&&(r("NR AGENT IN DEVELOPMENT MODE"),r("flags: "+a(s,function(t,e){return t}).join(", ")))},{}],2:[function(t,e,n){function r(t,e,n,r,s){try{l?l-=1:o(s||new UncaughtException(t,e,n),!0)}catch(f){try{i("ierr",[f,c.now(),!0])}catch(d){}}return"function"==typeof u&&u.apply(this,a(arguments))}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function o(t,e){var n=e?null:c.now();i("err",[t,n])}var i=t("handle"),a=t(33),s=t("ee"),c=t("loader"),f=t("gos"),u=window.onerror,d=!1,p="nr@seenError";if(!c.disabled){var l=0;c.features.err=!0,t(1),window.onerror=r;try{throw new Error}catch(h){"stack"in h&&(t(14),t(13),"addEventListener"in window&&t(7),c.xhrWrappable&&t(15),d=!0)}s.on("fn-start",function(t,e,n){d&&(l+=1)}),s.on("fn-err",function(t,e,n){d&&!n[p]&&(f(n,p,function(){return!0}),this.thrown=!0,o(n))}),s.on("fn-end",function(){d&&!this.thrown&&l>0&&(l-=1)}),s.on("internal-error",function(t){i("ierr",[t,c.now(),!0])})}},{}],3:[function(t,e,n){var r=t("loader");r.disabled||(r.features.ins=!0)},{}],4:[function(t,e,n){function r(){U++,L=g.hash,this[u]=y.now()}function o(){U--,g.hash!==L&&i(0,!0);var t=y.now();this[h]=~~this[h]+t-this[u],this[d]=t}function i(t,e){E.emit("newURL",[""+g,e])}function a(t,e){t.on(e,function(){this[e]=y.now()})}var s="-start",c="-end",f="-body",u="fn"+s,d="fn"+c,p="cb"+s,l="cb"+c,h="jsTime",m="fetch",v="addEventListener",w=window,g=w.location,y=t("loader");if(w[v]&&y.xhrWrappable&&!y.disabled){var x=t(11),b=t(12),E=t(9),R=t(7),O=t(14),T=t(8),P=t(15),S=t(10),M=t("ee"),N=M.get("tracer"),C=t(23);t(17),y.features.spa=!0;var L,U=0;M.on(u,r),b.on(p,r),S.on(p,r),M.on(d,o),b.on(l,o),S.on(l,o),M.buffer([u,d,"xhr-resolved"]),R.buffer([u]),O.buffer(["setTimeout"+c,"clearTimeout"+s,u]),P.buffer([u,"new-xhr","send-xhr"+s]),T.buffer([m+s,m+"-done",m+f+s,m+f+c]),E.buffer(["newURL"]),x.buffer([u]),b.buffer(["propagate",p,l,"executor-err","resolve"+s]),N.buffer([u,"no-"+u]),S.buffer(["new-jsonp","cb-start","jsonp-error","jsonp-end"]),a(T,m+s),a(T,m+"-done"),a(S,"new-jsonp"),a(S,"jsonp-end"),a(S,"cb-start"),E.on("pushState-end",i),E.on("replaceState-end",i),w[v]("hashchange",i,C(!0)),w[v]("load",i,C(!0)),w[v]("popstate",function(){i(0,U>1)},C(!0))}},{}],5:[function(t,e,n){function r(){var t=new PerformanceObserver(function(t,e){var n=t.getEntries();s(v,[n])});try{t.observe({entryTypes:["resource"]})}catch(e){}}function o(t){if(s(v,[window.performance.getEntriesByType(w)]),window.performance["c"+p])try{window.performance[h](m,o,!1)}catch(t){}else try{window.performance[h]("webkit"+m,o,!1)}catch(t){}}function i(t){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var a=t("ee"),s=t("handle"),c=t(14),f=t(13),u=t(6),d=t(23),p="learResourceTimings",l="addEventListener",h="removeEventListener",m="resourcetimingbufferfull",v="bstResource",w="resource",g="-start",y="-end",x="fn"+g,b="fn"+y,E="bstTimer",R="pushState",O=t("loader");if(!O.disabled){O.features.stn=!0,t(9),"addEventListener"in window&&t(7);var T=NREUM.o.EV;a.on(x,function(t,e){var n=t[0];n instanceof T&&(this.bstStart=O.now())}),a.on(b,function(t,e){var n=t[0];n instanceof T&&s("bst",[n,e,this.bstStart,O.now()])}),c.on(x,function(t,e,n){this.bstStart=O.now(),this.bstType=n}),c.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),this.bstType])}),f.on(x,function(){this.bstStart=O.now()}),f.on(b,function(t,e){s(E,[e,this.bstStart,O.now(),"requestAnimationFrame"])}),a.on(R+g,function(t){this.time=O.now(),this.startPath=location.pathname+location.hash}),a.on(R+y,function(t){s("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),u()?(s(v,[window.performance.getEntriesByType("resource")]),r()):l in window.performance&&(window.performance["c"+p]?window.performance[l](m,o,d(!1)):window.performance[l]("webkit"+m,o,d(!1))),document[l]("scroll",i,d(!1)),document[l]("keypress",i,d(!1)),document[l]("click",i,d(!1))}}},{}],6:[function(t,e,n){e.exports=function(){return"PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver}},{}],7:[function(t,e,n){function r(t){for(var e=t;e&&!e.hasOwnProperty(u);)e=Object.getPrototypeOf(e);e&&o(e)}function o(t){s.inPlace(t,[u,d],"-",i)}function i(t,e){return t[1]}var a=t("ee").get("events"),s=t("wrap-function")(a,!0),c=t("gos"),f=XMLHttpRequest,u="addEventListener",d="removeEventListener";e.exports=a,"getPrototypeOf"in Object?(r(document),r(window),r(f.prototype)):f.prototype.hasOwnProperty(u)&&(o(window),o(f.prototype)),a.on(u+"-start",function(t,e){var n=t[1];if(null!==n&&("function"==typeof n||"object"==typeof n)){var r=c(n,"nr@wrapped",function(){function t(){if("function"==typeof n.handleEvent)return n.handleEvent.apply(n,arguments)}var e={object:t,"function":n}[typeof n];return e?s(e,"fn-",null,e.name||"anonymous"):n});this.wrapped=t[1]=r}}),a.on(d+"-start",function(t){t[1]=this.wrapped||t[1]})},{}],8:[function(t,e,n){function r(t,e,n){var r=t[e];"function"==typeof r&&(t[e]=function(){var t=i(arguments),e={};o.emit(n+"before-start",[t],e);var a;e[m]&&e[m].dt&&(a=e[m].dt);var s=r.apply(this,t);return o.emit(n+"start",[t,a],s),s.then(function(t){return o.emit(n+"end",[null,t],s),t},function(t){throw o.emit(n+"end",[t],s),t})})}var o=t("ee").get("fetch"),i=t(33),a=t(32);e.exports=o;var s=window,c="fetch-",f=c+"body-",u=["arrayBuffer","blob","json","text","formData"],d=s.Request,p=s.Response,l=s.fetch,h="prototype",m="nr@context";d&&p&&l&&(a(u,function(t,e){r(d[h],e,f),r(p[h],e,f)}),r(s,"fetch",c),o.on(c+"end",function(t,e){var n=this;if(e){var r=e.headers.get("content-length");null!==r&&(n.rxSize=r),o.emit(c+"done",[null,e],n)}else o.emit(c+"done",[t],n)}))},{}],9:[function(t,e,n){var r=t("ee").get("history"),o=t("wrap-function")(r);e.exports=r;var i=window.history&&window.history.constructor&&window.history.constructor.prototype,a=window.history;i&&i.pushState&&i.replaceState&&(a=i),o.inPlace(a,["pushState","replaceState"],"-")},{}],10:[function(t,e,n){function r(t){function e(){f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}function n(){f.emit("jsonp-error",[],l),f.emit("jsonp-end",[],l),t.removeEventListener("load",e,c(!1)),t.removeEventListener("error",n,c(!1))}var r=t&&"string"==typeof t.nodeName&&"script"===t.nodeName.toLowerCase();if(r){var o="function"==typeof t.addEventListener;if(o){var a=i(t.src);if(a){var d=s(a),p="function"==typeof d.parent[d.key];if(p){var l={};u.inPlace(d.parent,[d.key],"cb-",l),t.addEventListener("load",e,c(!1)),t.addEventListener("error",n,c(!1)),f.emit("new-jsonp",[t.src],l)}}}}}function o(){return"addEventListener"in window}function i(t){var e=t.match(d);return e?e[1]:null}function a(t,e){var n=t.match(l),r=n[1],o=n[3];return o?a(o,e[r]):e[r]}function s(t){var e=t.match(p);return e&&e.length>=3?{key:e[2],parent:a(e[1],window)}:{key:t,parent:window}}var c=t(23),f=t("ee").get("jsonp"),u=t("wrap-function")(f);if(e.exports=f,o()){var d=/[?&](?:callback|cb)=([^&#]+)/,p=/(.*)\.([^.]+)/,l=/^(\w+)(\.|$)(.*)$/,h=["appendChild","insertBefore","replaceChild"];Node&&Node.prototype&&Node.prototype.appendChild?u.inPlace(Node.prototype,h,"dom-"):(u.inPlace(HTMLElement.prototype,h,"dom-"),u.inPlace(HTMLHeadElement.prototype,h,"dom-"),u.inPlace(HTMLBodyElement.prototype,h,"dom-")),f.on("dom-start",function(t){r(t[0])})}},{}],11:[function(t,e,n){var r=t("ee").get("mutation"),o=t("wrap-function")(r),i=NREUM.o.MO;e.exports=r,i&&(window.MutationObserver=function(t){return this instanceof i?new i(o(t,"fn-")):i.apply(this,arguments)},MutationObserver.prototype=i.prototype)},{}],12:[function(t,e,n){function r(t){var e=i.context(),n=s(t,"executor-",e,null,!1),r=new f(n);return i.context(r).getCtx=function(){return e},r}var o=t("wrap-function"),i=t("ee").get("promise"),a=t("ee").getOrSetContext,s=o(i),c=t(32),f=NREUM.o.PR;e.exports=i,f&&(window.Promise=r,["all","race"].forEach(function(t){var e=f[t];f[t]=function(n){function r(t){return function(){i.emit("propagate",[null,!o],a,!1,!1),o=o||!t}}var o=!1;c(n,function(e,n){Promise.resolve(n).then(r("all"===t),r(!1))});var a=e.apply(f,arguments),s=f.resolve(a);return s}}),["resolve","reject"].forEach(function(t){var e=f[t];f[t]=function(t){var n=e.apply(f,arguments);return t!==n&&i.emit("propagate",[t,!0],n,!1,!1),n}}),f.prototype["catch"]=function(t){return this.then(null,t)},f.prototype=Object.create(f.prototype,{constructor:{value:r}}),c(Object.getOwnPropertyNames(f),function(t,e){try{r[e]=f[e]}catch(n){}}),o.wrapInPlace(f.prototype,"then",function(t){return function(){var e=this,n=o.argsToArray.apply(this,arguments),r=a(e);r.promise=e,n[0]=s(n[0],"cb-",r,null,!1),n[1]=s(n[1],"cb-",r,null,!1);var c=t.apply(this,n);return r.nextPromise=c,i.emit("propagate",[e,!0],c,!1,!1),c}}),i.on("executor-start",function(t){t[0]=s(t[0],"resolve-",this,null,!1),t[1]=s(t[1],"resolve-",this,null,!1)}),i.on("executor-err",function(t,e,n){t[1](n)}),i.on("cb-end",function(t,e,n){i.emit("propagate",[n,!0],this.nextPromise,!1,!1)}),i.on("propagate",function(t,e,n){this.getCtx&&!e||(this.getCtx=function(){if(t instanceof Promise)var e=i.context(t);return e&&e.getCtx?e.getCtx():this})}),r.toString=function(){return""+f})},{}],13:[function(t,e,n){var r=t("ee").get("raf"),o=t("wrap-function")(r),i="equestAnimationFrame";e.exports=r,o.inPlace(window,["r"+i,"mozR"+i,"webkitR"+i,"msR"+i],"raf-"),r.on("raf-start",function(t){t[0]=o(t[0],"fn-")})},{}],14:[function(t,e,n){function r(t,e,n){t[0]=a(t[0],"fn-",null,n)}function o(t,e,n){this.method=n,this.timerDuration=isNaN(t[1])?0:+t[1],t[0]=a(t[0],"fn-",this,n)}var i=t("ee").get("timer"),a=t("wrap-function")(i),s="setTimeout",c="setInterval",f="clearTimeout",u="-start",d="-";e.exports=i,a.inPlace(window,[s,"setImmediate"],s+d),a.inPlace(window,[c],c+d),a.inPlace(window,[f,"clearImmediate"],f+d),i.on(c+u,r),i.on(s+u,o)},{}],15:[function(t,e,n){function r(t,e){d.inPlace(e,["onreadystatechange"],"fn-",s)}function o(){var t=this,e=u.context(t);t.readyState>3&&!e.resolved&&(e.resolved=!0,u.emit("xhr-resolved",[],t)),d.inPlace(t,y,"fn-",s)}function i(t){x.push(t),m&&(E?E.then(a):w?w(a):(R=-R,O.data=R))}function a(){for(var t=0;t<x.length;t++)r([],x[t]);x.length&&(x=[])}function s(t,e){return e}function c(t,e){for(var n in t)e[n]=t[n];return e}t(7);var f=t("ee"),u=f.get("xhr"),d=t("wrap-function")(u),p=t(23),l=NREUM.o,h=l.XHR,m=l.MO,v=l.PR,w=l.SI,g="readystatechange",y=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],x=[];e.exports=u;var b=window.XMLHttpRequest=function(t){var e=new h(t);try{u.emit("new-xhr",[e],e),e.addEventListener(g,o,p(!1))}catch(n){try{u.emit("internal-error",[n])}catch(r){}}return e};if(c(h,b),b.prototype=h.prototype,d.inPlace(b.prototype,["open","send"],"-xhr-",s),u.on("send-xhr-start",function(t,e){r(t,e),i(e)}),u.on("open-xhr-start",r),m){var E=v&&v.resolve();if(!w&&!v){var R=1,O=document.createTextNode(R);new m(a).observe(O,{characterData:!0})}}else f.on("fn-end",function(t){t[0]&&t[0].type===g||a()})},{}],16:[function(t,e,n){function r(t){if(!s(t))return null;var e=window.NREUM;if(!e.loader_config)return null;var n=(e.loader_config.accountID||"").toString()||null,r=(e.loader_config.agentID||"").toString()||null,f=(e.loader_config.trustKey||"").toString()||null;if(!n||!r)return null;var h=l.generateSpanId(),m=l.generateTraceId(),v=Date.now(),w={spanId:h,traceId:m,timestamp:v};return(t.sameOrigin||c(t)&&p())&&(w.traceContextParentHeader=o(h,m),w.traceContextStateHeader=i(h,v,n,r,f)),(t.sameOrigin&&!u()||!t.sameOrigin&&c(t)&&d())&&(w.newrelicHeader=a(h,m,v,n,r,f)),w}function o(t,e){return"00-"+e+"-"+t+"-01"}function i(t,e,n,r,o){var i=0,a="",s=1,c="",f="";return o+"@nr="+i+"-"+s+"-"+n+"-"+r+"-"+t+"-"+a+"-"+c+"-"+f+"-"+e}function a(t,e,n,r,o,i){var a="btoa"in window&&"function"==typeof window.btoa;if(!a)return null;var s={v:[0,1],d:{ty:"Browser",ac:r,ap:o,id:t,tr:e,ti:n}};return i&&r!==i&&(s.d.tk=i),btoa(JSON.stringify(s))}function s(t){return f()&&c(t)}function c(t){var e=!1,n={};if("init"in NREUM&&"distributed_tracing"in NREUM.init&&(n=NREUM.init.distributed_tracing),t.sameOrigin)e=!0;else if(n.allowed_origins instanceof Array)for(var r=0;r<n.allowed_origins.length;r++){var o=h(n.allowed_origins[r]);if(t.hostname===o.hostname&&t.protocol===o.protocol&&t.port===o.port){e=!0;break}}return e}function f(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.enabled}function u(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.exclude_newrelic_header}function d(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&NREUM.init.distributed_tracing.cors_use_newrelic_header!==!1}function p(){return"init"in NREUM&&"distributed_tracing"in NREUM.init&&!!NREUM.init.distributed_tracing.cors_use_tracecontext_headers}var l=t(29),h=t(18);e.exports={generateTracePayload:r,shouldGenerateTrace:s}},{}],17:[function(t,e,n){function r(t){var e=this.params,n=this.metrics;if(!this.ended){this.ended=!0;for(var r=0;r<p;r++)t.removeEventListener(d[r],this.listener,!1);e.aborted||(n.duration=a.now()-this.startTime,this.loadCaptureCalled||4!==t.readyState?null==e.status&&(e.status=0):i(this,t),n.cbTime=this.cbTime,s("xhr",[e,n,this.startTime,this.endTime,"xhr"],this))}}function o(t,e){var n=c(e),r=t.params;r.hostname=n.hostname,r.port=n.port,r.protocol=n.protocol,r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.parsedOrigin=n,t.sameOrigin=n.sameOrigin}function i(t,e){t.params.status=e.status;var n=v(e,t.lastSize);if(n&&(t.metrics.rxSize=n),t.sameOrigin){var r=e.getResponseHeader("X-NewRelic-App-Data");r&&(t.params.cat=r.split(", ").pop())}t.loadCaptureCalled=!0}var a=t("loader");if(a.xhrWrappable&&!a.disabled){var s=t("handle"),c=t(18),f=t(16).generateTracePayload,u=t("ee"),d=["load","error","abort","timeout"],p=d.length,l=t("id"),h=t(24),m=t(22),v=t(19),w=t(23),g=NREUM.o.REQ,y=window.XMLHttpRequest;a.features.xhr=!0,t(15),t(8),u.on("new-xhr",function(t){var e=this;e.totalCbs=0,e.called=0,e.cbTime=0,e.end=r,e.ended=!1,e.xhrGuids={},e.lastSize=null,e.loadCaptureCalled=!1,e.params=this.params||{},e.metrics=this.metrics||{},t.addEventListener("load",function(n){i(e,t)},w(!1)),h&&(h>34||h<10)||t.addEventListener("progress",function(t){e.lastSize=t.loaded},w(!1))}),u.on("open-xhr-start",function(t){this.params={method:t[0]},o(this,t[1]),this.metrics={}}),u.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid);var n=f(this.parsedOrigin);if(n){var r=!1;n.newrelicHeader&&(e.setRequestHeader("newrelic",n.newrelicHeader),r=!0),n.traceContextParentHeader&&(e.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&e.setRequestHeader("tracestate",n.traceContextStateHeader),r=!0),r&&(this.dt=n)}}),u.on("send-xhr-start",function(t,e){var n=this.metrics,r=t[0],o=this;if(n&&r){var i=m(r);i&&(n.txSize=i)}this.startTime=a.now(),this.listener=function(t){try{"abort"!==t.type||o.loadCaptureCalled||(o.params.aborted=!0),("load"!==t.type||o.called===o.totalCbs&&(o.onloadCalled||"function"!=typeof e.onload))&&o.end(e)}catch(n){try{u.emit("internal-error",[n])}catch(r){}}};for(var s=0;s<p;s++)e.addEventListener(d[s],this.listener,w(!1))}),u.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),u.on("xhr-load-added",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),u.on("xhr-load-removed",function(t,e){var n=""+l(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),u.on("xhr-resolved",function(){this.endTime=a.now()}),u.on("addEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-added",[t[1],t[2]],e)}),u.on("removeEventListener-end",function(t,e){e instanceof y&&"load"===t[0]&&u.emit("xhr-load-removed",[t[1],t[2]],e)}),u.on("fn-start",function(t,e,n){e instanceof y&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=a.now()))}),u.on("fn-end",function(t,e){this.xhrCbStart&&u.emit("xhr-cb-time",[a.now()-this.xhrCbStart,this.onload,e],e)}),u.on("fetch-before-start",function(t){function e(t,e){var n=!1;return e.newrelicHeader&&(t.set("newrelic",e.newrelicHeader),n=!0),e.traceContextParentHeader&&(t.set("traceparent",e.traceContextParentHeader),e.traceContextStateHeader&&t.set("tracestate",e.traceContextStateHeader),n=!0),n}var n,r=t[1]||{};"string"==typeof t[0]?n=t[0]:t[0]&&t[0].url?n=t[0].url:window.URL&&t[0]&&t[0]instanceof URL&&(n=t[0].href),n&&(this.parsedOrigin=c(n),this.sameOrigin=this.parsedOrigin.sameOrigin);var o=f(this.parsedOrigin);if(o&&(o.newrelicHeader||o.traceContextParentHeader))if("string"==typeof t[0]||window.URL&&t[0]&&t[0]instanceof URL){var i={};for(var a in r)i[a]=r[a];i.headers=new Headers(r.headers||{}),e(i.headers,o)&&(this.dt=o),t.length>1?t[1]=i:t.push(i)}else t[0]&&t[0].headers&&e(t[0].headers,o)&&(this.dt=o)}),u.on("fetch-start",function(t,e){this.params={},this.metrics={},this.startTime=a.now(),this.dt=e,t.length>=1&&(this.target=t[0]),t.length>=2&&(this.opts=t[1]);var n,r=this.opts||{},i=this.target;"string"==typeof i?n=i:"object"==typeof i&&i instanceof g?n=i.url:window.URL&&"object"==typeof i&&i instanceof URL&&(n=i.href),o(this,n);var s=(""+(i&&i instanceof g&&i.method||r.method||"GET")).toUpperCase();this.params.method=s,this.txSize=m(r.body)||0}),u.on("fetch-done",function(t,e){this.endTime=a.now(),this.params||(this.params={}),this.params.status=e?e.status:0;var n;"string"==typeof this.rxSize&&this.rxSize.length>0&&(n=+this.rxSize);var r={txSize:this.txSize,rxSize:n,duration:a.now()-this.startTime};s("xhr",[this.params,r,this.startTime,this.endTime,"fetch"],this)})}},{}],18:[function(t,e,n){var r={};e.exports=function(t){if(t in r)return r[t];var e=document.createElement("a"),n=window.location,o={};e.href=t,o.port=e.port;var i=e.href.split("://");!o.port&&i[1]&&(o.port=i[1].split("/")[0].split("@").pop().split(":")[1]),o.port&&"0"!==o.port||(o.port="https"===i[0]?"443":"80"),o.hostname=e.hostname||n.hostname,o.pathname=e.pathname,o.protocol=i[0],"/"!==o.pathname.charAt(0)&&(o.pathname="/"+o.pathname);var a=!e.protocol||":"===e.protocol||e.protocol===n.protocol,s=e.hostname===document.domain&&e.port===n.port;return o.sameOrigin=a&&(!e.hostname||s),"/"===o.pathname&&(r[t]=o),o}},{}],19:[function(t,e,n){function r(t,e){var n=t.responseType;return"json"===n&&null!==e?e:"arraybuffer"===n||"blob"===n||"json"===n?o(t.response):"text"===n||""===n||void 0===n?o(t.responseText):void 0}var o=t(22);e.exports=r},{}],20:[function(t,e,n){function r(){}function o(t,e,n,r){return function(){return u.recordSupportability("API/"+e+"/called"),i(t+e,[f.now()].concat(s(arguments)),n?null:this,r),n?void 0:this}}var i=t("handle"),a=t(32),s=t(33),c=t("ee").get("tracer"),f=t("loader"),u=t(25),d=NREUM;"undefined"==typeof window.newrelic&&(newrelic=d);var p=["setPageViewName","setCustomAttribute","setErrorHandler","finished","addToTrace","inlineHit","addRelease"],l="api-",h=l+"ixn-";a(p,function(t,e){d[e]=o(l,e,!0,"api")}),d.addPageAction=o(l,"addPageAction",!0),d.setCurrentRouteName=o(l,"routeName",!0),e.exports=newrelic,d.interaction=function(){return(new r).get()};var m=r.prototype={createTracer:function(t,e){var n={},r=this,o="function"==typeof e;return i(h+"tracer",[f.now(),t,n],r),function(){if(c.emit((o?"":"no-")+"fn-start",[f.now(),r,o],n),o)try{return e.apply(this,arguments)}catch(t){throw c.emit("fn-err",[arguments,this,t],n),t}finally{c.emit("fn-end",[f.now()],n)}}}};a("actionText,setName,setAttribute,save,ignore,onEnd,getContext,end,get".split(","),function(t,e){m[e]=o(h,e)}),newrelic.noticeError=function(t,e){"string"==typeof t&&(t=new Error(t)),u.recordSupportability("API/noticeError/called"),i("err",[t,f.now(),!1,e])}},{}],21:[function(t,e,n){function r(t){if(NREUM.init){for(var e=NREUM.init,n=t.split("."),r=0;r<n.length-1;r++)if(e=e[n[r]],"object"!=typeof e)return;return e=e[n[n.length-1]]}}e.exports={getConfiguration:r}},{}],22:[function(t,e,n){e.exports=function(t){if("string"==typeof t&&t.length)return t.length;if("object"==typeof t){if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if(!("undefined"!=typeof FormData&&t instanceof FormData))try{return JSON.stringify(t).length}catch(e){return}}}},{}],23:[function(t,e,n){var r=!1;try{var o=Object.defineProperty({},"passive",{get:function(){r=!0}});window.addEventListener("testPassive",null,o),window.removeEventListener("testPassive",null,o)}catch(i){}e.exports=function(t){return r?{passive:!0,capture:!!t}:!!t}},{}],24:[function(t,e,n){var r=0,o=navigator.userAgent.match(/Firefox[\/\s](\d+\.\d+)/);o&&(r=+o[1]),e.exports=r},{}],25:[function(t,e,n){function r(t,e){var n=[a,t,{name:t},e];return i("storeMetric",n,null,"api"),n}function o(t,e){var n=[s,t,{name:t},e];return i("storeEventMetrics",n,null,"api"),n}var i=t("handle"),a="sm",s="cm";e.exports={constants:{SUPPORTABILITY_METRIC:a,CUSTOM_METRIC:s},recordSupportability:r,recordCustom:o}},{}],26:[function(t,e,n){function r(){return s.exists&&performance.now?Math.round(performance.now()):(i=Math.max((new Date).getTime(),i))-a}function o(){return i}var i=(new Date).getTime(),a=i,s=t(34);e.exports=r,e.exports.offset=a,e.exports.getLastTimestamp=o},{}],27:[function(t,e,n){function r(t){return!(!t||!t.protocol||"file:"===t.protocol)}e.exports=r},{}],28:[function(t,e,n){function r(t,e){var n=t.getEntries();n.forEach(function(t){"first-paint"===t.name?p("timing",["fp",Math.floor(t.startTime)]):"first-contentful-paint"===t.name&&p("timing",["fcp",Math.floor(t.startTime)])})}function o(t,e){var n=t.getEntries();if(n.length>0){var r=n[n.length-1];if(c&&c<r.startTime)return;p("lcp",[r])}}function i(t){t.getEntries().forEach(function(t){t.hadRecentInput||p("cls",[t])})}function a(t){if(t instanceof v&&!g){var e=Math.round(t.timeStamp),n={type:t.type};e<=l.now()?n.fid=l.now()-e:e>l.offset&&e<=Date.now()?(e-=l.offset,n.fid=l.now()-e):e=l.now(),g=!0,p("timing",["fi",e,n])}}function s(t){"hidden"===t&&(c=l.now(),p("pageHide",[c]))}if(!("init"in NREUM&&"page_view_timing"in NREUM.init&&"enabled"in NREUM.init.page_view_timing&&NREUM.init.page_view_timing.enabled===!1)){var c,f,u,d,p=t("handle"),l=t("loader"),h=t(31),m=t(23),v=NREUM.o.EV;if("PerformanceObserver"in window&&"function"==typeof window.PerformanceObserver){f=new PerformanceObserver(r);try{f.observe({entryTypes:["paint"]})}catch(w){}u=new PerformanceObserver(o);try{u.observe({entryTypes:["largest-contentful-paint"]})}catch(w){}d=new PerformanceObserver(i);try{d.observe({type:"layout-shift",buffered:!0})}catch(w){}}if("addEventListener"in document){var g=!1,y=["click","keydown","mousedown","pointerdown","touchstart"];y.forEach(function(t){document.addEventListener(t,a,m(!1))})}h(s)}},{}],29:[function(t,e,n){function r(){function t(){return e?15&e[n++]:16*Math.random()|0}var e=null,n=0,r=window.crypto||window.msCrypto;r&&r.getRandomValues&&(e=r.getRandomValues(new Uint8Array(31)));for(var o,i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",a="",s=0;s<i.length;s++)o=i[s],"x"===o?a+=t().toString(16):"y"===o?(o=3&t()|8,a+=o.toString(16)):a+=o;return a}function o(){return a(16)}function i(){return a(32)}function a(t){function e(){return n?15&n[r++]:16*Math.random()|0}var n=null,r=0,o=window.crypto||window.msCrypto;o&&o.getRandomValues&&Uint8Array&&(n=o.getRandomValues(new Uint8Array(31)));for(var i=[],a=0;a<t;a++)i.push(e().toString(16));return i.join("")}e.exports={generateUuid:r,generateSpanId:o,generateTraceId:i}},{}],30:[function(t,e,n){function r(t,e){if(!o)return!1;if(t!==o)return!1;if(!e)return!0;if(!i)return!1;for(var n=i.split("."),r=e.split("."),a=0;a<r.length;a++)if(r[a]!==n[a])return!1;return!0}var o=null,i=null,a=/Version\/(\S+)\s+Safari/;if(navigator.userAgent){var s=navigator.userAgent,c=s.match(a);c&&s.indexOf("Chrome")===-1&&s.indexOf("Chromium")===-1&&(o="Safari",i=c[1])}e.exports={agent:o,version:i,match:r}},{}],31:[function(t,e,n){function r(t){function e(){t(s&&document[s]?document[s]:document[i]?"hidden":"visible")}"addEventListener"in document&&a&&document.addEventListener(a,e,o(!1))}var o=t(23);e.exports=r;var i,a,s;"undefined"!=typeof document.hidden?(i="hidden",a="visibilitychange",s="visibilityState"):"undefined"!=typeof document.msHidden?(i="msHidden",a="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(i="webkitHidden",a="webkitvisibilitychange",s="webkitVisibilityState")},{}],32:[function(t,e,n){function r(t,e){var n=[],r="",i=0;for(r in t)o.call(t,r)&&(n[i]=e(r,t[r]),i+=1);return n}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],33:[function(t,e,n){function r(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(o<0?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=r},{}],34:[function(t,e,n){e.exports={exists:"undefined"!=typeof window.performance&&window.performance.timing&&"undefined"!=typeof window.performance.timing.navigationStart}},{}],ee:[function(t,e,n){function r(){}function o(t){function e(t){return t&&t instanceof r?t:t?f(t,c,a):a()}function n(n,r,o,i,a){if(a!==!1&&(a=!0),!l.aborted||i){t&&a&&t(n,r,o);for(var s=e(o),c=m(n),f=c.length,u=0;u<f;u++)c[u].apply(s,r);var p=d[y[n]];return p&&p.push([x,n,r,s]),s}}function i(t,e){g[t]=m(t).concat(e)}function h(t,e){var n=g[t];if(n)for(var r=0;r<n.length;r++)n[r]===e&&n.splice(r,1)}function m(t){return g[t]||[]}function v(t){return p[t]=p[t]||o(n)}function w(t,e){l.aborted||u(t,function(t,n){e=e||"feature",y[n]=e,e in d||(d[e]=[])})}var g={},y={},x={on:i,addEventListener:i,removeEventListener:h,emit:n,get:v,listeners:m,context:e,buffer:w,abort:s,aborted:!1};return x}function i(t){return f(t,c,a)}function a(){return new r}function s(){(d.api||d.feature)&&(l.aborted=!0,d=l.backlog={})}var c="nr@context",f=t("gos"),u=t(32),d={},p={},l=e.exports=o();e.exports.getOrSetContext=i,l.backlog=d},{}],gos:[function(t,e,n){function r(t,e,n){if(o.call(t,e))return t[e];var r=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:r,writable:!0,enumerable:!1}),r}catch(i){}return t[e]=r,r}var o=Object.prototype.hasOwnProperty;e.exports=r},{}],handle:[function(t,e,n){function r(t,e,n,r){o.buffer([t],r),o.emit(t,e,n)}var o=t("ee").get("handle");e.exports=r,r.ee=o},{}],id:[function(t,e,n){function r(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:a(t,i,function(){return o++})}var o=1,i="nr@id",a=t("gos");e.exports=r},{}],loader:[function(t,e,n){function r(){if(!P++){var t=T.info=NREUM.info,e=v.getElementsByTagName("script")[0];if(setTimeout(f.abort,3e4),!(t&&t.licenseKey&&t.applicationID&&e))return f.abort();c(R,function(e,n){t[e]||(t[e]=n)});var n=a();s("mark",["onload",n+T.offset],null,"api"),s("timing",["load",n]);var r=v.createElement("script");0===t.agent.indexOf("http://")||0===t.agent.indexOf("https://")?r.src=t.agent:r.src=h+"://"+t.agent,e.parentNode.insertBefore(r,e)}}function o(){"complete"===v.readyState&&i()}function i(){s("mark",["domContent",a()+T.offset],null,"api")}var a=t(26),s=t("handle"),c=t(32),f=t("ee"),u=t(30),d=t(27),p=t(21),l=t(23),h=p.getConfiguration("ssl")===!1?"http":"https",m=window,v=m.document,w="addEventListener",g="attachEvent",y=m.XMLHttpRequest,x=y&&y.prototype,b=!d(m.location);NREUM.o={ST:setTimeout,SI:m.setImmediate,CT:clearTimeout,XHR:y,REQ:m.Request,EV:m.Event,PR:m.Promise,MO:m.MutationObserver};var E=""+location,R={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-spa-1212.min.js"},O=y&&x&&x[w]&&!/CriOS/.test(navigator.userAgent),T=e.exports={offset:a.getLastTimestamp(),now:a,origin:E,features:{},xhrWrappable:O,userAgent:u,disabled:b};if(!b){t(20),t(28),v[w]?(v[w]("DOMContentLoaded",i,l(!1)),m[w]("load",r,l(!1))):(v[g]("onreadystatechange",o),m[g]("onload",r)),s("mark",["firstbyte",a.getLastTimestamp()],null,"api");var P=0}},{}],"wrap-function":[function(t,e,n){function r(t,e){function n(e,n,r,c,f){function nrWrapper(){var i,a,u,p;try{a=this,i=d(arguments),u="function"==typeof r?r(i,a):r||{}}catch(l){o([l,"",[i,a,c],u],t)}s(n+"start",[i,a,c],u,f);try{return p=e.apply(a,i)}catch(h){throw s(n+"err",[i,a,h],u,f),h}finally{s(n+"end",[i,a,p],u,f)}}return a(e)?e:(n||(n=""),nrWrapper[p]=e,i(e,nrWrapper,t),nrWrapper)}function r(t,e,r,o,i){r||(r="");var s,c,f,u="-"===r.charAt(0);for(f=0;f<e.length;f++)c=e[f],s=t[c],a(s)||(t[c]=n(s,u?c+r:r,o,c,i))}function s(n,r,i,a){if(!h||e){var s=h;h=!0;try{t.emit(n,r,i,e,a)}catch(c){o([c,n,r,i],t)}h=s}}return t||(t=u),n.inPlace=r,n.flag=p,n}function o(t,e){e||(e=u);try{e.emit("internal-error",t)}catch(n){}}function i(t,e,n){if(Object.defineProperty&&Object.keys)try{var r=Object.keys(t);return r.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(i){o([i],n)}for(var a in t)l.call(t,a)&&(e[a]=t[a]);return e}function a(t){return!(t&&t instanceof Function&&t.apply&&!t[p])}function s(t,e){var n=e(t);return n[p]=t,i(t,n,u),n}function c(t,e,n){var r=t[e];t[e]=s(r,n)}function f(){for(var t=arguments.length,e=new Array(t),n=0;n<t;++n)e[n]=arguments[n];return e}var u=t("ee"),d=t(33),p="nr@original",l=Object.prototype.hasOwnProperty,h=!1;e.exports=r,e.exports.wrapFunction=s,e.exports.wrapInPlace=c,e.exports.argsToArray=f},{}]},{},["loader",2,17,5,3,4]); ;NREUM.loader_config={accountID:"804283",trustKey:"804283",agentID:"402703674",licenseKey:"cf99e8d2a3",applicationID:"402703674"} ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"cf99e8d2a3", // Modified this value from the generated script, to pass prod vs dev applicationID: window.location.hostname.includes('journals.plos.org') ? "402703674" : "402694889", sa:1} </script> <!-- End New Relic --> <header> <div id="topslot" class="head-top"> <a id="skip-to-content" tabindex="0" class="button" href="#main-content"> Skip to main content </a> <div class="center"> <div class="title">Advertisement</div> <!-- DoubleClick Ad Zone --> <div class='advertisement' id='div-gpt-ad-1458247671871-0' style='width:728px; height:90px;'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1458247671871-0'); }); </script> </div> </div> </div> <div id="user" class="nav" data-user-management-url="https://community.plos.org"> </div> <div id="pagehdr"> <nav class="nav-main"> <h1 class="logo"> <a href="/ploscompbiol/.">PLOS Computational Biology</a> </h1> <section class="top-bar-section"> <ul class="nav-elements"> <li class="menu-section-header has-dropdown " id="browse"> <span class="menu-section-header-title"> Browse </span> <ul class="menu-section dropdown " id="browse-dropdown-list"> <li> <a href="/ploscompbiol/issue" >Current Issue</a> </li> <li> <a href="/ploscompbiol/volume" >Journal Archive</a> </li> <li> <a href="/ploscompbiol/s/collections" >Collections</a> </li> <li> <a href="/ploscompbiol/s/find-and-read-articles" >Find and Read Articles</a> </li> </ul> </li> <li class="multi-col-parent menu-section-header has-dropdown" id="publish"> Publish <div class="dropdown mega "> <ul class="multi-col" id="publish-dropdown-list"> <li class="menu-section-header " id="submissions"> <span class="menu-section-header-title"> Submissions </span> <ul class="menu-section " id="submissions-dropdown-list"> <li> <a href="/ploscompbiol/s/getting-started" >Getting Started</a> </li> <li> <a href="/ploscompbiol/s/submission-guidelines" >Submission Guidelines</a> </li> <li> <a href="/ploscompbiol/s/figures" >Figures</a> </li> <li> <a href="/ploscompbiol/s/tables" >Tables</a> </li> <li> <a href="/ploscompbiol/s/supporting-information" >Supporting Information</a> </li> <li> <a href="/ploscompbiol/s/latex" >LaTeX</a> </li> <li> <a href="/ploscompbiol/s/other-article-types" >Other Article Types</a> </li> <li> <a href="/ploscompbiol/s/preprints" >Preprints</a> </li> <li> <a href="/ploscompbiol/s/revising-your-manuscript" >Revising Your Manuscript</a> </li> <li> <a href="/ploscompbiol/s/submit-now" >Submit Now</a> </li> </ul> </li> <li class="menu-section-header " id="policies"> <span class="menu-section-header-title"> Policies </span> <ul class="menu-section " id="policies-dropdown-list"> <li> <a href="/ploscompbiol/s/best-practices-in-research-reporting" >Best Practices in Research Reporting</a> </li> <li> <a href="/ploscompbiol/s/human-subjects-research" >Human Subjects Research</a> </li> <li> <a href="/ploscompbiol/s/animal-research" >Animal Research</a> </li> <li> <a href="/ploscompbiol/s/competing-interests" >Competing Interests</a> </li> <li> <a href="/ploscompbiol/s/disclosure-of-funding-sources" >Disclosure of Funding Sources</a> </li> <li> <a href="/ploscompbiol/s/licenses-and-copyright" >Licenses and Copyright</a> </li> <li> <a href="/ploscompbiol/s/data-availability" >Data Availability</a> </li> <li> <a href="/ploscompbiol/s/code-availability" >Code Availability</a> </li> <li> <a href="/ploscompbiol/s/complementary-research" >Complementary Research</a> </li> <li> <a href="/ploscompbiol/s/materials-software-and-code-sharing" >Materials, Software and Code Sharing</a> </li> <li> <a href="/ploscompbiol/s/ethical-publishing-practice" >Ethical Publishing Practice</a> </li> <li> <a href="/ploscompbiol/s/authorship" >Authorship</a> </li> <li> <a href="/ploscompbiol/s/corrections-expressions-of-concern-and-retractions" >Corrections, Expressions of Concern, and Retractions</a> </li> </ul> </li> <li class="menu-section-header " id="manuscript-review-and-publication"> <span class="menu-section-header-title"> Manuscript Review and Publication </span> <ul class="menu-section " id="manuscript-review-and-publication-dropdown-list"> <li> <a href="/ploscompbiol/s/editorial-and-peer-review-process" >Editorial and Peer Review Process</a> </li> <li> <a href="/ploscompbiol/s/reviewer-guidelines" >Guidelines for Reviewers</a> </li> <li> <a href="/ploscompbiol/s/guidelines-for-editors" >Guidelines for Editors</a> </li> <li> <a href="/ploscompbiol/s/accepted-manuscripts" >Accepted Manuscripts</a> </li> <li> <a href="/ploscompbiol/s/comments" >Comments</a> </li> </ul> </li> </ul> </div> </li> <li class="menu-section-header has-dropdown " id="about"> <span class="menu-section-header-title"> About </span> <ul class="menu-section dropdown " id="about-dropdown-list"> <li> <a href="/ploscompbiol/s/journal-information" >Journal Information</a> </li> <li> <a href="/ploscompbiol/s/editors-in-chief" >Editors-in-Chief</a> </li> <li> <a href="/ploscompbiol/s/editorial-board" >Editorial Board</a> </li> <li> <a href="/ploscompbiol/s/publishing-information" >Publishing Information</a> </li> <li> <a href="https://plos.org/publication-fees" >Publication Fees</a> </li> <li> <a href="https://plos.org/press-and-media" >Press and Media</a> </li> <li> <a href="/ploscompbiol/s/contact" >Contact</a> </li> </ul> </li> <script src="/resource/js/vendor/jquery.hoverIntent.js" type="text/javascript"></script> <script src="/resource/js/components/menu_drop.js" type="text/javascript"></script> <script src="/resource/js/components/hover_delay.js" type="text/javascript"></script> <li id="navsearch" class="head-search"> <form name="searchForm" action="/ploscompbiol/search" method="get"> <fieldset> <legend>Search</legend> <label for="search">Search</label> <div class="search-contain"> <input id="search" type="text" name="q" placeholder="SEARCH" required/> <button id="headerSearchButton" type="submit" aria-label="Submit search"> <i title="Submit search" class="search-icon"></i> </button> </div> </fieldset> <input type="hidden" name="filterJournals" value="PLoSCompBiol"/> </form> <a id="advSearch" href="/ploscompbiol/search"> advanced search </a> <script src="/resource/js/components/placeholder_style.js" type="text/javascript"></script> </li> </ul> </section> </nav> </div> </header> <main id="main-content"> <div class="set-grid"> <header class="title-block"> <script src="/resource/js/components/signposts.js" type="text/javascript"></script> <ul id="almSignposts" class="signposts"> <li id="loadingMetrics"> <p>Loading metrics</p> </li> </ul> <script type="text/template" id="signpostsGeneralErrorTemplate"> <li id="metricsError">Article metrics are unavailable at this time. Please try again later.</li> </script> <script type="text/template" id="signpostsNewArticleErrorTemplate"> <li></li><li></li><li id="tooSoon">Article metrics are unavailable for recently published articles.</li> </script> <script type="text/template" id="signpostsTemplate"> <li id="almSaves"> <%= s.numberFormat(saveCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#savedHeader">Save</a> <p class="saves-tip" data-js-tooltip-hover="target"><a href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#savedHeader">Total Mendeley and Citeulike bookmarks.</a></p> </div> </li> <li id="almCitations"> <%= s.numberFormat(citationCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#citedHeader">Citation</a> <p class="citations-tip" data-js-tooltip-hover="target"><a href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#citedHeader">Paper's citation count computed by Dimensions.</a></p> </div> </li> <li id="almViews"> <%= s.numberFormat(viewCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#viewedHeader">View</a> <p class="views-tip" data-js-tooltip-hover="target"><a href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#viewedHeader">PLOS views and downloads.</a></p> </div> </li> <li id="almShares"> <%= s.numberFormat(shareCount, 0) %> <div class="tools" data-js-tooltip-hover="trigger"> <a class="metric-term" href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#discussedHeader">Share</a> <p class="shares-tip" data-js-tooltip-hover="target"><a href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041#discussedHeader">Sum of Facebook, Twitter, Reddit and Wikipedia activity.</a></p> </div> </li> </script> <div class="article-meta"> <div class="classifications"> <p class="license-short" id="licenseShort">Open Access</p> <p class="peer-reviewed" id="peerReviewed">Peer-reviewed</p> <div class="article-type" > <p class="type-article" id="artType">Research Article</p> </div> </div> </div> <div class="article-title-etc"> <div class="title-authors"> <h1 id="artTitle"><?xml version="1.0" encoding="UTF-8"?>Ten simple rules for making a vocabulary FAIR</h1> <ul class="author-list clearfix" data-js-tooltip="tooltip_container" id="author-list"> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="0" class="author-name" > Simon J. D. Cox <span class="email"> </span>,</a> <div id="author-meta-0" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Resources, Writing – original draft, Writing – review & editing </p> <p id="authCorresponding-0"> <span class="email">* E-mail:</span> <a href="mailto:simon.cox@csiro.au">simon.cox@csiro.au</a></p> <p id="authAffiliations-0"><span class="type">Affiliation</span> CSIRO Land and Water, Melbourne, Australia </p> <div> <p class="orcid" id="authOrcid-0"> <span> <a id="connect-orcid-link" href="https://orcid.org/0000-0002-3884-3420" target="_blank" title="ORCID Registry"> <img id="orcid-id-logo" src="/resource/img/orcid_16x16.png" width="16" height="16" alt="ORCID logo"/> https://orcid.org/0000-0002-3884-3420 </a> </span> </p> </div> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose0"> &#x02A2F; </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="1" class="author-name" > Alejandra N. Gonzalez-Beltran,</a> <div id="author-meta-1" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Resources, Writing – original draft, Writing – review & editing </p> <p id="authAffiliations-1"><span class="type">Affiliation</span> Science and Technology Facilities Council, Didcot, United Kingdom </p> <div> <p class="orcid" id="authOrcid-1"> <span> <a id="connect-orcid-link" href="https://orcid.org/0000-0003-3499-8262" target="_blank" title="ORCID Registry"> <img id="orcid-id-logo" src="/resource/img/orcid_16x16.png" width="16" height="16" alt="ORCID logo"/> https://orcid.org/0000-0003-3499-8262 </a> </span> </p> </div> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose1"> &#x02A2F; </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="2" class="author-name" > Barbara Magagna,</a> <div id="author-meta-2" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Writing – review & editing </p> <p id="authAffiliations-2"><span class="type">Affiliation</span> Environment Agency Austria, Wien, Austria </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose2"> &#x02A2F; </a> </div> </li> <li data-js-tooltip="tooltip_trigger" > <a data-author-id="3" class="author-name" > Maria-Cristina Marinescu</a> <div id="author-meta-3" class="author-info" data-js-tooltip="tooltip_target"> <p class="roles" id="authRoles"> <span class="type">Roles</span> Conceptualization, Writing – review & editing </p> <p id="authAffiliations-3"><span class="type">Affiliation</span> Barcelona Supercomputing Center (BSC-CNS), Barcelona, Spain </p> <a data-js-tooltip="tooltip_close" class="close" id="tooltipClose3"> &#x02A2F; </a> </div> </li> </ul> <script src="/resource/js/components/tooltip.js" type="text/javascript"></script> </div> <div id="floatTitleTop" data-js-floater="title_author" class="float-title" role="presentation"> <div class="set-grid"> <div class="float-title-inner"> <h1><?xml version="1.0" encoding="UTF-8"?>Ten simple rules for making a vocabulary FAIR</h1> <ul id="floatAuthorList" data-js-floater="floated_authors"> <li data-float-index="1">Simon J. D. Cox,&nbsp; </li> <li data-float-index="2">Alejandra N. Gonzalez-Beltran,&nbsp; </li> <li data-float-index="3">Barbara Magagna,&nbsp; </li> <li data-float-index="4">Maria-Cristina Marinescu </li> </ul> </div> <div class="logo-close" id="titleTopCloser"> <img src="/resource/img/logo-plos.png" style="height: 2em" alt="PLOS" /> <div class="close-floater" title="close">x</div> </div> </div> </div> <ul class="date-doi"> <li class="revisionList"> <script src="/resource/js/components/revision_menu.js" type="text/javascript"></script> <!-- make ascending order in the FTL --> <div id="revisionMenu"> <form> <select name="revisionLink" id="revisionLink"> <option value="/ploscompbiol/article?id=10.1371/journal.pcbi.1009041&rev=2" selected> Version 2 </option> <option value="/ploscompbiol/article?id=10.1371/journal.pcbi.1009041&rev=1" > Version 1 Uncorrected Proof </option> </select> </form> </div> </li> <li id="artPubDate">Published: June 16, 2021</li> <li id="artDoi"> <a href="https://doi.org/10.1371/journal.pcbi.1009041">https://doi.org/10.1371/journal.pcbi.1009041</a> </li> <li class="flex-spacer"></li> </ul> </div> <div> </div> </header> <section class="article-body"> <ul class="article-tabs"> <li class="tab-title active" id="tabArticle"> <a href="/ploscompbiol/article?id=10.1371/journal.pcbi.1009041" class="article-tab-1">Article</a> </li> <li class="tab-title " id="tabAuthors"> <a href="/ploscompbiol/article/authors?id=10.1371/journal.pcbi.1009041" class="article-tab-2">Authors</a> </li> <li class="tab-title " id="tabMetrics"> <a href="/ploscompbiol/article/metrics?id=10.1371/journal.pcbi.1009041" class="article-tab-3">Metrics</a> </li> <li class="tab-title " id="tabComments"> <a href="/ploscompbiol/article/comments?id=10.1371/journal.pcbi.1009041" class="article-tab-4">Comments</a> </li> <li class="tab-title" id="tabRelated"> <a class="article-tab-5" id="tabRelated-link">Media Coverage</a> <script>$(document).ready(function() { $.getMediaLink("10.1371/journal.pcbi.1009041").then(function (url) { $("#tabRelated-link").attr("href", url) } ) })</script> </li> <li class="tab-title " id="tabPeerReview"> <a href="/ploscompbiol/article/peerReview?id=10.1371/journal.pcbi.1009041" class="article-tab-6">Peer Review</a> </li> </ul> <div class="article-container"> <div id="nav-article"> <ul class="nav-secondary"> <li class="nav-comments" id="nav-comments"> <a href="article/comments?id=10.1371/journal.pcbi.1009041">Reader Comments</a> </li> <li id="nav-figures"><a href="#" data-doi="10.1371/journal.pcbi.1009041">Figures</a></li> </ul> <div id="nav-data-linking" data-data-url=""> </div> </div> <script src="/resource/js/components/scroll.js" type="text/javascript"></script> <script src="/resource/js/components/nav_builder.js" type="text/javascript"></script> <script src="/resource/js/components/floating_nav.js" type="text/javascript"></script> <div id="figure-lightbox-container"></div> <script id="figure-lightbox-template" type="text/template"> <div id="figure-lightbox" class="reveal-modal full" data-reveal aria-hidden="true" role="dialog"> <div class="lb-header"> <h1 id="lb-title"><%= articleTitle %></h1> <div id="lb-authors"> <span>Simon J. D. Cox</span> <span>Alejandra N. Gonzalez-Beltran</span> <span>Barbara Magagna</span> <span>Maria-Cristina Marinescu</span> </div> <div class="lb-close" title="close">&nbsp;</div> </div> <div class="img-container"> <div class="loader"> <i class="fa-spinner"></i> </div> <img class="main-lightbox-image" src=""/> <aside id="figures-list"> <% figureList.each(function (ix, figure) { %> <div class="change-img" data-doi="<%= figure.getAttribute('data-doi') %>"> <img class="aside-figure" src="/ploscompbiol/article/figure/image?size=inline&id=<%= figure.getAttribute('data-doi') %>" /> </div> <% }) %> <div class="dummy-figure"> </div> </aside> </div> <div id="lightbox-footer"> <div id="btns-container" class="lightbox-row <% if(figureList.length <= 1) { print('one-figure-only') } %>"> <div class="fig-btns-container reset-zoom-wrapper left"> <span class="fig-btn reset-zoom-btn">Reset zoom</span> </div> <div class="zoom-slider-container"> <div class="range-slider-container"> <span id="lb-zoom-min"></span> <div class="range-slider round" data-slider data-options="start: 20; end: 200; initial: 20;"> <span class="range-slider-handle" role="slider" tabindex="0"></span> <span class="range-slider-active-segment"></span> <input type="hidden"> </div> <span id="lb-zoom-max"></span> </div> </div> <% if(figureList.length > 1) { %> <div class="fig-btns-container"> <span class="fig-btn all-fig-btn"><i class="icon icon-all"></i> All Figures</span> <span class="fig-btn next-fig-btn"><i class="icon icon-next"></i> Next</span> <span class="fig-btn prev-fig-btn"><i class="icon icon-prev"></i> Previous</span> </div> <% } %> </div> <div id="image-context"> </div> </div> </div> </script> <script id="image-context-template" type="text/template"> <div class="footer-text"> <div id="figure-description-wrapper"> <div id="view-more-wrapper" style="<% descriptionExpanded? print('display:none;') : '' %>"> <span id="figure-title"><%= title %></span> <p id="figure-description"> <%= description %>&nbsp;&nbsp; </p> <span id="view-more">show more<i class="icon-arrow-right"></i></span> </div> <div id="view-less-wrapper" style="<% descriptionExpanded? print('display:inline-block;') : '' %>" > <span id="figure-title"><%= title %></span> <p id="full-figure-description"> <%= description %>&nbsp;&nbsp; <span id="view-less">show less<i class="icon-arrow-left"></i></span> </p> </div> </div> </div> <div id="show-context-container"> <a class="btn show-context" href="<%= showInContext(strippedDoi) %>">Show in Context</a> </div> <div id="download-buttons"> <h3>Download:</h3> <div class="item"> <a href="/ploscompbiol/article/figure/image?size=original&download=&id=<%= doi %>" title="original image"> <span class="download-btn">TIFF</span> </a> <span class="file-size"><%= fileSizes.original %></span> </div> <div class="item"> <a href="/ploscompbiol/article/figure/image?size=large&download=&id=<%= doi %>" title="large image"> <span class="download-btn">PNG</span> </a> <span class="file-size"><%= fileSizes.large %></span> </div> <div class="item"> <a href="/ploscompbiol/article/figure/powerpoint?id=<%= doi %>" title="PowerPoint slide"> <span class="download-btn">PPT</span> </a> </div> </div> </script> <div class="article-content"> <div id="figure-carousel-section"> <h2>Figures</h2> <div id="figure-carousel"> <div class="carousel-wrapper"> <div class="slider"> <div class="carousel-item lightbox-figure" data-doi="10.1371/journal.pcbi.1009041.t001"> <img src="/ploscompbiol/article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t001" loading="lazy" alt="Table 1" /> </div> <div class="carousel-item lightbox-figure" data-doi="10.1371/journal.pcbi.1009041.t002"> <img src="/ploscompbiol/article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t002" loading="lazy" alt="Table 2" /> </div> <div class="carousel-item lightbox-figure" data-doi="10.1371/journal.pcbi.1009041.t003"> <img src="/ploscompbiol/article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t003" loading="lazy" /> </div> <div class="carousel-item lightbox-figure" data-doi="10.1371/journal.pcbi.1009041.t004"> <img src="/ploscompbiol/article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t004" loading="lazy" alt="Table 3" /> </div> </div> </div> <div class="carousel-control"> <span class="button previous"></span> <span class="button next"></span> </div> <div class="carousel-page-buttons"> </div> </div> </div> <script src="/resource/js/vendor/jquery.touchswipe.js" type="text/javascript"></script> <script src="/resource/js/components/figure_carousel.js" type="text/javascript"></script> <script src="/resource/js/vendor/jquery.dotdotdot.js" type="text/javascript"></script> <div class="article-text" id="artText"> <div xmlns:plos="http://plos.org" class="abstract toc-section abstract-type-"><a id="abstract0" name="abstract0" data-toc="abstract0" class="link-target" title="Abstract"></a><h2>Abstract</h2><div class="abstract-content"><a id="article1.front1.article-meta1.abstract1.p1" name="article1.front1.article-meta1.abstract1.p1" class="link-target"></a><p>We present ten simple rules that support converting a legacy vocabulary—a list of terms available in a print-based glossary or in a table not accessible using web standards—into a FAIR vocabulary. Various pathways may be followed to publish the FAIR vocabulary, but we emphasise particularly the goal of providing a globally unique resolvable identifier for each term or concept. A standard representation of the concept should be returned when the individual web identifier is resolved, using SKOS or OWL serialised in an RDF-based representation for machine-interchange and in a web-page for human consumption. Guidelines for vocabulary and term metadata are provided, as well as development and maintenance considerations. The rules are arranged as a stepwise recipe for creating a FAIR vocabulary based on the legacy vocabulary. By following these rules you can achieve the outcome of converting a legacy vocabulary into a standalone FAIR vocabulary, which can be used for unambiguous data annotation. In turn, this increases data interoperability and enables data integration.</p> </div></div><div xmlns:plos="http://plos.org" class="abstract toc-section abstract-type-summary"><a id="abstract1" name="abstract1" data-toc="abstract1" class="link-target" title="Author summary"></a> <h2>Author summary</h2> <div class="abstract-content"><a id="article1.front1.article-meta1.abstract2.p1" name="article1.front1.article-meta1.abstract2.p1" class="link-target"></a><p>We present ten simple rules that support converting a list of terms not currently accessible using web standards into a vocabulary conforming to the FAIR principles–Findable, Accessible, Interoperable and Reusable. In a FAIR vocabulary each term has its own persistent web-identifier, and its definition can be downloaded in both human- and standard machine-readable formats. The goal is to enable terminology to be unambiguously cited within technical datasets, in both the dataset description, or individual fields within the data, so that data can be discovered and integrated. The rules consider arrangements for governance of a terminology alongside the technical aspects related to conversion of (typically) print-based forms to standards-based knowledge representations. The rules are presented in the sequence in which they should be considered in a conversion process.</p> </div></div> <div xmlns:plos="http://plos.org" class="articleinfo"><p><strong>Citation: </strong>Cox SJD, Gonzalez-Beltran AN, Magagna B, Marinescu M-C (2021) Ten simple rules for making a vocabulary FAIR. PLoS Comput Biol 17(6): e1009041. https://doi.org/10.1371/journal.pcbi.1009041</p><p><strong>Editor: </strong>Scott Markel, Dassault Systemes BIOVIA, UNITED STATES</p><p><strong>Received: </strong>November 22, 2020; <strong>Accepted: </strong>May 4, 2021; <strong>Published: </strong> June 16, 2021</p><p><strong>Copyright: </strong> © 2021 Cox et al. This is an open access article distributed under the terms of the <a href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution License</a>, which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited.</p><p><strong>Data Availability: </strong>All relevant data are within the manuscript.</p><p><strong>Funding: </strong>The contribution of SJDC was supported through a CSIRO Strategic Project for engagement with CODATA. The contribution of BM was supported through - eLTERplus, a project funded from the INFRAIA-01-2018-2019 programme of European Union’s Horizon 2020 research and innovation programme under grant agreement No 871128 - OBARIS, an FFG funded project (No 887389) The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.</p><p><strong>Competing interests: </strong> The authors have declared that no competing interests exist.</p></div> <div xmlns:plos="http://plos.org" id="section1" class="section toc-section"><a id="sec001" name="sec001" data-toc="sec001" class="link-target" title="Introduction"></a><h2>Introduction</h2><a id="article1.body1.sec1.p1" name="article1.body1.sec1.p1" class="link-target"></a><p>Environmental sustainability, global pandemics and other natural disasters are some of the challenges we are facing in the 21st century. Addressing these challenges involves analysing vast amounts of data from different sources, which is more effective when these sources are aggregated to find evidence-based solutions. Understanding the data, identifying the terminology used in each dataset and how the terminology in different datasets relates is a prerequisite to enable data integration.</p> <a id="article1.body1.sec1.p2" name="article1.body1.sec1.p2" class="link-target"></a><p>Shared terminology is key to accurate communication and an enabler for data integration. Many organizations and disciplines have a tradition of curating lists of terms to serve various roles, particularly in metadata, column headings, and for some values in datasets. These are often called <em>code-lists</em> or <em>glossaries</em>, and if there is a process to manage them, <em>‘controlled-vocabularies’</em>. Vocabularies may also be structured as hierarchies, thesauri, taxonomies, through to axiomatized ontologies [<a href="#pcbi.1009041.ref001" class="ref-tip">1</a>]. Other sets of terms and codes that are used in data include units of measure, lists of materials, taxa, substances, and reference systems like geologic and dynastic time-scales (which are composed of ordered named intervals).</p> <a id="article1.body1.sec1.p3" name="article1.body1.sec1.p3" class="link-target"></a><p>These vocabularies were typically managed as lists or tables within text-based resources (books and manuals), or sometimes as authority-tables in databases or in spreadsheets, for use within very specific communities and applications. We refer to these as “legacy vocabularies”. However, integration of datasets, both within and across applications, requires that the terminology used in them is interoperable, so that users in the target communities (a) share an understanding of the meaning of terms, and (b) use the same conventions for representing the terms within datasets.</p> <a id="article1.body1.sec1.p4" name="article1.body1.sec1.p4" class="link-target"></a><p>Standard knowledge representation languages make a vocabulary not only useful for humans, but also for machines. A number of guidelines are available for creating and publishing new vocabularies (e.g. [<a href="#pcbi.1009041.ref002" class="ref-tip">2</a>,<a href="#pcbi.1009041.ref003" class="ref-tip">3</a>]). Nevertheless, the legacy vocabularies represent the accumulated consensus of important disciplines and communities. Hence, making those vocabularies FAIR—or Findable, Accessible, Interoperable and Reusable [<a href="#pcbi.1009041.ref004" class="ref-tip">4</a>,<a href="#pcbi.1009041.ref005" class="ref-tip">5</a>]—is a high-value activity that can preserve the embedded domain intuition and knowledge. While controlled-vocabularies were often defined and used within small communities or organizations, FAIR vocabularies can be used in the context of much larger interconnected data and communities, and be actionable by machines.</p> <a id="article1.body1.sec1.p5" name="article1.body1.sec1.p5" class="link-target"></a><p>Our approach to making a vocabulary FAIR is to use Web technology as outlined in the rules below. We focus on the publication of the vocabulary as ‘Linked Data’ which means (i) on the web, with an individual persistent resolvable unique web identifier (web link) per term (i.e. a HTTP (Hypertext Transfer Protocol) IRI (Internationalized Resource Identifier)) (ii) when a term IRI is requested, a machine-readable representation of the term using Semantic Web standards is obtained (see <a href="#pcbi-1009041-t001">Table 1</a> for a summary of how we assess if a vocabulary is FAIR, and <a href="#pcbi.1009041.box001">Box 1</a> for some basic definitions relating to Semantic Web standards <a href="https://www.w3.org/standards/semanticweb/data">https://www.w3.org/standards/semanticweb/data</a>).</p> <a class="link-target" id="pcbi-1009041-t001" name="pcbi-1009041-t001"></a><div class="figure" data-doi="10.1371/journal.pcbi.1009041.t001"><div class="img-box"><a title="Click for larger image" href="article/figure/image?size=medium&amp;id=10.1371/journal.pcbi.1009041.t001" data-doi="10.1371/journal.pcbi.1009041" data-uri="10.1371/journal.pcbi.1009041.t001"><img src="article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t001" alt="thumbnail" class="thumbnail" loading="lazy"></a><div class="expand"></div></div><div class="figure-inline-download"> Download: <ul><li><a href="article/figure/powerpoint?id=10.1371/journal.pcbi.1009041.t001"><div class="definition-label">PPT</div><div class="definition-description">PowerPoint slide</div></a></li><li><a href="article/figure/image?download&amp;size=large&amp;id=10.1371/journal.pcbi.1009041.t001"><div class="definition-label">PNG</div><div class="definition-description">larger image</div></a></li><li><a href="article/figure/image?download&amp;size=original&amp;id=10.1371/journal.pcbi.1009041.t001"><div class="definition-label">TIFF</div><div class="definition-description">original image</div></a></li></ul></div><div class="figcaption"><span>Table 1. </span> Summary of FAIR principles applied to a vocabulary.</div><p class="caption_target"></p><p class="caption_object"><a href="https://doi.org/10.1371/journal.pcbi.1009041.t001"> https://doi.org/10.1371/journal.pcbi.1009041.t001</a></p></div><a name="pcbi.1009041.box001" id="pcbi.1009041.box001" class="link-target"></a><div class="box"> <div id="section1" class="section toc-section"><a id="sec002" name="sec002" class="link-target" title="Box 1. Some basic Semantic Web definitions"></a> <h3>Box 1. Some basic Semantic Web definitions</h3> <a id="article1.body1.sec1.boxed-text1.sec1.p1" name="article1.body1.sec1.boxed-text1.sec1.p1" class="link-target"></a><p>The Resource Description Framework (<strong>RDF</strong>) is the core data model of the Semantic Web. RDF-Schema (<strong>RDFS</strong>) is an extension of RDF and is used for representing simple RDF vocabularies on the Web. Based on RDF, the Web Ontology Language (<strong>OWL</strong>) is a computational logic-based language for ontologies. The Simple Knowledge Organization System (<strong>SKOS</strong>) is a simple OWL ontology to represent Knowledge Organization Systems (<strong>KOS</strong>) such as thesauri, term lists and controlled vocabularies.</p> </div> </div><a id="article1.body1.sec1.p6" name="article1.body1.sec1.p6" class="link-target"></a><p>To make legacy vocabularies FAIR, processes and practices are required for transitioning and adapting vocabularies from traditional forms rooted in print technologies to more broadly accessible modes that are available openly on-demand, as web resources. These have been demonstrated in many projects and services (e.g. [<a href="#pcbi.1009041.ref006" class="ref-tip">6</a>]). Our goal here is to distill guidelines for taking an existing list of terms and converting it to a web-accessible, FAIR vocabulary, and present the guidelines as ‘ten simple rules’.</p> <a id="article1.body1.sec1.p7" name="article1.body1.sec1.p7" class="link-target"></a><p>In this paper we focus on one specific scenario, where:</p> <ol class="order"> <li>there is a community requirement to use agreed terms in data or metadata</li> <li>a suitable vocabulary (list of terms or codes with definitions) is available, hereafter called the <em>legacy vocabulary</em>; it was created by an organisation, person or group of people that we refer as the ‘content custodian’, who may also be maintaining and revising it moving forward</li> <li>the legacy vocabulary is in the form of a print document, a digital document, or in a semi-structured form such as a spreadsheet, comma-separated value file (CSV), database table, or XML document, and is not arranged and published in a FAIR way that allows references to the terms to be resolved to learn what they mean, using standard web technology</li> <li>no other vocabulary that is suitable for the application and acceptable to the community is published in a FAIR way either.</li> </ol><a id="article1.body1.sec1.p8" name="article1.body1.sec1.p8" class="link-target"></a><p>The Ten Simple Rules below describe how to convert that legacy vocabulary into a form that can be understood and linked on the Web, using existing, widely used practices, and also compatible with, and thus potentially able to be integrated with, related FAIR vocabularies. Some of the rules refer explicitly to the main FAIR principles, while others are basic vocabulary prerequisites. This scenario is narrow, but common. The resulting representation may not be axiomatized enough to support automated reasoning and logic operations, but publication in a form that allows specific web references is a significant improvement over the legacy forms.</p> <a id="article1.body1.sec1.p9" name="article1.body1.sec1.p9" class="link-target"></a><p>We provide extensive supplementary material online at <a href="https://fairvocabularies.github.io/examples/">https://fairvocabularies.github.io/examples/</a> in the form of detailed examples taken from real vocabularies that illustrate the rules. It is strongly recommended to consult these examples in order to more fully understand details of our Ten Simple Rules.</p> <a id="article1.body1.sec1.p10" name="article1.body1.sec1.p10" class="link-target"></a><p>This paper is complementary to Ten Simple Rules about vocabulary development [<a href="#pcbi.1009041.ref007" class="ref-tip">7</a>] and vocabulary selection [<a href="#pcbi.1009041.ref008" class="ref-tip">8</a>], and the best practices and recommendations for implementing FAIR vocabularies that primarily apply to new vocabularies rather than legacy ones that need conversion into FAIR [<a href="#pcbi.1009041.ref002" class="ref-tip">2</a>,<a href="#pcbi.1009041.ref003" class="ref-tip">3</a>]. The rules are arranged as a <em>stepwise recipe</em> for creating a FAIR vocabulary based on the legacy vocabulary. A partial alignment to the best practice recommendations is provided after the rules.</p> </div> <div xmlns:plos="http://plos.org" id="section2" class="section toc-section"><a id="sec003" name="sec003" data-toc="sec003" class="link-target" title="Rules"></a><h2>Rules</h2> <div id="section1" class="section toc-section"><a id="sec004" name="sec004" class="link-target" title="Rule 1. Determine the governance arrangements and custodian of the legacy vocabulary"></a> <h3>Rule 1. Determine the governance arrangements and custodian of the legacy vocabulary</h3> <a id="article1.body1.sec2.sec1.p1" name="article1.body1.sec2.sec1.p1" class="link-target"></a><p>Identify the <em>content custodian</em>, which is the agent (i.e. organization or person/people) that was responsible for creating or selecting the list of terms in the legacy vocabulary. They will have expertise in the subject-matter. They may be an individual, a formal or informal committee or working group, or an official organization, such as a government agency, or learned society, and will usually be managing the vocabulary on behalf of a specified community, discipline, organization, and/or jurisdiction.</p> <a id="article1.body1.sec2.sec1.p2" name="article1.body1.sec2.sec1.p2" class="link-target"></a><p>When you have identified the content custodian, it is recommended that you advise them of your plan to repurpose the legacy vocabulary as a FAIR vocabulary, to get their acknowledgement of your initiative. Enrol them in the repurposing process if possible. Find out their planned revision schedule for the legacy vocabulary, so that you can allow for this in your FAIR vocabulary maintenance plan (Rule 10).</p> </div> <div id="section2" class="section toc-section"><a id="sec005" name="sec005" class="link-target" title="Rule 2. Verify that the legacy-vocabulary license allows repurposing, and agree on the license for the FAIR vocabulary"></a> <h3>Rule 2. Verify that the legacy-vocabulary license allows repurposing, and agree on the license for the FAIR vocabulary</h3> <a id="article1.body1.sec2.sec2.p1" name="article1.body1.sec2.sec2.p1" class="link-target"></a><p>Verify that the copyright-holder grants permission for the list of terms to be re-published as ‘Linked Data’ (noting that the copyright-holder is often different to the maintainer or content custodian—see Rule 1).</p> <a id="article1.body1.sec2.sec2.p2" name="article1.body1.sec2.sec2.p2" class="link-target"></a><p>If the source carries a Creative Commons license, then the No Derivatives (ND) options (CC BY-<strong>ND</strong>, CC BY-NC-<strong>ND)</strong> are <strong><em>not</em></strong> ok, since you are developing a ‘derivative product’.</p> <a id="article1.body1.sec2.sec2.p3" name="article1.body1.sec2.sec2.p3" class="link-target"></a><p>The other CC licenses (CC0, and CC BY, CC BY-SA, CC BY-NC, CC BY-NC-SA) are suitable, provided you are also able to meet any BY (attribution), SA (share-alike) and NC (non-commercial) constraints.</p> <a id="article1.body1.sec2.sec2.p4" name="article1.body1.sec2.sec2.p4" class="link-target"></a><p>If the original content uses another type of license, you must analyse it to understand if you are able to produce a derivative product, and what are the conditions for derivation. It may be necessary to contact the copyright-holder directly in order to explain what is planned and get permission.</p> <a id="article1.body1.sec2.sec2.p5" name="article1.body1.sec2.sec2.p5" class="link-target"></a><p>Agree on the license for the FAIR vocabulary, preferably an open license for users (e.g. CC0 or CC-BY).</p> </div> <div id="section3" class="section toc-section"><a id="sec006" name="sec006" class="link-target" title="Rule 3. Check term and definition completeness and consistency in the legacy vocabulary"></a> <h3>Rule 3. Check term and definition completeness and consistency in the legacy vocabulary</h3> <a id="article1.body1.sec2.sec3.p1" name="article1.body1.sec2.sec3.p1" class="link-target"></a><p>Ensure there is at least (i) a unique label and (ii) a description or textual definition for each term in the list. These are the minimum requirements for a useful vocabulary, and the minimum required information for encoding the FAIR vocabulary (Rule 6). Verify that the definitions are unambiguous, and ideally that they are distinct. If definitions overlap, or are missing or ambiguous, consult the custodian of the legacy vocabulary and ensure that the representation follows the reality of the domain (Rule 1), else identify or recruit an expert group to revise, review or provide definitions and sources. Ideally this should be composed of more than one person to allow a quality control cycle. As a last resort check with a public source for definitions such as Wikipedia, DBpedia, or Wikidata.</p> <a id="article1.body1.sec2.sec3.p2" name="article1.body1.sec2.sec3.p2" class="link-target"></a><p>The legacy vocabulary may also contain synonyms, intra-vocabulary relationships such as a broader/narrower hierarchy, specified subsets, and cross-vocabulary mappings. Guidelines to encode all of these elements in a FAIR vocabulary are given in Rule 6.</p> </div> <div id="section4" class="section toc-section"><a id="sec007" name="sec007" class="link-target" title="Rule 4. Establish a traceable maintenance-environment for the FAIR vocabulary content"></a> <h3>Rule 4. Establish a traceable maintenance-environment for the FAIR vocabulary content</h3> <a id="article1.body1.sec2.sec4.p1" name="article1.body1.sec2.sec4.p1" class="link-target"></a><p>It is common to store the reference version of the FAIR vocabulary in a single file, using one of the standard RDF serializations (e.g. Turtle, RDF-XML, JSON-LD). It is strongly recommended to maintain this in a system that allows any changes made in the vocabulary to be easily traced. Thus, we recommend use of a version control system (e.g. BitBucket, GitHub, GitLab). Public access should be allowed, unless the content owner has good reason not to. An issue tracker or ticket system should be used to capture term requests or other proposals by members of the community, and to record the justification for individual changes made by the content custodian.</p> <a id="article1.body1.sec2.sec4.p2" name="article1.body1.sec2.sec4.p2" class="link-target"></a><p>Note that an issue tracker is built into GitHub and GitLab; JIRA or Trac are popular stand-alone options.</p> <a id="article1.body1.sec2.sec4.p3" name="article1.body1.sec2.sec4.p3" class="link-target"></a><p>More details on reflecting changes and revisions to the vocabulary content out to the published FAIR vocabulary are discussed in Rule 10.</p> </div> <div id="section5" class="section toc-section"><a id="sec008" name="sec008" class="link-target" title="Rule 5. Assign a unique and persistent identifier to (a) the vocabulary and (b) each term in the vocabulary"></a> <h3>Rule 5. Assign a unique and persistent identifier to (a) the vocabulary and (b) each term in the vocabulary</h3> <a id="article1.body1.sec2.sec5.p1" name="article1.body1.sec2.sec5.p1" class="link-target"></a><p>Choose a domain name for persistent identifier IRIs for the terms and other vocabulary items (e.g. collections of terms). Those IRIs must resolve to appropriate representations on the web over the lifetime of any datasets that will make use of them, so it should be planned to manage this domain over a 10+ year time period. Since this is longer than many organization names and most organizational structures, domain names based on organizations are generally <em>not</em> suitable, except if they are of organizations specifically created for the purpose of managing vocabularies. Consider existing open solutions for persistent identifiers such as <a href="https://w3id.org/">https://w3id.org</a> or <a href="https://purl.org/">http://purl.org</a> as an alternative to managing your own HTTP server.</p> <a id="article1.body1.sec2.sec5.p2" name="article1.body1.sec2.sec5.p2" class="link-target"></a><p>Choose and document the pattern for individual IRIs that identify terms in the vocabulary [<a href="#pcbi.1009041.ref009" class="ref-tip">9</a>,<a href="#pcbi.1009041.ref010" class="ref-tip">10</a>]. A common pattern is: <a name="pcbi.1009041.e001" id="pcbi.1009041.e001" class="link-target"></a><span class="equation"><img src="article/file?type=thumbnail&amp;id=10.1371/journal.pcbi.1009041.e001" loading="lazy" class="inline-graphic"></span> where {domain} is the long-lasting host for the FAIR vocabulary, {vocab} is a path composed of a sequence of tokens separated by slash characters (‘/’), and {term-id} denotes the individual term, and must be unique in the context of the vocabulary. Some complete IRIs for terms that demonstrate this pattern are</p> <a id="article1.body1.sec2.sec5.p3" name="article1.body1.sec2.sec5.p3" class="link-target"></a><p><a href="http://anzsoil.org/def/au/asls/landform/modal-slope">http://anzsoil.org/def/au/asls/landform/modal-slope</a></p> <a id="article1.body1.sec2.sec5.p4" name="article1.body1.sec2.sec5.p4" class="link-target"></a><p><a href="http://resource.geosciml.org/classifier/ics/ischart/Cambrian">http://resource.geosciml.org/classifier/ics/ischart/Cambrian</a></p> <a id="article1.body1.sec2.sec5.p5" name="article1.body1.sec2.sec5.p5" class="link-target"></a><p><a href="http://vocabs.lter-europe.net/EnvThes/21279">http://vocabs.lter-europe.net/EnvThes/21279</a></p> <a id="article1.body1.sec2.sec5.p6" name="article1.body1.sec2.sec5.p6" class="link-target"></a><p><a href="http://purl.obolibrary.org/obo/ENVO_00000081">http://purl.obolibrary.org/obo/ENVO_00000081</a></p> <a id="article1.body1.sec2.sec5.p7" name="article1.body1.sec2.sec5.p7" class="link-target"></a><p><a href="http://qudt.org/vocab/unit/DEG_C">http://qudt.org/vocab/unit/DEG_C</a></p> <a id="article1.body1.sec2.sec5.p8" name="article1.body1.sec2.sec5.p8" class="link-target"></a><p><a href="http://vocab.nerc.ac.uk/collection/P06/current/UPAA/">http://vocab.nerc.ac.uk/collection/P06/current/UPAA/</a></p> <a id="article1.body1.sec2.sec5.p9" name="article1.body1.sec2.sec5.p9" class="link-target"></a><p>The {term-id} may be an opaque code (e.g.numeric), or it may be based on the term or primary label for each term, or some other rule. For vocabularies with up to a few hundred terms where the meanings do not change over time, use of a label as the basis for a {term-id} may be manageable, and this can be a useful mnemonic for developers and maintainers. However, it is important to consider the stability of the current label, and have a strategy for managing the IRI if a different label becomes preferred for the same concept. For large vocabularies, or when labels may change over time, label-based patterns are difficult to sustain for the {term-id}, and numeric or opaque identifiers are more common [<a href="#pcbi.1009041.ref009" class="ref-tip">9</a>].</p> <a id="article1.body1.sec2.sec5.p10" name="article1.body1.sec2.sec5.p10" class="link-target"></a><p>It is recommended not to embed version information in the path or identifier, as this creates challenges if the same concept persists over multiple versions or releases.</p> <a id="article1.body1.sec2.sec5.p11" name="article1.body1.sec2.sec5.p11" class="link-target"></a><p>It is recommended to avoid long paths. Hierarchical relationships should not be implied by the IRI path, but rather should be recorded explicitly within the representation of the term (see Rule 6).</p> <a id="article1.body1.sec2.sec5.p12" name="article1.body1.sec2.sec5.p12" class="link-target"></a><p>It is recommended to use slash (‘/’) IRIs for large vocabularies, rather than hash (‘#’) IRIs. When a # IRI is requested the entire vocabulary will be returned instead of just a single term. This may be acceptable for a small vocabulary, but is undesirable for large vocabularies [<a href="#pcbi.1009041.ref010" class="ref-tip">10</a>].</p> <a id="article1.body1.sec2.sec5.p13" name="article1.body1.sec2.sec5.p13" class="link-target"></a><p>In Rule 9 we outline how the IRIs should be made resolvable, thus making the vocabulary, and its terms, accessible.</p> <a id="article1.body1.sec2.sec5.p14" name="article1.body1.sec2.sec5.p14" class="link-target"></a><p>For more examples, see the online supplementary material <a href="https://fairvocabularies.github.io/examples/">https://fairvocabularies.github.io/examples/</a></p> </div> <div id="section6" class="section toc-section"><a id="sec009" name="sec009" class="link-target" title="Rule 6. Create machine readable representations of the vocabulary terms"></a> <h3>Rule 6. Create machine readable representations of the vocabulary terms</h3> <a id="article1.body1.sec2.sec6.p1" name="article1.body1.sec2.sec6.p1" class="link-target"></a><p>Convert the vocabulary to semantic standards, using either the Simple Knowledge Organisation System (SKOS) [<a href="#pcbi.1009041.ref011" class="ref-tip">11</a>–<a href="#pcbi.1009041.ref013" class="ref-tip">13</a>] or the Web Ontology Language (OWL) [<a href="#pcbi.1009041.ref014" class="ref-tip">14</a>,<a href="#pcbi.1009041.ref015" class="ref-tip">15</a>], together with elements from other standard vocabularies and ontologies where appropriate (e.g. Dublin Core [<a href="#pcbi.1009041.ref016" class="ref-tip">16</a>,<a href="#pcbi.1009041.ref017" class="ref-tip">17</a>]).</p> <a id="article1.body1.sec2.sec6.p2" name="article1.body1.sec2.sec6.p2" class="link-target"></a><p>The table below details various technical steps and patterns for use of either SKOS or OWL to represent a vocabulary in RDF. There are a number of considerations in making a choice of one or the other of these pathways [<a href="#pcbi.1009041.ref018" class="ref-tip">18</a>]:</p> <ul class="bulleted"> <li>SKOS was designed for sets of definitions optionally arranged in a hierarchy, so nicely fits the primary scenario under consideration here: i.e. conversion of a legacy vocabulary to an RDF-based form using a semi-formal representation. SKOS includes a number of features designed to make the conversion straightforward, including synonyms, codes, subsets, and broader/narrower relationships. However, there are limitations in its logical completeness that are considered weaknesses in some applications;</li> <li>OWL supports axiomatization (based on description logics) for representing formal ontologies, and was designed for a much wider range of applications than the primary scenario. However, the design choices using OWL are complex, and describing them is well beyond the scope of this paper. Nevertheless, a basic OWL pattern is outlined below, with the namespaces limited to core vocabularies. This option most closely parallels SKOS, and is thus suitable for the primary use-case covered by this paper.</li> </ul><a id="article1.body1.sec2.sec6.p3" name="article1.body1.sec2.sec6.p3" class="link-target"></a><p>Other sources provide details on SKOS and OWL, their particular strengths, and how they can be used together (e.g. [<a href="#pcbi.1009041.ref013" class="ref-tip">13</a>,<a href="#pcbi.1009041.ref019" class="ref-tip">19</a>]). We include the OWL option here because a rich OWL representation is a potential future goal for a FAIR vocabulary, so a minimal version is a useful starting point. However, the choice of representation is not critical in this phase of vocabulary formalization.The most important feature is that a unique IRI is used to denote each distinct term (see Rule 5), so that these IRIs can be used in data or metadata. The representation of each term might be changed or supplemented later while retaining the same IRI, and alternative representations or descriptions can be provided to suit each application, as long as they describe the same underlying concept (see Rule 9).</p> <a id="article1.body1.sec2.sec6.p4" name="article1.body1.sec2.sec6.p4" class="link-target"></a><p><a href="#pcbi-1009041-t002">Table 2</a> illustrates basic steps to follow to create a FAIR vocabulary relying on SKOS or OWL (for the namespace prefixes see <a href="#pcbi.1009041.box002">Box 2</a>). The SKOS terminology is standard. For an OWL representation we suggest some common elements, and for more expressive ontologies we recommend investigating OWL and the conventions of the community you want to target.</p> <a class="link-target" id="pcbi-1009041-t002" name="pcbi-1009041-t002"></a><div class="figure" data-doi="10.1371/journal.pcbi.1009041.t002"><div class="img-box"><a title="Click for larger image" href="article/figure/image?size=medium&amp;id=10.1371/journal.pcbi.1009041.t002" data-doi="10.1371/journal.pcbi.1009041" data-uri="10.1371/journal.pcbi.1009041.t002"><img src="article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t002" alt="thumbnail" class="thumbnail" loading="lazy"></a><div class="expand"></div></div><div class="figure-inline-download"> Download: <ul><li><a href="article/figure/powerpoint?id=10.1371/journal.pcbi.1009041.t002"><div class="definition-label">PPT</div><div class="definition-description">PowerPoint slide</div></a></li><li><a href="article/figure/image?download&amp;size=large&amp;id=10.1371/journal.pcbi.1009041.t002"><div class="definition-label">PNG</div><div class="definition-description">larger image</div></a></li><li><a href="article/figure/image?download&amp;size=original&amp;id=10.1371/journal.pcbi.1009041.t002"><div class="definition-label">TIFF</div><div class="definition-description">original image</div></a></li></ul></div><div class="figcaption"><span>Table 2. </span> Steps in the creation of machine-readable definitions.</div><p class="caption_target"></p><p class="caption_object"><a href="https://doi.org/10.1371/journal.pcbi.1009041.t002"> https://doi.org/10.1371/journal.pcbi.1009041.t002</a></p></div><a name="pcbi.1009041.box002" id="pcbi.1009041.box002" class="link-target"></a><div class="box"> <div id="section1" class="section toc-section"><a id="sec010" name="sec010" class="link-target" title="Box 2. Namespace prefixes mentioned in Rule 6"></a> <h3>Box 2. Namespace prefixes mentioned in Rule 6</h3> <a id="article1.body1.sec2.sec6.boxed-text1.sec1.p1" name="article1.body1.sec2.sec6.boxed-text1.sec1.p1" class="link-target"></a><p>dcterms: <a href="http://purl.org/dc/terms/">http://purl.org/dc/terms/</a></p> <a id="article1.body1.sec2.sec6.boxed-text1.sec1.p2" name="article1.body1.sec2.sec6.boxed-text1.sec1.p2" class="link-target"></a><p>owl: <a href="http://www.w3.org/2002/07/owl">http://www.w3.org/2002/07/owl#</a></p> <a id="article1.body1.sec2.sec6.boxed-text1.sec1.p3" name="article1.body1.sec2.sec6.boxed-text1.sec1.p3" class="link-target"></a><p>rdf: <a href="http://www.w3.org/1999/02/22-rdf-syntax-ns">http://www.w3.org/1999/02/22-rdf-syntax-ns#</a></p> <a id="article1.body1.sec2.sec6.boxed-text1.sec1.p4" name="article1.body1.sec2.sec6.boxed-text1.sec1.p4" class="link-target"></a><p>rdfs: <a href="http://www.w3.org/2000/01/rdf-schema">http://www.w3.org/2000/01/rdf-schema#</a></p> <a id="article1.body1.sec2.sec6.boxed-text1.sec1.p5" name="article1.body1.sec2.sec6.boxed-text1.sec1.p5" class="link-target"></a><p>skos: <a href="http://www.w3.org/2004/02/skos/core">http://www.w3.org/2004/02/skos/core#</a></p> </div> </div><a id="article1.body1.sec2.sec6.p5" name="article1.body1.sec2.sec6.p5" class="link-target"></a><p>In <a href="#pcbi.1009041.box003">Box 3</a>. we show an example of both representations side-by-side for the same term (serialized in Turtle[<a href="#pcbi.1009041.ref021" class="ref-tip">21</a>]):</p> <a name="pcbi.1009041.box003" id="pcbi.1009041.box003" class="link-target"></a><div class="box"> <div id="section1" class="section toc-section"><a id="sec011" name="sec011" class="link-target" title="Box 3. SKOS and OWL representations of the same term"></a> <h3>Box 3. SKOS and OWL representations of the same term</h3> <a class="link-target" id="pcbi-1009041-t003" name="pcbi-1009041-t003"></a><div class="figure" data-doi="10.1371/journal.pcbi.1009041.t003"><div class="img-box"><a title="Click for larger image" href="article/figure/image?size=medium&amp;id=10.1371/journal.pcbi.1009041.t003" data-doi="10.1371/journal.pcbi.1009041" data-uri="10.1371/journal.pcbi.1009041.t003"><img src="article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t003" alt="thumbnail" class="thumbnail" loading="lazy"></a><div class="expand"></div></div><div class="figure-inline-download"> Download: <ul><li><a href="article/figure/powerpoint?id=10.1371/journal.pcbi.1009041.t003"><div class="definition-label">PPT</div><div class="definition-description">PowerPoint slide</div></a></li><li><a href="article/figure/image?download&amp;size=large&amp;id=10.1371/journal.pcbi.1009041.t003"><div class="definition-label">PNG</div><div class="definition-description">larger image</div></a></li><li><a href="article/figure/image?download&amp;size=original&amp;id=10.1371/journal.pcbi.1009041.t003"><div class="definition-label">TIFF</div><div class="definition-description">original image</div></a></li></ul></div><div class="figcaption"><span></span></div><p class="caption_target"></p><p class="caption_object"><a href="https://doi.org/10.1371/journal.pcbi.1009041.t003"> https://doi.org/10.1371/journal.pcbi.1009041.t003</a></p></div></div> </div><a id="article1.body1.sec2.sec6.p6" name="article1.body1.sec2.sec6.p6" class="link-target"></a><p>Different approaches will be required for the conversion, depending on the form of the source material.</p> <ul class="bulleted"> <li>Where the original vocabulary is only available as a printed document, scanning, or even rekeying the essential information may be the only practical route; if available as a digital text document, you may be able to copy and paste the information</li> <li>Where the legacy vocabulary is tabulated, either fully or in part, it may be possible to identify a pattern or template from the elements of your vocabulary which will allow you to (fully or partly) automate the creation of the FAIR vocabulary. Tools such as <em>SKOS-Play</em>! or <em>sheet2rdf</em> and <em>OpenRefine</em> can convert spreadsheets to RDF. Links to these, and to tools to convert many other formats to RDF are available at <a href="https://www.w3.org/wiki/ConverterToRdf">https://www.w3.org/wiki/ConverterToRdf</a>.</li> <li><em>qSKOS</em> (<a href="https://qskos.poolparty.biz/">https://qskos.poolparty.biz/</a>) is a useful structure- and quality-checker for SKOS vocabularies, and SKOSify (<a href="https://skosify.readthedocs.io/en/latest/">https://skosify.readthedocs.io/en/latest/</a>) automates some conversion and cleaning operations.</li> <li><em>Ontorat</em> [<a href="#pcbi.1009041.ref022" class="ref-tip">22</a>] and ROBOT [<a href="#pcbi.1009041.ref023" class="ref-tip">23</a>] can be used for generating terms, annotations and axioms of an OWL vocabulary based on ontology design patterns or templates; in addition, ROBOT has other functionality to automate ontology development workflows.</li> </ul><a id="article1.body1.sec2.sec6.p7" name="article1.body1.sec2.sec6.p7" class="link-target"></a><p>Either way, it is recommended to use an RDF/OWL or SKOS IDE (Integrated Development Environment) such as <em>TopBraid</em>, <em>Protégé</em>, <em>VocBench</em>, or <em>PoolParty</em> for data entry, or for tidying up after an automated phase, and for consistency checking.</p> <a id="article1.body1.sec2.sec6.p8" name="article1.body1.sec2.sec6.p8" class="link-target"></a><p>The FAIR vocabulary should represent the legacy vocabulary as closely as possible, so it is <em>not</em> recommended to change the vocabulary content or structure during encoding, even if there appear to be errors or potential improvements. The initial FAIR representation can serve as a baseline for future revisions, while clearly anchored to an archival source. Changes to the content of the legacy and FAIR vocabularies remain the prerogative of the content custodian identified in Rule 1, and the maintenance process described in Rule 10.</p> </div> <div id="section7" class="section toc-section"><a id="sec012" name="sec012" class="link-target" title="Rule 7. Add vocabulary metadata"></a> <h3>Rule 7. Add vocabulary metadata</h3> <a id="article1.body1.sec2.sec7.p1" name="article1.body1.sec2.sec7.p1" class="link-target"></a><p>Add metadata for the vocabulary, by adding metadata elements to the skos:ConceptScheme or owl:Ontology that represent the vocabulary-as-a-whole.</p> <a id="article1.body1.sec2.sec7.p2" name="article1.body1.sec2.sec7.p2" class="link-target"></a><p>The description of the vocabulary must include at least:</p> <ul class="bulleted"> <li>provenance and ownership information (citation of or links to the source, pointers to the organization or community responsible for the content),</li> <li>lifecycle information (creation and update dates, vocabulary status, pointers to the people responsible for the conversion and encoding, version information)</li> <li>Vocabulary license, as agreed in Rule 2</li> </ul><a id="article1.body1.sec2.sec7.p3" name="article1.body1.sec2.sec7.p3" class="link-target"></a><p>Different communities rely on metadata elements as defined by different vocabularies such as Data Catalog Vocabulary (DCAT [<a href="#pcbi.1009041.ref024" class="ref-tip">24</a>]), Linked Open Vocabularies (LOV [<a href="#pcbi.1009041.ref025" class="ref-tip">25</a>]), Ontology Metadata Vocabulary (OMV [<a href="#pcbi.1009041.ref026" class="ref-tip">26</a>]), or the Metadata for Ontology Description and Publication Ontology (MOD [<a href="#pcbi.1009041.ref027" class="ref-tip">27</a>]). OWL includes some built-in annotation properties that are applicable to OWL ontologies (e..g owl:priorVersion, owl:backwardsCompatibleWith, owl:incompatibleWith). The choice of which metadata vocabulary and details about mandatory requirements should be prescribed in policies of the vocabulary repository (Rule 8), as well as documented in the metadata for the vocabulary with full text or a link to a policies document.</p> </div> <div id="section8" class="section toc-section"><a id="sec013" name="sec013" class="link-target" title="Rule 8. Register the vocabulary"></a> <h3>Rule 8. Register the vocabulary</h3> <a id="article1.body1.sec2.sec8.p1" name="article1.body1.sec2.sec8.p1" class="link-target"></a><p>Load or register the encoded content in a vocabulary service or semantic repository, such as Research Vocabularies Australia (RVA) (<a href="https://vocabs.ardc.edu.au/">https://vocabs.ardc.edu.au/</a>) (for SKOS vocabularies), Linked Open Vocabularies (LOV) (<a href="https://lov.linkeddata.es/dataset/lov/">https://lov.linkeddata.es/dataset/lov/</a> [<a href="#pcbi.1009041.ref028" class="ref-tip">28</a>]) (for OWL ontologies and SKOS vocabularies), the ESIP Community Ontology Repository (<a href="https://cor.esipfed.org/">https://cor.esipfed.org/</a>) or BioPortal (<a href="https://bioportal.org/">https://bioportal.org</a>) and its derivatives such as Agroportal (<a href="http://aims.fao.org/agroportal">http://aims.fao.org/agroportal</a>) and Ecoportal (<a href="http://ecoportal.lifewatchitaly.eu/ontologies">http://ecoportal.lifewatchitaly.eu/ontologies</a>) (for OWL ontologies and SKOS vocabularies). If you expect to be maintaining many vocabularies you might establish your own service using one of the software stacks available.</p> <a id="article1.body1.sec2.sec8.p2" name="article1.body1.sec2.sec8.p2" class="link-target"></a><p>You should also deposit release snapshots of the vocabulary in a repository such as Zenodo (<a href="https://zenodo.org/">https://zenodo.org</a>) or Dryad (<a href="https://datadryad.org/stash">https://datadryad.org/stash</a>), or in an institutional data repository available to you. This step will assign a DOI to the vocabulary and will ensure that the vocabulary is indexed in more general search engines. See Rule 4 for recommendations of using a version control system, and consider that there are automated ways to store Github releases in Zenodo (with associated DOI). You may also consider registering the FAIR vocabulary as a ‘standard’ in FAIRsharing (<a href="https://fairsharing.org/">https://fairsharing.org/</a>).</p> <a id="article1.body1.sec2.sec8.p3" name="article1.body1.sec2.sec8.p3" class="link-target"></a><p>Finally, the community for whom the vocabulary is provided (identified in Rule 1) is likely to maintain a listing of community resources, which is often the first place that members of the community would look. Such venues would be a good target for linking to the vocabulary.</p> </div> <div id="section9" class="section toc-section"><a id="sec014" name="sec014" class="link-target" title="Rule 9. Make the vocabulary accessible for humans and machines"></a> <h3>Rule 9. Make the vocabulary accessible for humans and machines</h3> <a id="article1.body1.sec2.sec9.p1" name="article1.body1.sec2.sec9.p1" class="link-target"></a><p>The web identifiers used in the vocabulary should resolve to specific digital objects. Thus, the HTTP server for the vocabulary domain (identified in Rule 5) must be configured so that any request for an IRI denoting a term gets a representation of the individual term from the service that hosts the vocabulary. Use standard HTTP content negotiation to provide access to different representations (using Accept: and Accept-profile: headers [<a href="#pcbi.1009041.ref029" class="ref-tip">29</a>]). The representation should be a web page (if HTML is requested) or a serialized skos:Concept or owl:Class (if RDF is requested). The IRI for the vocabulary-as-a-whole should get a suitable ‘Landing Page’ (if HTML is requested) or a representation of the skos:ConceptScheme or owl:Ontology (if RDF is requested). The HTML representation can be generated automatically with existing tools (e.g. [<a href="#pcbi.1009041.ref030" class="ref-tip">30</a>]). The representation should include metadata and attribution information. (Note that inbuilt metadata means that there is no advantage to licensing the FAIR vocabulary with CC-BY compared with CC0 (see Rule 2).)</p> <a id="article1.body1.sec2.sec9.p2" name="article1.body1.sec2.sec9.p2" class="link-target"></a><p>SPARQL [<a href="#pcbi.1009041.ref031" class="ref-tip">31</a>,<a href="#pcbi.1009041.ref032" class="ref-tip">32</a>] is the standard RDF query interface, so a SPARQL endpoint may be provided to support flexible queries and interactions. A link to the SPARQL endpoint should be provided on the HTML landing pages. The public endpoint should not allow SPARQL Update operations [<a href="#pcbi.1009041.ref033" class="ref-tip">33</a>]. The hosting service may provide other vocabulary Application Programming Interfaces (e.g. RVA provides SISSvoc [<a href="#pcbi.1009041.ref034" class="ref-tip">34</a>]). These should be clearly advertised to the user-community.</p> </div> <div id="section10" class="section toc-section"><a id="sec015" name="sec015" class="link-target" title="Rule 10. Implement a process for publishing revisions of the FAIR vocabulary"></a> <h3>Rule 10. Implement a process for publishing revisions of the FAIR vocabulary</h3> <a id="article1.body1.sec2.sec10.p1" name="article1.body1.sec2.sec10.p1" class="link-target"></a><p>The FAIR vocabulary should be created and maintained so that it reflects the content and updates agreed and issued by the content custodian, so it is important to obtain the maintenance schedule and versioning strategy for the vocabulary from the content custodian (Rule 1).</p> <a id="article1.body1.sec2.sec10.p2" name="article1.body1.sec2.sec10.p2" class="link-target"></a><p>We recommend updating the FAIR vocabulary as soon as practical after the content custodian updates the legacy vocabulary. If the content custodian wishes to maintain the content in its original form (i.e. the legacy vocabulary), then try to arrange for alerts advising you of changes to be issued by the custodian, in order to trigger the process of update of the FAIR vocabulary. However, it may be possible to transition to an arrangement in which the FAIR vocabulary becomes the primary version or ‘point of truth’ for the content, in which case individual revisions should be proposed and tracked in a traceable maintenance environment (see Rule 4). However, this should only be done with the consent of the content custodian. Note that as well as improved tracking of revisions, some kinds of improvement may be supported better in the FAIR representation (see Rule 6) than on the legacy (print-based) platform, including specific relationships between terms, mappings to other vocabularies, and detailed axiomatization of definitions.</p> <a id="article1.body1.sec2.sec10.p3" name="article1.body1.sec2.sec10.p3" class="link-target"></a><p>If revision of the vocabulary is by new releases of the vocabulary-as-a-whole, then status and version information will be in the vocabulary metadata (see Rule 7). If maintenance is continuous, then the per-term metadata should capture its status and version information (see Rule 6). Standard Dublin Core, SKOS and OWL properties that may be useful in versioning include:</p> <ul class="bulleted"> <li>dcterms:created—date or date-time that the vocabulary or term was initially created</li> <li>dcterms:modified—date or date-time that the vocabulary or term was last updated</li> <li>dcterms:isReplacedBy—to point to a superseding vocabulary or term</li> <li>dcterms:replaces—to point to a prior version of a vocabulary or term</li> <li>owl:deprecated = ‘true’ if the vocabulary or term is no longer valid</li> <li>owl:priorVersion—to point to a previous version of a vocabulary</li> <li>owl:versionInfo—general annotations relating to versioning</li> <li>skos:changeNote—modifications to a term relative to prior versions</li> <li>skos:historyNote—past state/use/meaning of a term</li> </ul><a id="article1.body1.sec2.sec10.p4" name="article1.body1.sec2.sec10.p4" class="link-target"></a><p>Do not re-assign or remove identifiers; they are persistently associated with the term to which they were originally assigned (Rule 5). If necessary, you can deprecate or retire an identifier. However, the IRI for every retired and superseded term must remain de-referenceable, as well as for previous versions of the vocabulary, so that references to them still return a result, annotated with the status.</p> <a id="article1.body1.sec2.sec10.p5" name="article1.body1.sec2.sec10.p5" class="link-target"></a><p>Terms that carry over between releases without the definition changing must retain the same IRI. If the IRI were changed, then datasets that use different versions of the same vocabulary cannot interoperate. Consult with the content custodian to clarify the ‘identity-determining’ characteristics of terms, but note that changing relationships (e.g. position in a hierarchy) or the textual definition do not <em>necessarily</em> require changing the identifier (i.e. minting a new IRI) provided that the intention for the concept is still the same.</p> </div> <div id="section11" class="section toc-section"><a id="sec016" name="sec016" class="link-target" title="Alignment with other guidelines"></a> <h3>Alignment with other guidelines</h3> <a id="article1.body1.sec2.sec11.p1" name="article1.body1.sec2.sec11.p1" class="link-target"></a><p>We mentioned existing guidelines that focus primarily on the development of new vocabularies. In <a href="#pcbi-1009041-t004">Table 3</a> we align our Ten Simple Rules with the recommendations and practices from two of these [<a href="#pcbi.1009041.ref002" class="ref-tip">2</a>,<a href="#pcbi.1009041.ref003" class="ref-tip">3</a>] as well as with the W3C Data on the Web Best Practices [<a href="#pcbi.1009041.ref035" class="ref-tip">35</a>]. The alignment is only partial, as the other work goes into more detail on some topics, while some of the concerns discussed in our rules are not addressed in the other work.</p> <a class="link-target" id="pcbi-1009041-t004" name="pcbi-1009041-t004"></a><div class="figure" data-doi="10.1371/journal.pcbi.1009041.t004"><div class="img-box"><a title="Click for larger image" href="article/figure/image?size=medium&amp;id=10.1371/journal.pcbi.1009041.t004" data-doi="10.1371/journal.pcbi.1009041" data-uri="10.1371/journal.pcbi.1009041.t004"><img src="article/figure/image?size=inline&amp;id=10.1371/journal.pcbi.1009041.t004" alt="thumbnail" class="thumbnail" loading="lazy"></a><div class="expand"></div></div><div class="figure-inline-download"> Download: <ul><li><a href="article/figure/powerpoint?id=10.1371/journal.pcbi.1009041.t004"><div class="definition-label">PPT</div><div class="definition-description">PowerPoint slide</div></a></li><li><a href="article/figure/image?download&amp;size=large&amp;id=10.1371/journal.pcbi.1009041.t004"><div class="definition-label">PNG</div><div class="definition-description">larger image</div></a></li><li><a href="article/figure/image?download&amp;size=original&amp;id=10.1371/journal.pcbi.1009041.t004"><div class="definition-label">TIFF</div><div class="definition-description">original image</div></a></li></ul></div><div class="figcaption"><span>Table 3. </span> Alignment of the Ten Simple Rules with some other best practices.</div><p class="caption_target"></p><p class="caption_object"><a href="https://doi.org/10.1371/journal.pcbi.1009041.t004"> https://doi.org/10.1371/journal.pcbi.1009041.t004</a></p></div><a id="article1.body1.sec2.sec11.p2" name="article1.body1.sec2.sec11.p2" class="link-target"></a><p>Note that our Ten Simple Rules are ordered in a natural implementation workflow for the primary scenario, i.e. the conversion of existing vocabularies. This means that some recommendations that are grouped together in other guidelines are separated here. The sequence of Ten Simple Rules is designed for a specific audience, i.e. people assisting domain specialists, neither of whom are semantics or web specialists.</p> </div> </div> <div xmlns:plos="http://plos.org" id="section3" class="section toc-section"><a id="sec017" name="sec017" data-toc="sec017" class="link-target" title="Summary and conclusion"></a><h2>Summary and conclusion</h2><a id="article1.body1.sec3.p1" name="article1.body1.sec3.p1" class="link-target"></a><p>We have presented ten simple rules that support converting a legacy vocabulary—a list of terms available in a print-based glossary or table not accessible using web standards—into a FAIR vocabulary. Various pathways may be followed to publish the FAIR vocabulary, but we emphasise particularly the goal of providing a distinct IRI for each term or concept. A standard representation of the concept should be returned when the individual IRI is de-referenced, using SKOS or OWL serialised in an RDF-based representation for machine-interchange, or in a web-page for human consumption. Guidelines for vocabulary and term metadata are provided, as well as development and maintenance considerations.</p> <a id="article1.body1.sec3.p2" name="article1.body1.sec3.p2" class="link-target"></a><p>By following these rules you can achieve the outcome of converting a legacy vocabulary into a standalone FAIR vocabulary, which can be used for unambiguous data annotation. In turn, this increases data interoperability and enables data integration, which is essential for addressing global challenges such as environmental sustainability, and pandemic and natural disaster response. A set of examples illustrating the application of these rules are provided as supplementary material at <a href="https://fairvocabularies.github.io/examples/">https://fairvocabularies.github.io/examples/</a>. These include environmental definitions that are needed to cover some of the data integration challenges that we referred to in the introduction.</p> <a id="article1.body1.sec3.p3" name="article1.body1.sec3.p3" class="link-target"></a><p>Further steps towards broader interoperability that may be considered, but are beyond the scope of this paper, include:</p> <ul class="bulleted"> <li>relationships to terms and definitions in other FAIR vocabularies</li> <li>patterns for re-use of terms from and subsets of existing FAIR vocabularies</li> <li>supplementation of generic SKOS/OWL encoding with domain-based elements and axiomatization (see examples in the supplementary material)</li> <li>rules for maintenance (expanding on Rules 1, 4 &amp; 10)</li> </ul><a id="article1.body1.sec3.p4" name="article1.body1.sec3.p4" class="link-target"></a><p>These will be addressed in future guidelines.</p> </div> <div xmlns:plos="http://plos.org" class="section toc-section"><a id="ack" name="ack" data-toc="ack" title="Acknowledgments" class="link-target"></a><h2>Acknowledgments</h2> <a id="article1.back1.ack1.p1" name="article1.back1.ack1.p1" class="link-target"></a><p>We thank CODATA (<a href="https://codata.org/">https://codata.org</a>) and the DDI Alliance (<a href="https://ddialliance.org/">https://ddialliance.org/</a>), who organised a Workshop on Cross-domain Metadata at Schloss Dagstuhl in October 2019, where this work was initiated. The FAIR vocabulary practices activity which triggered the preparation of this guideline initially also involved Pier Luigi Buttigieg, Niklas Kolbe, and Dan Brickley.</p> </div><div xmlns:plos="http://plos.org" class="toc-section"><a id="references" name="references" class="link-target" data-toc="references" title="References"></a><h2>References</h2><ol class="references"><li id="ref1"><span class="order">1. </span><a name="pcbi.1009041.ref001" id="pcbi.1009041.ref001" class="link-target"></a>Mcguinness D. Ontologies Come of Age. In: Spinning the Semantic Web: Bringing the World Wide Web to Its Full Potential [Internet]. Wadern, Germany; 2003. p. 171–94. Available from: <a href="https://www.researchgate.net/publication/221024668_Ontologies_Come_of_Age">https://www.researchgate.net/publication/221024668_Ontologies_Come_of_Age</a> <ul class="reflinks"><li><a href="#" data-author="Mcguinness" data-cit="McguinnessD.%20Ontologies%20Come%20of%20Age.%20In%3A%20Spinning%20the%20Semantic%20Web%3A%20Bringing%20the%20World%20Wide%20Web%20to%20Its%20Full%20Potential%20%5BInternet%5D.%20Wadern%2C%20Germany%3B%202003.%20p.%20171%E2%80%9394.%20Available%20from%3A%20https%3A%2F%2Fwww.researchgate.net%2Fpublication%2F221024668_Ontologies_Come_of_Age" data-title="Ontologies%20Come%20of%20Age" target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=Ontologies+Come+of+Age+Mcguinness+2003" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref2"><span class="order">2. </span><a name="pcbi.1009041.ref002" id="pcbi.1009041.ref002" class="link-target"></a>Garijo D, Poveda-Villalón M. Best Practices for Implementing FAIR Vocabularies and Ontologies on the Web. In: Cota G, Daquino M, Pozzato GL, editors. Studies on the Semantic Web [Internet]. IOS Press; 2020 [cited 2021 Jan 7]. Available from: <a href="http://ebooks.iospress.nl/doi/10.3233/SSW200034">http://ebooks.iospress.nl/doi/10.3233/SSW200034</a> <ul class="find-nolinks"></ul></li><li id="ref3"><span class="order">3. </span><a name="pcbi.1009041.ref003" id="pcbi.1009041.ref003" class="link-target"></a>Le Franc Y, Parland-von Essen J, Bonino L, Lehväslaiho H, Coen G, Staiger C. D2.2 FAIR Semantics: First recommendations [Internet]. Zenodo; 2020 Mar [cited 2020 Oct 15]. Available from: <a href="https://zenodo.org/record/3707984">https://zenodo.org/record/3707984</a> <ul class="reflinks"><li><a href="#" data-author="Le%20Franc" data-cit="Le%20FrancY%2C%20Parland-von%20EssenJ%2C%20BoninoL%2C%20Lehv%C3%A4slaihoH%2C%20CoenG%2C%20StaigerC.%20D2.2%20FAIR%20Semantics%3A%20First%20recommendations%20%5BInternet%5D.%20Zenodo%3B%202020%20Mar%20%5Bcited%202020%20Oct%2015%5D.%20Available%20from%3A%20https%3A%2F%2Fzenodo.org%2Frecord%2F3707984" data-title="D2.2%20FAIR%20Semantics%3A%20First%20recommendations" target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=D2.2+FAIR+Semantics%3A+First+recommendations+Le+Franc+2020" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref4"><span class="order">4. </span><a name="pcbi.1009041.ref004" id="pcbi.1009041.ref004" class="link-target"></a>Wilkinson MD, Dumontier M, Aalbersberg IjJ, Appleton G, Axton M, Baak A, et al. The FAIR Guiding Principles for scientific data management and stewardship. Sci Data. 2016 Mar 15;3(1):160018. pmid:26978244 <ul class="reflinks" data-doi="10.1038/sdata.2016.18"><li><a href="https://doi.org/10.1038/sdata.2016.18" data-author="doi-provided" data-cit="doi-provided" data-title="doi-provided" target="_new" title="Go to article"> View Article </a></li><li><a href="http://www.ncbi.nlm.nih.gov/pubmed/26978244" target="_new" title="Go to article in PubMed"> PubMed/NCBI </a></li><li><a href="http://scholar.google.com/scholar?q=The+FAIR+Guiding+Principles+for+scientific+data+management+and+stewardship+Wilkinson+2016" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref5"><span class="order">5. </span><a name="pcbi.1009041.ref005" id="pcbi.1009041.ref005" class="link-target"></a>Poveda-Villalón M, Espinoza-Arias P, Garijo D, Corcho O. Coming to Terms with FAIR Ontologies. In: Keet CM, Dumontier M, editors. Knowledge Engineering and Knowledge Management [Internet]. Cham: Springer International Publishing; 2020 [cited 2021 Jan 28]. p. 255–70. (Lecture Notes in Computer Science; vol. 12387). Available from: <a href="http://link.springer.com/10.1007/978-3-030-61244-3_18">http://link.springer.com/10.1007/978-3-030-61244-3_18</a> pmid:32033027 <ul class="find-nolinks"></ul></li><li id="ref6"><span class="order">6. </span><a name="pcbi.1009041.ref006" id="pcbi.1009041.ref006" class="link-target"></a>Martin P, Magagna B, Liao X, Zhao Z. Semantic Linking of Research Infrastructure Metadata. In: Zhao Z, Hellström M, editors. Towards Interoperable Research Infrastructures for Environmental and Earth Sciences: A Reference Model Guided Approach for Common Challenges [Internet]. Cham: Springer International Publishing; 2020 [cited 2020 Oct 23]. p. 226–46. (Lecture Notes in Computer Science). Available from: <a href="https://doi.org/10.1007/978-3-030-52829-4_13">https://doi.org/10.1007/978-3-030-52829-4_13</a> <ul class="find-nolinks"></ul></li><li id="ref7"><span class="order">7. </span><a name="pcbi.1009041.ref007" id="pcbi.1009041.ref007" class="link-target"></a>Courtot M, Malone J, Mungall CJ. Ten simple rules for biomedical ontology development. In: Proceedings of the Joint International Conference on Biological Ontology and BioCreative [Internet]. Corvallis, Oregon, US: CEUR Workshop Proceedings; 2016. p. 4. Available from: <a href="http://ceur-ws.org/Vol-1747/IT404_ICBO2016.pdf">http://ceur-ws.org/Vol-1747/IT404_ICBO2016.pdf</a> <ul class="find-nolinks"></ul></li><li id="ref8"><span class="order">8. </span><a name="pcbi.1009041.ref008" id="pcbi.1009041.ref008" class="link-target"></a>Malone J, Stevens R, Jupp S, Hancocks T, Parkinson H, Brooksbank C. Ten Simple Rules for Selecting a Bio-ontology. PLOS Comput Biol. 2016 Feb 11;12(2):e1004743. pmid:26867217 <ul class="reflinks" data-doi="10.1371/journal.pcbi.1004743"><li><a href="https://doi.org/10.1371/journal.pcbi.1004743" data-author="doi-provided" data-cit="doi-provided" data-title="doi-provided" target="_new" title="Go to article"> View Article </a></li><li><a href="http://www.ncbi.nlm.nih.gov/pubmed/26867217" target="_new" title="Go to article in PubMed"> PubMed/NCBI </a></li><li><a href="http://scholar.google.com/scholar?q=Ten+Simple+Rules+for+Selecting+a+Bio-ontology+Malone+2016" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref9"><span class="order">9. </span><a name="pcbi.1009041.ref009" id="pcbi.1009041.ref009" class="link-target"></a>McMurry JA, Juty N, Blomberg N, Burdett T, Conlin T, Conte N, et al. Identifiers for the 21st century: How to design, provision, and reuse persistent identifiers to maximize utility and impact of life science data. PLOS Biol. 2017 Jun 29;15(6):e2001414. pmid:28662064 <ul class="reflinks" data-doi="10.1371/journal.pbio.2001414"><li><a href="https://doi.org/10.1371/journal.pbio.2001414" data-author="doi-provided" data-cit="doi-provided" data-title="doi-provided" target="_new" title="Go to article"> View Article </a></li><li><a href="http://www.ncbi.nlm.nih.gov/pubmed/28662064" target="_new" title="Go to article in PubMed"> PubMed/NCBI </a></li><li><a href="http://scholar.google.com/scholar?q=Identifiers+for+the+21st+century%3A+How+to+design%2C+provision%2C+and+reuse+persistent+identifiers+to+maximize+utility+and+impact+of+life+science+data+McMurry+2017" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref10"><span class="order">10. </span><a name="pcbi.1009041.ref010" id="pcbi.1009041.ref010" class="link-target"></a>Berrueta D, Phipps J. Best Practice Recipes for Publishing RDF Vocabularies [Internet]. Cambridge, Mass. USA: World Wide Web Consortium; 2008. Available from: <a href="http://www.w3.org/TR/swbp-vocab-pub/">http://www.w3.org/TR/swbp-vocab-pub/</a> <ul class="find-nolinks"></ul></li><li id="ref11"><span class="order">11. </span><a name="pcbi.1009041.ref011" id="pcbi.1009041.ref011" class="link-target"></a>Isaac A, Summers E. SKOS Simple Knowledge Organization System Primer [Internet]. World Wide Web Consortium; 2009 [cited 2020 Oct 23]. Available from: <a href="https://www.w3.org/TR/skos-primer/">https://www.w3.org/TR/skos-primer/</a> <ul class="find-nolinks"></ul></li><li id="ref12"><span class="order">12. </span><a name="pcbi.1009041.ref012" id="pcbi.1009041.ref012" class="link-target"></a>Miles A, Bechhofer S. SKOS Simple Knowledge Organization System Reference [Internet]. Cambridge, Mass. USA: World Wide Web Consortium; 2009. Available from: <a href="http://www.w3.org/TR/skos-reference/">http://www.w3.org/TR/skos-reference/</a> <ul class="find-nolinks"></ul></li><li id="ref13"><span class="order">13. </span><a name="pcbi.1009041.ref013" id="pcbi.1009041.ref013" class="link-target"></a>Baker T, Bechhofer S, Isaac A, Miles A, Schreiber G, Summers E. Key choices in the design of Simple Knowledge Organization System (SKOS). J Web Semant. 2013 May 1;20:35–49. <ul class="reflinks"><li><a href="#" data-author="Baker" data-cit="BakerT%2C%20BechhoferS%2C%20IsaacA%2C%20MilesA%2C%20SchreiberG%2C%20SummersE.%20Key%20choices%20in%20the%20design%20of%20Simple%20Knowledge%20Organization%20System%20%28SKOS%29.%20J%20Web%20Semant.%202013%20May%201%3B20%3A35%E2%80%9349." data-title="Key%20choices%20in%20the%20design%20of%20Simple%20Knowledge%20Organization%20System%20%28SKOS%29." target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=Key+choices+in+the+design+of+Simple+Knowledge+Organization+System+%28SKOS%29.+Baker+2013" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref14"><span class="order">14. </span><a name="pcbi.1009041.ref014" id="pcbi.1009041.ref014" class="link-target"></a>W3C OWL Working Group. OWL 2 Web Ontology Language Document Overview (Second Edition) [Internet]. W3C Recommendation. Cambridge, Mass. USA: World Wide Web Consortium; 2012. Available from: <a href="http://www.w3.org/TR/owl2-overview/">http://www.w3.org/TR/owl2-overview/</a> <ul class="find-nolinks"></ul></li><li id="ref15"><span class="order">15. </span><a name="pcbi.1009041.ref015" id="pcbi.1009041.ref015" class="link-target"></a>Hitzler P, Krötzsch M, Parsia B, Patel-Schneider PF, Rudolph S. OWL 2 Web Ontology Language Primer (Second Edition) [Internet]. World Wide Web Consortium; 2012 [cited 2020 Oct 23]. Available from: <a href="https://www.w3.org/TR/owl-primer/">https://www.w3.org/TR/owl-primer/</a> <ul class="find-nolinks"></ul></li><li id="ref16"><span class="order">16. </span><a name="pcbi.1009041.ref016" id="pcbi.1009041.ref016" class="link-target"></a>Kunze J, Baker T. The Dublin Core Metadata Element Set [Internet]. Vol. 5013, IETF RFC. Internet Engineering Task Force; 2007 [cited 2014 Mar 30]. Available from: <a href="http://dublincore.org/documents/dces/">http://dublincore.org/documents/dces/</a> <a href="http://www.ietf.org/rfc/rfc5013.txt">http://www.ietf.org/rfc/rfc5013.txt</a> <ul class="find-nolinks"></ul></li><li id="ref17"><span class="order">17. </span><a name="pcbi.1009041.ref017" id="pcbi.1009041.ref017" class="link-target"></a>DCMI Usage Board. DCMI Metadata Terms [Internet]. 2020 [cited 2020 Oct 23]. Available from: <a href="https://dublincore.org/specifications/dublin-core/dcmi-terms/">https://dublincore.org/specifications/dublin-core/dcmi-terms/</a> <ul class="find-nolinks"></ul></li><li id="ref18"><span class="order">18. </span><a name="pcbi.1009041.ref018" id="pcbi.1009041.ref018" class="link-target"></a>Bechhofer S, Miles A. Using OWL and SKOS [Internet]. 2008 [cited 2020 Oct 23]. Available from: <a href="https://www.w3.org/2006/07/SWD/SKOS/skos-and-owl/master.html">https://www.w3.org/2006/07/SWD/SKOS/skos-and-owl/master.html</a> <ul class="find-nolinks"></ul></li><li id="ref19"><span class="order">19. </span><a name="pcbi.1009041.ref019" id="pcbi.1009041.ref019" class="link-target"></a>Noy NF, McGuinness DL. Ontology Development 101: A Guide to Creating Your First Ontology [Internet]. Available from: <a href="https://protegewiki.stanford.edu/wiki/Ontology101">https://protegewiki.stanford.edu/wiki/Ontology101</a> <ul class="find-nolinks"></ul></li><li id="ref20"><span class="order">20. </span><a name="pcbi.1009041.ref020" id="pcbi.1009041.ref020" class="link-target"></a>Cyganiak R, Wood D, Lanthaler M. RDF 1.1 Concepts and Abstract Syntax [Internet]. W3C Recommendation. 2014. Available from: <a href="https://www.w3.org/TR/rdf11-concepts/">https://www.w3.org/TR/rdf11-concepts/</a> <ul class="reflinks"><li><a href="#" data-author="Cyganiak" data-cit="CyganiakR%2C%20WoodD%2C%20LanthalerM.%20RDF%201.1%20Concepts%20and%20Abstract%20Syntax%20%5BInternet%5D.%20W3C%20Recommendation.%202014.%20Available%20from%3A%20https%3A%2F%2Fwww.w3.org%2FTR%2Frdf11-concepts%2F" data-title="RDF%201.1%20Concepts%20and%20Abstract%20Syntax" target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=RDF+1.1+Concepts+and+Abstract+Syntax+Cyganiak+2014" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref21"><span class="order">21. </span><a name="pcbi.1009041.ref021" id="pcbi.1009041.ref021" class="link-target"></a>Beckett D, Berners-Lee T, Prud’hommeaux E, Carothers G. RDF 1.1 Turtle [Internet]. W3C Recommendation. World Wide Web Consortium; 2014. Available from: <a href="https://www.w3.org/TR/turtle/">https://www.w3.org/TR/turtle/</a> <ul class="find-nolinks"></ul></li><li id="ref22"><span class="order">22. </span><a name="pcbi.1009041.ref022" id="pcbi.1009041.ref022" class="link-target"></a>Xiang Z, Zheng J, Lin Y, He Y. Ontorat: automatic generation of new ontology terms, annotations, and axioms based on ontology design patterns. J Biomed Semant. 2015 Jan 9;6(1):4. <ul class="reflinks"><li><a href="#" data-author="Xiang" data-cit="XiangZ%2C%20ZhengJ%2C%20LinY%2C%20HeY.%20Ontorat%3A%20automatic%20generation%20of%20new%20ontology%20terms%2C%20annotations%2C%20and%20axioms%20based%20on%20ontology%20design%20patterns.%20J%20Biomed%20Semant.%202015%20Jan%209%3B6%281%29%3A4." data-title="Ontorat%3A%20automatic%20generation%20of%20new%20ontology%20terms%2C%20annotations%2C%20and%20axioms%20based%20on%20ontology%20design%20patterns" target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=Ontorat%3A+automatic+generation+of+new+ontology+terms%2C+annotations%2C+and+axioms+based+on+ontology+design+patterns+Xiang+2015" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref23"><span class="order">23. </span><a name="pcbi.1009041.ref023" id="pcbi.1009041.ref023" class="link-target"></a>Jackson RC, Balhoff JP, Douglass E, Harris NL, Mungall CJ, Overton JA. ROBOT: A Tool for Automating Ontology Workflows. BMC Bioinformatics. 2019 Jul 29;20(1):407. pmid:31357927 <ul class="reflinks" data-doi="10.1186/s12859-019-3002-3"><li><a href="https://doi.org/10.1186/s12859-019-3002-3" data-author="doi-provided" data-cit="doi-provided" data-title="doi-provided" target="_new" title="Go to article"> View Article </a></li><li><a href="http://www.ncbi.nlm.nih.gov/pubmed/31357927" target="_new" title="Go to article in PubMed"> PubMed/NCBI </a></li><li><a href="http://scholar.google.com/scholar?q=ROBOT%3A+A+Tool+for+Automating+Ontology+Workflows+Jackson+2019" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref24"><span class="order">24. </span><a name="pcbi.1009041.ref024" id="pcbi.1009041.ref024" class="link-target"></a>Albertoni R, Browning D, Cox SJD, Gonzalez-Beltran A, Perego A, Winstanley P. Data Catalog Vocabulary (DCAT)—Version 2 [Internet]. World Wide Web Consortium; 2020 [cited 2020 Oct 23]. Available from: <a href="https://www.w3.org/TR/vocab-dcat/">https://www.w3.org/TR/vocab-dcat/</a> <ul class="find-nolinks"></ul></li><li id="ref25"><span class="order">25. </span><a name="pcbi.1009041.ref025" id="pcbi.1009041.ref025" class="link-target"></a>Vandenbussche P-Y, Vatant B. Metadata Recommendations For Linked Open Data Vocabularies [Internet]. 2012 [cited 2020 Oct 27] p. 4. Available from: <a href="https://lov.linkeddata.es/Recommendations_Vocabulary_Design.pdf">https://lov.linkeddata.es/Recommendations_Vocabulary_Design.pdf</a> <ul class="reflinks"><li><a href="#" data-author="Vandenbussche" data-cit="VandenbusscheP-Y%2C%20VatantB.%20Metadata%20Recommendations%20For%20Linked%20Open%20Data%20Vocabularies%20%5BInternet%5D.%202012%20%5Bcited%202020%20Oct%2027%5D%20p.%204.%20Available%20from%3A%20https%3A%2F%2Flov.linkeddata.es%2FRecommendations_Vocabulary_Design.pdf" data-title="Metadata%20Recommendations%20For%20Linked%20Open%20Data%20Vocabularies" target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=Metadata+Recommendations+For+Linked+Open+Data+Vocabularies+Vandenbussche+2012" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref26"><span class="order">26. </span><a name="pcbi.1009041.ref026" id="pcbi.1009041.ref026" class="link-target"></a>Hartmann J, Palma R, Sure Y, Suárez-Figueroa MC, Haase P, Gómez-Pérez A, et al. Ontology Metadata Vocabulary and Applications. In: Meersman R, Tari Z, Herrero P, editors. On the Move to Meaningful Internet Systems 2005: OTM 2005 Workshops. Berlin, Heidelberg: Springer; 2005. p. 906–15. (Lecture Notes in Computer Science). <ul class="find-nolinks"></ul></li><li id="ref27"><span class="order">27. </span><a name="pcbi.1009041.ref027" id="pcbi.1009041.ref027" class="link-target"></a>Dutta B, Toulet A, Emonet V, Jonquet C. New Generation Metadata Vocabulary for Ontology Description and Publication. In: Garoufallou E, Virkus S, Siatri R, Koutsomiha D, editors. Metadata and Semantic Research. Cham: Springer International Publishing; 2017. p. 173–85. (Communications in Computer and Information Science). <ul class="find-nolinks"></ul></li><li id="ref28"><span class="order">28. </span><a name="pcbi.1009041.ref028" id="pcbi.1009041.ref028" class="link-target"></a>Vandenbussche P-Y, Atemezing GA, Poveda-Villalón M, Vatant B. Linked Open Vocabularies (LOV): A gateway to reusable semantic vocabularies on the Web. Semantic Web. 2016;8(3):437–52. <ul class="reflinks"><li><a href="#" data-author="Vandenbussche" data-cit="VandenbusscheP-Y%2C%20AtemezingGA%2C%20Poveda-Villal%C3%B3nM%2C%20VatantB.%20Linked%20Open%20Vocabularies%20%28LOV%29%3A%20A%20gateway%20to%20reusable%20semantic%20vocabularies%20on%20the%20Web.%20Semantic%20Web.%202016%3B8%283%29%3A437%E2%80%9352." data-title="Linked%20Open%20Vocabularies%20%28LOV%29%3A%20A%20gateway%20to%20reusable%20semantic%20vocabularies%20on%20the%20Web" target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=Linked+Open+Vocabularies+%28LOV%29%3A+A+gateway+to+reusable+semantic+vocabularies+on+the+Web+Vandenbussche+2016" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref29"><span class="order">29. </span><a name="pcbi.1009041.ref029" id="pcbi.1009041.ref029" class="link-target"></a>Svensson L. Indicating, Discovering, Negotiating, and Writing Profiled Representations [Internet]. IETF; 2020 Apr [cited 2020 Oct 23]. Available from: <a href="https://profilenegotiation.github.io/I-D-Profile-Negotiation/I-D-Profile-Negotiation">https://profilenegotiation.github.io/I-D-Profile-Negotiation/I-D-Profile-Negotiation</a> <ul class="find-nolinks"></ul></li><li id="ref30"><span class="order">30. </span><a name="pcbi.1009041.ref030" id="pcbi.1009041.ref030" class="link-target"></a>Garijo D. WIDOCO: A Wizard for Documenting Ontologies. In: d’Amato C, Fernandez M, Tamma V, Lecue F, Cudré-Mauroux P, Sequeda J, et al., editors. The Semantic Web–ISWC 2017. Cham: Springer International Publishing; 2017. p. 94–102. <ul class="find-nolinks"></ul></li><li id="ref31"><span class="order">31. </span><a name="pcbi.1009041.ref031" id="pcbi.1009041.ref031" class="link-target"></a>Feigenbaum L, Williams GT, Clark KG, Torres E. SPARQL 1.1 Protocol [Internet]. World Wide Web Consortium; 2013 [cited 2020 Oct 23]. Available from: <a href="https://www.w3.org/TR/sparql11-protocol/">https://www.w3.org/TR/sparql11-protocol/</a> <ul class="find-nolinks"></ul></li><li id="ref32"><span class="order">32. </span><a name="pcbi.1009041.ref032" id="pcbi.1009041.ref032" class="link-target"></a>Harris S, Seaborne A. SPARQL 1.1 Query Language [Internet]. World Wide Web Consortium; 2013 [cited 2020 Oct 23]. Available from: <a href="https://www.w3.org/TR/sparql11-query/">https://www.w3.org/TR/sparql11-query/</a> <ul class="find-nolinks"></ul></li><li id="ref33"><span class="order">33. </span><a name="pcbi.1009041.ref033" id="pcbi.1009041.ref033" class="link-target"></a>Gearon P, Passant A, Polleres A. SPARQL 1.1 Update [Internet]. World Wide Web Consortium; 2013 [cited 2020 Oct 23]. Available from: <a href="https://www.w3.org/TR/sparql11-update/">https://www.w3.org/TR/sparql11-update/</a> <ul class="find-nolinks"></ul></li><li id="ref34"><span class="order">34. </span><a name="pcbi.1009041.ref034" id="pcbi.1009041.ref034" class="link-target"></a>Cox SJD, Yu J, Rankine T. SISSVoc: A Linked Data API for access to SKOS vocabularies. Semantic Web J. 2016;7(1):9–24. <ul class="reflinks"><li><a href="#" data-author="Cox" data-cit="CoxSJD%2C%20YuJ%2C%20RankineT.%20SISSVoc%3A%20A%20Linked%20Data%20API%20for%20access%20to%20SKOS%20vocabularies.%20Semantic%20Web%20J.%202016%3B7%281%29%3A9%E2%80%9324." data-title="SISSVoc%3A%20A%20Linked%20Data%20API%20for%20access%20to%20SKOS%20vocabularies" target="_new" title="Go to article in CrossRef"> View Article </a></li><li><a href="http://scholar.google.com/scholar?q=SISSVoc%3A+A+Linked+Data+API+for+access+to+SKOS+vocabularies+Cox+2016" target="_new" title="Go to article in Google Scholar"> Google Scholar </a></li></ul></li><li id="ref35"><span class="order">35. </span><a name="pcbi.1009041.ref035" id="pcbi.1009041.ref035" class="link-target"></a>Lóscio BF, Burle C, Calegari N. Data on the Web Best Practices [Internet]. World Wide Web Consortium; 2017 Jan [cited 2020 Oct 28]. Available from: <a href="https://www.w3.org/TR/dwbp/">https://www.w3.org/TR/dwbp/</a> <ul class="find-nolinks"></ul></li></ol></div> <div class="ref-tooltip"> <div class="ref_tooltip-content"> </div> </div> </div> </div> </div> </section> <aside class="article-aside"> <!--[if IE 9]> <style> .dload-xml {margin-top: 38px} </style> <![endif]--> <div class="dload-menu"> <div class="dload-pdf"> <a href="/ploscompbiol/article/file?id=10.1371/journal.pcbi.1009041&type=printable" id="downloadPdf" target="_blank">Download PDF</a> </div> <div data-js-tooltip-hover="trigger" class="dload-hover">&nbsp; <ul class="dload-xml" data-js-tooltip-hover="target"> <li><a href="/ploscompbiol/article/citation?id=10.1371/journal.pcbi.1009041" id="downloadCitation">Citation</a></li> <li><a href="/ploscompbiol/article/file?id=10.1371/journal.pcbi.1009041&type=manuscript" id="downloadXml">XML</a> </li> </ul> </div> </div> <div class="aside-container"> <div class="print-article" id="printArticle" data-js-tooltip-hover="trigger"> <a href="#" onclick="window.print(); return false;" class="preventDefault" id="printBrowser">Print</a> </div> <div class="share-article" id="shareArticle" data-js-tooltip-hover="trigger"> Share <ul data-js-tooltip-hover="target" class="share-options" id="share-options"> <li><a href="https://www.reddit.com/submit?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pcbi.1009041" id="shareReddit" target="_blank" title="Submit to Reddit"><img src="/resource/img/icon.reddit.16.png" width="16" height="16" alt="Reddit">Reddit</a></li> <li><a href="https://www.facebook.com/share.php?u=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pcbi.1009041&t=Ten simple rules for making a vocabulary FAIR" id="shareFacebook" target="_blank" title="Share on Facebook"><img src="/resource/img/icon.fb.16.png" width="16" height="16" alt="Facebook">Facebook</a></li> <li><a href="https://www.linkedin.com/shareArticle?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pcbi.1009041&title=Ten simple rules for making a vocabulary FAIR&summary=Checkout this article I found at PLOS" id="shareLinkedIn" target="_blank" title="Add to LinkedIn"><img src="/resource/img/icon.linkedin.16.png" width="16" height="16" alt="LinkedIn">LinkedIn</a></li> <li><a href="https://www.mendeley.com/import/?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pcbi.1009041" id="shareMendeley" target="_blank" title="Add to Mendeley"><img src="/resource/img/icon.mendeley.16.png" width="16" height="16" alt="Mendeley">Mendeley</a></li> <li><a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pcbi.1009041&text=%23PLOSCompBio%3A%20Ten simple rules for making a vocabulary FAIR" target="_blank" title="share on Twitter" id="twitter-share-link"><img src="/resource/img/icon.twtr.16.png" width="16" height="16" alt="Twitter">Twitter</a></li> <li><a href="mailto:?subject=Ten simple rules for making a vocabulary FAIR&body=I%20thought%20you%20would%20find%20this%20article%20interesting.%20From%20PLOS Computational Biology:%20https%3A%2F%2Fdx.plos.org%2F10.1371%2Fjournal.pcbi.1009041" id="shareEmail" rel="noreferrer" aria-label="Email"><img src="/resource/img/icon.email.16.png" width="16" height="16" alt="Email">Email</a></li> <script src="/resource/js/components/tweet140.js" type="text/javascript"></script> </ul> </div> </div>   <!-- Crossmark 2.0 widget --> <script src="https://crossmark-cdn.crossref.org/widget/v2.0/widget.js"></script> <a aria-label="Check for updates via CrossMark" data-target="crossmark"> <img alt="Check for updates via CrossMark" width="150" src="https://crossmark-cdn.crossref.org/widget/v2.0/logos/CROSSMARK_BW_horizontal.svg"> </a> <!-- End Crossmark 2.0 widget --> <div class="aside-container collections-aside-container"><!-- React Magic --></div> <div class="skyscraper-container"> <div class="title">Advertisement</div> <!-- DoubleClick Ad Zone --> <div class='advertisement' id='div-gpt-ad-1458247671871-1' style='width:160px; height:600px;'> <script type='text/javascript'> googletag.cmd.push(function() { googletag.display('div-gpt-ad-1458247671871-1'); }); </script> </div> </div> <div class="subject-areas-container"> <h3>Subject Areas <div id="subjInfo">?</div> <div id="subjInfoText"> <p>For more information about PLOS Subject Areas, click <a href="https://github.com/PLOS/plos-thesaurus/blob/master/README.md" target="_blank" title="Link opens in new window">here</a>.</p> <span class="inline-intro">We want your feedback.</span> Do these Subject Areas make sense for this article? Click the target next to the incorrect Subject Area and let us know. Thanks for your help! </div> </h3> <ul id="subjectList"> <li> <a class="taxo-term" title="Search for articles about Ontologies" href="/ploscompbiol/search?filterSubjects=Ontologies&filterJournals=PLoSCompBiol&q=">Ontologies</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Ontologies"><p class="taxo-explain">Is the Subject Area <strong>"Ontologies"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Owls" href="/ploscompbiol/search?filterSubjects=Owls&filterJournals=PLoSCompBiol&q=">Owls</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Owls"><p class="taxo-explain">Is the Subject Area <strong>"Owls"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Metadata" href="/ploscompbiol/search?filterSubjects=Metadata&filterJournals=PLoSCompBiol&q=">Metadata</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Metadata"><p class="taxo-explain">Is the Subject Area <strong>"Metadata"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Data management" href="/ploscompbiol/search?filterSubjects=Data+management&filterJournals=PLoSCompBiol&q=">Data management</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Data management"><p class="taxo-explain">Is the Subject Area <strong>"Data management"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Data visualization" href="/ploscompbiol/search?filterSubjects=Data+visualization&filterJournals=PLoSCompBiol&q=">Data visualization</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Data visualization"><p class="taxo-explain">Is the Subject Area <strong>"Data visualization"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Controlled vocabularies" href="/ploscompbiol/search?filterSubjects=Controlled+vocabularies&filterJournals=PLoSCompBiol&q=">Controlled vocabularies</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Controlled vocabularies"><p class="taxo-explain">Is the Subject Area <strong>"Controlled vocabularies"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Metallic mercury" href="/ploscompbiol/search?filterSubjects=Metallic+mercury&filterJournals=PLoSCompBiol&q=">Metallic mercury</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Metallic mercury"><p class="taxo-explain">Is the Subject Area <strong>"Metallic mercury"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> <li> <a class="taxo-term" title="Search for articles about Semantics" href="/ploscompbiol/search?filterSubjects=Semantics&filterJournals=PLoSCompBiol&q=">Semantics</a> <span class="taxo-flag">&nbsp;</span> <div class="taxo-tooltip" data-categoryname="Semantics"><p class="taxo-explain">Is the Subject Area <strong>"Semantics"</strong> applicable to this article? <button id="noFlag" data-action="remove">Yes</button> <button id="flagIt" value="flagno" data-action="add">No</button></p> <p class="taxo-confirm">Thanks for your feedback.</p> </div> </li> </ul> </div> <div id="subjectErrors"></div> </aside> </div> </main> <footer id="pageftr"> <div class="row"> <div class="block x-small"> <ul class="nav nav-secondary"> <li class="ftr-header"><a href="https://plos.org/our-journals/">Publications</a></li> <li><a href="/plosbiology/" id="ftr-bio">PLOS Biology</a></li> <li><a href="/climate/" id="ftr-climate">PLOS Climate</a></li> <li><a href="/complexsystems/" id="ftr-complex-systems">PLOS Complex Systems</a></li> <li><a href="/ploscompbiol/" id="ftr-compbio">PLOS Computational Biology</a></li> <li><a href="/digitalhealth/" id="ftr-digitalhealth">PLOS Digital Health</a></li> <li><a href="/plosgenetics/" id="ftr-gen">PLOS Genetics</a></li> <li><a href="/globalpublichealth/" id="ftr-globalpublichealth">PLOS Global Public Health</a></li> </ul> </div> <div class="block x-small"> <ul class="nav nav-secondary"> <li class="ftr-header">&nbsp;</li> <li><a href="/plosmedicine/" id="ftr-med">PLOS Medicine</a></li> <li><a href="/mentalhealth/" id="ftr-mental-health">PLOS Mental Health</a></li> <li><a href="/plosntds/" id="ftr-ntds">PLOS Neglected Tropical Diseases</a></li> <li><a href="/plosone/" id="ftr-one">PLOS One</a></li> <li><a href="/plospathogens/" id="ftr-path">PLOS Pathogens</a></li> <li><a href="/sustainabilitytransformation/" id="ftr-sustainabilitytransformation">PLOS Sustainability and Transformation</a></li> <li><a href="/water/" id="ftr-water">PLOS Water</a></li> </ul> </div> <div class="block xx-small"> <ul class="nav nav-tertiary"> <li> <a href="https://plos.org" id="ftr-home">Home</a> </li> <li> <a href="https://blogs.plos.org" id="ftr-blog">Blogs</a> </li> <li> <a href="https://collections.plos.org/" id="ftr-collections">Collections</a> </li> <li> <a href="mailto:webmaster@plos.org" id="ftr-feedback">Give feedback</a> </li> <li> <a href="/ploscompbiol/lockss-manifest" id="ftr-lockss">LOCKSS</a> </li> </ul> </div> <div class="block xx-small"> <ul class="nav nav-primary"> <li><a href="https://plos.org/privacy-policy" id="ftr-privacy">Privacy Policy</a></li> <li><a href="https://plos.org/terms-of-use" id="ftr-terms">Terms of Use</a></li> <li><a href="https://plos.org/advertise/" id="ftr-advertise">Advertise</a></li> <li><a href="https://plos.org/media-inquiries" id="ftr-media">Media Inquiries</a></li> <li><a href="https://plos.org/contact" id="ftr-contact">Contact</a></li> </ul> </div> </div> <div class="row"> <p> <img src="/resource/img/logo-plos-footer.png" alt="PLOS" class="logo-footer"/> <span class="footer-non-profit-statement">PLOS is a nonprofit 501(c)(3) corporation, #C2354500, based in California, US</span> </p> <div class="block"> </div> </div> <script src="/resource/js/global.js" type="text/javascript"></script> </footer> <script type="text/javascript"> var ArticleData = { doi: '10.1371/journal.pcbi.1009041', title: '<article-title xmlns:mml=\"http://www.w3.org/1998/Math/MathML\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">Ten simple rules for making a vocabulary FAIR<\/article-title>', date: 'Jun 16, 2021' }; </script> <script src="/resource/js/components/show_onscroll.js" type="text/javascript"></script> <script src="/resource/js/components/pagination.js" type="text/javascript"></script> <script src="/resource/js/vendor/spin.js" type="text/javascript"></script> <script src="/resource/js/pages/article.js" type="text/javascript"></script> <script src="/resource/js/pages/article_references.js" type="text/javascript"></script> <script src="/resource/js/pages/article_sidebar.js" type="text/javascript"></script> <script src="/resource/js/vendor/foundation/foundation.dropdown.js" type="text/javascript"></script> <script src="/resource/js/components/table_open.js" type="text/javascript"></script> <script src="/resource/js/components/figshare.js" type="text/javascript"></script> <script src="/resource/js/vendor/jquery.panzoom.min.js" type="text/javascript"></script> <script src="/resource/js/vendor/jquery.mousewheel.js" type="text/javascript"></script> <script src="/resource/js/components/lightbox.js" type="text/javascript"></script> <script src="/resource/js/pages/article_body.js" type="text/javascript"></script> <!-- This file should be loaded before the renderJs, to avoid conflicts with the FigShare, that implements the MathJax also. --> <!-- mathjax configuration options --> <!-- more can be found at http://docs.mathjax.org/en/latest/ --> <script type="text/x-mathjax-config"> MathJax.Hub.Config({ "HTML-CSS": { scale: 100, availableFonts: ["STIX","TeX"], preferredFont: "STIX", webFont: "STIX-Web", linebreaks: { automatic: false } }, jax: ["input/MathML", "output/HTML-CSS"] }); </script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=MML_HTMLorMML"></script> <div class="reveal-modal-bg"></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10