€cdocutils.nodes document q)q}q(U nametypesq}q(X cool urisqˆXoverviewqNXdata packagingqNXisreferencedbyq ˆXexamplesq NX lagoze-2008q ˆX!additional packaging technologiesq NXcontentsq NX!package serialization using bagitqNXresource map validationqNXreferencing other data packagesqNXbackground discussionqNX user storiesqNXore vocabulary documentqˆX"ecological metadata language (eml)qNXcitoqˆXclasses, fields, and methodsqNX(algorithm for constructing data packagesqNX datacite2rdfqˆXgenerating resource mapsqNXformatqˆX boyko-2009qˆX isrequiredbyqˆXsauermann_cyganiak-2008qˆXdeviation from the ore modelqNXnetcdfqNXdata package client designq NX conformstoq!ˆXoai-oreq"ˆXforesite python libraryq#ˆX*package content associations using oai-oreq$NXsynopsisq%NXeml-2010q&ˆXissues and resolutionq'NX referencesq(ˆXvery large data packagesq)NX identifierq*ˆXrequiresq+ˆXrelationq,ˆX netcdf-2010q-ˆuUsubstitution_defsq.}q/Uparse_messagesq0]q1cdocutils.nodes system_message q2)q3}q4(U rawsourceq5UUparentq6cdocutils.nodes section q7)q8}q9(h5UU referencedq:Kh6h7)q;}q<(h5Uh6hUsourceq=Xg/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/DataPackage.txtq>Utagnameq?Usectionq@U attributesqA}qB(UdupnamesqC]UclassesqD]UbackrefsqE]UidsqF]qGUdata-packagingqHaUnamesqI]qJhauUlineqKKUdocumentqLhUchildrenqM]qN(cdocutils.nodes title qO)qP}qQ(h5XData PackagingqRh6h;h=h>h?UtitleqShA}qT(hF]hE]hC]hD]hI]UrefidqUUid10qVuhKKhLhhM]qWcdocutils.nodes Text qXXData PackagingqY…qZ}q[(h5hRh6hPubaubcdocutils.nodes topic q\)q]}q^(h5Uh6h;h=h>h?Utopicq_hA}q`(hC]hD]qaUcontentsqbahE]hF]qcUcontentsqdahI]qeh auhKKhLhhM]qf(hO)qg}qh(h5XContentshA}qi(hC]hD]hE]hF]hI]uh6h]hM]qjhXXContentsqk…ql}qm(h5Uh6hgubah?hSubcdocutils.nodes bullet_list qn)qo}qp(h5Uh6h]h=Nh?U bullet_listqqhA}qr(hC]hD]hE]hF]hI]uhKNhLhhM]qscdocutils.nodes list_item qt)qu}qv(h5UhA}qw(hC]hD]hE]hF]hI]uh6hohM]qx(cdocutils.nodes paragraph qy)qz}q{(h5UhA}q|(hC]hD]hE]hF]hI]uh6huhM]q}cdocutils.nodes reference q~)q}q€(h5UhA}q(hF]q‚hVahE]hC]hD]hI]UrefidhHuh6hzhM]qƒhXXData Packagingq„…q…}q†(h5hRh6hubah?U referenceq‡ubah?U paragraphqˆubhn)q‰}qŠ(h5UhA}q‹(hC]hD]hE]hF]hI]uh6huhM]qŒ(ht)q}qŽ(h5UhA}q(hC]hD]hE]hF]hI]uh6h‰hM]qhy)q‘}q’(h5UhA}q“(hC]hD]hE]hF]hI]uh6hhM]q”h~)q•}q–(h5UhA}q—(hF]q˜Uid11q™ahE]hC]hD]hI]UrefidUsynopsisqšuh6h‘hM]q›hXXSynopsisqœ…q}qž(h5XSynopsisqŸh6h•ubah?h‡ubah?hˆubah?U list_itemq ubht)q¡}q¢(h5UhA}q£(hC]hD]hE]hF]hI]uh6h‰hM]q¤(hy)q¥}q¦(h5UhA}q§(hC]hD]hE]hF]hI]uh6h¡hM]q¨h~)q©}qª(h5UhA}q«(hF]q¬Uid12q­ahE]hC]hD]hI]UrefidUgenerating-resource-mapsq®uh6h¥hM]q¯hXXGenerating Resource Mapsq°…q±}q²(h5XGenerating Resource Mapsq³h6h©ubah?h‡ubah?hˆubhn)q´}qµ(h5UhA}q¶(hC]hD]hE]hF]hI]uh6h¡hM]q·(ht)q¸}q¹(h5UhA}qº(hC]hD]hE]hF]hI]uh6h´hM]q»hy)q¼}q½(h5UhA}q¾(hC]hD]hE]hF]hI]uh6h¸hM]q¿h~)qÀ}qÁ(h5UhA}qÂ(hF]qÃUid13qÄahE]hC]hD]hI]UrefidUdeviation-from-the-ore-modelqÅuh6h¼hM]qÆhXXDeviation from the ORE modelqÇ…qÈ}qÉ(h5XDeviation from the ORE modelqÊh6hÀubah?h‡ubah?hˆubah?h ubht)qË}qÌ(h5UhA}qÍ(hC]hD]hE]hF]hI]uh6h´hM]qÎhy)qÏ}qÐ(h5UhA}qÑ(hC]hD]hE]hF]hI]uh6hËhM]qÒh~)qÓ}qÔ(h5UhA}qÕ(hF]qÖUid14q×ahE]hC]hD]hI]UrefidUreferencing-other-data-packagesqØuh6hÏhM]qÙhXXReferencing other data packagesqÚ…qÛ}qÜ(h5XReferencing other data packagesqÝh6hÓubah?h‡ubah?hˆubah?h ubht)qÞ}qß(h5UhA}qà(hC]hD]hE]hF]hI]uh6h´hM]qáhy)qâ}qã(h5UhA}qä(hC]hD]hE]hF]hI]uh6hÞhM]qåh~)qæ}qç(h5UhA}qè(hF]qéUid15qêahE]hC]hD]hI]UrefidUvery-large-data-packagesqëuh6hâhM]qìhXXVery large data packagesqí…qî}qï(h5XVery large data packagesqðh6hæubah?h‡ubah?hˆubah?h ubeh?hqubeh?h ubht)qñ}qò(h5UhA}qó(hC]hD]hE]hF]hI]uh6h‰hM]qôhy)qõ}qö(h5UhA}q÷(hC]hD]hE]hF]hI]uh6hñhM]qøh~)qù}qú(h5UhA}qû(hF]qüUid16qýahE]hC]hD]hI]UrefidUresource-map-validationqþuh6hõhM]qÿhXXResource map validationr…r}r(h5XResource map validationrh6hùubah?h‡ubah?hˆubah?h ubht)r}r(h5UhA}r(hC]hD]hE]hF]hI]uh6h‰hM]r(hy)r}r (h5UhA}r (hC]hD]hE]hF]hI]uh6jhM]r h~)r }r (h5UhA}r(hF]rUid17rahE]hC]hD]hI]UrefidUbackground-discussionruh6jhM]rhXXBackground Discussionr…r}r(h5XBackground Discussionrh6j ubah?h‡ubah?hˆubhn)r}r(h5UhA}r(hC]hD]hE]hF]hI]uh6jhM]r(ht)r}r(h5UhA}r(hC]hD]hE]hF]hI]uh6jhM]rhy)r}r (h5UhA}r!(hC]hD]hE]hF]hI]uh6jhM]r"h~)r#}r$(h5UhA}r%(hF]r&Uid18r'ahE]hC]hD]hI]UrefidUoverviewr(uh6jhM]r)hXXOverviewr*…r+}r,(h5XOverviewr-h6j#ubah?h‡ubah?hˆubah?h ubht)r.}r/(h5UhA}r0(hC]hD]hE]hF]hI]uh6jhM]r1hy)r2}r3(h5UhA}r4(hC]hD]hE]hF]hI]uh6j.hM]r5h~)r6}r7(h5UhA}r8(hF]r9Uid19r:ahE]hC]hD]hI]UrefidU user-storiesr;uh6j2hM]r<hXX User storiesr=…r>}r?(h5X User storiesr@h6j6ubah?h‡ubah?hˆubah?h ubht)rA}rB(h5UhA}rC(hC]hD]hE]hF]hI]uh6jhM]rDhy)rE}rF(h5UhA}rG(hC]hD]hE]hF]hI]uh6jAhM]rHh~)rI}rJ(h5UhA}rK(hF]rLUid20rMahE]hC]hD]hI]UrefidU*package-content-associations-using-oai-orerNuh6jEhM]rOhXX*Package Content Associations Using OAI-ORErP…rQ}rR(h5X*Package Content Associations Using OAI-ORErSh6jIubah?h‡ubah?hˆubah?h ubht)rT}rU(h5UhA}rV(hC]hD]hE]hF]hI]uh6jhM]rWhy)rX}rY(h5UhA}rZ(hC]hD]hE]hF]hI]uh6jThM]r[h~)r\}r](h5UhA}r^(hF]r_Uid21r`ahE]hC]hD]hI]UrefidUissues-and-resolutionrauh6jXhM]rbhXXIssues and Resolutionrc…rd}re(h5XIssues and Resolutionrfh6j\ubah?h‡ubah?hˆubah?h ubht)rg}rh(h5UhA}ri(hC]hD]hE]hF]hI]uh6jhM]rjhy)rk}rl(h5UhA}rm(hC]hD]hE]hF]hI]uh6jghM]rnh~)ro}rp(h5UhA}rq(hF]rrUid22rsahE]hC]hD]hI]UrefidUexamplesrtuh6jkhM]ruhXXExamplesrv…rw}rx(h5XExamplesryh6joubah?h‡ubah?hˆubah?h ubeh?hqubeh?h ubht)rz}r{(h5UhA}r|(hC]hD]hE]hF]hI]uh6h‰hM]r}hy)r~}r(h5UhA}r€(hC]hD]hE]hF]hI]uh6jzhM]rh~)r‚}rƒ(h5UhA}r„(hF]r…Uid23r†ahE]hC]hD]hI]UrefidU!package-serialization-using-bagitr‡uh6j~hM]rˆhXX!Package Serialization Using BagItr‰…rŠ}r‹(h5X!Package Serialization Using BagItrŒh6j‚ubah?h‡ubah?hˆubah?h ubht)r}rŽ(h5UhA}r(hC]hD]hE]hF]hI]uh6h‰hM]r(hy)r‘}r’(h5UhA}r“(hC]hD]hE]hF]hI]uh6jhM]r”h~)r•}r–(h5UhA}r—(hF]r˜Uid24r™ahE]hC]hD]hI]UrefidUdata-package-client-designršuh6j‘hM]r›hXXData Package Client Designrœ…r}rž(h5XData Package Client DesignrŸh6j•ubah?h‡ubah?hˆubhn)r }r¡(h5UhA}r¢(hC]hD]hE]hF]hI]uh6jhM]r£(ht)r¤}r¥(h5UhA}r¦(hC]hD]hE]hF]hI]uh6j hM]r§hy)r¨}r©(h5UhA}rª(hC]hD]hE]hF]hI]uh6j¤hM]r«h~)r¬}r­(h5UhA}r®(hF]r¯Uid25r°ahE]hC]hD]hI]UrefidUclasses-fields-and-methodsr±uh6j¨hM]r²hXXClasses, Fields, and Methodsr³…r´}rµ(h5XClasses, Fields, and Methodsr¶h6j¬ubah?h‡ubah?hˆubah?h ubht)r·}r¸(h5UhA}r¹(hC]hD]hE]hF]hI]uh6j hM]rºhy)r»}r¼(h5UhA}r½(hC]hD]hE]hF]hI]uh6j·hM]r¾h~)r¿}rÀ(h5UhA}rÁ(hF]rÂUid26rÃahE]hC]hD]hI]UrefidU(algorithm-for-constructing-data-packagesrÄuh6j»hM]rÅhXX(Algorithm for Constructing Data PackagesrÆ…rÇ}rÈ(h5X(Algorithm for Constructing Data PackagesrÉh6j¿ubah?h‡ubah?hˆubah?h ubeh?hqubeh?h ubht)rÊ}rË(h5UhA}rÌ(hC]hD]hE]hF]hI]uh6h‰hM]rÍ(hy)rÎ}rÏ(h5UhA}rÐ(hC]hD]hE]hF]hI]uh6jÊhM]rÑh~)rÒ}rÓ(h5UhA}rÔ(hF]rÕUid27rÖahE]hC]hD]hI]UrefidU!additional-packaging-technologiesr×uh6jÎhM]rØhXX!Additional Packaging TechnologiesrÙ…rÚ}rÛ(h5X!Additional Packaging TechnologiesrÜh6jÒubah?h‡ubah?hˆubhn)rÝ}rÞ(h5UhA}rß(hC]hD]hE]hF]hI]uh6jÊhM]rà(ht)rá}râ(h5UhA}rã(hC]hD]hE]hF]hI]uh6jÝhM]rähy)rå}ræ(h5UhA}rç(hC]hD]hE]hF]hI]uh6jáhM]rèh~)ré}rê(h5UhA}rë(hF]rìUid28ríahE]hC]hD]hI]UrefidU ecological-metadata-language-emlrîuh6jåhM]rïhXX"Ecological Metadata Language (EML)rð…rñ}rò(h5X"Ecological Metadata Language (EML)róh6jéubah?h‡ubah?hˆubah?h ubht)rô}rõ(h5UhA}rö(hC]hD]hE]hF]hI]uh6jÝhM]r÷hy)rø}rù(h5UhA}rú(hC]hD]hE]hF]hI]uh6jôhM]rûh~)rü}rý(h5UhA}rþ(hF]rÿUid29rahE]hC]hD]hI]UrefidUnetcdfruh6jøhM]rhXXNetCDFr…r}r(h5XNetCDFrh6jüubah?h‡ubah?hˆubah?h ubeh?hqubeh?h ubht)r}r(h5UhA}r (hC]hD]hE]hF]hI]uh6h‰hM]r hy)r }r (h5UhA}r (hC]hD]hE]hF]hI]uh6jhM]rh~)r}r(h5UhA}r(hF]rUid30rahE]hC]hD]hI]UrefidUid6ruh6j hM]rhXX Referencesr…r}r(h5X Referencesrh6jubah?h‡ubah?hˆubah?h ubeh?hqubeh?h ubaubeubh7)r}r(h5Uh6h;h=h>h?h@hA}r(hC]hD]hE]hF]rhšahI]rh%auhKKhLhhM]r(hO)r }r!(h5hŸh6jh=h>h?hShA}r"(hF]hE]hC]hD]hI]hUh™uhKKhLhhM]r#hXXSynopsisr$…r%}r&(h5hŸh6j ubaubhy)r'}r((h5XÞA :term:`data package` in DataONE is composed of at least one :term:`science metadata` document describing at least one :term:`data` object with the relationships between them documented in a :term:`resource map` document.h6jh=h>h?hˆhA}r)(hC]hD]hE]hF]hI]uhKK hLhhM]r*(hXXA r+…r,}r-(h5XA h6j'ubcsphinx.addnodes pending_xref r.)r/}r0(h5X:term:`data package`r1h6j'h=h>h?U pending_xrefr2hA}r3(UreftypeXtermUrefwarnr4ˆU reftargetr5X data packageU refdomainXstdr6hF]hE]U refexplicit‰hC]hD]hI]Urefdocr7Xdesign/DataPackager8uhKK hM]r9cdocutils.nodes inline r:)r;}r<(h5j1hA}r=(hC]hD]r>(Uxrefr?j6Xstd-termr@ehE]hF]hI]uh6j/hM]rAhXX data packagerB…rC}rD(h5Uh6j;ubah?UinlinerEubaubhXX( in DataONE is composed of at least one rF…rG}rH(h5X( in DataONE is composed of at least one h6j'ubj.)rI}rJ(h5X:term:`science metadata`rKh6j'h=h>h?j2hA}rL(UreftypeXtermj4ˆj5Xscience metadataU refdomainXstdrMhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKK hM]rNj:)rO}rP(h5jKhA}rQ(hC]hD]rR(j?jMXstd-termrSehE]hF]hI]uh6jIhM]rThXXscience metadatarU…rV}rW(h5Uh6jOubah?jEubaubhXX" document describing at least one rX…rY}rZ(h5X" document describing at least one h6j'ubj.)r[}r\(h5X :term:`data`r]h6j'h=h>h?j2hA}r^(UreftypeXtermj4ˆj5XdataU refdomainXstdr_hF]hE]U refexplicit‰hC]hD]hI]j7j8uhKK hM]r`j:)ra}rb(h5j]hA}rc(hC]hD]rd(j?j_Xstd-termreehE]hF]hI]uh6j[hM]rfhXXdatarg…rh}ri(h5Uh6jaubah?jEubaubhXX< object with the relationships between them documented in a rj…rk}rl(h5X< object with the relationships between them documented in a h6j'ubj.)rm}rn(h5X:term:`resource map`roh6j'h=h>h?j2hA}rp(UreftypeXtermj4ˆj5X resource mapU refdomainXstdrqhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKK hM]rrj:)rs}rt(h5johA}ru(hC]hD]rv(j?jqXstd-termrwehE]hF]hI]uh6jmhM]rxhXX resource mapry…rz}r{(h5Uh6jsubah?jEubaubhXX document.r|…r}}r~(h5X document.h6j'ubeubhy)r}r€(h5XResource maps are RDF documents that conform to the Open Archives Initiative's Object Reuse and Exchange (`OAI-ORE`_) specification as described in detail below. Resource maps are generated by :term:`Member Nodes` to define data packages, and have a :term:`formatId` of::h6jh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKK hLhhM]r‚(hXXjResource maps are RDF documents that conform to the Open Archives Initiative's Object Reuse and Exchange (rƒ…r„}r…(h5XjResource maps are RDF documents that conform to the Open Archives Initiative's Object Reuse and Exchange (h6jubh~)r†}r‡(h5X `OAI-ORE`_UresolvedrˆKh6jh?h‡hA}r‰(UnameXOAI-OREUrefurirŠX!https://www.openarchives.org/ore/r‹hF]hE]hC]hD]hI]uhM]rŒhXXOAI-OREr…rŽ}r(h5Uh6j†ubaubhXXM) specification as described in detail below. Resource maps are generated by r…r‘}r’(h5XM) specification as described in detail below. Resource maps are generated by h6jubj.)r“}r”(h5X:term:`Member Nodes`r•h6jh=h>h?j2hA}r–(UreftypeXtermj4ˆj5X member nodesU refdomainXstdr—hF]hE]U refexplicit‰hC]hD]hI]j7j8uhKK hM]r˜j:)r™}rš(h5j•hA}r›(hC]hD]rœ(j?j—Xstd-termrehE]hF]hI]uh6j“hM]ržhXX Member NodesrŸ…r }r¡(h5Uh6j™ubah?jEubaubhXX% to define data packages, and have a r¢…r£}r¤(h5X% to define data packages, and have a h6jubj.)r¥}r¦(h5X:term:`formatId`r§h6jh=h>h?j2hA}r¨(UreftypeXtermj4ˆj5XformatidU refdomainXstdr©hF]hE]U refexplicit‰hC]hD]hI]j7j8uhKK hM]rªj:)r«}r¬(h5j§hA}r­(hC]hD]r®(j?j©Xstd-termr¯ehE]hF]hI]uh6j¥hM]r°hXXformatIdr±…r²}r³(h5Uh6j«ubah?jEubaubhXX of:r´…rµ}r¶(h5X of:h6jubeubcdocutils.nodes literal_block r·)r¸}r¹(h5X&http://www.openarchives.org/ore/terms/h6jh=h>h?U literal_blockrºhA}r»(U xml:spacer¼Upreserver½hF]hE]hC]hD]hI]uhKKhLhhM]r¾hXX&http://www.openarchives.org/ore/terms/r¿…rÀ}rÁ(h5Uh6j¸ubaubhy)rÂ}rÃ(h5XfNote this is a name space string. The actual ORE terms can be found in the `ORE Vocabulary Document`_.h6jh=h>h?hˆhA}rÄ(hC]hD]hE]hF]hI]uhKKhLhhM]rÅ(hXXKNote this is a name space string. The actual ORE terms can be found in the rÆ…rÇ}rÈ(h5XKNote this is a name space string. The actual ORE terms can be found in the h6jÂubh~)rÉ}rÊ(h5X`ORE Vocabulary Document`_jˆKh6jÂh?h‡hA}rË(UnameXORE Vocabulary DocumentjŠX.http://www.openarchives.org/ore/1.0/vocabularyrÌhF]hE]hC]hD]hI]uhM]rÍhXXORE Vocabulary DocumentrÎ…rÏ}rÐ(h5Uh6jÉubaubhXX.…rÑ}rÒ(h5X.h6jÂubeubcdocutils.nodes target rÓ)rÔ}rÕ(h5X... _OAI-ORE: https://www.openarchives.org/ore/h:Kh6jh=h>h?UtargetrÖhA}r×(jŠj‹hF]rØUoai-orerÙahE]hC]hD]hI]rÚh"auhKKhLhhM]ubjÓ)rÛ}rÜ(h5XK.. _ORE Vocabulary Document: http://www.openarchives.org/ore/1.0/vocabularyh:Kh6jh=h>h?jÖhA}rÝ(jŠjÌhF]rÞUore-vocabulary-documentrßahE]hC]hD]hI]ràhauhKKhLhhM]ubcdocutils.nodes image rá)râ}rã(h5X(.. image:: images/datapackage_class.png h6jh=h>h?UimagerähA}rå(UuriX#design/images/datapackage_class.pngræhF]hE]hC]hD]U candidatesrç}rèU*jæshI]uhKKhLhhM]ubhy)ré}rê(h5XnOverview class diagram for content model in DataONE. Class attributes refer to the equivalent SOLR index entryrëh6jh=h>h?hˆhA}rì(hC]hD]hE]hF]hI]uhKKhLhhM]ríhXXnOverview class diagram for content model in DataONE. Class attributes refer to the equivalent SOLR index entryrî…rï}rð(h5jëh6jéubaubcdocutils.nodes comment rñ)rò}ró(h5X"@startuml images/datapackage_class.png left to right direction class DataONEObject { String id Integer size String formatId String AuthoritativeMN Date dateUploaded Boolean isPublic String obsoletedBy ... } class ResourceMap { Relation[]: relations } class Relation { URI cito:documents URI cito:isDocumentedBy } class ScienceMetadata { String title String abstract String[] authors Date beginDate Date endDate Float eastBoundingCoord Float westBoundingCoord Float northBoundingCoord Float southBoundingCoord ... } class ScienceData { } DataONEObject <|-- ResourceMap DataONEObject <|-- ScienceMetadata DataONEObject <|-- ScienceData ScienceData "0..*" - "0..*" ScienceMetadata (ScienceMetadata, ScienceData) . Relation ResourceMap o-- Relation @endumlh6jh=h>h?UcommentrôhA}rõ(j¼j½hF]hE]hC]hD]hI]uhKKQhLhhM]röhXX"@startuml images/datapackage_class.png left to right direction class DataONEObject { String id Integer size String formatId String AuthoritativeMN Date dateUploaded Boolean isPublic String obsoletedBy ... } class ResourceMap { Relation[]: relations } class Relation { URI cito:documents URI cito:isDocumentedBy } class ScienceMetadata { String title String abstract String[] authors Date beginDate Date endDate Float eastBoundingCoord Float westBoundingCoord Float northBoundingCoord Float southBoundingCoord ... } class ScienceData { } DataONEObject <|-- ResourceMap DataONEObject <|-- ScienceMetadata DataONEObject <|-- ScienceData ScienceData "0..*" - "0..*" ScienceMetadata (ScienceMetadata, ScienceData) . Relation ResourceMap o-- Relation @endumlr÷…rø}rù(h5Uh6jòubaubeubh7)rú}rû(h5Uh6h;h=h>h?h@hA}rü(hC]hD]hE]hF]rýh®ahI]rþhauhKKShLhhM]rÿ(hO)r}r(h5h³h6júh=h>h?hShA}r(hF]hE]hC]hD]hI]hUh­uhKKShLhhM]rhXXGenerating Resource Mapsr…r}r(h5h³h6jubaubhy)r}r(h5X©While there are several formats discussed in the general discussion below, DataONE currently only supports the RDF/XML serialization format, using the :term:`formatId` of ``http://www/openarchives.org/ore/terms``. For more information on OAI-ORE resource maps, see http://www.openarchives.org/ore/1.0/primer, especially sections 3 and 4. For more details on RDF/XML format, see http://www.openarchives.org/ore/1.0/rdfxml.htmlh6júh=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKKUhLhhM]r (hXX—While there are several formats discussed in the general discussion below, DataONE currently only supports the RDF/XML serialization format, using the r …r }r (h5X—While there are several formats discussed in the general discussion below, DataONE currently only supports the RDF/XML serialization format, using the h6jubj.)r}r(h5X:term:`formatId`rh6jh=h>h?j2hA}r(UreftypeXtermj4ˆj5XformatidU refdomainXstdrhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKKUhM]rj:)r}r(h5jhA}r(hC]hD]r(j?jXstd-termrehE]hF]hI]uh6jhM]rhXXformatIdr…r}r(h5Uh6jubah?jEubaubhXX of r…r}r(h5X of h6jubcdocutils.nodes literal r )r!}r"(h5X)``http://www/openarchives.org/ore/terms``hA}r#(hC]hD]hE]hF]hI]uh6jhM]r$hXX%http://www/openarchives.org/ore/termsr%…r&}r'(h5Uh6j!ubah?Uliteralr(ubhXX5. For more information on OAI-ORE resource maps, see r)…r*}r+(h5X5. For more information on OAI-ORE resource maps, see h6jubh~)r,}r-(h5X*http://www.openarchives.org/ore/1.0/primerr.hA}r/(Urefurij.hF]hE]hC]hD]hI]uh6jhM]r0hXX*http://www.openarchives.org/ore/1.0/primerr1…r2}r3(h5Uh6j,ubah?h‡ubhXXG, especially sections 3 and 4. For more details on RDF/XML format, see r4…r5}r6(h5XG, especially sections 3 and 4. For more details on RDF/XML format, see h6jubh~)r7}r8(h5X/http://www.openarchives.org/ore/1.0/rdfxml.htmlr9hA}r:(Urefurij9hF]hE]hC]hD]hI]uh6jhM]r;hXX/http://www.openarchives.org/ore/1.0/rdfxml.htmlr<…r=}r>(h5Uh6j7ubah?h‡ubeubhy)r?}r@(h5XŽDataONE provides tools in both the Java and Python client libraries for building and serializing / deserializing resource maps, both based on the foresite-toolkit project (https://code.google.com/p/foresite-toolkit/). These are highly recommended for those who do not want to spend time on learning the OAI-ORE implementation model in detail in order to build and maintain a custom implementation.h6júh=h>h?hˆhA}rA(hC]hD]hE]hF]hI]uhKK^hLhhM]rB(hXX¬DataONE provides tools in both the Java and Python client libraries for building and serializing / deserializing resource maps, both based on the foresite-toolkit project (rC…rD}rE(h5X¬DataONE provides tools in both the Java and Python client libraries for building and serializing / deserializing resource maps, both based on the foresite-toolkit project (h6j?ubh~)rF}rG(h5X+https://code.google.com/p/foresite-toolkit/rHhA}rI(UrefurijHhF]hE]hC]hD]hI]uh6j?hM]rJhXX+https://code.google.com/p/foresite-toolkit/rK…rL}rM(h5Uh6jFubah?h‡ubhXX·). These are highly recommended for those who do not want to spend time on learning the OAI-ORE implementation model in detail in order to build and maintain a custom implementation.rN…rO}rP(h5X·). These are highly recommended for those who do not want to spend time on learning the OAI-ORE implementation model in detail in order to build and maintain a custom implementation.h6j?ubeubhy)rQ}rR(h5XòThe ORE data model itself is flexible and general purpose. In order to use it for our purposes, DataONE places a few additional constraints on the model. (See http://www.openarchives.org/ore/1.0/datamodel for details on the ORE data model).h6júh=h>h?hˆhA}rS(hC]hD]hE]hF]hI]uhKKdhLhhM]rT(hXX¡The ORE data model itself is flexible and general purpose. In order to use it for our purposes, DataONE places a few additional constraints on the model. (See rU…rV}rW(h5X¡The ORE data model itself is flexible and general purpose. In order to use it for our purposes, DataONE places a few additional constraints on the model. (See h6jQubh~)rX}rY(h5X-http://www.openarchives.org/ore/1.0/datamodelrZhA}r[(UrefurijZhF]hE]hC]hD]hI]uh6jQhM]r\hXX-http://www.openarchives.org/ore/1.0/datamodelr]…r^}r_(h5Uh6jXubah?h‡ubhXX$ for details on the ORE data model).r`…ra}rb(h5X$ for details on the ORE data model).h6jQubeubcdocutils.nodes enumerated_list rc)rd}re(h5Uh6júh=h>h?Uenumerated_listrfhA}rg(UsuffixrhU.hF]hE]hC]UprefixriUhD]hI]UenumtyperjUarabicrkuhKKihLhhM]rl(ht)rm}rn(h5Xæall DataONE objects in the map MUST be expressed as a URI using DataONE's resolving service, instead of reference to a specific replica on a member node. This is to separate the current physical location from the resource itself.h6jdh=h>h?h hA}ro(hC]hD]hE]hF]hI]uhKNhLhhM]rphy)rq}rr(h5Xæall DataONE objects in the map MUST be expressed as a URI using DataONE's resolving service, instead of reference to a specific replica on a member node. This is to separate the current physical location from the resource itself.rsh6jmh=h>h?hˆhA}rt(hC]hD]hE]hF]hI]uhKKihM]ruhXXæall DataONE objects in the map MUST be expressed as a URI using DataONE's resolving service, instead of reference to a specific replica on a member node. This is to separate the current physical location from the resource itself.rv…rw}rx(h5jsh6jqubaubaubht)ry}rz(h5XQThe aggregation resource URI SHOULD be expressed as a hash URI based on the resource map URI, as recommended by ORE (see: http://www.openarchives.org/ore/1.0/primer#remHashURIs, and http://www.openarchives.org/ore/1.0/http#Simple) This ensures that the aggregation can be referenced directly in other resource maps and still be resolved.h6jdh=h>h?h hA}r{(hC]hD]hE]hF]hI]uhKNhLhhM]r|hy)r}}r~(h5XQThe aggregation resource URI SHOULD be expressed as a hash URI based on the resource map URI, as recommended by ORE (see: http://www.openarchives.org/ore/1.0/primer#remHashURIs, and http://www.openarchives.org/ore/1.0/http#Simple) This ensures that the aggregation can be referenced directly in other resource maps and still be resolved.h6jyh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKKmhM]r€(hXXzThe aggregation resource URI SHOULD be expressed as a hash URI based on the resource map URI, as recommended by ORE (see: r…r‚}rƒ(h5XzThe aggregation resource URI SHOULD be expressed as a hash URI based on the resource map URI, as recommended by ORE (see: h6j}ubh~)r„}r…(h5X6http://www.openarchives.org/ore/1.0/primer#remHashURIsr†hA}r‡(Urefurij†hF]hE]hC]hD]hI]uh6j}hM]rˆhXX6http://www.openarchives.org/ore/1.0/primer#remHashURIsr‰…rŠ}r‹(h5Uh6j„ubah?h‡ubhXX, and rŒ…r}rŽ(h5X, and h6j}ubh~)r}r(h5X/http://www.openarchives.org/ore/1.0/http#Simpler‘hA}r’(Urefurij‘hF]hE]hC]hD]hI]uh6j}hM]r“hXX/http://www.openarchives.org/ore/1.0/http#Simpler”…r•}r–(h5Uh6jubah?h‡ubhXXl) This ensures that the aggregation can be referenced directly in other resource maps and still be resolved.r—…r˜}r™(h5Xl) This ensures that the aggregation can be referenced directly in other resource maps and still be resolved.h6j}ubeubaubht)rš}r›(h5X‚When referencing another DataONE data package, the URI of the package being referenced MUST resolve to a resource map. The URI can either be the resource map URI or the aggregation URI if it follows the hash URI format. Since some existing resource maps do not use aggregation URI's that resolve to the resource map, it is necessary to check their format before deciding which to use.h6jdh=h>h?h hA}rœ(hC]hD]hE]hF]hI]uhKNhLhhM]rhy)rž}rŸ(h5X‚When referencing another DataONE data package, the URI of the package being referenced MUST resolve to a resource map. The URI can either be the resource map URI or the aggregation URI if it follows the hash URI format. Since some existing resource maps do not use aggregation URI's that resolve to the resource map, it is necessary to check their format before deciding which to use.r h6jšh=h>h?hˆhA}r¡(hC]hD]hE]hF]hI]uhKKrhM]r¢hXX‚When referencing another DataONE data package, the URI of the package being referenced MUST resolve to a resource map. The URI can either be the resource map URI or the aggregation URI if it follows the hash URI format. Since some existing resource maps do not use aggregation URI's that resolve to the resource map, it is necessary to check their format before deciding which to use.r£…r¤}r¥(h5j h6jžubaubaubht)r¦}r§(h5X„each resource with a representation in DataONE MUST be described with an dcterms:identifier field containing the DataONE identifier.h6jdh=h>h?h hA}r¨(hC]hD]hE]hF]hI]uhKNhLhhM]r©hy)rª}r«(h5X„each resource with a representation in DataONE MUST be described with an dcterms:identifier field containing the DataONE identifier.r¬h6j¦h=h>h?hˆhA}r­(hC]hD]hE]hF]hI]uhKKwhM]r®hXX„each resource with a representation in DataONE MUST be described with an dcterms:identifier field containing the DataONE identifier.r¯…r°}r±(h5j¬h6jªubaubaubht)r²}r³(h5Xêwhen expressing an identifier in a URI, it must be URL encoded. When expressing in the dcterms:identifier field, it must not. (Of course any XML encoding would need to be applied as well, in the example below, there is none needed).h6jdh=h>h?h hA}r´(hC]hD]hE]hF]hI]uhKNhLhhM]rµhy)r¶}r·(h5Xêwhen expressing an identifier in a URI, it must be URL encoded. When expressing in the dcterms:identifier field, it must not. (Of course any XML encoding would need to be applied as well, in the example below, there is none needed).r¸h6j²h=h>h?hˆhA}r¹(hC]hD]hE]hF]hI]uhKKyhM]rºhXXêwhen expressing an identifier in a URI, it must be URL encoded. When expressing in the dcterms:identifier field, it must not. (Of course any XML encoding would need to be applied as well, in the example below, there is none needed).r»…r¼}r½(h5j¸h6j¶ubaubaubht)r¾}r¿(h5X#the resource map MUST assert a triple with the pre:isDescribedBy relationship between the resource map and the aggregation, following the recommendation that aggregations with multiple resource maps express this relationship. (see http://www.openarchives.org/ore/1.0/datamodel#ReM-to-aggr) h6jdh=h>h?h hA}rÀ(hC]hD]hE]hF]hI]uhKNhLhhM]rÁhy)rÂ}rÃ(h5X!the resource map MUST assert a triple with the pre:isDescribedBy relationship between the resource map and the aggregation, following the recommendation that aggregations with multiple resource maps express this relationship. (see http://www.openarchives.org/ore/1.0/datamodel#ReM-to-aggr)rÄh6j¾h=h>h?hˆhA}rÅ(hC]hD]hE]hF]hI]uhKK|hM]rÆhXX!the resource map MUST assert a triple with the pre:isDescribedBy relationship between the resource map and the aggregation, following the recommendation that aggregations with multiple resource maps express this relationship. (see http://www.openarchives.org/ore/1.0/datamodel#ReM-to-aggr)rÇ…rÈ}rÉ(h5jÄh6jÂubaubaubeubhy)rÊ}rË(h5XlFor example, the triple representing 'scimeta_id1/foo documents scidata_id1' would look like the following::h6júh=h>h?hˆhA}rÌ(hC]hD]hE]hF]hI]uhKK‚hLhhM]rÍhXXkFor example, the triple representing 'scimeta_id1/foo documents scidata_id1' would look like the following:rÎ…rÏ}rÐ(h5XkFor example, the triple representing 'scimeta_id1/foo documents scidata_id1' would look like the following:h6jÊubaubj·)rÑ}rÒ(h5Xù scimeta_id/foo ... h6júh=h>h?jºhA}rÓ(j¼j½hF]hE]hC]hD]hI]uhKK…hLhhM]rÔhXXù scimeta_id/foo ... rÕ…rÖ}r×(h5Uh6jÑubaubhy)rØ}rÙ(h5X<and the aggregation resource would look like the following::rÚh6júh=h>h?hˆhA}rÛ(hC]hD]hE]hF]hI]uhKK‹hLhhM]rÜhXX;and the aggregation resource would look like the following:rÝ…rÞ}rß(h5X;and the aggregation resource would look like the following:h6jØubaubj·)rà}rá(h5XÍ ... h6júh=h>h?jºhA}râ(j¼j½hF]hE]hC]hD]hI]uhKKhLhhM]rãhXXÍ ... rä…rå}ræ(h5Uh6jàubaubhy)rç}rè(h5X`See the Examples section under Background Discussion below for a full example of a resource map.réh6júh=h>h?hˆhA}rê(hC]hD]hE]hF]hI]uhKK–hLhhM]rëhXX`See the Examples section under Background Discussion below for a full example of a resource map.rì…rí}rî(h5jéh6jçubaubh7)rï}rð(h5Uh6júh=h>h?h@hA}rñ(hC]hD]hE]hF]ròhÅahI]róhauhKKšhLhhM]rô(hO)rõ}rö(h5hÊh6jïh=h>h?hShA}r÷(hF]hE]hC]hD]hI]hUhÄuhKKšhLhhM]røhXXDeviation from the ORE modelrù…rú}rû(h5hÊh6jõubaubhy)rü}rý(h5XZBecause DataONE already contains resource maps whose aggregation URIs do not conform to the ORE specification that they can be resolved to a resource map, we cannot assert that the collection of resource maps adhere to the specification, and therefore will not will not require conformity in this aspect for resource maps submitted in the future.rþh6jïh=h>h?hˆhA}rÿ(hC]hD]hE]hF]hI]uhKKœhLhhM]rhXXZBecause DataONE already contains resource maps whose aggregation URIs do not conform to the ORE specification that they can be resolved to a resource map, we cannot assert that the collection of resource maps adhere to the specification, and therefore will not will not require conformity in this aspect for resource maps submitted in the future.r…r}r(h5jþh6jüubaubhy)r}r(h5XŠAs a result, users must be careful when referencing aggregations directly from other data packages, as not all of them will resolve to a resource map. Similarly, if the collection of resource maps is put together into a triple store, these non-resolving aggregation URIs cannot be guaranteed to be unique, the result of which is that mistaken relationships between unrelated items would occur.rh6jïh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKK¢hLhhM]rhXXŠAs a result, users must be careful when referencing aggregations directly from other data packages, as not all of them will resolve to a resource map. Similarly, if the collection of resource maps is put together into a triple store, these non-resolving aggregation URIs cannot be guaranteed to be unique, the result of which is that mistaken relationships between unrelated items would occur.r …r }r (h5jh6jubaubeubh7)r }r (h5Uh6júh=h>h?h@hA}r(hC]hD]hE]hF]rhØahI]rhauhKK«hLhhM]r(hO)r}r(h5hÝh6j h=h>h?hShA}r(hF]hE]hC]hD]hI]hUh×uhKK«hLhhM]rhXXReferencing other data packagesr…r}r(h5hÝh6jubaubhy)r}r(h5XmThe main use case in DataONE for referencing other data packages in a resource map is that of nesting one inside another, which makes the 'other' data package itself something that is being aggregated. Especially in such cases, it is necessary that the URI used to represent the data package being aggregated can be resolved to its resource map. If the aggregation URI follows the has URI format, it will resolve to the resource map when following the URI. Otherwise, the URI of the resource map should be used. In both cases clients following the URI of the aggregated resource will get the resource map, as desired.rh6j h=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKK­hLhhM]rhXXmThe main use case in DataONE for referencing other data packages in a resource map is that of nesting one inside another, which makes the 'other' data package itself something that is being aggregated. Especially in such cases, it is necessary that the URI used to represent the data package being aggregated can be resolved to its resource map. If the aggregation URI follows the has URI format, it will resolve to the resource map when following the URI. Otherwise, the URI of the resource map should be used. In both cases clients following the URI of the aggregated resource will get the resource map, as desired.r…r}r (h5jh6jubaubhy)r!}r"(h5XTTo check that the aggregation is in hash URI form, the following check can be used::r#h6j h=h>h?hˆhA}r$(hC]hD]hE]hF]hI]uhKK¶hLhhM]r%hXXSTo check that the aggregation is in hash URI form, the following check can be used:r&…r'}r((h5XSTo check that the aggregation is in hash URI form, the following check can be used:h6j!ubaubj·)r)}r*(h5X6aggregation_X_uri startsWith (resourceMap_X_uri + "#")h6j h=h>h?jºhA}r+(j¼j½hF]hE]hC]hD]hI]uhKK¸hLhhM]r,hXX6aggregation_X_uri startsWith (resourceMap_X_uri + "#")r-…r.}r/(h5Uh6j)ubaubhy)r0}r1(h5XàNotes: Future infrastructure development will likely involve standing up a triple-store where all resource maps will be held. Any aggregation not in hash URI form cannot be relied upon to be unique, otherwise incorrect connections between unrelated objects are possible. Likely solutions for incorporation of existing non-hashURI aggregations include either renaming the aggregations upon import, or treating them as relative URIs that would be appended to the resourceMap URI.r2h6j h=h>h?hˆhA}r3(hC]hD]hE]hF]hI]uhKK»hLhhM]r4hXXàNotes: Future infrastructure development will likely involve standing up a triple-store where all resource maps will be held. Any aggregation not in hash URI form cannot be relied upon to be unique, otherwise incorrect connections between unrelated objects are possible. Likely solutions for incorporation of existing non-hashURI aggregations include either renaming the aggregations upon import, or treating them as relative URIs that would be appended to the resourceMap URI.r5…r6}r7(h5j2h6j0ubaubeubh7)r8}r9(h5Uh6júh=h>h?h@hA}r:(hC]hD]hE]hF]r;hëahI]r<h)auhKKÄhLhhM]r=(hO)r>}r?(h5hðh6j8h=h>h?hShA}r@(hF]hE]hC]hD]hI]hUhêuhKKÄhLhhM]rAhXXVery large data packagesrB…rC}rD(h5hðh6j>ubaubhy)rE}rF(h5XCurrent tools for building and parsing resource maps are not able to handle data packages that aggregate a very large number of objects. The DataPackage class in d1_libclient_java was used to attempt to create serialized resource maps of increasing size. Results are summarized below:rGh6j8h=h>h?hˆhA}rH(hC]hD]hE]hF]hI]uhKKÆhLhhM]rIhXXCurrent tools for building and parsing resource maps are not able to handle data packages that aggregate a very large number of objects. The DataPackage class in d1_libclient_java was used to attempt to create serialized resource maps of increasing size. Results are summarized below:rJ…rK}rL(h5jGh6jEubaubcdocutils.nodes table rM)rN}rO(h5Uh6j8h=h>h?UtablerPhA}rQ(hC]hD]hE]hF]hI]uhKNhLhhM]rRcdocutils.nodes tgroup rS)rT}rU(h5UhA}rV(hF]hE]hC]hD]hI]UcolsKuh6jNhM]rW(cdocutils.nodes colspec rX)rY}rZ(h5UhA}r[(hF]hE]hC]hD]hI]UcolwidthKuh6jThM]h?Ucolspecr\ubjX)r]}r^(h5UhA}r_(hF]hE]hC]hD]hI]UcolwidthK#uh6jThM]h?j\ubcdocutils.nodes thead r`)ra}rb(h5UhA}rc(hC]hD]hE]hF]hI]uh6jThM]rdcdocutils.nodes row re)rf}rg(h5UhA}rh(hC]hD]hE]hF]hI]uh6jahM]ri(cdocutils.nodes entry rj)rk}rl(h5UhA}rm(hC]hD]hE]hF]hI]uh6jfhM]rnhy)ro}rp(h5X# of data objectsrqh6jkh=h>h?hˆhA}rr(hC]hD]hE]hF]hI]uhKKÌhM]rshXX# of data objectsrt…ru}rv(h5jqh6joubaubah?Uentryrwubjj)rx}ry(h5UhA}rz(hC]hD]hE]hF]hI]uh6jfhM]r{hy)r|}r}(h5X time to buildr~h6jxh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKKÌhM]r€hXX time to buildr…r‚}rƒ(h5j~h6j|ubaubah?jwubeh?Urowr„ubah?Utheadr…ubcdocutils.nodes tbody r†)r‡}rˆ(h5UhA}r‰(hC]hD]hE]hF]hI]uh6jThM]rŠ(je)r‹}rŒ(h5UhA}r(hC]hD]hE]hF]hI]uh6j‡hM]rŽ(jj)r}r(h5UhA}r‘(hC]hD]hE]hF]hI]uh6j‹hM]r’hy)r“}r”(h5X100r•h6jh=h>h?hˆhA}r–(hC]hD]hE]hF]hI]uhKKÎhM]r—hXX100r˜…r™}rš(h5j•h6j“ubaubah?jwubjj)r›}rœ(h5UhA}r(hC]hD]hE]hF]hI]uh6j‹hM]ržhy)rŸ}r (h5X 2 secondsr¡h6j›h=h>h?hˆhA}r¢(hC]hD]hE]hF]hI]uhKKÎhM]r£hXX 2 secondsr¤…r¥}r¦(h5j¡h6jŸubaubah?jwubeh?j„ubje)r§}r¨(h5UhA}r©(hC]hD]hE]hF]hI]uh6j‡hM]rª(jj)r«}r¬(h5UhA}r­(hC]hD]hE]hF]hI]uh6j§hM]r®hy)r¯}r°(h5X1000r±h6j«h=h>h?hˆhA}r²(hC]hD]hE]hF]hI]uhKKÏhM]r³hXX1000r´…rµ}r¶(h5j±h6j¯ubaubah?jwubjj)r·}r¸(h5UhA}r¹(hC]hD]hE]hF]hI]uh6j§hM]rºhy)r»}r¼(h5X 3 secondsr½h6j·h=h>h?hˆhA}r¾(hC]hD]hE]hF]hI]uhKKÏhM]r¿hXX 3 secondsrÀ…rÁ}rÂ(h5j½h6j»ubaubah?jwubeh?j„ubje)rÃ}rÄ(h5UhA}rÅ(hC]hD]hE]hF]hI]uh6j‡hM]rÆ(jj)rÇ}rÈ(h5UhA}rÉ(hC]hD]hE]hF]hI]uh6jÃhM]rÊhy)rË}rÌ(h5X3000rÍh6jÇh=h>h?hˆhA}rÎ(hC]hD]hE]hF]hI]uhKKÐhM]rÏhXX3000rÐ…rÑ}rÒ(h5jÍh6jËubaubah?jwubjj)rÓ}rÔ(h5UhA}rÕ(hC]hD]hE]hF]hI]uh6jÃhM]rÖhy)r×}rØ(h5X 20 secondsrÙh6jÓh=h>h?hˆhA}rÚ(hC]hD]hE]hF]hI]uhKKÐhM]rÛhXX 20 secondsrÜ…rÝ}rÞ(h5jÙh6j×ubaubah?jwubeh?j„ubje)rß}rà(h5UhA}rá(hC]hD]hE]hF]hI]uh6j‡hM]râ(jj)rã}rä(h5UhA}rå(hC]hD]hE]hF]hI]uh6jßhM]ræhy)rç}rè(h5X10000réh6jãh=h>h?hˆhA}rê(hC]hD]hE]hF]hI]uhKKÑhM]rëhXX10000rì…rí}rî(h5jéh6jçubaubah?jwubjj)rï}rð(h5UhA}rñ(hC]hD]hE]hF]hI]uh6jßhM]ròhy)ró}rô(h5X 5 minutesrõh6jïh=h>h?hˆhA}rö(hC]hD]hE]hF]hI]uhKKÑhM]r÷hXX 5 minutesrø…rù}rú(h5jõh6jóubaubah?jwubeh?j„ubje)rû}rü(h5UhA}rý(hC]hD]hE]hF]hI]uh6j‡hM]rþ(jj)rÿ}r(h5UhA}r(hC]hD]hE]hF]hI]uh6jûhM]rhy)r}r(h5X30000rh6jÿh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKKÒhM]rhXX30000r…r }r (h5jh6jubaubah?jwubjj)r }r (h5UhA}r (hC]hD]hE]hF]hI]uh6jûhM]rhy)r}r(h5X"heap memory error after 45 minutesrh6j h=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKKÒhM]rhXX"heap memory error after 45 minutesr…r}r(h5jh6jubaubah?jwubeh?j„ubeh?Utbodyrubeh?Utgrouprubaubjñ)r}r(h5XRTODO: provide statistics for deserialization times for various size resource mapsh6j8h=h>h?jôhA}r(j¼j½hF]hE]hC]hD]hI]uhKK×hLhhM]rhXXRTODO: provide statistics for deserialization times for various size resource mapsr…r}r(h5Uh6jubaubeubeubh7)r }r!(h5Uh6h;h=h>h?h@hA}r"(hC]hD]hE]hF]r#hþahI]r$hauhKKÙhLhhM]r%(hO)r&}r'(h5jh6j h=h>h?hShA}r((hF]hE]hC]hD]hI]hUhýuhKKÙhLhhM]r)hXXResource map validationr*…r+}r,(h5jh6j&ubaubhy)r-}r.(h5XXBecause DataONE indexing relies on the integrity of the resource maps it receives from the member nodes, each resource map will be validated against the set of constraints enumerated above. Resource maps that do not validate will fail synchronization, and the exception returned to the member node via the method MN_Read.syncrhonizationFailed.r/h6j h=h>h?hˆhA}r0(hC]hD]hE]hF]hI]uhKKÛhLhhM]r1hXXXBecause DataONE indexing relies on the integrity of the resource maps it receives from the member nodes, each resource map will be validated against the set of constraints enumerated above. Resource maps that do not validate will fail synchronization, and the exception returned to the member node via the method MN_Read.syncrhonizationFailed.r2…r3}r4(h5j/h6j-ubaubeubh7)r5}r6(h5Uh6h;h=h>h?h@hA}r7(hC]hD]hE]hF]r8jahI]r9hauhKKåhLhhM]r:(hO)r;}r<(h5jh6j5h=h>h?hShA}r=(hF]hE]hC]hD]hI]hUjuhKKåhLhhM]r>hXXBackground Discussionr?…r@}rA(h5jh6j;ubaubh7)rB}rC(h5Uh6j5h=h>h?h@hA}rD(hC]hD]hE]hF]rEj(ahI]rFhauhKKèhLhhM]rG(hO)rH}rI(h5j-h6jBh=h>h?hShA}rJ(hF]hE]hC]hD]hI]hUj'uhKKèhLhhM]rKhXXOverviewrL…rM}rN(h5j-h6jHubaubhy)rO}rP(h5XãData, in the context of DataONE, is a discrete unit of digital content that is expected to represent information obtained from some experiment or scientific study. The :term:`data` are accompanied by :term:`science metadata`, which is a separate unit of digital content that describes properties of the data. Each unit of science data or science metadata is accompanied by :term:`system metadata` which describes the digital object (e.g. hash, time stamps, ownership, relationships).h6jBh=h>h?hˆhA}rQ(hC]hD]hE]hF]hI]uhKKêhLhhM]rR(hXX¨Data, in the context of DataONE, is a discrete unit of digital content that is expected to represent information obtained from some experiment or scientific study. The rS…rT}rU(h5X¨Data, in the context of DataONE, is a discrete unit of digital content that is expected to represent information obtained from some experiment or scientific study. The h6jOubj.)rV}rW(h5X :term:`data`rXh6jOh=h>h?j2hA}rY(UreftypeXtermj4ˆj5XdataU refdomainXstdrZhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKKêhM]r[j:)r\}r](h5jXhA}r^(hC]hD]r_(j?jZXstd-termr`ehE]hF]hI]uh6jVhM]rahXXdatarb…rc}rd(h5Uh6j\ubah?jEubaubhXX are accompanied by re…rf}rg(h5X are accompanied by h6jOubj.)rh}ri(h5X:term:`science metadata`rjh6jOh=h>h?j2hA}rk(UreftypeXtermj4ˆj5Xscience metadataU refdomainXstdrlhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKKêhM]rmj:)rn}ro(h5jjhA}rp(hC]hD]rq(j?jlXstd-termrrehE]hF]hI]uh6jhhM]rshXXscience metadatart…ru}rv(h5Uh6jnubah?jEubaubhXX•, which is a separate unit of digital content that describes properties of the data. Each unit of science data or science metadata is accompanied by rw…rx}ry(h5X•, which is a separate unit of digital content that describes properties of the data. Each unit of science data or science metadata is accompanied by h6jOubj.)rz}r{(h5X:term:`system metadata`r|h6jOh=h>h?j2hA}r}(UreftypeXtermj4ˆj5Xsystem metadataU refdomainXstdr~hF]hE]U refexplicit‰hC]hD]hI]j7j8uhKKêhM]rj:)r€}r(h5j|hA}r‚(hC]hD]rƒ(j?j~Xstd-termr„ehE]hF]hI]uh6jzhM]r…hXXsystem metadatar†…r‡}rˆ(h5Uh6j€ubah?jEubaubhXXW which describes the digital object (e.g. hash, time stamps, ownership, relationships).r‰…rŠ}r‹(h5XW which describes the digital object (e.g. hash, time stamps, ownership, relationships).h6jOubeubhy)rŒ}r(h5XHIn DataONE, data are treated as opaque sets of bytes and, along with their associated science metadata, are stored on :term:`Member Node`\s (MN). A copy of the science metadata is held by the :term:`Coordinating Node`\s (CN) and is parsed to extract attributes to assist the discovery process (i.e. users searching for content).h6jBh=h>h?hˆhA}rŽ(hC]hD]hE]hF]hI]uhKKòhLhhM]r(hXXvIn DataONE, data are treated as opaque sets of bytes and, along with their associated science metadata, are stored on r…r‘}r’(h5XvIn DataONE, data are treated as opaque sets of bytes and, along with their associated science metadata, are stored on h6jŒubj.)r“}r”(h5X:term:`Member Node`r•h6jŒh=h>h?j2hA}r–(UreftypeXtermj4ˆj5X member nodeU refdomainXstdr—hF]hE]U refexplicit‰hC]hD]hI]j7j8uhKKòhM]r˜j:)r™}rš(h5j•hA}r›(hC]hD]rœ(j?j—Xstd-termrehE]hF]hI]uh6j“hM]ržhXX Member NoderŸ…r }r¡(h5Uh6j™ubah?jEubaubhXX6s (MN). A copy of the science metadata is held by the r¢…r£}r¤(h5X7\s (MN). A copy of the science metadata is held by the h6jŒubj.)r¥}r¦(h5X:term:`Coordinating Node`r§h6jŒh=h>h?j2hA}r¨(UreftypeXtermj4ˆj5Xcoordinating nodeU refdomainXstdr©hF]hE]U refexplicit‰hC]hD]hI]j7j8uhKKòhM]rªj:)r«}r¬(h5j§hA}r­(hC]hD]r®(j?j©Xstd-termr¯ehE]hF]hI]uh6j¥hM]r°hXXCoordinating Noder±…r²}r³(h5Uh6j«ubah?jEubaubhXXns (CN) and is parsed to extract attributes to assist the discovery process (i.e. users searching for content).r´…rµ}r¶(h5Xo\s (CN) and is parsed to extract attributes to assist the discovery process (i.e. users searching for content).h6jŒubeubhy)r·}r¸(h5XùThe opacity of data in DataONE is likely to change in the future to enable processing of the data with operations such as translation (e.g. for format migration), extraction (e.g. for rendering), and merging (e.g. to combine multiple instances of data that are expressed in different formats). Such operations rely upon a stable, accessible framework supporting reliable data access, and so are targeted after the initial requirements of DataONE are met and the core infrastructure is demonstrably robust.r¹h6jBh=h>h?hˆhA}rº(hC]hD]hE]hF]hI]uhKKøhLhhM]r»hXXùThe opacity of data in DataONE is likely to change in the future to enable processing of the data with operations such as translation (e.g. for format migration), extraction (e.g. for rendering), and merging (e.g. to combine multiple instances of data that are expressed in different formats). Such operations rely upon a stable, accessible framework supporting reliable data access, and so are targeted after the initial requirements of DataONE are met and the core infrastructure is demonstrably robust.r¼…r½}r¾(h5j¹h6j·ubaubhy)r¿}rÀ(h5XœIn order to properly interpret, preserve, and utilize a data object, users and their software agents need access to the science metadata describing the data objects. A :term:`data package` in DataONE provides the conceptual relationships among the various components of the package that describe which :term:`data` objects are described by which :term:`science metadata` documents, and the role in that description that they play. This model accommodates use of well-established existing metadata specifications such as EML, BDP, and ISO 19115 for documenting science metadata while recognizing that some of these do not readily incorporate mechanisms for consistent linkages to and inclusion of data objects. The data package concept also provides a consistent mechanism to define one or more serialized representations of a package that can be used to transport the components of a data package from one system to another.h6jBh=h>h?hˆhA}rÁ(hC]hD]hE]hF]hI]uhKMhLhhM]rÂ(hXX¨In order to properly interpret, preserve, and utilize a data object, users and their software agents need access to the science metadata describing the data objects. A rÃ…rÄ}rÅ(h5X¨In order to properly interpret, preserve, and utilize a data object, users and their software agents need access to the science metadata describing the data objects. A h6j¿ubj.)rÆ}rÇ(h5X:term:`data package`rÈh6j¿h=h>h?j2hA}rÉ(UreftypeXtermj4ˆj5X data packageU refdomainXstdrÊhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKMhM]rËj:)rÌ}rÍ(h5jÈhA}rÎ(hC]hD]rÏ(j?jÊXstd-termrÐehE]hF]hI]uh6jÆhM]rÑhXX data packagerÒ…rÓ}rÔ(h5Uh6jÌubah?jEubaubhXXr in DataONE provides the conceptual relationships among the various components of the package that describe which rÕ…rÖ}r×(h5Xr in DataONE provides the conceptual relationships among the various components of the package that describe which h6j¿ubj.)rØ}rÙ(h5X :term:`data`rÚh6j¿h=h>h?j2hA}rÛ(UreftypeXtermj4ˆj5XdataU refdomainXstdrÜhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKMhM]rÝj:)rÞ}rß(h5jÚhA}rà(hC]hD]rá(j?jÜXstd-termrâehE]hF]hI]uh6jØhM]rãhXXdatarä…rå}ræ(h5Uh6jÞubah?jEubaubhXX objects are described by which rç…rè}ré(h5X objects are described by which h6j¿ubj.)rê}rë(h5X:term:`science metadata`rìh6j¿h=h>h?j2hA}rí(UreftypeXtermj4ˆj5Xscience metadataU refdomainXstdrîhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKMhM]rïj:)rð}rñ(h5jìhA}rò(hC]hD]ró(j?jîXstd-termrôehE]hF]hI]uh6jêhM]rõhXXscience metadatarö…r÷}rø(h5Uh6jðubah?jEubaubhXX* documents, and the role in that description that they play. This model accommodates use of well-established existing metadata specifications such as EML, BDP, and ISO 19115 for documenting science metadata while recognizing that some of these do not readily incorporate mechanisms for consistent linkages to and inclusion of data objects. The data package concept also provides a consistent mechanism to define one or more serialized representations of a package that can be used to transport the components of a data package from one system to another.rù…rú}rû(h5X* documents, and the role in that description that they play. This model accommodates use of well-established existing metadata specifications such as EML, BDP, and ISO 19115 for documenting science metadata while recognizing that some of these do not readily incorporate mechanisms for consistent linkages to and inclusion of data objects. The data package concept also provides a consistent mechanism to define one or more serialized representations of a package that can be used to transport the components of a data package from one system to another.h6j¿ubeubcdocutils.nodes note rü)rý}rþ(h5XÆThe DataONE :doc:`SystemMetadata` format currently includes descriptions of some of the relationships that would be within scope of the definition of a Data Package. Specifically, the System Metadata fields :attr:`SystemMetadata.obsoletes` and :attr:`SystemMetadata.obsoletedBy` describe the relationship between two objects where one replaces the other from a scientific utility perspective (such as an error-corrected version of an existing data file).h6jBh=h>h?UnoterÿhA}r(hC]hD]hE]hF]hI]uhKNhLhhM]rhy)r}r(h5XÆThe DataONE :doc:`SystemMetadata` format currently includes descriptions of some of the relationships that would be within scope of the definition of a Data Package. Specifically, the System Metadata fields :attr:`SystemMetadata.obsoletes` and :attr:`SystemMetadata.obsoletedBy` describe the relationship between two objects where one replaces the other from a scientific utility perspective (such as an error-corrected version of an existing data file).h6jýh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKMhM]r(hXX The DataONE r…r}r(h5X The DataONE h6jubj.)r }r (h5X:doc:`SystemMetadata`r h6jh=h>h?j2hA}r (UreftypeXdocr j4ˆj5XSystemMetadataU refdomainUhF]hE]U refexplicit‰hC]hD]hI]j7j8uhKMhM]rj:)r}r(h5j hA}r(hC]hD]r(j?j ehE]hF]hI]uh6j hM]rhXXSystemMetadatar…r}r(h5Uh6jubah?jEubaubhXX® format currently includes descriptions of some of the relationships that would be within scope of the definition of a Data Package. Specifically, the System Metadata fields r…r}r(h5X® format currently includes descriptions of some of the relationships that would be within scope of the definition of a Data Package. Specifically, the System Metadata fields h6jubj.)r}r(h5X :attr:`SystemMetadata.obsoletes`rh6jh=h>h?j2hA}r(UreftypeXattrj4‰j5XSystemMetadata.obsoletesU refdomainXpyrhF]hE]U refexplicit‰hC]hD]hI]j7j8Upy:classrNU py:moduler NuhKMhM]r!j )r"}r#(h5jhA}r$(hC]hD]r%(j?jXpy-attrr&ehE]hF]hI]uh6jhM]r'hXXSystemMetadata.obsoletesr(…r)}r*(h5Uh6j"ubah?j(ubaubhXX and r+…r,}r-(h5X and h6jubj.)r.}r/(h5X":attr:`SystemMetadata.obsoletedBy`r0h6jh=h>h?j2hA}r1(UreftypeXattrj4‰j5XSystemMetadata.obsoletedByU refdomainXpyr2hF]hE]U refexplicit‰hC]hD]hI]j7j8jNj NuhKMhM]r3j )r4}r5(h5j0hA}r6(hC]hD]r7(j?j2Xpy-attrr8ehE]hF]hI]uh6j.hM]r9hXXSystemMetadata.obsoletedByr:…r;}r<(h5Uh6j4ubah?j(ubaubhXX° describe the relationship between two objects where one replaces the other from a scientific utility perspective (such as an error-corrected version of an existing data file).r=…r>}r?(h5X° describe the relationship between two objects where one replaces the other from a scientific utility perspective (such as an error-corrected version of an existing data file).h6jubeubaubhy)r@}rA(h5XÄA *data package* will be represented in DataONE as a unique, additional class of object with its own unique identifier different from the identifiers of its components. Each of these data packages in DataONE will be represented by an OAI-ORE Resource Map that contains an Aggregation indicating relationships among the components of the package. The BagIt specification will be used to optionally provide these components as a single serialized object.h6jBh=h>h?hˆhA}rB(hC]hD]hE]hF]hI]uhKMhLhhM]rC(hXXA rD…rE}rF(h5XA h6j@ubcdocutils.nodes emphasis rG)rH}rI(h5X*data package*hA}rJ(hC]hD]hE]hF]hI]uh6j@hM]rKhXX data packagerL…rM}rN(h5Uh6jHubah?UemphasisrOubhXX´ will be represented in DataONE as a unique, additional class of object with its own unique identifier different from the identifiers of its components. Each of these data packages in DataONE will be represented by an OAI-ORE Resource Map that contains an Aggregation indicating relationships among the components of the package. The BagIt specification will be used to optionally provide these components as a single serialized object.rP…rQ}rR(h5X´ will be represented in DataONE as a unique, additional class of object with its own unique identifier different from the identifiers of its components. Each of these data packages in DataONE will be represented by an OAI-ORE Resource Map that contains an Aggregation indicating relationships among the components of the package. The BagIt specification will be used to optionally provide these components as a single serialized object.h6j@ubeubeubh7)rS}rT(h5Uh6j5h=h>h?h@hA}rU(hC]hD]hE]hF]rVj;ahI]rWhauhKM!hLhhM]rX(hO)rY}rZ(h5j@h6jSh=h>h?hShA}r[(hF]hE]hC]hD]hI]hUj:uhKM!hLhhM]r\hXX User storiesr]…r^}r_(h5j@h6jYubaubhn)r`}ra(h5Uh6jSh=h>h?hqhA}rb(UbulletrcX*hF]hE]hC]hD]hI]uhKM#hLhhM]rd(ht)re}rf(h5X®A user agent can download a description of a data package that provides the DataONE identifiers for all science metadata and data object components associated by the package h6j`h=h>h?h hA}rg(hC]hD]hE]hF]hI]uhKNhLhhM]rhhy)ri}rj(h5X­A user agent can download a description of a data package that provides the DataONE identifiers for all science metadata and data object components associated by the packagerkh6jeh=h>h?hˆhA}rl(hC]hD]hE]hF]hI]uhKM#hM]rmhXX­A user agent can download a description of a data package that provides the DataONE identifiers for all science metadata and data object components associated by the packagern…ro}rp(h5jkh6jiubaubaubht)rq}rr(h5XA user agent can download a serialized version of a data package that includes the science metadata and either the data bytes or references to the data bytes via DataONE identifiers directly in the serialized version of the package, and the system metadata for each of these objects. h6j`h=h>h?h hA}rs(hC]hD]hE]hF]hI]uhKNhLhhM]rthy)ru}rv(h5XA user agent can download a serialized version of a data package that includes the science metadata and either the data bytes or references to the data bytes via DataONE identifiers directly in the serialized version of the package, and the system metadata for each of these objects.rwh6jqh=h>h?hˆhA}rx(hC]hD]hE]hF]hI]uhKM'hM]ryhXXA user agent can download a serialized version of a data package that includes the science metadata and either the data bytes or references to the data bytes via DataONE identifiers directly in the serialized version of the package, and the system metadata for each of these objects.rz…r{}r|(h5jwh6juubaubaubht)r}}r~(h5XÃThe serialized form allows for the relationships between the various components to be properly maintained (e.g., which system metadata documents describe which data and science metadata objects) h6j`h=h>h?h hA}r(hC]hD]hE]hF]hI]uhKNhLhhM]r€hy)r}r‚(h5XÂThe serialized form allows for the relationships between the various components to be properly maintained (e.g., which system metadata documents describe which data and science metadata objects)rƒh6j}h=h>h?hˆhA}r„(hC]hD]hE]hF]hI]uhKM,hM]r…hXXÂThe serialized form allows for the relationships between the various components to be properly maintained (e.g., which system metadata documents describe which data and science metadata objects)r†…r‡}rˆ(h5jƒh6jubaubaubht)r‰}rŠ(h5X.Data packages can be versioned, such that individual components of a package can be replaced with new versions of those objects, new objects can be added, existing objects can be removed, and the whole package is versioned to differentiate it from earlier versions that contained different components. h6j`h=h>h?h hA}r‹(hC]hD]hE]hF]hI]uhKNhLhhM]rŒhy)r}rŽ(h5X-Data packages can be versioned, such that individual components of a package can be replaced with new versions of those objects, new objects can be added, existing objects can be removed, and the whole package is versioned to differentiate it from earlier versions that contained different components.rh6j‰h=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKM0hM]r‘hXX-Data packages can be versioned, such that individual components of a package can be replaced with new versions of those objects, new objects can be added, existing objects can be removed, and the whole package is versioned to differentiate it from earlier versions that contained different components.r’…r“}r”(h5jh6jubaubaubht)r•}r–(h5X`A user agent can easily locate and inspect the science metadata associated with any data object h6j`h=h>h?h hA}r—(hC]hD]hE]hF]hI]uhKNhLhhM]r˜hy)r™}rš(h5X_A user agent can easily locate and inspect the science metadata associated with any data objectr›h6j•h=h>h?hˆhA}rœ(hC]hD]hE]hF]hI]uhKM6hM]rhXX_A user agent can easily locate and inspect the science metadata associated with any data objectrž…rŸ}r (h5j›h6j™ubaubaubht)r¡}r¢(h5XfA user agent can easily locate and access the data objects associated with a science metadata object. h6j`h=h>h?h hA}r£(hC]hD]hE]hF]hI]uhKNhLhhM]r¤hy)r¥}r¦(h5XeA user agent can easily locate and access the data objects associated with a science metadata object.r§h6j¡h=h>h?hˆhA}r¨(hC]hD]hE]hF]hI]uhKM9hM]r©hXXeA user agent can easily locate and access the data objects associated with a science metadata object.rª…r«}r¬(h5j§h6j¥ubaubaubht)r­}r®(h5XÈData object formats should be well-described in science metadata, ideally to sufficient detail to allow software agents to parse and load the data and science metadata objects for additional processing, querying, and manipulation The data objects supported should minimally include: * Data Tables in CSV and other fixed and delimited text formats * NetCDF files * Raster images in various formats * Vector data in specific, community-accepted formats h6j`h=h>h?h hA}r¯(hC]hD]hE]hF]hI]uhKNhLhhM]r°(hy)r±}r²(h5XData object formats should be well-described in science metadata, ideally to sufficient detail to allow software agents to parse and load the data and science metadata objects for additional processing, querying, and manipulation The data objects supported should minimally include:r³h6j­h=h>h?hˆhA}r´(hC]hD]hE]hF]hI]uhKM<hM]rµhXXData object formats should be well-described in science metadata, ideally to sufficient detail to allow software agents to parse and load the data and science metadata objects for additional processing, querying, and manipulation The data objects supported should minimally include:r¶…r·}r¸(h5j³h6j±ubaubcdocutils.nodes block_quote r¹)rº}r»(h5UhA}r¼(hC]hD]hE]hF]hI]uh6j­hM]r½hn)r¾}r¿(h5UhA}rÀ(jcX*hF]hE]hC]hD]hI]uh6jºhM]rÁ(ht)rÂ}rÃ(h5X=Data Tables in CSV and other fixed and delimited text formatsrÄhA}rÅ(hC]hD]hE]hF]hI]uh6j¾hM]rÆhy)rÇ}rÈ(h5jÄh6jÂh=h>h?hˆhA}rÉ(hC]hD]hE]hF]hI]uhKMAhM]rÊhXX=Data Tables in CSV and other fixed and delimited text formatsrË…rÌ}rÍ(h5jÄh6jÇubaubah?h ubht)rÎ}rÏ(h5X NetCDF filesrÐhA}rÑ(hC]hD]hE]hF]hI]uh6j¾hM]rÒhy)rÓ}rÔ(h5jÐh6jÎh=h>h?hˆhA}rÕ(hC]hD]hE]hF]hI]uhKMBhM]rÖhXX NetCDF filesr×…rØ}rÙ(h5jÐh6jÓubaubah?h ubht)rÚ}rÛ(h5X Raster images in various formatsrÜhA}rÝ(hC]hD]hE]hF]hI]uh6j¾hM]rÞhy)rß}rà(h5jÜh6jÚh=h>h?hˆhA}rá(hC]hD]hE]hF]hI]uhKMChM]râhXX Raster images in various formatsrã…rä}rå(h5jÜh6jßubaubah?h ubht)ræ}rç(h5X4Vector data in specific, community-accepted formats hA}rè(hC]hD]hE]hF]hI]uh6j¾hM]réhy)rê}rë(h5X3Vector data in specific, community-accepted formatsrìh6jæh=h>h?hˆhA}rí(hC]hD]hE]hF]hI]uhKMDhM]rîhXX3Vector data in specific, community-accepted formatsrï…rð}rñ(h5jìh6jêubaubah?h ubeh?hqubah?U block_quoteròubeubht)ró}rô(h5X¬A scientist can load all of the supported data objects from a data package found in a metadata search without directly knowing the identifiers for individual data objects. h6j`h=h>h?h hA}rõ(hC]hD]hE]hF]hI]uhKNhLhhM]röhy)r÷}rø(h5X«A scientist can load all of the supported data objects from a data package found in a metadata search without directly knowing the identifiers for individual data objects.rùh6jóh=h>h?hˆhA}rú(hC]hD]hE]hF]hI]uhKMFhM]rûhXX«A scientist can load all of the supported data objects from a data package found in a metadata search without directly knowing the identifiers for individual data objects.rü…rý}rþ(h5jùh6j÷ubaubaubht)rÿ}r(h5X³A scientist can upload a new data object and associated science metadata in order to create a new data package, or to extend or create a new version of an existing data package h6j`h=h>h?h hA}r(hC]hD]hE]hF]hI]uhKNhLhhM]rhy)r}r(h5X°A scientist can upload a new data object and associated science metadata in order to create a new data package, or to extend or create a new version of an existing data packagerh6jÿh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKMJhM]rhXX°A scientist can upload a new data object and associated science metadata in order to create a new data package, or to extend or create a new version of an existing data packager…r }r (h5jh6jubaubaubeubeubh7)r }r (h5Uh6j5h=h>h?h@hA}r (hC]hD]hE]hF]rjNahI]rh$auhKMQhLhhM]r(hO)r}r(h5jSh6j h=h>h?hShA}r(hF]hE]hC]hD]hI]hUjMuhKMQhLhhM]rhXX*Package Content Associations Using OAI-OREr…r}r(h5jSh6jubaubhy)r}r(h5XnThe Open Archives Initiative's Object Reuse and Exchange (OAI-ORE) [Lagoze-2008]_ "defines standards for the description and exchange of aggregations of Web resources". OAI-ORE provides a mechanism for describing aggregations of distinct resources on the web by using their respective URIs to provide linkages in an RDF model. Each Aggregation is given its own distinct identifying URI, and ORE recommends the use of `Cool URIs`_ for the Semantic Web [Sauermann_Cyganiak-2008]_ as a mechanism to redirect from the Aggregation URI to a specific representation of the Aggregation, called a Resource Map, that can be represented in one of several different serializations such as RDF/XML, turtle, and Atom XML. Because relationships among resources are provided using RDF predicates, there is tremendous flexibility in the type of relationships that can be defined. ORE provides specific predicates that define relationship types between the Aggregation and a Resource Map ('ore:describes') and between the Aggregation and the Resources that it aggregates ('ore:aggregates'). These concepts relate closely to similar concepts in DataONE.h6j h=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKMShLhhM]r(hXXCThe Open Archives Initiative's Object Reuse and Exchange (OAI-ORE) r…r}r(h5XCThe Open Archives Initiative's Object Reuse and Exchange (OAI-ORE) h6jubj.)r}r (h5X Lagoze-2008r!h6jh=h>h?j2hA}r"(UreftypeUcitationr#UrefwarnˆU reftargetj!U refdomainUstdr$hF]r%Uid1r&ahE]hC]hD]hI]uhKMShLhhM]r'hXX [Lagoze-2008]r(…r)}r*(h5Uh6jubaubhXXP "defines standards for the description and exchange of aggregations of Web resources". OAI-ORE provides a mechanism for describing aggregations of distinct resources on the web by using their respective URIs to provide linkages in an RDF model. Each Aggregation is given its own distinct identifying URI, and ORE recommends the use of r+…r,}r-(h5XP "defines standards for the description and exchange of aggregations of Web resources". OAI-ORE provides a mechanism for describing aggregations of distinct resources on the web by using their respective URIs to provide linkages in an RDF model. Each Aggregation is given its own distinct identifying URI, and ORE recommends the use of h6jubh~)r.}r/(h5X `Cool URIs`_jˆKh6jh?h‡hA}r0(UnameX Cool URIsjŠXhttp://www.w3.org/TR/cooluris/r1hF]hE]hC]hD]hI]uhM]r2hXX Cool URIsr3…r4}r5(h5Uh6j.ubaubhXX for the Semantic Web r6…r7}r8(h5X for the Semantic Web h6jubj.)r9}r:(h5XSauermann_Cyganiak-2008r;h6jh=h>h?j2hA}r<(Ureftypej#UrefwarnˆU reftargetj;U refdomainj$hF]r=Uid2r>ahE]hC]hD]hI]uhKMShLhhM]r?hXX[Sauermann_Cyganiak-2008]r@…rA}rB(h5Uh6j9ubaubhXX‘ as a mechanism to redirect from the Aggregation URI to a specific representation of the Aggregation, called a Resource Map, that can be represented in one of several different serializations such as RDF/XML, turtle, and Atom XML. Because relationships among resources are provided using RDF predicates, there is tremendous flexibility in the type of relationships that can be defined. ORE provides specific predicates that define relationship types between the Aggregation and a Resource Map ('ore:describes') and between the Aggregation and the Resources that it aggregates ('ore:aggregates'). These concepts relate closely to similar concepts in DataONE.rC…rD}rE(h5X‘ as a mechanism to redirect from the Aggregation URI to a specific representation of the Aggregation, called a Resource Map, that can be represented in one of several different serializations such as RDF/XML, turtle, and Atom XML. Because relationships among resources are provided using RDF predicates, there is tremendous flexibility in the type of relationships that can be defined. ORE provides specific predicates that define relationship types between the Aggregation and a Resource Map ('ore:describes') and between the Aggregation and the Resources that it aggregates ('ore:aggregates'). These concepts relate closely to similar concepts in DataONE.h6jubeubcdocutils.nodes definition_list rF)rG}rH(h5Uh6j h=Nh?Udefinition_listrIhA}rJ(hC]hD]hE]hF]hI]uhKNhLhhM]rKcdocutils.nodes definition_list_item rL)rM}rN(h5X­Beneficial features * Uses traditional web URIs as global identifiers * Compatible with the Linked Data philosophy * Supports arbitrary graphs of resources and aggregations h6jGh=h>h?Udefinition_list_itemrOhA}rP(hC]hD]hE]hF]hI]uhKMghM]rQ(cdocutils.nodes term rR)rS}rT(h5XBeneficial featuresrUh6jMh=h>h?UtermrVhA}rW(hC]hD]hE]hF]hI]uhKMghM]rXhXXBeneficial featuresrY…rZ}r[(h5jUh6jSubaubcdocutils.nodes definition r\)r]}r^(h5UhA}r_(hC]hD]hE]hF]hI]uh6jMhM]r`hn)ra}rb(h5UhA}rc(jcX*hF]hE]hC]hD]hI]uh6j]hM]rd(ht)re}rf(h5X/Uses traditional web URIs as global identifiersrghA}rh(hC]hD]hE]hF]hI]uh6jahM]rihy)rj}rk(h5jgh6jeh=h>h?hˆhA}rl(hC]hD]hE]hF]hI]uhKMehM]rmhXX/Uses traditional web URIs as global identifiersrn…ro}rp(h5jgh6jjubaubah?h ubht)rq}rr(h5X*Compatible with the Linked Data philosophyrshA}rt(hC]hD]hE]hF]hI]uh6jahM]ruhy)rv}rw(h5jsh6jqh=h>h?hˆhA}rx(hC]hD]hE]hF]hI]uhKMfhM]ryhXX*Compatible with the Linked Data philosophyrz…r{}r|(h5jsh6jvubaubah?h ubht)r}}r~(h5X8Supports arbitrary graphs of resources and aggregations hA}r(hC]hD]hE]hF]hI]uh6jahM]r€hy)r}r‚(h5X7Supports arbitrary graphs of resources and aggregationsrƒh6j}h=h>h?hˆhA}r„(hC]hD]hE]hF]hI]uhKMghM]r…hXX7Supports arbitrary graphs of resources and aggregationsr†…r‡}rˆ(h5jƒh6jubaubah?h ubeh?hqubah?U definitionr‰ubeubaubeubh7)rŠ}r‹(h5Uh6j5h=h>h?h@hA}rŒ(hC]hD]hE]hF]rjaahI]rŽh'auhKMjhLhhM]r(hO)r}r‘(h5jfh6jŠh=h>h?hShA}r’(hF]hE]hC]hD]hI]hUj`uhKMjhLhhM]r“hXXIssues and Resolutionr”…r•}r–(h5jfh6jubaubjF)r—}r˜(h5Uh6jŠh=Nh?jIhA}r™(hC]hD]hE]hF]hI]uhKNhLhhM]rš(jL)r›}rœ(h5X™Issues * Does not provide a direct serialization of the Aggregation with the bytes inline * No data model for internal structure of enclosed resources h6j—h=h>h?jOhA}r(hC]hD]hE]hF]hI]uhKMohM]rž(jR)rŸ}r (h5XIssuesr¡h6j›h=h>h?jVhA}r¢(hC]hD]hE]hF]hI]uhKMohM]r£hXXIssuesr¤…r¥}r¦(h5j¡h6jŸubaubj\)r§}r¨(h5UhA}r©(hC]hD]hE]hF]hI]uh6j›hM]rªhn)r«}r¬(h5UhA}r­(jcX*hF]hE]hC]hD]hI]uh6j§hM]r®(ht)r¯}r°(h5XPDoes not provide a direct serialization of the Aggregation with the bytes inlinehA}r±(hC]hD]hE]hF]hI]uh6j«hM]r²hy)r³}r´(h5XPDoes not provide a direct serialization of the Aggregation with the bytes inlinerµh6j¯h=h>h?hˆhA}r¶(hC]hD]hE]hF]hI]uhKMmhM]r·hXXPDoes not provide a direct serialization of the Aggregation with the bytes inliner¸…r¹}rº(h5jµh6j³ubaubah?h ubht)r»}r¼(h5X;No data model for internal structure of enclosed resources hA}r½(hC]hD]hE]hF]hI]uh6j«hM]r¾hy)r¿}rÀ(h5X:No data model for internal structure of enclosed resourcesrÁh6j»h=h>h?hˆhA}rÂ(hC]hD]hE]hF]hI]uhKMohM]rÃhXX:No data model for internal structure of enclosed resourcesrÄ…rÅ}rÆ(h5jÁh6j¿ubaubah?h ubeh?hqubah?j‰ubeubjL)rÇ}rÈ(h5XJQuestions * Do URIs really have to be used, or can other resource identifiers such as DOIs be used? * Is there a more elegant way to link the Aggregation to a Resource Map than using the `Cool URIs`_ approach of redirection, especially when multiple physical copies of a Resource might exist at multiple physical locations? h6j—h=h>h?jOhA}rÉ(hC]hD]hE]hF]hI]uhKMvhLhhM]rÊ(jR)rË}rÌ(h5X QuestionsrÍh6jÇh=h>h?jVhA}rÎ(hC]hD]hE]hF]hI]uhKMvhM]rÏhXX QuestionsrÐ…rÑ}rÒ(h5jÍh6jËubaubj\)rÓ}rÔ(h5UhA}rÕ(hC]hD]hE]hF]hI]uh6jÇhM]rÖhn)r×}rØ(h5UhA}rÙ(jcX*hF]hE]hC]hD]hI]uh6jÓhM]rÚ(ht)rÛ}rÜ(h5XWDo URIs really have to be used, or can other resource identifiers such as DOIs be used?hA}rÝ(hC]hD]hE]hF]hI]uh6j×hM]rÞhy)rß}rà(h5XWDo URIs really have to be used, or can other resource identifiers such as DOIs be used?ráh6jÛh=h>h?hˆhA}râ(hC]hD]hE]hF]hI]uhKMrhM]rãhXXWDo URIs really have to be used, or can other resource identifiers such as DOIs be used?rä…rå}ræ(h5jáh6jßubaubah?h ubht)rç}rè(h5XÞIs there a more elegant way to link the Aggregation to a Resource Map than using the `Cool URIs`_ approach of redirection, especially when multiple physical copies of a Resource might exist at multiple physical locations? hA}ré(hC]hD]hE]hF]hI]uh6j×hM]rêhy)rë}rì(h5XÝIs there a more elegant way to link the Aggregation to a Resource Map than using the `Cool URIs`_ approach of redirection, especially when multiple physical copies of a Resource might exist at multiple physical locations?h6jçh=h>h?hˆhA}rí(hC]hD]hE]hF]hI]uhKMthM]rî(hXXUIs there a more elegant way to link the Aggregation to a Resource Map than using the rï…rð}rñ(h5XUIs there a more elegant way to link the Aggregation to a Resource Map than using the h6jëubh~)rò}ró(h5X `Cool URIs`_jˆKh6jëh?h‡hA}rô(UnameX Cool URIsjŠj1hF]hE]hC]hD]hI]uhM]rõhXX Cool URIsrö…r÷}rø(h5Uh6jòubaubhXX| approach of redirection, especially when multiple physical copies of a Resource might exist at multiple physical locations?rù…rú}rû(h5X| approach of redirection, especially when multiple physical copies of a Resource might exist at multiple physical locations?h6jëubeubah?h ubeh?hqubah?j‰ubeubeubcdocutils.nodes figure rü)rý}rþ(h5Uh6jŠh=h>h?UfigurerÿhA}r(hC]hD]hE]hF]rUid7rahI]uhKMzhLhhM]r(já)r}r(h5X†.. figure:: http://www.openarchives.org/ore/1.0/datamodel-images/ore_uml.png **Figure 1.** General model for an OAI-ORE document. h6jýh=h>h?jähA}r(UuriX@http://www.openarchives.org/ore/1.0/datamodel-images/ore_uml.pngrhF]hE]hC]hD]jç}rU?jshI]uhKMzhM]ubcdocutils.nodes caption r )r }r (h5X4**Figure 1.** General model for an OAI-ORE document.h6jýh=h>h?Ucaptionr hA}r (hC]hD]hE]hF]hI]uhKMzhM]r(cdocutils.nodes strong r)r}r(h5X **Figure 1.**hA}r(hC]hD]hE]hF]hI]uh6j hM]rhXX Figure 1.r…r}r(h5Uh6jubah?UstrongrubhXX' General model for an OAI-ORE document.r…r}r(h5X' General model for an OAI-ORE document.h6j ubeubeubjü)r}r(h5Uh6jŠh=h>h?jÿhA}r(hC]hD]hE]hF]rUid8rahI]uhKM~hLhhM]r (já)r!}r"(h5XÑ.. figure:: images/package_eg_1.png **Figure 2.** Simple OAI-ORE representation of a data package with single science metadata (*scimeta_id*) and data(*scidata_id*) objects. There are two issues that need to be resolved for DataONE: a) how to assert that the aggregated object *scidata_id* is described by the metadata *scimeta_id*; and b) identifiers in OAI-ORE *must* be "protocol-based URIs", which is more restrictive that DataONE requires. h6jh=h>h?jähA}r#(UuriXdesign/images/package_eg_1.pngr$hF]hE]hC]hD]jç}r%U*j$shI]uhKM~hM]ubj )r&}r'(h5X˜**Figure 2.** Simple OAI-ORE representation of a data package with single science metadata (*scimeta_id*) and data(*scidata_id*) objects. There are two issues that need to be resolved for DataONE: a) how to assert that the aggregated object *scidata_id* is described by the metadata *scimeta_id*; and b) identifiers in OAI-ORE *must* be "protocol-based URIs", which is more restrictive that DataONE requires.h6jh=h>h?j hA}r((hC]hD]hE]hF]hI]uhKM~hM]r)(j)r*}r+(h5X **Figure 2.**hA}r,(hC]hD]hE]hF]hI]uh6j&hM]r-hXX Figure 2.r.…r/}r0(h5Uh6j*ubah?jubhXXO Simple OAI-ORE representation of a data package with single science metadata (r1…r2}r3(h5XO Simple OAI-ORE representation of a data package with single science metadata (h6j&ubjG)r4}r5(h5X *scimeta_id*hA}r6(hC]hD]hE]hF]hI]uh6j&hM]r7hXX scimeta_idr8…r9}r:(h5Uh6j4ubah?jOubhXX ) and data(r;…r<}r=(h5X ) and data(h6j&ubjG)r>}r?(h5X *scidata_id*hA}r@(hC]hD]hE]hF]hI]uh6j&hM]rAhXX scidata_idrB…rC}rD(h5Uh6j>ubah?jOubhXXr) objects. There are two issues that need to be resolved for DataONE: a) how to assert that the aggregated object rE…rF}rG(h5Xr) objects. There are two issues that need to be resolved for DataONE: a) how to assert that the aggregated object h6j&ubjG)rH}rI(h5X *scidata_id*hA}rJ(hC]hD]hE]hF]hI]uh6j&hM]rKhXX scidata_idrL…rM}rN(h5Uh6jHubah?jOubhXX is described by the metadata rO…rP}rQ(h5X is described by the metadata h6j&ubjG)rR}rS(h5X *scimeta_id*hA}rT(hC]hD]hE]hF]hI]uh6j&hM]rUhXX scimeta_idrV…rW}rX(h5Uh6jRubah?jOubhXX ; and b) identifiers in OAI-ORE rY…rZ}r[(h5X ; and b) identifiers in OAI-ORE h6j&ubjG)r\}r](h5X*must*hA}r^(hC]hD]hE]hF]hI]uh6j&hM]r_hXXmustr`…ra}rb(h5Uh6j\ubah?jOubhXXK be "protocol-based URIs", which is more restrictive that DataONE requires.rc…rd}re(h5XK be "protocol-based URIs", which is more restrictive that DataONE requires.h6j&ubeubeubhy)rf}rg(h5X **Issue:**rhh6jŠh=h>h?hˆhA}ri(hC]hD]hE]hF]hI]uhKM†hLhhM]rjj)rk}rl(h5jhhA}rm(hC]hD]hE]hF]hI]uh6jfhM]rnhXXIssue:ro…rp}rq(h5Uh6jkubah?jubaubhy)rr}rs(h5X‘There are no predicates in ORE that can be used to indicate that the aggregated object *scimeta_id* describes the data indicated by *scidata_id*.h6jŠh=h>h?hˆhA}rt(hC]hD]hE]hF]hI]uhKMˆhLhhM]ru(hXXWThere are no predicates in ORE that can be used to indicate that the aggregated object rv…rw}rx(h5XWThere are no predicates in ORE that can be used to indicate that the aggregated object h6jrubjG)ry}rz(h5X *scimeta_id*hA}r{(hC]hD]hE]hF]hI]uh6jrhM]r|hXX scimeta_idr}…r~}r(h5Uh6jyubah?jOubhXX! describes the data indicated by r€…r}r‚(h5X! describes the data indicated by h6jrubjG)rƒ}r„(h5X *scidata_id*hA}r…(hC]hD]hE]hF]hI]uh6jrhM]r†hXX scidata_idr‡…rˆ}r‰(h5Uh6jƒubah?jOubhXX.…rŠ}r‹(h5X.h6jrubeubhy)rŒ}r(h5X **Options:**rŽh6jŠh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKM‹hLhhM]rj)r‘}r’(h5jŽhA}r“(hC]hD]hE]hF]hI]uh6jŒhM]r”hXXOptions:r•…r–}r—(h5Uh6j‘ubah?jubaubjc)r˜}r™(h5Uh6jŠh=h>h?jfhA}rš(jhU.hF]hE]hC]jiUhD]hI]jjjkuhKMhLhhM]r›(ht)rœ}r(h5XéReferences between *scimeta_id* and *scidata_id* can be supported through non-ORE RDF elements. Reuse of existing terms should be emphasized. For example, the DCMI Type Vocabulary defines a *Dataset* type that could be used to indicate that *scidata_id* refers to a data object by attaching the Dublin Core Terms Type predicate to the ORE aggregated object. Other possibilities from dcterms include `references`_ and `isReferencedBy`_, `requires`_ and `isRequiredBy`_, and `relation`_. In the document Mapping DataCite Metadata Scheme Terms (v2.0) to ontologies (DataCite2RDF_), Shotton and Peroni provide a mapping between concepts described in the DataCite schema and existing ontologies with the general goal of expressing DataCite in RDF. The recommendation provided therein is to use terms drawn from the Citation Typing Ontology (CiTO_) and others. The semantics of the CiTO terms *documents* and *isDocumentedBy* match nicely with the relationships between data and science metadata objects. h6j˜h=h>h?h hA}rž(hC]hD]hE]hF]hI]uhKNhLhhM]rŸ(hy)r }r¡(h5XReferences between *scimeta_id* and *scidata_id* can be supported through non-ORE RDF elements. Reuse of existing terms should be emphasized.h6jœh=h>h?hˆhA}r¢(hC]hD]hE]hF]hI]uhKMhM]r£(hXXReferences between r¤…r¥}r¦(h5XReferences between h6j ubjG)r§}r¨(h5X *scimeta_id*hA}r©(hC]hD]hE]hF]hI]uh6j hM]rªhXX scimeta_idr«…r¬}r­(h5Uh6j§ubah?jOubhXX and r®…r¯}r°(h5X and h6j ubjG)r±}r²(h5X *scidata_id*hA}r³(hC]hD]hE]hF]hI]uh6j hM]r´hXX scidata_idrµ…r¶}r·(h5Uh6j±ubah?jOubhXX] can be supported through non-ORE RDF elements. Reuse of existing terms should be emphasized.r¸…r¹}rº(h5X] can be supported through non-ORE RDF elements. Reuse of existing terms should be emphasized.h6j ubeubhy)r»}r¼(h5XWFor example, the DCMI Type Vocabulary defines a *Dataset* type that could be used to indicate that *scidata_id* refers to a data object by attaching the Dublin Core Terms Type predicate to the ORE aggregated object. Other possibilities from dcterms include `references`_ and `isReferencedBy`_, `requires`_ and `isRequiredBy`_, and `relation`_.h6jœh=h>h?hˆhA}r½(hC]hD]hE]hF]hI]uhKMhM]r¾(hXX0For example, the DCMI Type Vocabulary defines a r¿…rÀ}rÁ(h5X0For example, the DCMI Type Vocabulary defines a h6j»ubjG)rÂ}rÃ(h5X *Dataset*hA}rÄ(hC]hD]hE]hF]hI]uh6j»hM]rÅhXXDatasetrÆ…rÇ}rÈ(h5Uh6jÂubah?jOubhXX* type that could be used to indicate that rÉ…rÊ}rË(h5X* type that could be used to indicate that h6j»ubjG)rÌ}rÍ(h5X *scidata_id*hA}rÎ(hC]hD]hE]hF]hI]uh6j»hM]rÏhXX scidata_idrÐ…rÑ}rÒ(h5Uh6jÌubah?jOubhXX’ refers to a data object by attaching the Dublin Core Terms Type predicate to the ORE aggregated object. Other possibilities from dcterms include rÓ…rÔ}rÕ(h5X’ refers to a data object by attaching the Dublin Core Terms Type predicate to the ORE aggregated object. Other possibilities from dcterms include h6j»ubh~)rÖ}r×(h5X `references`_jˆKh6j»h?h‡hA}rØ(UnameX referencesrÙjŠX<http://dublincore.org/documents/dcmi-terms/#terms-referencesrÚhF]hE]hC]hD]hI]uhM]rÛhXX referencesrÜ…rÝ}rÞ(h5Uh6jÖubaubhXX and rß…rà}rá(h5X and h6j»ubh~)râ}rã(h5X`isReferencedBy`_jˆKh6j»h?h‡hA}rä(UnameXisReferencedByjŠX@http://dublincore.org/documents/dcmi-terms/#terms-isReferencedByråhF]hE]hC]hD]hI]uhM]ræhXXisReferencedByrç…rè}ré(h5Uh6jâubaubhXX, rê…rë}rì(h5X, h6j»ubh~)rí}rî(h5X `requires`_jˆKh6j»h?h‡hA}rï(UnameXrequiresrðjŠX:http://dublincore.org/documents/dcmi-terms/#terms-requiresrñhF]hE]hC]hD]hI]uhM]ròhXXrequiresró…rô}rõ(h5Uh6jíubaubhXX and rö…r÷}rø(h5X and h6j»ubh~)rù}rú(h5X`isRequiredBy`_jˆKh6j»h?h‡hA}rû(UnameX isRequiredByjŠX>http://dublincore.org/documents/dcmi-terms/#terms-isRequiredByrühF]hE]hC]hD]hI]uhM]rýhXX isRequiredByrþ…rÿ}r (h5Uh6jùubaubhXX, and r …r }r (h5X, and h6j»ubh~)r }r (h5X `relation`_jˆKh6j»h?h‡hA}r (UnameXrelationr jŠX:http://dublincore.org/documents/dcmi-terms/#terms-relationr hF]hE]hC]hD]hI]uhM]r hXXrelationr …r }r (h5Uh6j ubaubhXX.…r }r (h5X.h6j»ubeubhy)r }r (h5XIn the document Mapping DataCite Metadata Scheme Terms (v2.0) to ontologies (DataCite2RDF_), Shotton and Peroni provide a mapping between concepts described in the DataCite schema and existing ontologies with the general goal of expressing DataCite in RDF. The recommendation provided therein is to use terms drawn from the Citation Typing Ontology (CiTO_) and others. The semantics of the CiTO terms *documents* and *isDocumentedBy* match nicely with the relationships between data and science metadata objects.h6jœh=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKM–hM]r (hXXMIn the document Mapping DataCite Metadata Scheme Terms (v2.0) to ontologies (r …r }r (h5XMIn the document Mapping DataCite Metadata Scheme Terms (v2.0) to ontologies (h6j ubh~)r }r (h5X DataCite2RDF_jˆKh6j h?h‡hA}r (UnameX DataCite2RDFjŠXnhttps://docs.google.com/document/d/1paJgvmCMu3pbM4in6PjWAKO0gP-6ultii3DWQslygq4/edit?authkey=CMeV3tgF&hl=en_GBr hF]hE]hC]hD]hI]uhM]r hXX DataCite2RDFr …r }r (h5Uh6j ubaubhXX), Shotton and Peroni provide a mapping between concepts described in the DataCite schema and existing ontologies with the general goal of expressing DataCite in RDF. The recommendation provided therein is to use terms drawn from the Citation Typing Ontology (r …r }r (h5X), Shotton and Peroni provide a mapping between concepts described in the DataCite schema and existing ontologies with the general goal of expressing DataCite in RDF. The recommendation provided therein is to use terms drawn from the Citation Typing Ontology (h6j ubh~)r! }r" (h5XCiTO_jˆKh6j h?h‡hA}r# (UnameXCiTOjŠXhttp://purl.org/spar/cito/r$ hF]hE]hC]hD]hI]uhM]r% hXXCiTOr& …r' }r( (h5Uh6j! ubaubhXX.) and others. The semantics of the CiTO terms r) …r* }r+ (h5X.) and others. The semantics of the CiTO terms h6j ubjG)r, }r- (h5X *documents*hA}r. (hC]hD]hE]hF]hI]uh6j hM]r/ hXX documentsr0 …r1 }r2 (h5Uh6j, ubah?jOubhXX and r3 …r4 }r5 (h5X and h6j ubjG)r6 }r7 (h5X*isDocumentedBy*hA}r8 (hC]hD]hE]hF]hI]uh6j hM]r9 hXXisDocumentedByr: …r; }r< (h5Uh6j6 ubah?jOubhXXO match nicely with the relationships between data and science metadata objects.r= …r> }r? (h5XO match nicely with the relationships between data and science metadata objects.h6j ubeubeubht)r@ }rA (h5X\That a science metadata object actually describes one or more data objects can be inferred simply from its presence in a resource map aggregation. Detection of science metadata vs. data would be highly dependent on the object format for the object as expressed in it's system metadata. This could be augmented by adding the `format`_ predicate from dcterms, with the object being the corresponding entry in the object format registry. However, this approach will not indicate which data objects are described by which metadata documents in the case where multiple metadata documents exist in a package. h6j˜h=h>h?h hA}rB (hC]hD]hE]hF]hI]uhKNhLhhM]rC hy)rD }rE (h5XZThat a science metadata object actually describes one or more data objects can be inferred simply from its presence in a resource map aggregation. Detection of science metadata vs. data would be highly dependent on the object format for the object as expressed in it's system metadata. This could be augmented by adding the `format`_ predicate from dcterms, with the object being the corresponding entry in the object format registry. However, this approach will not indicate which data objects are described by which metadata documents in the case where multiple metadata documents exist in a package.h6j@ h=h>h?hˆhA}rF (hC]hD]hE]hF]hI]uhKM hM]rG (hXXDThat a science metadata object actually describes one or more data objects can be inferred simply from its presence in a resource map aggregation. Detection of science metadata vs. data would be highly dependent on the object format for the object as expressed in it's system metadata. This could be augmented by adding the rH …rI }rJ (h5XDThat a science metadata object actually describes one or more data objects can be inferred simply from its presence in a resource map aggregation. Detection of science metadata vs. data would be highly dependent on the object format for the object as expressed in it's system metadata. This could be augmented by adding the h6jD ubh~)rK }rL (h5X `format`_jˆKh6jD h?h‡hA}rM (UnameXformatrN jŠX8http://dublincore.org/documents/dcmi-terms/#terms-formatrO hF]hE]hC]hD]hI]uhM]rP hXXformatrQ …rR }rS (h5Uh6jK ubaubhXX  predicate from dcterms, with the object being the corresponding entry in the object format registry. However, this approach will not indicate which data objects are described by which metadata documents in the case where multiple metadata documents exist in a package.rT …rU }rV (h5X  predicate from dcterms, with the object being the corresponding entry in the object format registry. However, this approach will not indicate which data objects are described by which metadata documents in the case where multiple metadata documents exist in a package.h6jD ubeubaubeubhy)rW }rX (h5X**Resolution:**rY h6jŠh=h>h?hˆhA}rZ (hC]hD]hE]hF]hI]uhKMªhLhhM]r[ j)r\ }r] (h5jY hA}r^ (hC]hD]hE]hF]hI]uh6jW hM]r_ hXX Resolution:r` …ra }rb (h5Uh6j\ ubah?jubaubhy)rc }rd (h5X1Relationships between aggregated objects are indicated using terms drawn from the CiTO_ ontology, with *cito:documents* attached to an aggregated science metadata entry with the object of the triple being the URI of the relevant aggregated data object, and the converse indicated by *cito:isDocumentedBy*.h6jŠh=h>h?hˆhA}re (hC]hD]hE]hF]hI]uhKM¬hLhhM]rf (hXXRRelationships between aggregated objects are indicated using terms drawn from the rg …rh }ri (h5XRRelationships between aggregated objects are indicated using terms drawn from the h6jc ubh~)rj }rk (h5XCiTO_jˆKh6jc h?h‡hA}rl (UnameXCiTOjŠj$ hF]hE]hC]hD]hI]uhM]rm hXXCiTOrn …ro }rp (h5Uh6jj ubaubhXX ontology, with rq …rr }rs (h5X ontology, with h6jc ubjG)rt }ru (h5X*cito:documents*hA}rv (hC]hD]hE]hF]hI]uh6jc hM]rw hXXcito:documentsrx …ry }rz (h5Uh6jt ubah?jOubhXX¤ attached to an aggregated science metadata entry with the object of the triple being the URI of the relevant aggregated data object, and the converse indicated by r{ …r| }r} (h5X¤ attached to an aggregated science metadata entry with the object of the triple being the URI of the relevant aggregated data object, and the converse indicated by h6jc ubjG)r~ }r (h5X*cito:isDocumentedBy*hA}r€ (hC]hD]hE]hF]hI]uh6jc hM]r hXXcito:isDocumentedByr‚ …rƒ }r„ (h5Uh6j~ ubah?jOubhXX.…r… }r† (h5X.h6jc ubeubhy)r‡ }rˆ (h5X **Issue:**r‰ h6jŠh=h>h?hˆhA}rŠ (hC]hD]hE]hF]hI]uhKM²hLhhM]r‹ j)rŒ }r (h5j‰ hA}rŽ (hC]hD]hE]hF]hI]uh6j‡ hM]r hXXIssue:r …r‘ }r’ (h5Uh6jŒ ubah?jubaubhy)r“ }r” (h5X×Identifiers in OAI-ORE documents must technically be "protocol-based URIs" (http://www.openarchives.org/ore/1.0/datamodel#Aggregated_Resource), whereas identifiers in DataONE can be essentially any non-blank string.h6jŠh=h>h?hˆhA}r• (hC]hD]hE]hF]hI]uhKM´hLhhM]r– (hXXLIdentifiers in OAI-ORE documents must technically be "protocol-based URIs" (r— …r˜ }r™ (h5XLIdentifiers in OAI-ORE documents must technically be "protocol-based URIs" (h6j“ ubh~)rš }r› (h5XAhttp://www.openarchives.org/ore/1.0/datamodel#Aggregated_Resourcerœ hA}r (Urefurijœ hF]hE]hC]hD]hI]uh6j“ hM]rž hXXAhttp://www.openarchives.org/ore/1.0/datamodel#Aggregated_ResourcerŸ …r  }r¡ (h5Uh6jš ubah?h‡ubhXXJ), whereas identifiers in DataONE can be essentially any non-blank string.r¢ …r£ }r¤ (h5XJ), whereas identifiers in DataONE can be essentially any non-blank string.h6j“ ubeubhy)r¥ }r¦ (h5X **Options:**r§ h6jŠh=h>h?hˆhA}r¨ (hC]hD]hE]hF]hI]uhKM¸hLhhM]r© j)rª }r« (h5j§ hA}r¬ (hC]hD]hE]hF]hI]uh6j¥ hM]r­ hXXOptions:r® …r¯ }r° (h5Uh6jª ubah?jubaubjc)r± }r² (h5Uh6jŠh=h>h?jfhA}r³ (jhU.hF]hE]hC]jiUhD]hI]jjjkuhKMºhLhhM]r´ (ht)rµ }r¶ (h5XIgnore the OAI-ORE requirement for URI identifiers. The identifiers will still work fine in the DataONE context, but would not be friendly for anyone accessing the ORE document without an appropriate DataONE client to resolve and retrieve the referenced objects. h6j± h=h>h?h hA}r· (hC]hD]hE]hF]hI]uhKNhLhhM]r¸ hy)r¹ }rº (h5XIgnore the OAI-ORE requirement for URI identifiers. The identifiers will still work fine in the DataONE context, but would not be friendly for anyone accessing the ORE document without an appropriate DataONE client to resolve and retrieve the referenced objects.r» h6jµ h=h>h?hˆhA}r¼ (hC]hD]hE]hF]hI]uhKM¼hM]r½ hXXIgnore the OAI-ORE requirement for URI identifiers. The identifiers will still work fine in the DataONE context, but would not be friendly for anyone accessing the ORE document without an appropriate DataONE client to resolve and retrieve the referenced objects.r¾ …r¿ }rÀ (h5j» h6j¹ ubaubaubht)rÁ }r (h5X@Wrap the identifiers with a DataONE REST service URL that retrieves the object being referenced. So for example, if the DataONE identifier for the object was *scimeta_id*, then the URI used in the ORE document to reference the aggregated object would *http://cn.dataone.org/object/scimeta_id*. The :func:`CN_read.get` operation would be modified to do a resolve, then a HTTP 302 redirect to the node that contains the content. This would also require that the client libraries are updated to support redirection. This option has the advantage of keeping the the ORE document functional for non-DataONE users but has the disadvantage of obfuscating the object identifiers. The later issue could be addressed by adding the dcterms `identifier`_ property to the aggregated object with the object being the actual DataONE identifier. h6j± h=h>h?h hA}rà (hC]hD]hE]hF]hI]uhKNhLhhM]rÄ (hy)rÅ }rÆ (h5XWrap the identifiers with a DataONE REST service URL that retrieves the object being referenced. So for example, if the DataONE identifier for the object was *scimeta_id*, then the URI used in the ORE document to reference the aggregated object would *http://cn.dataone.org/object/scimeta_id*. The :func:`CN_read.get` operation would be modified to do a resolve, then a HTTP 302 redirect to the node that contains the content. This would also require that the client libraries are updated to support redirection.h6jÁ h=h>h?hˆhA}rÇ (hC]hD]hE]hF]hI]uhKMÃhM]rÈ (hXXžWrap the identifiers with a DataONE REST service URL that retrieves the object being referenced. So for example, if the DataONE identifier for the object was rÉ …rÊ }rË (h5XžWrap the identifiers with a DataONE REST service URL that retrieves the object being referenced. So for example, if the DataONE identifier for the object was h6jÅ ubjG)rÌ }rÍ (h5X *scimeta_id*hA}rÎ (hC]hD]hE]hF]hI]uh6jÅ hM]rÏ hXX scimeta_idrÐ …rÑ }rÒ (h5Uh6jÌ ubah?jOubhXXQ, then the URI used in the ORE document to reference the aggregated object would rÓ …rÔ }rÕ (h5XQ, then the URI used in the ORE document to reference the aggregated object would h6jÅ ubjG)rÖ }r× (h5X)*http://cn.dataone.org/object/scimeta_id*hA}rØ (hC]hD]hE]hF]hI]uh6jÅ hM]rÙ hXX'http://cn.dataone.org/object/scimeta_idrÚ …rÛ }rÜ (h5Uh6jÖ ubah?jOubhXX. The rÝ …rÞ }rß (h5X. The h6jÅ ubj.)rà }rá (h5X:func:`CN_read.get`râ h6jÅ h=h>h?j2hA}rã (UreftypeXfuncj4‰j5X CN_read.getU refdomainXpyrä hF]hE]U refexplicit‰hC]hD]hI]j7j8jNj NuhKMÃhM]rå j )ræ }rç (h5jâ hA}rè (hC]hD]ré (j?jä Xpy-funcrê ehE]hF]hI]uh6jà hM]rë hXX CN_read.get()rì …rí }rî (h5Uh6jæ ubah?j(ubaubhXXà operation would be modified to do a resolve, then a HTTP 302 redirect to the node that contains the content. This would also require that the client libraries are updated to support redirection.rï …rð }rñ (h5Xà operation would be modified to do a resolve, then a HTTP 302 redirect to the node that contains the content. This would also require that the client libraries are updated to support redirection.h6jÅ ubeubhy)rò }ró (h5X<This option has the advantage of keeping the the ORE document functional for non-DataONE users but has the disadvantage of obfuscating the object identifiers. The later issue could be addressed by adding the dcterms `identifier`_ property to the aggregated object with the object being the actual DataONE identifier.h6jÁ h=h>h?hˆhA}rô (hC]hD]hE]hF]hI]uhKMËhM]rõ (hXXØThis option has the advantage of keeping the the ORE document functional for non-DataONE users but has the disadvantage of obfuscating the object identifiers. The later issue could be addressed by adding the dcterms rö …r÷ }rø (h5XØThis option has the advantage of keeping the the ORE document functional for non-DataONE users but has the disadvantage of obfuscating the object identifiers. The later issue could be addressed by adding the dcterms h6jò ubh~)rù }rú (h5X `identifier`_jˆKh6jò h?h‡hA}rû (UnameX identifierrü jŠX<http://dublincore.org/documents/dcmi-terms/#terms-identifierrý hF]hE]hC]hD]hI]uhM]rþ hXX identifierrÿ …r }r (h5Uh6jù ubaubhXXW property to the aggregated object with the object being the actual DataONE identifier.r …r }r (h5XW property to the aggregated object with the object being the actual DataONE identifier.h6jò ubeubeubeubhy)r }r (h5X**Resolution:**r h6jŠh=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMÒhLhhM]r j)r }r (h5j hA}r (hC]hD]hE]hF]hI]uh6j hM]r hXX Resolution:r …r }r (h5Uh6j ubah?jubaubhy)r }r (h5XORE URIs for aggregated objects are constructed by prepending the :func:`CNCore.resolve` REST URL to the identifier (with the identifier appropriately URI path encoded). :func:`CNRead.resolve` returns an :class:`Types.ObjectLocationList` as the response body, and a HTTP status of 302 with the first node listed in the ObjectLocationList being the target of the redirect. The literal DataONE identifier for the aggregated object is added to the ORE aggregate entry as a dcterms `identifier`_ property. DataONE clients will utilize the *dcterms:identifier* entry to determine the DataONE identifier of the object and utilize the normal *resolve* and *get* approach for retrieving the object. The URLs contained in the ORE document will continue to be handled as expected by other clients.h6jŠh=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMÔhLhhM]r (hXXBORE URIs for aggregated objects are constructed by prepending the r …r }r (h5XBORE URIs for aggregated objects are constructed by prepending the h6j ubj.)r }r (h5X:func:`CNCore.resolve`r h6j h=h>h?j2hA}r (UreftypeXfuncj4‰j5XCNCore.resolveU refdomainXpyr hF]hE]U refexplicit‰hC]hD]hI]j7j8jNj NuhKMÔhM]r j )r }r (h5j hA}r (hC]hD]r! (j?j Xpy-funcr" ehE]hF]hI]uh6j hM]r# hXXCNCore.resolve()r$ …r% }r& (h5Uh6j ubah?j(ubaubhXXR REST URL to the identifier (with the identifier appropriately URI path encoded). r' …r( }r) (h5XR REST URL to the identifier (with the identifier appropriately URI path encoded). h6j ubj.)r* }r+ (h5X:func:`CNRead.resolve`r, h6j h=h>h?j2hA}r- (UreftypeXfuncj4‰j5XCNRead.resolveU refdomainXpyr. hF]hE]U refexplicit‰hC]hD]hI]j7j8jNj NuhKMÔhM]r/ j )r0 }r1 (h5j, hA}r2 (hC]hD]r3 (j?j. Xpy-funcr4 ehE]hF]hI]uh6j* hM]r5 hXXCNRead.resolve()r6 …r7 }r8 (h5Uh6j0 ubah?j(ubaubhXX returns an r9 …r: }r; (h5X returns an h6j ubj.)r< }r= (h5X!:class:`Types.ObjectLocationList`r> h6j h=h>h?j2hA}r? (UreftypeXclassj4‰j5XTypes.ObjectLocationListU refdomainXpyr@ hF]hE]U refexplicit‰hC]hD]hI]j7j8jNj NuhKMÔhM]rA j )rB }rC (h5j> hA}rD (hC]hD]rE (j?j@ Xpy-classrF ehE]hF]hI]uh6j< hM]rG hXXTypes.ObjectLocationListrH …rI }rJ (h5Uh6jB ubah?j(ubaubhXXñ as the response body, and a HTTP status of 302 with the first node listed in the ObjectLocationList being the target of the redirect. The literal DataONE identifier for the aggregated object is added to the ORE aggregate entry as a dcterms rK …rL }rM (h5Xñ as the response body, and a HTTP status of 302 with the first node listed in the ObjectLocationList being the target of the redirect. The literal DataONE identifier for the aggregated object is added to the ORE aggregate entry as a dcterms h6j ubh~)rN }rO (h5X `identifier`_jˆKh6j h?h‡hA}rP (UnameX identifierjŠjý hF]hE]hC]hD]hI]uhM]rQ hXX identifierrR …rS }rT (h5Uh6jN ubaubhXX, property. DataONE clients will utilize the rU …rV }rW (h5X, property. DataONE clients will utilize the h6j ubjG)rX }rY (h5X*dcterms:identifier*hA}rZ (hC]hD]hE]hF]hI]uh6j hM]r[ hXXdcterms:identifierr\ …r] }r^ (h5Uh6jX ubah?jOubhXXP entry to determine the DataONE identifier of the object and utilize the normal r_ …r` }ra (h5XP entry to determine the DataONE identifier of the object and utilize the normal h6j ubjG)rb }rc (h5X *resolve*hA}rd (hC]hD]hE]hF]hI]uh6j hM]re hXXresolverf …rg }rh (h5Uh6jb ubah?jOubhXX and ri …rj }rk (h5X and h6j ubjG)rl }rm (h5X*get*hA}rn (hC]hD]hE]hF]hI]uh6j hM]ro hXXgetrp …rq }rr (h5Uh6jl ubah?jOubhXX… approach for retrieving the object. The URLs contained in the ORE document will continue to be handled as expected by other clients.rs …rt }ru (h5X… approach for retrieving the object. The URLs contained in the ORE document will continue to be handled as expected by other clients.h6j ubeubeubh7)rv }rw (h5Uh6j5h=h>h?h@hA}rx (hC]hD]hE]hF]ry jtahI]rz h auhKMâhLhhM]r{ (hO)r| }r} (h5jyh6jv h=h>h?hShA}r~ (hF]hE]hC]hD]hI]hUjsuhKMâhLhhM]r hXXExamplesr€ …r }r‚ (h5jyh6j| ubaubhy)rƒ }r„ (h5X_An RDF-XML rendering of the example from Figure 2 following the recommendations as generated using the `Foresite python library`_ is presented below. This OAI-ORE document is an example of a simple data package in DataONE, where a single science metadata document (identifier = *scimeta_id*) describes a single data object (identifier = *scidata_id*).h6jv h=h>h?hˆhA}r… (hC]hD]hE]hF]hI]uhKMähLhhM]r† (hXXgAn RDF-XML rendering of the example from Figure 2 following the recommendations as generated using the r‡ …rˆ }r‰ (h5XgAn RDF-XML rendering of the example from Figure 2 following the recommendations as generated using the h6jƒ ubh~)rŠ }r‹ (h5X`Foresite python library`_jˆKh6jƒ h?h‡hA}rŒ (UnameXForesite python libraryjŠX<http://code.google.com/p/foresite-toolkit/wiki/PythonLibraryr hF]hE]hC]hD]hI]uhM]rŽ hXXForesite python libraryr …r }r‘ (h5Uh6jŠ ubaubhXX• is presented below. This OAI-ORE document is an example of a simple data package in DataONE, where a single science metadata document (identifier = r’ …r“ }r” (h5X• is presented below. This OAI-ORE document is an example of a simple data package in DataONE, where a single science metadata document (identifier = h6jƒ ubjG)r• }r– (h5X *scimeta_id*hA}r— (hC]hD]hE]hF]hI]uh6jƒ hM]r˜ hXX scimeta_idr™ …rš }r› (h5Uh6j• ubah?jOubhXX/) describes a single data object (identifier = rœ …r }rž (h5X/) describes a single data object (identifier = h6jƒ ubjG)rŸ }r  (h5X *scidata_id*hA}r¡ (hC]hD]hE]hF]hI]uh6jƒ hM]r¢ hXX scidata_idr£ …r¤ }r¥ (h5Uh6jŸ ubah?jOubhXX).r¦ …r§ }r¨ (h5X).h6jƒ ubeubj·)r© }rª (h5X` foresite@googlegroups.com Foresite Toolkit (Python) scimeta_id A reference to a science metadata document using a DataONE identifier. ResourceMap resource_map_id 2011-08-12T12:55:16Z application/rdf+xml 2011-08-12T12:55:16Z Aggregation Simple aggregation of science metadata and data scidata_id A reference to a science data object using a DataONE identifier h6jv h=h>h?jºhA}r« (Ulinenosr¬ ‰Ulanguager­ Xxmlj¼j½hF]hE]hC]Uhighlight_argsr® }hD]hI]uhKMêhLhhM]r¯ hXX` foresite@googlegroups.com Foresite Toolkit (Python) scimeta_id A reference to a science metadata document using a DataONE identifier. ResourceMap resource_map_id 2011-08-12T12:55:16Z application/rdf+xml 2011-08-12T12:55:16Z Aggregation Simple aggregation of science metadata and data scidata_id A reference to a science data object using a DataONE identifier r° …r± }r² (h5Uh6j© ubaubhy)r³ }r´ (h5XThe same in N3::rµ h6jv h=h>h?hˆhA}r¶ (hC]hD]hE]hF]hI]uhKMhLhhM]r· hXXThe same in N3:r¸ …r¹ }rº (h5XThe same in N3:h6j³ ubaubj·)r» }r¼ (h5X@prefix cito: . @prefix dc: . @prefix dcterms: . @prefix foaf: . @prefix ore: . @prefix rdfs1: . a ; dc:format "text/rdf+n3"; dcterms:created "2011-08-12T12:57:03Z"; dcterms:creator ; dcterms:identifier "resource_map_id"; dcterms:modified "2011-08-12T12:57:03Z"; ore:describes . a ; dcterms:title "Simple aggregation of science metadata and data"; ore:aggregates , . foaf:mbox "foresite@googlegroups.com"; foaf:name "Foresite Toolkit (Python)" . rdfs1:isDefinedBy ore:; rdfs1:label "Aggregation" . rdfs1:isDefinedBy ore:; rdfs1:label "ResourceMap" . dcterms:description "A reference to a science data object using a DataONE identifier"; dcterms:identifier "scidata_id"; cito:isDocumentedBy . dcterms:description "A reference to a science metadata document using a DataONE identifier."; dcterms:identifier "scimeta_id"; cito:documents .h6jv h=h>h?jºhA}r½ (j¼j½hF]hE]hC]hD]hI]uhKM!hLhhM]r¾ hXX@prefix cito: . @prefix dc: . @prefix dcterms: . @prefix foaf: . @prefix ore: . @prefix rdfs1: . a ; dc:format "text/rdf+n3"; dcterms:created "2011-08-12T12:57:03Z"; dcterms:creator ; dcterms:identifier "resource_map_id"; dcterms:modified "2011-08-12T12:57:03Z"; ore:describes . a ; dcterms:title "Simple aggregation of science metadata and data"; ore:aggregates , . foaf:mbox "foresite@googlegroups.com"; foaf:name "Foresite Toolkit (Python)" . rdfs1:isDefinedBy ore:; rdfs1:label "Aggregation" . rdfs1:isDefinedBy ore:; rdfs1:label "ResourceMap" . dcterms:description "A reference to a science data object using a DataONE identifier"; dcterms:identifier "scidata_id"; cito:isDocumentedBy . dcterms:description "A reference to a science metadata document using a DataONE identifier."; dcterms:identifier "scimeta_id"; cito:documents .r¿ …rÀ }rÁ (h5Uh6j» ubaubjü)r }rà (h5Uh6jv h=h>h?jÿhA}rÄ (hC]hD]hE]hF]rÅ Uid9rÆ ahI]uhKMJhLhhM]rÇ (já)rÈ }rÉ (h5Xg.. figure:: images/resourcemap_eg_1.png **Figure 3.** Also rendered using the W3C RDF validator. h6j h=h>h?jähA}rÊ (UuriX"design/images/resourcemap_eg_1.pngrË hF]hE]hC]hD]jç}rÌ U*jË shI]uhKMJhM]ubj )rÍ }rÎ (h5X8**Figure 3.** Also rendered using the W3C RDF validator.h6j h=h>h?j hA}rÏ (hC]hD]hE]hF]hI]uhKMJhM]rÐ (j)rÑ }rÒ (h5X **Figure 3.**hA}rÓ (hC]hD]hE]hF]hI]uh6jÍ hM]rÔ hXX Figure 3.rÕ …rÖ }r× (h5Uh6jÑ ubah?jubhXX+ Also rendered using the W3C RDF validator.rØ …rÙ }rÚ (h5X+ Also rendered using the W3C RDF validator.h6jÍ ubeubeubjÓ)rÛ }rÜ (h5X€.. _DataCite2RDF: https://docs.google.com/document/d/1paJgvmCMu3pbM4in6PjWAKO0gP-6ultii3DWQslygq4/edit?authkey=CMeV3tgF&hl=en_GBh:Kh6jv h=h>h?jÖhA}rÝ (jŠj hF]rÞ U datacite2rdfrß ahE]hC]hD]hI]rà hauhKMNhLhhM]ubjÓ)rá }râ (h5XL.. _conformsTo: http://dublincore.org/documents/dcmi-terms/#terms-conformsToh6jv h=h>h?jÖhA}rã (jŠX<http://dublincore.org/documents/dcmi-terms/#terms-conformsTohF]rä U conformstorå ahE]hC]hD]hI]ræ h!auhKMPhLhhM]ubjÓ)rç }rè (h5XL.. _references: http://dublincore.org/documents/dcmi-terms/#terms-referencesh:Kh6jv h=h>h?jÖhA}ré (jŠjÚhF]rê U referencesrë ahE]hC]hD]hI]rì h(auhKMRhLhhM]ubjÓ)rí }rî (h5XT.. _isReferencedBy: http://dublincore.org/documents/dcmi-terms/#terms-isReferencedByh:Kh6jv h=h>h?jÖhA}rï (jŠjåhF]rð Uisreferencedbyrñ ahE]hC]hD]hI]rò h auhKMThLhhM]ubjÓ)ró }rô (h5XH.. _requires: http://dublincore.org/documents/dcmi-terms/#terms-requiresh:Kh6jv h=h>h?jÖhA}rõ (jŠjñhF]rö Urequiresr÷ ahE]hC]hD]hI]rø h+auhKMVhLhhM]ubjÓ)rù }rú (h5XP.. _isRequiredBy: http://dublincore.org/documents/dcmi-terms/#terms-isRequiredByh:Kh6jv h=h>h?jÖhA}rû (jŠjühF]rü U isrequiredbyrý ahE]hC]hD]hI]rþ hauhKMXhLhhM]ubjÓ)rÿ }r (h5XH.. _relation: http://dublincore.org/documents/dcmi-terms/#terms-relationh:Kh6jv h=h>h?jÖhA}r (jŠj hF]r Urelationr ahE]hC]hD]hI]r h,auhKMZhLhhM]ubjÓ)r }r (h5XD.. _format: http://dublincore.org/documents/dcmi-terms/#terms-formath:Kh6jv h=h>h?jÖhA}r (jŠjO hF]r Uformatr ahE]hC]hD]hI]r hauhKM\hLhhM]ubjÓ)r }r (h5XL.. _identifier: http://dublincore.org/documents/dcmi-terms/#terms-identifierh:Kh6jv h=h>h?jÖhA}r (jŠjý hF]r U identifierr ahE]hC]hD]hI]r h*auhKM^hLhhM]ubjÓ)r }r (h5X$.. _CiTO: http://purl.org/spar/cito/h:Kh6jv h=h>h?jÖhA}r (jŠj$ hF]r Ucitor ahE]hC]hD]hI]r hauhKM`hLhhM]ubeubeubh7)r }r (h5Uh6h;h=h>h?h@hA}r (hC]hD]hE]hF]r j‡ahI]r hauhKMehLhhM]r (hO)r }r (h5jŒh6j h=h>h?hShA}r (hF]hE]hC]hD]hI]hUj†uhKMehLhhM]r hXX!Package Serialization Using BagItr! …r" }r# (h5jŒh6j ubaubhy)r$ }r% (h5XËThe BagIt File Packaging Format [Boyko-2009]_ "is a hierarchical file packaging format designed to support disk-based or network-based storage and transfer of generalized digital content" (p.3). BagIt is defined in an Internet RFC that is currently being revised and is being considered in several library implementations. BagIt mainly provides a consistent mechanism for a serialized representation of a group of opaque objects using commonly available technological approaches (such as the zip archive format). BagIt includes a specification for including metadata about each of the objects, the bag itself, and fixity attributes so that any BagIt implementation can validate the components contained within a package. Unlike NetCDF and EML, BagIt does not attempt to provide a data model for the data it carries, instead asserting that consuming applications will know how to handle package contents based on the metadata included in the bag or via external knowledge.h6j h=h>h?hˆhA}r& (hC]hD]hE]hF]hI]uhKMghLhhM]r' (hXX The BagIt File Packaging Format r( …r) }r* (h5X The BagIt File Packaging Format h6j$ ubj.)r+ }r, (h5X Boyko-2009r- h6j$ h=h>h?j2hA}r. (Ureftypej#UrefwarnˆU reftargetj- U refdomainj$hF]r/ Uid3r0 ahE]hC]hD]hI]uhKMghLhhM]r1 hXX [Boyko-2009]r2 …r3 }r4 (h5Uh6j+ ubaubhXXž "is a hierarchical file packaging format designed to support disk-based or network-based storage and transfer of generalized digital content" (p.3). BagIt is defined in an Internet RFC that is currently being revised and is being considered in several library implementations. BagIt mainly provides a consistent mechanism for a serialized representation of a group of opaque objects using commonly available technological approaches (such as the zip archive format). BagIt includes a specification for including metadata about each of the objects, the bag itself, and fixity attributes so that any BagIt implementation can validate the components contained within a package. Unlike NetCDF and EML, BagIt does not attempt to provide a data model for the data it carries, instead asserting that consuming applications will know how to handle package contents based on the metadata included in the bag or via external knowledge.r5 …r6 }r7 (h5Xž "is a hierarchical file packaging format designed to support disk-based or network-based storage and transfer of generalized digital content" (p.3). BagIt is defined in an Internet RFC that is currently being revised and is being considered in several library implementations. BagIt mainly provides a consistent mechanism for a serialized representation of a group of opaque objects using commonly available technological approaches (such as the zip archive format). BagIt includes a specification for including metadata about each of the objects, the bag itself, and fixity attributes so that any BagIt implementation can validate the components contained within a package. Unlike NetCDF and EML, BagIt does not attempt to provide a data model for the data it carries, instead asserting that consuming applications will know how to handle package contents based on the metadata included in the bag or via external knowledge.h6j$ ubeubhy)r8 }r9 (h5XBeneficial featuresr: h6j h=h>h?hˆhA}r; (hC]hD]hE]hF]hI]uhKMuhLhhM]r< hXXBeneficial featuresr= …r> }r? (h5j: h6j8 ubaubj¹)r@ }rA (h5Uh6j h=Nh?jòhA}rB (hC]hD]hE]hF]hI]uhKNhLhhM]rC hn)rD }rE (h5UhA}rF (jcX*hF]hE]hC]hD]hI]uh6j@ hM]rG (ht)rH }rI (h5XBSimple and clear serialization, easy to parse, simple to recreate hA}rJ (hC]hD]hE]hF]hI]uh6jD hM]rK hy)rL }rM (h5XASimple and clear serialization, easy to parse, simple to recreaterN h6jH h=h>h?hˆhA}rO (hC]hD]hE]hF]hI]uhKMwhM]rP hXXASimple and clear serialization, easy to parse, simple to recreaterQ …rR }rS (h5jN h6jL ubaubah?h ubht)rT }rU (h5XrAllows referencing external resources via URI, which are used to populate objects in the bag when it is processed hA}rV (hC]hD]hE]hF]hI]uh6jD hM]rW hy)rX }rY (h5XqAllows referencing external resources via URI, which are used to populate objects in the bag when it is processedrZ h6jT h=h>h?hˆhA}r[ (hC]hD]hE]hF]hI]uhKMyhM]r\ hXXqAllows referencing external resources via URI, which are used to populate objects in the bag when it is processedr] …r^ }r_ (h5jZ h6jX ubaubah?h ubeh?hqubaubhy)r` }ra (h5XIssuesrb h6j h=h>h?hˆhA}rc (hC]hD]hE]hF]hI]uhKM|hLhhM]rd hXXIssuesre …rf }rg (h5jb h6j` ubaubj¹)rh }ri (h5Uh6j h=Nh?jòhA}rj (hC]hD]hE]hF]hI]uhKNhLhhM]rk hn)rl }rm (h5UhA}rn (jcX*hF]hE]hC]hD]hI]uh6jh hM]ro (ht)rp }rq (h5X;No data model for internal structure of enclosed resources hA}rr (hC]hD]hE]hF]hI]uh6jl hM]rs hy)rt }ru (h5X:No data model for internal structure of enclosed resourcesrv h6jp h=h>h?hˆhA}rw (hC]hD]hE]hF]hI]uhKM~hM]rx hXX:No data model for internal structure of enclosed resourcesry …rz }r{ (h5jv h6jt ubaubah?h ubht)r| }r} (h5X=Hierarchical structure is not extensible to arbitrary graphs hA}r~ (hC]hD]hE]hF]hI]uh6jl hM]r hy)r€ }r (h5X<Hierarchical structure is not extensible to arbitrary graphsr‚ h6j| h=h>h?hˆhA}rƒ (hC]hD]hE]hF]hI]uhKM€hM]r„ hXX<Hierarchical structure is not extensible to arbitrary graphsr… …r† }r‡ (h5j‚ h6j€ ubaubah?h ubht)rˆ }r‰ (h5X9No explicit definition of the identifier for each object hA}rŠ (hC]hD]hE]hF]hI]uh6jl hM]r‹ hy)rŒ }r (h5X8No explicit definition of the identifier for each objectrŽ h6jˆ h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKM‚hM]r hXX8No explicit definition of the identifier for each objectr‘ …r’ }r“ (h5jŽ h6jŒ ubaubah?h ubht)r” }r• (h5XìNo clear delineation of the boundaries of objects within a hierarchy (e.g., for any given sub-object in the hierarchy, is it identified by the name of its parent directory or by its own filename, or by a locally-scoped version of both? hA}r– (hC]hD]hE]hF]hI]uh6jl hM]r— hy)r˜ }r™ (h5XëNo clear delineation of the boundaries of objects within a hierarchy (e.g., for any given sub-object in the hierarchy, is it identified by the name of its parent directory or by its own filename, or by a locally-scoped version of both?rš h6j” h=h>h?hˆhA}r› (hC]hD]hE]hF]hI]uhKM„hM]rœ hXXëNo clear delineation of the boundaries of objects within a hierarchy (e.g., for any given sub-object in the hierarchy, is it identified by the name of its parent directory or by its own filename, or by a locally-scoped version of both?r …rž }rŸ (h5jš h6j˜ ubaubah?h ubeh?hqubaubhy)r  }r¡ (h5X Questionsr¢ h6j h=h>h?hˆhA}r£ (hC]hD]hE]hF]hI]uhKM‰hLhhM]r¤ hXX Questionsr¥ …r¦ }r§ (h5j¢ h6j  ubaubj¹)r¨ }r© (h5Uh6j h=Nh?jòhA}rª (hC]hD]hE]hF]hI]uhKNhLhhM]r« hn)r¬ }r­ (h5UhA}r® (jcX*hF]hE]hC]hD]hI]uh6j¨ hM]r¯ (ht)r° }r± (h5X¢How is a URI or other identifier for data objects represented in the metadata, and how is it mapped to the data object to which it applies in the data hierarchy? hA}r² (hC]hD]hE]hF]hI]uh6j¬ hM]r³ hy)r´ }rµ (h5X¡How is a URI or other identifier for data objects represented in the metadata, and how is it mapped to the data object to which it applies in the data hierarchy?r¶ h6j° h=h>h?hˆhA}r· (hC]hD]hE]hF]hI]uhKM‹hM]r¸ hXX¡How is a URI or other identifier for data objects represented in the metadata, and how is it mapped to the data object to which it applies in the data hierarchy?r¹ …rº }r» (h5j¶ h6j´ ubaubah?h ubht)r¼ }r½ (h5XƒTo be valid, must all of the fetch.txt URLs be downloaded and checksummed, and how is this handled for particularly large objects? hA}r¾ (hC]hD]hE]hF]hI]uh6j¬ hM]r¿ hy)rÀ }rÁ (h5X‚To be valid, must all of the fetch.txt URLs be downloaded and checksummed, and how is this handled for particularly large objects?r h6j¼ h=h>h?hˆhA}rà (hC]hD]hE]hF]hI]uhKMhM]rÄ hXX‚To be valid, must all of the fetch.txt URLs be downloaded and checksummed, and how is this handled for particularly large objects?rÅ …rÆ }rÇ (h5j h6jÀ ubaubah?h ubht)rÈ }rÉ (h5X[How are large objects that would normally exceed file system size limitations be handled? hA}rÊ (hC]hD]hE]hF]hI]uh6j¬ hM]rË hy)rÌ }rÍ (h5XYHow are large objects that would normally exceed file system size limitations be handled?rÎ h6jÈ h=h>h?hˆhA}rÏ (hC]hD]hE]hF]hI]uhKM’hM]rÐ hXXYHow are large objects that would normally exceed file system size limitations be handled?rÑ …rÒ }rÓ (h5jÎ h6jÌ ubaubah?h ubeh?hqubaubhy)rÔ }rÕ (h5X°The structure of a Data Package will follow the BagIt specification with the exception of the following additions and changes described here. The basic structure of a bag is::h6j h=h>h?hˆhA}rÖ (hC]hD]hE]hF]hI]uhKM–hLhhM]r× hXX¯The structure of a Data Package will follow the BagIt specification with the exception of the following additions and changes described here. The basic structure of a bag is:rØ …rÙ }rÚ (h5X¯The structure of a Data Package will follow the BagIt specification with the exception of the following additions and changes described here. The basic structure of a bag is:h6jÔ ubaubj·)rÛ }rÜ (h5X/ ├── bagit.txt ├── bag-info.txt ├── manifest-.txt ├── oai-ore.txt ├── pid-mapping.txt └── data ├── data-file-1.csv ├── data-file-2.csv ├── data-file-3.hdf └── metadata-file-1.xmlh6j h=h>h?jºhA}rÝ (j¼j½hF]hE]hC]hD]hI]uhKMšhLhhM]rÞ hXX/ ├── bagit.txt ├── bag-info.txt ├── manifest-.txt ├── oai-ore.txt ├── pid-mapping.txt └── data ├── data-file-1.csv ├── data-file-2.csv ├── data-file-3.hdf └── metadata-file-1.xmlrß …rà }rá (h5Uh6jÛ ubaubhy)râ }rã (h5X!The first addition is the presence of an OAI-ORE document ``oai-ore.txt`` within the base directory that uses the object identifiers for DataONE objects and describes the relationships among the objects in the package. The second addition is the inclusion of ``pid-mapping.txt`` tag file showing the correspondence between the persistent identifier for an object and its file location in the bag, expressed relative to the base directory. The contents of the file consist of one line for each data object in the bag, with each line of the form::h6j h=h>h?hˆhA}rä (hC]hD]hE]hF]hI]uhKM§hLhhM]rå (hXX:The first addition is the presence of an OAI-ORE document ræ …rç }rè (h5X:The first addition is the presence of an OAI-ORE document h6jâ ubj )ré }rê (h5X``oai-ore.txt``hA}rë (hC]hD]hE]hF]hI]uh6jâ hM]rì hXX oai-ore.txtrí …rî }rï (h5Uh6jé ubah?j(ubhXXº within the base directory that uses the object identifiers for DataONE objects and describes the relationships among the objects in the package. The second addition is the inclusion of rð …rñ }rò (h5Xº within the base directory that uses the object identifiers for DataONE objects and describes the relationships among the objects in the package. The second addition is the inclusion of h6jâ ubj )ró }rô (h5X``pid-mapping.txt``hA}rõ (hC]hD]hE]hF]hI]uh6jâ hM]rö hXXpid-mapping.txtr÷ …rø }rù (h5Uh6jó ubah?j(ubhXX  tag file showing the correspondence between the persistent identifier for an object and its file location in the bag, expressed relative to the base directory. The contents of the file consist of one line for each data object in the bag, with each line of the form:rú …rû }rü (h5X  tag file showing the correspondence between the persistent identifier for an object and its file location in the bag, expressed relative to the base directory. The contents of the file consist of one line for each data object in the bag, with each line of the form:h6jâ ubeubj·)rý }rþ (h5X PID FILEPATHh6j h=h>h?jºhA}rÿ (j¼j½hF]hE]hC]hD]hI]uhKM°hLhhM]r hXX PID FILEPATHr …r }r (h5Uh6jý ubaubhy)r }r (h5XÄwhere PID is the persistent identifier for the object and FILEPATH is the path in the bag to the file containing the bytes of the file. For example, a typical pid-mapping.txt file might contain::h6j h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKM²hLhhM]r hXXÃwhere PID is the persistent identifier for the object and FILEPATH is the path in the bag to the file containing the bytes of the file. For example, a typical pid-mapping.txt file might contain:r …r }r (h5XÃwhere PID is the persistent identifier for the object and FILEPATH is the path in the bag to the file containing the bytes of the file. For example, a typical pid-mapping.txt file might contain:h6j ubaubj·)r }r (h5X¯doi://10.xxxx/AA/TG43 data/data-file-1.csv doi://10.xxxx/AA/7AW3 data/data-file-2.csv doi://10.xxxx/AA/790I data/data-file-3.csv doi://10.xxxx/AA/76AV data/metadata-file-1.xmlh6j h=h>h?jºhA}r (j¼j½hF]hE]hC]hD]hI]uhKM¶hLhhM]r hXX¯doi://10.xxxx/AA/TG43 data/data-file-1.csv doi://10.xxxx/AA/7AW3 data/data-file-2.csv doi://10.xxxx/AA/790I data/data-file-3.csv doi://10.xxxx/AA/76AV data/metadata-file-1.xmlr …r }r (h5Uh6j ubaubhy)r }r (h5X"The bag can be serialized as a single file for transport following the BagIt specifications. Any objects that are listed in the OAI-ORE file but are missing from the bag data directory (and therefore from the pid-mapping.txt) must be downloaded independently via the DataONE MNRead service.r h6j h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKM»hLhhM]r hXX"The bag can be serialized as a single file for transport following the BagIt specifications. Any objects that are listed in the OAI-ORE file but are missing from the bag data directory (and therefore from the pid-mapping.txt) must be downloaded independently via the DataONE MNRead service.r …r }r (h5j h6j ubaubeubh7)r }r (h5Uh6h;h=h>h?h@hA}r (hC]hD]hE]hF]r jšahI]r h auhKMÂhLhhM]r (hO)r }r! (h5jŸh6j h=h>h?hShA}r" (hF]hE]hC]hD]hI]hUj™uhKMÂhLhhM]r# hXXData Package Client Designr$ …r% }r& (h5jŸh6j ubaubhy)r' }r( (h5X_Although DataONE CNs and MNs will treat data as opaque, it is useful to design clients that understand the structure of Data Packages and have a common semantics for representing the components and their relationships. Client applications can then be built in various analytical environments and processing languages that allow simplified manipulation and processing of the associated sets of objects contained in a Data Package. For example, given an identifier for a data object, a client should be able to easily query CNs to find the package(s) with which it is associated, and be able to easily locate and access the other components of the package to gain an understanding of the structure and semantics of the data object and its associated package components. Although initially this feature would mainly be used for providing simplified access to these components, in future versions of DataONE we envision that the structure and semantics of each object will be clear based on science metadata and annotations, allowing advanced data querying, processing, and analysis on highly heterogeneous sources of data.r) h6j h=h>h?hˆhA}r* (hC]hD]hE]hF]hI]uhKMÄhLhhM]r+ hXX_Although DataONE CNs and MNs will treat data as opaque, it is useful to design clients that understand the structure of Data Packages and have a common semantics for representing the components and their relationships. Client applications can then be built in various analytical environments and processing languages that allow simplified manipulation and processing of the associated sets of objects contained in a Data Package. For example, given an identifier for a data object, a client should be able to easily query CNs to find the package(s) with which it is associated, and be able to easily locate and access the other components of the package to gain an understanding of the structure and semantics of the data object and its associated package components. Although initially this feature would mainly be used for providing simplified access to these components, in future versions of DataONE we envision that the structure and semantics of each object will be clear based on science metadata and annotations, allowing advanced data querying, processing, and analysis on highly heterogeneous sources of data.r, …r- }r. (h5j) h6j' ubaubh7)r/ }r0 (h5Uh6j h=h>h?h@hA}r1 (hC]hD]hE]hF]r2 j±ahI]r3 hauhKMÖhLhhM]r4 (hO)r5 }r6 (h5j¶h6j/ h=h>h?hShA}r7 (hF]hE]hC]hD]hI]hUj°uhKMÖhLhhM]r8 hXXClasses, Fields, and Methodsr9 …r: }r; (h5j¶h6j5 ubaubhn)r< }r= (h5Uh6j/ h=h>h?hqhA}r> (jcX*hF]hE]hC]hD]hI]uhKMØhLhhM]r? (ht)r@ }rA (h5X•DataPackage * Fields * identifier * D1Object[] objects * Constructors * DataPackage(Identifier) * Methods * add(DataObject): DataPackage * size(): int * contains(Identifier): boolean * get(Identifier): D1Object * remove(Identifier): void * identifiers(): List * getTitle(): String * getCreator(): String * getDisplayURL(): String h6j< h=Nh?h hA}rB (hC]hD]hE]hF]hI]uhKNhLhhM]rC jF)rD }rE (h5UhA}rF (hC]hD]hE]hF]hI]uh6j@ hM]rG jL)rH }rI (h5X†DataPackage * Fields * identifier * D1Object[] objects * Constructors * DataPackage(Identifier) * Methods * add(DataObject): DataPackage * size(): int * contains(Identifier): boolean * get(Identifier): D1Object * remove(Identifier): void * identifiers(): List * getTitle(): String * getCreator(): String * getDisplayURL(): String h6jD h=h>h?jOhA}rJ (hC]hD]hE]hF]hI]uhKMçhM]rK (jR)rL }rM (h5X DataPackagerN h6jH h=h>h?jVhA}rO (hC]hD]hE]hF]hI]uhKMçhM]rP hXX DataPackagerQ …rR }rS (h5jN h6jL ubaubj\)rT }rU (h5UhA}rV (hC]hD]hE]hF]hI]uh6jH hM]rW hn)rX }rY (h5UhA}rZ (jcX*hF]hE]hC]hD]hI]uh6jT hM]r[ (ht)r\ }r] (h5X,Fields * identifier * D1Object[] objectshA}r^ (hC]hD]hE]hF]hI]uh6jX hM]r_ jF)r` }ra (h5UhA}rb (hC]hD]hE]hF]hI]uh6j\ hM]rc jL)rd }re (h5X(Fields * identifier * D1Object[] objectsh6j` h=h>h?jOhA}rf (hC]hD]hE]hF]hI]uhKMÚhM]rg (jR)rh }ri (h5XFieldsrj h6jd h=h>h?jVhA}rk (hC]hD]hE]hF]hI]uhKMÚhM]rl hXXFieldsrm …rn }ro (h5jj h6jh ubaubj\)rp }rq (h5UhA}rr (hC]hD]hE]hF]hI]uh6jd hM]rs hn)rt }ru (h5UhA}rv (jcX*hF]hE]hC]hD]hI]uh6jp hM]rw (ht)rx }ry (h5X identifierrz hA}r{ (hC]hD]hE]hF]hI]uh6jt hM]r| hy)r} }r~ (h5jz h6jx h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMÚhM]r€ hXX identifierr …r‚ }rƒ (h5jz h6j} ubaubah?h ubht)r„ }r… (h5XD1Object[] objectsr† hA}r‡ (hC]hD]hE]hF]hI]uh6jt hM]rˆ hy)r‰ }rŠ (h5j† h6j„ h=h>h?hˆhA}r‹ (hC]hD]hE]hF]hI]uhKMÛhM]rŒ hXXD1Object[] objectsr …rŽ }r (h5j† h6j‰ ubaubah?h ubeh?hqubah?j‰ubeubah?jIubah?h ubht)r }r‘ (h5X(Constructors * DataPackage(Identifier)hA}r’ (hC]hD]hE]hF]hI]uh6jX hM]r“ jF)r” }r• (h5UhA}r– (hC]hD]hE]hF]hI]uh6j hM]r— jL)r˜ }r™ (h5X&Constructors * DataPackage(Identifier)h6j” h=h>h?jOhA}rš (hC]hD]hE]hF]hI]uhKMÜhM]r› (jR)rœ }r (h5X Constructorsrž h6j˜ h=h>h?jVhA}rŸ (hC]hD]hE]hF]hI]uhKMÜhM]r  hXX Constructorsr¡ …r¢ }r£ (h5jž h6jœ ubaubj\)r¤ }r¥ (h5UhA}r¦ (hC]hD]hE]hF]hI]uh6j˜ hM]r§ hn)r¨ }r© (h5UhA}rª (jcX*hF]hE]hC]hD]hI]uh6j¤ hM]r« ht)r¬ }r­ (h5XDataPackage(Identifier)r® hA}r¯ (hC]hD]hE]hF]hI]uh6j¨ hM]r° hy)r± }r² (h5j® h6j¬ h=h>h?hˆhA}r³ (hC]hD]hE]hF]hI]uhKMÝhM]r´ hXXDataPackage(Identifier)rµ …r¶ }r· (h5j® h6j± ubaubah?h ubah?hqubah?j‰ubeubah?jIubah?h ubht)r¸ }r¹ (h5XMethods * add(DataObject): DataPackage * size(): int * contains(Identifier): boolean * get(Identifier): D1Object * remove(Identifier): void * identifiers(): List * getTitle(): String * getCreator(): String * getDisplayURL(): String hA}rº (hC]hD]hE]hF]hI]uh6jX hM]r» jF)r¼ }r½ (h5UhA}r¾ (hC]hD]hE]hF]hI]uh6j¸ hM]r¿ jL)rÀ }rÁ (h5XôMethods * add(DataObject): DataPackage * size(): int * contains(Identifier): boolean * get(Identifier): D1Object * remove(Identifier): void * identifiers(): List * getTitle(): String * getCreator(): String * getDisplayURL(): String h6j¼ h=h>h?jOhA}r (hC]hD]hE]hF]hI]uhKMçhM]rà (jR)rÄ }rÅ (h5XMethodsrÆ h6jÀ h=h>h?jVhA}rÇ (hC]hD]hE]hF]hI]uhKMçhM]rÈ hXXMethodsrÉ …rÊ }rË (h5jÆ h6jÄ ubaubj\)rÌ }rÍ (h5UhA}rÎ (hC]hD]hE]hF]hI]uh6jÀ hM]rÏ hn)rÐ }rÑ (h5UhA}rÒ (jcX*hF]hE]hC]hD]hI]uh6jÌ hM]rÓ (ht)rÔ }rÕ (h5Xadd(DataObject): DataPackagerÖ hA}r× (hC]hD]hE]hF]hI]uh6jÐ hM]rØ hy)rÙ }rÚ (h5jÖ h6jÔ h=h>h?hˆhA}rÛ (hC]hD]hE]hF]hI]uhKMßhM]rÜ hXXadd(DataObject): DataPackagerÝ …rÞ }rß (h5jÖ h6jÙ ubaubah?h ubht)rà }rá (h5X size(): intrâ hA}rã (hC]hD]hE]hF]hI]uh6jÐ hM]rä hy)rå }ræ (h5jâ h6jà h=h>h?hˆhA}rç (hC]hD]hE]hF]hI]uhKMàhM]rè hXX size(): intré …rê }rë (h5jâ h6jå ubaubah?h ubht)rì }rí (h5Xcontains(Identifier): booleanrî hA}rï (hC]hD]hE]hF]hI]uh6jÐ hM]rð hy)rñ }rò (h5jî h6jì h=h>h?hˆhA}ró (hC]hD]hE]hF]hI]uhKMáhM]rô hXXcontains(Identifier): booleanrõ …rö }r÷ (h5jî h6jñ ubaubah?h ubht)rø }rù (h5Xget(Identifier): D1Objectrú hA}rû (hC]hD]hE]hF]hI]uh6jÐ hM]rü hy)rý }rþ (h5jú h6jø h=h>h?hˆhA}rÿ (hC]hD]hE]hF]hI]uhKMâhM]r hXXget(Identifier): D1Objectr …r }r (h5jú h6jý ubaubah?h ubht)r }r (h5Xremove(Identifier): voidr hA}r (hC]hD]hE]hF]hI]uh6jÐ hM]r hy)r }r (h5j h6j h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMãhM]r hXXremove(Identifier): voidr …r }r (h5j h6j ubaubah?h ubht)r }r (h5Xidentifiers(): Listr hA}r (hC]hD]hE]hF]hI]uh6jÐ hM]r hy)r }r (h5j h6j h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMähM]r hXXidentifiers(): Listr …r }r (h5j h6j ubaubah?h ubht)r }r (h5XgetTitle(): Stringr hA}r (hC]hD]hE]hF]hI]uh6jÐ hM]r hy)r! }r" (h5j h6j h=h>h?hˆhA}r# (hC]hD]hE]hF]hI]uhKMåhM]r$ hXXgetTitle(): Stringr% …r& }r' (h5j h6j! ubaubah?h ubht)r( }r) (h5XgetCreator(): Stringr* hA}r+ (hC]hD]hE]hF]hI]uh6jÐ hM]r, hy)r- }r. (h5j* h6j( h=h>h?hˆhA}r/ (hC]hD]hE]hF]hI]uhKMæhM]r0 hXXgetCreator(): Stringr1 …r2 }r3 (h5j* h6j- ubaubah?h ubht)r4 }r5 (h5XgetDisplayURL(): String hA}r6 (hC]hD]hE]hF]hI]uh6jÐ hM]r7 hy)r8 }r9 (h5XgetDisplayURL(): Stringr: h6j4 h=h>h?hˆhA}r; (hC]hD]hE]hF]hI]uhKMçhM]r< hXXgetDisplayURL(): Stringr= …r> }r? (h5j: h6j8 ubaubah?h ubeh?hqubah?j‰ubeubah?jIubah?h ubeh?hqubah?j‰ubeubah?jIubaubht)r@ }rA (h5XÿD1Object * Fields * SystemMetadata sysmeta (contains the Identifier for this object) * byte[] data * Constructors * DataObject(Identifier) * Methods * getIdentifier(): Identifier * getType(): ObjectFormat * getSystemMetadata(): SystemMetadata * setSystemMetadata(SystemMetadata): void * getData(): byte[] * setData(byte[]): void * getDescribeList(): List * getDescribeByList(): List * getObsoltedByList(): List h6j< h=Nh?h hA}rB (hC]hD]hE]hF]hI]uhKNhLhhM]rC jF)rD }rE (h5UhA}rF (hC]hD]hE]hF]hI]uh6j@ hM]rG jL)rH }rI (h5XðD1Object * Fields * SystemMetadata sysmeta (contains the Identifier for this object) * byte[] data * Constructors * DataObject(Identifier) * Methods * getIdentifier(): Identifier * getType(): ObjectFormat * getSystemMetadata(): SystemMetadata * setSystemMetadata(SystemMetadata): void * getData(): byte[] * setData(byte[]): void * getDescribeList(): List * getDescribeByList(): List * getObsoltedByList(): List h6jD h=h>h?jOhA}rJ (hC]hD]hE]hF]hI]uhKMùhM]rK (jR)rL }rM (h5XD1ObjectrN h6jH h=h>h?jVhA}rO (hC]hD]hE]hF]hI]uhKMùhM]rP hXXD1ObjectrQ …rR }rS (h5jN h6jL ubaubj\)rT }rU (h5UhA}rV (hC]hD]hE]hF]hI]uh6jH hM]rW hn)rX }rY (h5UhA}rZ (jcX*hF]hE]hC]hD]hI]uh6jT hM]r[ (ht)r\ }r] (h5X[Fields * SystemMetadata sysmeta (contains the Identifier for this object) * byte[] datahA}r^ (hC]hD]hE]hF]hI]uh6jX hM]r_ jF)r` }ra (h5UhA}rb (hC]hD]hE]hF]hI]uh6j\ hM]rc jL)rd }re (h5XWFields * SystemMetadata sysmeta (contains the Identifier for this object) * byte[] datah6j` h=h>h?jOhA}rf (hC]hD]hE]hF]hI]uhKMëhM]rg (jR)rh }ri (h5XFieldsrj h6jd h=h>h?jVhA}rk (hC]hD]hE]hF]hI]uhKMëhM]rl hXXFieldsrm …rn }ro (h5jj h6jh ubaubj\)rp }rq (h5UhA}rr (hC]hD]hE]hF]hI]uh6jd hM]rs hn)rt }ru (h5UhA}rv (jcX*hF]hE]hC]hD]hI]uh6jp hM]rw (ht)rx }ry (h5X@SystemMetadata sysmeta (contains the Identifier for this object)rz hA}r{ (hC]hD]hE]hF]hI]uh6jt hM]r| hy)r} }r~ (h5jz h6jx h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMëhM]r€ hXX@SystemMetadata sysmeta (contains the Identifier for this object)r …r‚ }rƒ (h5jz h6j} ubaubah?h ubht)r„ }r… (h5X byte[] datar† hA}r‡ (hC]hD]hE]hF]hI]uh6jt hM]rˆ hy)r‰ }rŠ (h5j† h6j„ h=h>h?hˆhA}r‹ (hC]hD]hE]hF]hI]uhKMìhM]rŒ hXX byte[] datar …rŽ }r (h5j† h6j‰ ubaubah?h ubeh?hqubah?j‰ubeubah?jIubah?h ubht)r }r‘ (h5X'Constructors * DataObject(Identifier)hA}r’ (hC]hD]hE]hF]hI]uh6jX hM]r“ jF)r” }r• (h5UhA}r– (hC]hD]hE]hF]hI]uh6j hM]r— jL)r˜ }r™ (h5X%Constructors * DataObject(Identifier)h6j” h=h>h?jOhA}rš (hC]hD]hE]hF]hI]uhKMíhM]r› (jR)rœ }r (h5X Constructorsrž h6j˜ h=h>h?jVhA}rŸ (hC]hD]hE]hF]hI]uhKMíhM]r  hXX Constructorsr¡ …r¢ }r£ (h5jž h6jœ ubaubj\)r¤ }r¥ (h5UhA}r¦ (hC]hD]hE]hF]hI]uh6j˜ hM]r§ hn)r¨ }r© (h5UhA}rª (jcX*hF]hE]hC]hD]hI]uh6j¤ hM]r« ht)r¬ }r­ (h5XDataObject(Identifier)r® hA}r¯ (hC]hD]hE]hF]hI]uh6j¨ hM]r° hy)r± }r² (h5j® h6j¬ h=h>h?hˆhA}r³ (hC]hD]hE]hF]hI]uhKMîhM]r´ hXXDataObject(Identifier)rµ …r¶ }r· (h5j® h6j± ubaubah?h ubah?hqubah?j‰ubeubah?jIubah?h ubht)r¸ }r¹ (h5XEMethods * getIdentifier(): Identifier * getType(): ObjectFormat * getSystemMetadata(): SystemMetadata * setSystemMetadata(SystemMetadata): void * getData(): byte[] * setData(byte[]): void * getDescribeList(): List * getDescribeByList(): List * getObsoltedByList(): List hA}rº (hC]hD]hE]hF]hI]uh6jX hM]r» jF)r¼ }r½ (h5UhA}r¾ (hC]hD]hE]hF]hI]uh6j¸ hM]r¿ jL)rÀ }rÁ (h5X3Methods * getIdentifier(): Identifier * getType(): ObjectFormat * getSystemMetadata(): SystemMetadata * setSystemMetadata(SystemMetadata): void * getData(): byte[] * setData(byte[]): void * getDescribeList(): List * getDescribeByList(): List * getObsoltedByList(): List h6j¼ h=h>h?jOhA}r (hC]hD]hE]hF]hI]uhKMùhM]rà (jR)rÄ }rÅ (h5XMethodsrÆ h6jÀ h=h>h?jVhA}rÇ (hC]hD]hE]hF]hI]uhKMùhM]rÈ hXXMethodsrÉ …rÊ }rË (h5jÆ h6jÄ ubaubj\)rÌ }rÍ (h5UhA}rÎ (hC]hD]hE]hF]hI]uh6jÀ hM]rÏ hn)rÐ }rÑ (h5UhA}rÒ (jcX*hF]hE]hC]hD]hI]uh6jÌ hM]rÓ (ht)rÔ }rÕ (h5XgetIdentifier(): IdentifierrÖ hA}r× (hC]hD]hE]hF]hI]uh6jÐ hM]rØ hy)rÙ }rÚ (h5jÖ h6jÔ h=h>h?hˆhA}rÛ (hC]hD]hE]hF]hI]uhKMðhM]rÜ hXXgetIdentifier(): IdentifierrÝ …rÞ }rß (h5jÖ h6jÙ ubaubah?h ubht)rà }rá (h5XgetType(): ObjectFormatrâ hA}rã (hC]hD]hE]hF]hI]uh6jÐ hM]rä hy)rå }ræ (h5jâ h6jà h=h>h?hˆhA}rç (hC]hD]hE]hF]hI]uhKMñhM]rè hXXgetType(): ObjectFormatré …rê }rë (h5jâ h6jå ubaubah?h ubht)rì }rí (h5X#getSystemMetadata(): SystemMetadatarî hA}rï (hC]hD]hE]hF]hI]uh6jÐ hM]rð hy)rñ }rò (h5jî h6jì h=h>h?hˆhA}ró (hC]hD]hE]hF]hI]uhKMòhM]rô hXX#getSystemMetadata(): SystemMetadatarõ …rö }r÷ (h5jî h6jñ ubaubah?h ubht)rø }rù (h5X'setSystemMetadata(SystemMetadata): voidrú hA}rû (hC]hD]hE]hF]hI]uh6jÐ hM]rü hy)rý }rþ (h5jú h6jø h=h>h?hˆhA}rÿ (hC]hD]hE]hF]hI]uhKMóhM]rhXX'setSystemMetadata(SystemMetadata): voidr…r}r(h5jú h6jý ubaubah?h ubht)r}r(h5XgetData(): byte[]rhA}r(hC]hD]hE]hF]hI]uh6jÐ hM]rhy)r }r (h5jh6jh=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMôhM]r hXXgetData(): byte[]r …r}r(h5jh6j ubaubah?h ubht)r}r(h5XsetData(byte[]): voidrhA}r(hC]hD]hE]hF]hI]uh6jÐ hM]rhy)r}r(h5jh6jh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKMõhM]rhXXsetData(byte[]): voidr…r}r(h5jh6jubaubah?h ubht)r}r(h5X#getDescribeList(): ListrhA}r(hC]hD]hE]hF]hI]uh6jÐ hM]r hy)r!}r"(h5jh6jh=h>h?hˆhA}r#(hC]hD]hE]hF]hI]uhKMöhM]r$hXX#getDescribeList(): Listr%…r&}r'(h5jh6j!ubaubah?h ubht)r(}r)(h5X%getDescribeByList(): Listr*hA}r+(hC]hD]hE]hF]hI]uh6jÐ hM]r,hy)r-}r.(h5j*h6j(h=h>h?hˆhA}r/(hC]hD]hE]hF]hI]uhKM÷hM]r0hXX%getDescribeByList(): Listr1…r2}r3(h5j*h6j-ubaubah?h ubht)r4}r5(h5X'getObsoltedByList(): List hA}r6(hC]hD]hE]hF]hI]uh6jÐ hM]r7hy)r8}r9(h5X%getObsoltedByList(): Listr:h6j4h=h>h?hˆhA}r;(hC]hD]hE]hF]hI]uhKMøhM]r<hXX%getObsoltedByList(): Listr=…r>}r?(h5j:h6j8ubaubah?h ubeh?hqubah?j‰ubeubah?jIubah?h ubeh?hqubah?j‰ubeubah?jIubaubeubeubh7)r@}rA(h5Uh6j h=h>h?h@hA}rB(hC]hD]hE]hF]rCjÄahI]rDhauhKMühLhhM]rE(hO)rF}rG(h5jÉh6j@h=h>h?hShA}rH(hF]hE]hC]hD]hI]hUjÃuhKMühLhhM]rIhXX(Algorithm for Constructing Data PackagesrJ…rK}rL(h5jÉh6jFubaubhy)rM}rN(h5XÙConstructing a data package involves taking a PID as passed to the client, and using that PID to query the system metadata to find all associated science metadata objects and other data objects. If the PID points at a scimeta object, it can be used to loop through all of the data objects it describes. If the PID points at a data object, trace back to its scimeta object first, then populate the data package, and then loop over all associated data objects. In pseudocode:rOh6j@h=h>h?hˆhA}rP(hC]hD]hE]hF]hI]uhKMþhLhhM]rQhXXÙConstructing a data package involves taking a PID as passed to the client, and using that PID to query the system metadata to find all associated science metadata objects and other data objects. If the PID points at a scimeta object, it can be used to loop through all of the data objects it describes. If the PID points at a data object, trace back to its scimeta object first, then populate the data package, and then loop over all associated data objects. In pseudocode:rR…rS}rT(h5jOh6jMubaubhn)rU}rV(h5Uh6j@h=h>h?hqhA}rW(jcX*hF]hE]hC]hD]hI]uhKMhLhhM]rX(ht)rY}rZ(h5Xmn = cn.resolve(PID)r[h6jUh=h>h?h hA}r\(hC]hD]hE]hF]hI]uhKNhLhhM]r]hy)r^}r_(h5j[h6jYh=h>h?hˆhA}r`(hC]hD]hE]hF]hI]uhKMhM]rahXXmn = cn.resolve(PID)rb…rc}rd(h5j[h6j^ubaubaubht)re}rf(h5X sysmeta = getSystemMetadata(PID)rgh6jUh=h>h?h hA}rh(hC]hD]hE]hF]hI]uhKNhLhhM]rihy)rj}rk(h5jgh6jeh=h>h?hˆhA}rl(hC]hD]hE]hF]hI]uhKMhM]rmhXX sysmeta = getSystemMetadata(PID)rn…ro}rp(h5jgh6jjubaubaubht)rq}rr(h5Xswitch(sysmeta.getObjectFormat()) 1. case: EML or FGDC or other metadata format a. scimeta = mn.get(PID) b. construct DataPackage dp with sysmeta and scimeta c. for each objid in sysmeta.getDescribes() * mn = cn.resolve(objid) * objsysmeta = cn.getsysmetadata(objid) * objdata = mn.get(objid) * construct dobj = DataObject(objid, objsysmeta, objdata) * dp.addData(dobj) 2. case: all other objects considered data objects a. scimetaid = sysmeta.getDescribedBy() b. mn = cn.resolve(scimetaid) c. scisysmeta = cn.getsystemmetadata(scimetaid) d. scimeta = mn.get(scimetaid) e. construct DataPackage dp with scisysmeta and scimeta f. objdata = mn.get(objid) g. construct dobj = DataObject(ID, sysmeta, objdata) h. follow step 1.3 above to get remainder of data objects in package h6jUh=Nh?h hA}rs(hC]hD]hE]hF]hI]uhKNhLhhM]rtjF)ru}rv(h5UhA}rw(hC]hD]hE]hF]hI]uh6jqhM]rxjL)ry}rz(h5X]switch(sysmeta.getObjectFormat()) 1. case: EML or FGDC or other metadata format a. scimeta = mn.get(PID) b. construct DataPackage dp with sysmeta and scimeta c. for each objid in sysmeta.getDescribes() * mn = cn.resolve(objid) * objsysmeta = cn.getsysmetadata(objid) * objdata = mn.get(objid) * construct dobj = DataObject(objid, objsysmeta, objdata) * dp.addData(dobj) 2. case: all other objects considered data objects a. scimetaid = sysmeta.getDescribedBy() b. mn = cn.resolve(scimetaid) c. scisysmeta = cn.getsystemmetadata(scimetaid) d. scimeta = mn.get(scimetaid) e. construct DataPackage dp with scisysmeta and scimeta f. objdata = mn.get(objid) g. construct dobj = DataObject(ID, sysmeta, objdata) h. follow step 1.3 above to get remainder of data objects in package h6juh=h>h?jOhA}r{(hC]hD]hE]hF]hI]uhKMhM]r|(jR)r}}r~(h5X!switch(sysmeta.getObjectFormat())rh6jyh=h>h?jVhA}r€(hC]hD]hE]hF]hI]uhKMhM]rhXX!switch(sysmeta.getObjectFormat())r‚…rƒ}r„(h5jh6j}ubaubj\)r…}r†(h5UhA}r‡(hC]hD]hE]hF]hI]uh6jyhM]rˆjc)r‰}rŠ(h5UhA}r‹(jhU.hF]hE]hC]jiUhD]hI]jjjkuh6j…hM]rŒ(ht)r}rŽ(h5Xicase: EML or FGDC or other metadata format a. scimeta = mn.get(PID) b. construct DataPackage dp with sysmeta and scimeta c. for each objid in sysmeta.getDescribes() * mn = cn.resolve(objid) * objsysmeta = cn.getsysmetadata(objid) * objdata = mn.get(objid) * construct dobj = DataObject(objid, objsysmeta, objdata) * dp.addData(dobj) hA}r(hC]hD]hE]hF]hI]uh6j‰hM]rjF)r‘}r’(h5UhA}r“(hC]hD]hE]hF]hI]uh6jhM]r”jL)r•}r–(h5Xacase: EML or FGDC or other metadata format a. scimeta = mn.get(PID) b. construct DataPackage dp with sysmeta and scimeta c. for each objid in sysmeta.getDescribes() * mn = cn.resolve(objid) * objsysmeta = cn.getsysmetadata(objid) * objdata = mn.get(objid) * construct dobj = DataObject(objid, objsysmeta, objdata) * dp.addData(dobj) h6j‘h=h>h?jOhA}r—(hC]hD]hE]hF]hI]uhKMhM]r˜(jR)r™}rš(h5X*case: EML or FGDC or other metadata formatr›h6j•h=h>h?jVhA}rœ(hC]hD]hE]hF]hI]uhKMhM]rhXX*case: EML or FGDC or other metadata formatrž…rŸ}r (h5j›h6j™ubaubj\)r¡}r¢(h5UhA}r£(hC]hD]hE]hF]hI]uh6j•hM]r¤jc)r¥}r¦(h5UhA}r§(jhU.hF]hE]hC]jiUhD]hI]jjU loweralphar¨uh6j¡hM]r©(ht)rª}r«(h5Xscimeta = mn.get(PID)r¬hA}r­(hC]hD]hE]hF]hI]uh6j¥hM]r®hy)r¯}r°(h5j¬h6jªh=h>h?hˆhA}r±(hC]hD]hE]hF]hI]uhKM hM]r²hXXscimeta = mn.get(PID)r³…r´}rµ(h5j¬h6j¯ubaubah?h ubht)r¶}r·(h5X1construct DataPackage dp with sysmeta and scimetar¸hA}r¹(hC]hD]hE]hF]hI]uh6j¥hM]rºhy)r»}r¼(h5j¸h6j¶h=h>h?hˆhA}r½(hC]hD]hE]hF]hI]uhKM hM]r¾hXX1construct DataPackage dp with sysmeta and scimetar¿…rÀ}rÁ(h5j¸h6j»ubaubah?h ubht)rÂ}rÃ(h5XÖfor each objid in sysmeta.getDescribes() * mn = cn.resolve(objid) * objsysmeta = cn.getsysmetadata(objid) * objdata = mn.get(objid) * construct dobj = DataObject(objid, objsysmeta, objdata) * dp.addData(dobj) hA}rÄ(hC]hD]hE]hF]hI]uh6j¥hM]rÅjF)rÆ}rÇ(h5UhA}rÈ(hC]hD]hE]hF]hI]uh6jÂhM]rÉjL)rÊ}rË(h5XÑfor each objid in sysmeta.getDescribes() * mn = cn.resolve(objid) * objsysmeta = cn.getsysmetadata(objid) * objdata = mn.get(objid) * construct dobj = DataObject(objid, objsysmeta, objdata) * dp.addData(dobj) h6jÆh=h>h?jOhA}rÌ(hC]hD]hE]hF]hI]uhKMhM]rÍ(jR)rÎ}rÏ(h5X(for each objid in sysmeta.getDescribes()rÐh6jÊh=h>h?jVhA}rÑ(hC]hD]hE]hF]hI]uhKMhM]rÒhXX(for each objid in sysmeta.getDescribes()rÓ…rÔ}rÕ(h5jÐh6jÎubaubj\)rÖ}r×(h5UhA}rØ(hC]hD]hE]hF]hI]uh6jÊhM]rÙhn)rÚ}rÛ(h5UhA}rÜ(jcX*hF]hE]hC]hD]hI]uh6jÖhM]rÝ(ht)rÞ}rß(h5Xmn = cn.resolve(objid)ràhA}rá(hC]hD]hE]hF]hI]uh6jÚhM]râhy)rã}rä(h5jàh6jÞh=h>h?hˆhA}rå(hC]hD]hE]hF]hI]uhKM hM]ræhXXmn = cn.resolve(objid)rç…rè}ré(h5jàh6jãubaubah?h ubht)rê}rë(h5X%objsysmeta = cn.getsysmetadata(objid)rìhA}rí(hC]hD]hE]hF]hI]uh6jÚhM]rîhy)rï}rð(h5jìh6jêh=h>h?hˆhA}rñ(hC]hD]hE]hF]hI]uhKMhM]ròhXX%objsysmeta = cn.getsysmetadata(objid)ró…rô}rõ(h5jìh6jïubaubah?h ubht)rö}r÷(h5Xobjdata = mn.get(objid)røhA}rù(hC]hD]hE]hF]hI]uh6jÚhM]rúhy)rû}rü(h5jøh6jöh=h>h?hˆhA}rý(hC]hD]hE]hF]hI]uhKMhM]rþhXXobjdata = mn.get(objid)rÿ…r}r(h5jøh6jûubaubah?h ubht)r}r(h5X7construct dobj = DataObject(objid, objsysmeta, objdata)rhA}r(hC]hD]hE]hF]hI]uh6jÚhM]rhy)r}r(h5jh6jh=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMhM]r hXX7construct dobj = DataObject(objid, objsysmeta, objdata)r …r }r (h5jh6jubaubah?h ubht)r}r(h5Xdp.addData(dobj) hA}r(hC]hD]hE]hF]hI]uh6jÚhM]rhy)r}r(h5Xdp.addData(dobj)rh6jh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKMhM]rhXXdp.addData(dobj)r…r}r(h5jh6jubaubah?h ubeh?hqubah?j‰ubeubah?jIubah?h ubeh?jfubah?j‰ubeubah?jIubah?h ubht)r}r(h5X›case: all other objects considered data objects a. scimetaid = sysmeta.getDescribedBy() b. mn = cn.resolve(scimetaid) c. scisysmeta = cn.getsystemmetadata(scimetaid) d. scimeta = mn.get(scimetaid) e. construct DataPackage dp with scisysmeta and scimeta f. objdata = mn.get(objid) g. construct dobj = DataObject(ID, sysmeta, objdata) h. follow step 1.3 above to get remainder of data objects in package hA}r(hC]hD]hE]hF]hI]uh6j‰hM]rjF)r}r(h5UhA}r (hC]hD]hE]hF]hI]uh6jhM]r!jL)r"}r#(h5X“case: all other objects considered data objects a. scimetaid = sysmeta.getDescribedBy() b. mn = cn.resolve(scimetaid) c. scisysmeta = cn.getsystemmetadata(scimetaid) d. scimeta = mn.get(scimetaid) e. construct DataPackage dp with scisysmeta and scimeta f. objdata = mn.get(objid) g. construct dobj = DataObject(ID, sysmeta, objdata) h. follow step 1.3 above to get remainder of data objects in package h6jh=h>h?jOhA}r$(hC]hD]hE]hF]hI]uhKMhM]r%(jR)r&}r'(h5X/case: all other objects considered data objectsr(h6j"h=h>h?jVhA}r)(hC]hD]hE]hF]hI]uhKMhM]r*hXX/case: all other objects considered data objectsr+…r,}r-(h5j(h6j&ubaubj\)r.}r/(h5UhA}r0(hC]hD]hE]hF]hI]uh6j"hM]r1jc)r2}r3(h5UhA}r4(jhU.hF]hE]hC]jiUhD]hI]jjj¨uh6j.hM]r5(ht)r6}r7(h5X$scimetaid = sysmeta.getDescribedBy()r8hA}r9(hC]hD]hE]hF]hI]uh6j2hM]r:hy)r;}r<(h5j8h6j6h=h>h?hˆhA}r=(hC]hD]hE]hF]hI]uhKMhM]r>hXX$scimetaid = sysmeta.getDescribedBy()r?…r@}rA(h5j8h6j;ubaubah?h ubht)rB}rC(h5Xmn = cn.resolve(scimetaid)rDhA}rE(hC]hD]hE]hF]hI]uh6j2hM]rFhy)rG}rH(h5jDh6jBh=h>h?hˆhA}rI(hC]hD]hE]hF]hI]uhKMhM]rJhXXmn = cn.resolve(scimetaid)rK…rL}rM(h5jDh6jGubaubah?h ubht)rN}rO(h5X,scisysmeta = cn.getsystemmetadata(scimetaid)rPhA}rQ(hC]hD]hE]hF]hI]uh6j2hM]rRhy)rS}rT(h5jPh6jNh=h>h?hˆhA}rU(hC]hD]hE]hF]hI]uhKMhM]rVhXX,scisysmeta = cn.getsystemmetadata(scimetaid)rW…rX}rY(h5jPh6jSubaubah?h ubht)rZ}r[(h5Xscimeta = mn.get(scimetaid)r\hA}r](hC]hD]hE]hF]hI]uh6j2hM]r^hy)r_}r`(h5j\h6jZh=h>h?hˆhA}ra(hC]hD]hE]hF]hI]uhKMhM]rbhXXscimeta = mn.get(scimetaid)rc…rd}re(h5j\h6j_ubaubah?h ubht)rf}rg(h5X4construct DataPackage dp with scisysmeta and scimetarhhA}ri(hC]hD]hE]hF]hI]uh6j2hM]rjhy)rk}rl(h5jhh6jfh=h>h?hˆhA}rm(hC]hD]hE]hF]hI]uhKMhM]rnhXX4construct DataPackage dp with scisysmeta and scimetaro…rp}rq(h5jhh6jkubaubah?h ubht)rr}rs(h5Xobjdata = mn.get(objid)rthA}ru(hC]hD]hE]hF]hI]uh6j2hM]rvhy)rw}rx(h5jth6jrh=h>h?hˆhA}ry(hC]hD]hE]hF]hI]uhKMhM]rzhXXobjdata = mn.get(objid)r{…r|}r}(h5jth6jwubaubah?h ubht)r~}r(h5X1construct dobj = DataObject(ID, sysmeta, objdata)r€hA}r(hC]hD]hE]hF]hI]uh6j2hM]r‚hy)rƒ}r„(h5j€h6j~h=h>h?hˆhA}r…(hC]hD]hE]hF]hI]uhKMhM]r†hXX1construct dobj = DataObject(ID, sysmeta, objdata)r‡…rˆ}r‰(h5j€h6jƒubaubah?h ubht)rŠ}r‹(h5XCfollow step 1.3 above to get remainder of data objects in package hA}rŒ(hC]hD]hE]hF]hI]uh6j2hM]rhy)rŽ}r(h5XAfollow step 1.3 above to get remainder of data objects in packagerh6jŠh=h>h?hˆhA}r‘(hC]hD]hE]hF]hI]uhKMhM]r’hXXAfollow step 1.3 above to get remainder of data objects in packager“…r”}r•(h5jh6jŽubaubah?h ubeh?jfubah?j‰ubeubah?jIubah?h ubeh?jfubah?j‰ubeubah?jIubaubeubeubeubh7)r–}r—(h5Uh6h;h=h>h?h@hA}r˜(hC]hD]hE]hF]r™j×ahI]ršh auhKMhLhhM]r›(hO)rœ}r(h5jÜh6j–h=h>h?hShA}rž(hF]hE]hC]hD]hI]hUjÖuhKMhLhhM]rŸhXX!Additional Packaging Technologiesr …r¡}r¢(h5jÜh6jœubaubhy)r£}r¤(h5XºA number of additional existing technologies can and have been used for describing the linkages between science metadata, data, and system metadata. Here we review some packaging mechanisms that are presently in use and discuss how they are or might be used in existing systems to provide robust linkages among the components of a data package. These packaging mechanisms were considered but not selected, in favor of using BagIt and OAI-ORE.r¥h6j–h=h>h?hˆhA}r¦(hC]hD]hE]hF]hI]uhKM!hLhhM]r§hXXºA number of additional existing technologies can and have been used for describing the linkages between science metadata, data, and system metadata. Here we review some packaging mechanisms that are presently in use and discuss how they are or might be used in existing systems to provide robust linkages among the components of a data package. These packaging mechanisms were considered but not selected, in favor of using BagIt and OAI-ORE.r¨…r©}rª(h5j¥h6j£ubaubh7)r«}r¬(h5Uh6j–h=h>h?h@hA}r­(hC]hD]hE]hF]r®jîahI]r¯hauhKM*hLhhM]r°(hO)r±}r²(h5jóh6j«h=h>h?hShA}r³(hF]hE]hC]hD]hI]hUjíuhKM*hLhhM]r´hXX"Ecological Metadata Language (EML)rµ…r¶}r·(h5jóh6j±ubaubhy)r¸}r¹(h5XàThe Ecological Metadata Language (EML) [EML-2010]_ is a science metadata specification that specifically is modeled around the idea of a 'data package' that consists of science metadata that is encoded in the EML document and one or more data objects that can be either referenced in the the document via external references or can be included inline in the EML document directly. Both mechanisms are in widespread use in the ecological and environmental science communities that use EML, although the mechanism of external references is far more prevalent at this time (2010). EML documents are serialized as XML documents but can include data inline if properly encoded. Each EML document defines a top-level 'packageId' which contains the globally unique identifier for the data package. Each EML document also describes zero or more data entities that are drawn from a simple data model that includes data tables, spatial raster, spatial vector, and other generic entity data types. Each entity type in EML includes a distribution section that can be used to include the data inline or reference an external source for the data. External references to data are found in the 'online/url' field of the document, and can consist of URLs, URNs, and other URIs. Within the Knowledge Network for Biocomplexity, it is common to find references to web URLs and to indirect digital identifiers such as DOIs and ecogrid URIs. The 'url' field also includes an attribute that allows providers to declare the external reference as either a 'download' url, which when resolved and dereferenced should provide the exact byte stream of the digital object, or an 'information' url, which when resolved and dereferenced provides additional information about the object but not the exact bytes of the object. This latter informational type of URL often leads to an HTML description of the object, a site-specific registration or authentication page, or some other site-specific gateway that may provide indirect access to the data.h6j«h=h>h?hˆhA}rº(hC]hD]hE]hF]hI]uhKM,hLhhM]r»(hXX'The Ecological Metadata Language (EML) r¼…r½}r¾(h5X'The Ecological Metadata Language (EML) h6j¸ubj.)r¿}rÀ(h5XEML-2010rÁh6j¸h=h>h?j2hA}rÂ(Ureftypej#UrefwarnˆU reftargetjÁU refdomainj$hF]rÃUid4rÄahE]hC]hD]hI]uhKM,hLhhM]rÅhXX [EML-2010]rÆ…rÇ}rÈ(h5Uh6j¿ubaubhXX® is a science metadata specification that specifically is modeled around the idea of a 'data package' that consists of science metadata that is encoded in the EML document and one or more data objects that can be either referenced in the the document via external references or can be included inline in the EML document directly. Both mechanisms are in widespread use in the ecological and environmental science communities that use EML, although the mechanism of external references is far more prevalent at this time (2010). EML documents are serialized as XML documents but can include data inline if properly encoded. Each EML document defines a top-level 'packageId' which contains the globally unique identifier for the data package. Each EML document also describes zero or more data entities that are drawn from a simple data model that includes data tables, spatial raster, spatial vector, and other generic entity data types. Each entity type in EML includes a distribution section that can be used to include the data inline or reference an external source for the data. External references to data are found in the 'online/url' field of the document, and can consist of URLs, URNs, and other URIs. Within the Knowledge Network for Biocomplexity, it is common to find references to web URLs and to indirect digital identifiers such as DOIs and ecogrid URIs. The 'url' field also includes an attribute that allows providers to declare the external reference as either a 'download' url, which when resolved and dereferenced should provide the exact byte stream of the digital object, or an 'information' url, which when resolved and dereferenced provides additional information about the object but not the exact bytes of the object. This latter informational type of URL often leads to an HTML description of the object, a site-specific registration or authentication page, or some other site-specific gateway that may provide indirect access to the data.rÉ…rÊ}rË(h5X® is a science metadata specification that specifically is modeled around the idea of a 'data package' that consists of science metadata that is encoded in the EML document and one or more data objects that can be either referenced in the the document via external references or can be included inline in the EML document directly. Both mechanisms are in widespread use in the ecological and environmental science communities that use EML, although the mechanism of external references is far more prevalent at this time (2010). EML documents are serialized as XML documents but can include data inline if properly encoded. Each EML document defines a top-level 'packageId' which contains the globally unique identifier for the data package. Each EML document also describes zero or more data entities that are drawn from a simple data model that includes data tables, spatial raster, spatial vector, and other generic entity data types. Each entity type in EML includes a distribution section that can be used to include the data inline or reference an external source for the data. External references to data are found in the 'online/url' field of the document, and can consist of URLs, URNs, and other URIs. Within the Knowledge Network for Biocomplexity, it is common to find references to web URLs and to indirect digital identifiers such as DOIs and ecogrid URIs. The 'url' field also includes an attribute that allows providers to declare the external reference as either a 'download' url, which when resolved and dereferenced should provide the exact byte stream of the digital object, or an 'information' url, which when resolved and dereferenced provides additional information about the object but not the exact bytes of the object. This latter informational type of URL often leads to an HTML description of the object, a site-specific registration or authentication page, or some other site-specific gateway that may provide indirect access to the data.h6j¸ubeubjF)rÌ}rÍ(h5Uh6j«h=Nh?jIhA}rÎ(hC]hD]hE]hF]hI]uhKNhLhhM]rÏ(jL)rÐ}rÑ(h5X3Beneficial features * Simple data model covering common science object types, can be extended * Library support through XML parsers on multiple platforms * Highly structured metadata with good validation model * Similarity to other science metadata models allows relatively simple and complete crosswalks h6jÌh=h>h?jOhA}rÒ(hC]hD]hE]hF]hI]uhKMMhM]rÓ(jR)rÔ}rÕ(h5XBeneficial featuresrÖh6jÐh=h>h?jVhA}r×(hC]hD]hE]hF]hI]uhKMMhM]rØhXXBeneficial featuresrÙ…rÚ}rÛ(h5jÖh6jÔubaubj\)rÜ}rÝ(h5UhA}rÞ(hC]hD]hE]hF]hI]uh6jÐhM]rßhn)rà}rá(h5UhA}râ(jcX*hF]hE]hC]hD]hI]uh6jÜhM]rã(ht)rä}rå(h5XGSimple data model covering common science object types, can be extendedræhA}rç(hC]hD]hE]hF]hI]uh6jàhM]rèhy)ré}rê(h5jæh6jäh=h>h?hˆhA}rë(hC]hD]hE]hF]hI]uhKMIhM]rìhXXGSimple data model covering common science object types, can be extendedrí…rî}rï(h5jæh6jéubaubah?h ubht)rð}rñ(h5X9Library support through XML parsers on multiple platformsròhA}ró(hC]hD]hE]hF]hI]uh6jàhM]rôhy)rõ}rö(h5jòh6jðh=h>h?hˆhA}r÷(hC]hD]hE]hF]hI]uhKMJhM]røhXX9Library support through XML parsers on multiple platformsrù…rú}rû(h5jòh6jõubaubah?h ubht)rü}rý(h5X5Highly structured metadata with good validation modelrþhA}rÿ(hC]hD]hE]hF]hI]uh6jàhM]rhy)r}r(h5jþh6jüh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKMKhM]rhXX5Highly structured metadata with good validation modelr…r}r(h5jþh6jubaubah?h ubht)r}r (h5X]Similarity to other science metadata models allows relatively simple and complete crosswalks hA}r (hC]hD]hE]hF]hI]uh6jàhM]r hy)r }r (h5X\Similarity to other science metadata models allows relatively simple and complete crosswalksrh6jh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKMLhM]rhXX\Similarity to other science metadata models allows relatively simple and complete crosswalksr…r}r(h5jh6j ubaubah?h ubeh?hqubah?j‰ubeubjL)r}r(h5XjIssues * Large data access is inefficient (XML parsing) * External data references are unconstrained URIs h6jÌh=h>h?jOhA}r(hC]hD]hE]hF]hI]uhKMQhLhhM]r(jR)r}r(h5XIssuesrh6jh=h>h?jVhA}r(hC]hD]hE]hF]hI]uhKMQhM]rhXXIssuesr…r}r(h5jh6jubaubj\)r }r!(h5UhA}r"(hC]hD]hE]hF]hI]uh6jhM]r#hn)r$}r%(h5UhA}r&(jcX*hF]hE]hC]hD]hI]uh6j hM]r'(ht)r(}r)(h5X.Large data access is inefficient (XML parsing)r*hA}r+(hC]hD]hE]hF]hI]uh6j$hM]r,hy)r-}r.(h5j*h6j(h=h>h?hˆhA}r/(hC]hD]hE]hF]hI]uhKMPhM]r0hXX.Large data access is inefficient (XML parsing)r1…r2}r3(h5j*h6j-ubaubah?h ubht)r4}r5(h5X0External data references are unconstrained URIs hA}r6(hC]hD]hE]hF]hI]uh6j$hM]r7hy)r8}r9(h5X/External data references are unconstrained URIsr:h6j4h=h>h?hˆhA}r;(hC]hD]hE]hF]hI]uhKMQhM]r<hXX/External data references are unconstrained URIsr=…r>}r?(h5j:h6j8ubaubah?h ubeh?hqubah?j‰ubeubjL)r@}rA(h5X½Questions * Does the EML 'packageId' field suffice as an identifier for a DataONE data package per se, and if so, is the EML document the equivalent of a serialization of the package? h6jÌh=h>h?jOhA}rB(hC]hD]hE]hF]hI]uhKMWhLhhM]rC(jR)rD}rE(h5X QuestionsrFh6j@h=h>h?jVhA}rG(hC]hD]hE]hF]hI]uhKMWhM]rHhXX QuestionsrI…rJ}rK(h5jFh6jDubaubj\)rL}rM(h5UhA}rN(hC]hD]hE]hF]hI]uh6j@hM]rOhn)rP}rQ(h5UhA}rR(jcX*hF]hE]hC]hD]hI]uh6jLhM]rSht)rT}rU(h5X­Does the EML 'packageId' field suffice as an identifier for a DataONE data package per se, and if so, is the EML document the equivalent of a serialization of the package? hA}rV(hC]hD]hE]hF]hI]uh6jPhM]rWhy)rX}rY(h5X«Does the EML 'packageId' field suffice as an identifier for a DataONE data package per se, and if so, is the EML document the equivalent of a serialization of the package?rZh6jTh=h>h?hˆhA}r[(hC]hD]hE]hF]hI]uhKMThM]r\hXX«Does the EML 'packageId' field suffice as an identifier for a DataONE data package per se, and if so, is the EML document the equivalent of a serialization of the package?r]…r^}r_(h5jZh6jXubaubah?h ubah?hqubah?j‰ubeubeubeubh7)r`}ra(h5Uh6j–h=h>h?h@hA}rb(hC]hD]hE]hF]rcjahI]rdhauhKMZhLhhM]re(hO)rf}rg(h5jh6j`h=h>h?hShA}rh(hF]hE]hC]hD]hI]hUjuhKMZhLhhM]rihXXNetCDFrj…rk}rl(h5jh6jfubaubhy)rm}rn(h5Xù"NetCDF is an abstraction that supports a view of data as a collection of self-describing, portable objects that can be accessed through a simple interface. Array values may be accessed directly, without knowing details of how the data are stored. Auxiliary information about the data, such as what units are used, may be stored with the data. Generic utilities and application programs can access netCDF datasets and transform, combine, analyze, or display specified fields of the data." (NetCDF User's Guide, 2010, section 1.1, [NETCDF-2010]_) NetCDF is a self-describing data representation format developed by Unidata that is commonly used in the atmospheric and oceanographic communities. This data model is very similar to other existing data models such as the OPeNDAP model and the Hierarchical Data Format (HDF). NetCDF is self-describing in that it provides a mechanism for including metadata about the included data directly in the serialized representation. Many users of the format have standardized upon the use of CF (Climate Format) metadata attributes for the representation of science metadata, although this is not strictly required by NetCDF and many other ad-hoc approaches to metadata provision are commonly employed by users in the community as well.h6j`h=h>h?hˆhA}ro(hC]hD]hE]hF]hI]uhKM\hLhhM]rp(hXX"NetCDF is an abstraction that supports a view of data as a collection of self-describing, portable objects that can be accessed through a simple interface. Array values may be accessed directly, without knowing details of how the data are stored. Auxiliary information about the data, such as what units are used, may be stored with the data. Generic utilities and application programs can access netCDF datasets and transform, combine, analyze, or display specified fields of the data." (NetCDF User's Guide, 2010, section 1.1, rq…rr}rs(h5X"NetCDF is an abstraction that supports a view of data as a collection of self-describing, portable objects that can be accessed through a simple interface. Array values may be accessed directly, without knowing details of how the data are stored. Auxiliary information about the data, such as what units are used, may be stored with the data. Generic utilities and application programs can access netCDF datasets and transform, combine, analyze, or display specified fields of the data." (NetCDF User's Guide, 2010, section 1.1, h6jmubj.)rt}ru(h5X NETCDF-2010rvh6jmh=h>h?j2hA}rw(Ureftypej#UrefwarnˆU reftargetjvU refdomainj$hF]rxUid5ryahE]hC]hD]hI]uhKM\hLhhM]rzhXX [NETCDF-2010]r{…r|}r}(h5Uh6jtubaubhXXÙ) NetCDF is a self-describing data representation format developed by Unidata that is commonly used in the atmospheric and oceanographic communities. This data model is very similar to other existing data models such as the OPeNDAP model and the Hierarchical Data Format (HDF). NetCDF is self-describing in that it provides a mechanism for including metadata about the included data directly in the serialized representation. Many users of the format have standardized upon the use of CF (Climate Format) metadata attributes for the representation of science metadata, although this is not strictly required by NetCDF and many other ad-hoc approaches to metadata provision are commonly employed by users in the community as well.r~…r}r€(h5XÙ) NetCDF is a self-describing data representation format developed by Unidata that is commonly used in the atmospheric and oceanographic communities. This data model is very similar to other existing data models such as the OPeNDAP model and the Hierarchical Data Format (HDF). NetCDF is self-describing in that it provides a mechanism for including metadata about the included data directly in the serialized representation. Many users of the format have standardized upon the use of CF (Climate Format) metadata attributes for the representation of science metadata, although this is not strictly required by NetCDF and many other ad-hoc approaches to metadata provision are commonly employed by users in the community as well.h6jmubeubjF)r}r‚(h5Uh6j`h=Nh?jIhA}rƒ(hC]hD]hE]hF]hI]uhKNhLhhM]r„(jL)r…}r†(h5X»Beneficial features * Rich data model * Efficient (random) access to large data contents * Extensive library support, including for parallel systems * Efficient storage via binary format h6jh=h>h?jOhA}r‡(hC]hD]hE]hF]hI]uhKMrhM]rˆ(jR)r‰}rŠ(h5XBeneficial featuresr‹h6j…h=h>h?jVhA}rŒ(hC]hD]hE]hF]hI]uhKMrhM]rhXXBeneficial featuresrŽ…r}r(h5j‹h6j‰ubaubj\)r‘}r’(h5UhA}r“(hC]hD]hE]hF]hI]uh6j…hM]r”hn)r•}r–(h5UhA}r—(jcX*hF]hE]hC]hD]hI]uh6j‘hM]r˜(ht)r™}rš(h5XRich data modelr›hA}rœ(hC]hD]hE]hF]hI]uh6j•hM]rhy)rž}rŸ(h5j›h6j™h=h>h?hˆhA}r (hC]hD]hE]hF]hI]uhKMohM]r¡hXXRich data modelr¢…r£}r¤(h5j›h6jžubaubah?h ubht)r¥}r¦(h5X0Efficient (random) access to large data contentsr§hA}r¨(hC]hD]hE]hF]hI]uh6j•hM]r©hy)rª}r«(h5j§h6j¥h=h>h?hˆhA}r¬(hC]hD]hE]hF]hI]uhKMphM]r­hXX0Efficient (random) access to large data contentsr®…r¯}r°(h5j§h6jªubaubah?h ubht)r±}r²(h5X9Extensive library support, including for parallel systemsr³hA}r´(hC]hD]hE]hF]hI]uh6j•hM]rµhy)r¶}r·(h5j³h6j±h=h>h?hˆhA}r¸(hC]hD]hE]hF]hI]uhKMqhM]r¹hXX9Extensive library support, including for parallel systemsrº…r»}r¼(h5j³h6j¶ubaubah?h ubht)r½}r¾(h5X$Efficient storage via binary format hA}r¿(hC]hD]hE]hF]hI]uh6j•hM]rÀhy)rÁ}rÂ(h5X#Efficient storage via binary formatrÃh6j½h=h>h?hˆhA}rÄ(hC]hD]hE]hF]hI]uhKMrhM]rÅhXX#Efficient storage via binary formatrÆ…rÇ}rÈ(h5jÃh6jÁubaubah?h ubeh?hqubah?j‰ubeubjL)rÉ}rÊ(h5X5Issues * Opaque binary format reduces long-term effectiveness for preservation * Unspecified science metadata requirements (ad hoc community adoption) * NetCDF actually represents multiple data models and multiple file formats, all of which are called NetCDF even though they are different binary formats h6jh=h>h?jOhA}rË(hC]hD]hE]hF]hI]uhKMyhLhhM]rÌ(jR)rÍ}rÎ(h5XIssuesrÏh6jÉh=h>h?jVhA}rÐ(hC]hD]hE]hF]hI]uhKMyhM]rÑhXXIssuesrÒ…rÓ}rÔ(h5jÏh6jÍubaubj\)rÕ}rÖ(h5UhA}r×(hC]hD]hE]hF]hI]uh6jÉhM]rØhn)rÙ}rÚ(h5UhA}rÛ(jcX*hF]hE]hC]hD]hI]uh6jÕhM]rÜ(ht)rÝ}rÞ(h5XEOpaque binary format reduces long-term effectiveness for preservationrßhA}rà(hC]hD]hE]hF]hI]uh6jÙhM]ráhy)râ}rã(h5jßh6jÝh=h>h?hˆhA}rä(hC]hD]hE]hF]hI]uhKMuhM]råhXXEOpaque binary format reduces long-term effectiveness for preservationræ…rç}rè(h5jßh6jâubaubah?h ubht)ré}rê(h5XEUnspecified science metadata requirements (ad hoc community adoption)rëhA}rì(hC]hD]hE]hF]hI]uh6jÙhM]ríhy)rî}rï(h5jëh6jéh=h>h?hˆhA}rð(hC]hD]hE]hF]hI]uhKMvhM]rñhXXEUnspecified science metadata requirements (ad hoc community adoption)rò…ró}rô(h5jëh6jîubaubah?h ubht)rõ}rö(h5X˜NetCDF actually represents multiple data models and multiple file formats, all of which are called NetCDF even though they are different binary formats hA}r÷(hC]hD]hE]hF]hI]uh6jÙhM]røhy)rù}rú(h5X—NetCDF actually represents multiple data models and multiple file formats, all of which are called NetCDF even though they are different binary formatsrûh6jõh=h>h?hˆhA}rü(hC]hD]hE]hF]hI]uhKMwhM]rýhXX—NetCDF actually represents multiple data models and multiple file formats, all of which are called NetCDF even though they are different binary formatsrþ…rÿ}r(h5jûh6jùubaubah?h ubeh?hqubah?j‰ubeubjL)r}r(h5X#Questions * Does the spec allow for externally referenced data objects? * What mechanisms are available for providing identifiers that are used to reference all of the components of the data package? * What are the proper namespace names for the various NetCDF models and file formats? h6jh=h>h?jOhA}r(hC]hD]hE]hF]hI]uhKMhLhhM]r(jR)r}r(h5X Questionsrh6jh=h>h?jVhA}r(hC]hD]hE]hF]hI]uhKMhM]r hXX Questionsr …r }r (h5jh6jubaubj\)r }r(h5UhA}r(hC]hD]hE]hF]hI]uh6jhM]rhn)r}r(h5UhA}r(jcX*hF]hE]hC]hD]hI]uh6j hM]r(ht)r}r(h5X;Does the spec allow for externally referenced data objects?rhA}r(hC]hD]hE]hF]hI]uh6jhM]rhy)r}r(h5jh6jh=h>h?hˆhA}r(hC]hD]hE]hF]hI]uhKM|hM]rhXX;Does the spec allow for externally referenced data objects?r…r}r (h5jh6jubaubah?h ubht)r!}r"(h5X}What mechanisms are available for providing identifiers that are used to reference all of the components of the data package?hA}r#(hC]hD]hE]hF]hI]uh6jhM]r$hy)r%}r&(h5X}What mechanisms are available for providing identifiers that are used to reference all of the components of the data package?r'h6j!h=h>h?hˆhA}r((hC]hD]hE]hF]hI]uhKM}hM]r)hXX}What mechanisms are available for providing identifiers that are used to reference all of the components of the data package?r*…r+}r,(h5j'h6j%ubaubah?h ubht)r-}r.(h5XUWhat are the proper namespace names for the various NetCDF models and file formats? hA}r/(hC]hD]hE]hF]hI]uh6jhM]r0hy)r1}r2(h5XSWhat are the proper namespace names for the various NetCDF models and file formats?r3h6j-h=h>h?hˆhA}r4(hC]hD]hE]hF]hI]uhKMhM]r5hXXSWhat are the proper namespace names for the various NetCDF models and file formats?r6…r7}r8(h5j3h6j1ubaubah?h ubeh?hqubah?j‰ubeubeubeubeubh8eubh=h>h?h@hA}r9(hC]r:X referencesr;ahD]hE]hF]r<jahI]uhKM„hLhhM]r=(hO)r>}r?(h5jh6h8h=h>h?hShA}r@(hF]hE]hC]hD]hI]hUjuhKM„hLhhM]rAhXX ReferencesrB…rC}rD(h5jh6j>ubaubcdocutils.nodes citation rE)rF}rG(h5XÆBoyko, A., Kunze, J., Littman, J., Madden, L., Vargas, B. (2009). The BagIt File Packaging Format (V0.96). Retrieved April 2, 2010, from http://www.ietf.org/Internet-drafts/draft-kunze-bagit-04.txt jˆKh6h8h=h>h?j#hA}rH(hC]hD]hE]rIj0 ahF]rJU boyko-2009rKahI]rLhauhKM†hLhhM]rM(cdocutils.nodes label rN)rO}rP(h5X Boyko-2009hA}rQ(hC]hD]hE]hF]hI]uh6jFhM]rRhXX Boyko-2009rS…rT}rU(h5Uh6jOubah?UlabelrVubhy)rW}rX(h5XÅBoyko, A., Kunze, J., Littman, J., Madden, L., Vargas, B. (2009). The BagIt File Packaging Format (V0.96). Retrieved April 2, 2010, from http://www.ietf.org/Internet-drafts/draft-kunze-bagit-04.txth6jFh=h>h?hˆhA}rY(hC]hD]hE]hF]hI]uhKM†hM]rZ(hXX‰Boyko, A., Kunze, J., Littman, J., Madden, L., Vargas, B. (2009). The BagIt File Packaging Format (V0.96). Retrieved April 2, 2010, from r[…r\}r](h5X‰Boyko, A., Kunze, J., Littman, J., Madden, L., Vargas, B. (2009). The BagIt File Packaging Format (V0.96). Retrieved April 2, 2010, from h6jWubh~)r^}r_(h5X<http://www.ietf.org/Internet-drafts/draft-kunze-bagit-04.txtr`hA}ra(Urefurij`hF]hE]hC]hD]hI]uh6jWhM]rbhXX<http://www.ietf.org/Internet-drafts/draft-kunze-bagit-04.txtrc…rd}re(h5Uh6j^ubah?h‡ubeubeubjE)rf}rg(h5Xs___________. (2010). Ecological Metadata Language (EML) Specification. http://knb.ecoinformatics.org/software/eml/ jˆKh6h8h=h>h?j#hA}rh(hC]hD]hE]rijÄahF]rjUeml-2010rkahI]rlh&auhKMŠhLhhM]rm(jN)rn}ro(h5XEML-2010hA}rp(hC]hD]hE]hF]hI]uh6jfhM]rqhXXEML-2010rr…rs}rt(h5Uh6jnubah?jVubhy)ru}rv(h5Xr___________. (2010). Ecological Metadata Language (EML) Specification. http://knb.ecoinformatics.org/software/eml/h6jfh=h>h?hˆhA}rw(hC]hD]hE]hF]hI]uhKMŠhM]rx(hXXG___________. (2010). Ecological Metadata Language (EML) Specification. ry…rz}r{(h5XG___________. (2010). Ecological Metadata Language (EML) Specification. h6juubh~)r|}r}(h5X+http://knb.ecoinformatics.org/software/eml/r~hA}r(Urefurij~hF]hE]hC]hD]hI]uh6juhM]r€hXX+http://knb.ecoinformatics.org/software/eml/r…r‚}rƒ(h5Uh6j|ubah?h‡ubeubeubjE)r„}r…(h5XõLagoze, C., Van de Sompel, H., Johnston, P., Nelson, M., Sanderson, R., Warner, S. (2008). Open Archives Initiative Object Reuse and Exchange: ORE User Guide - Primer. Retrieved November 1, 2010, from http://www.openarchives.org/ore/1.0/primer. jˆKh6h8h=h>h?j#hA}r†(hC]hD]hE]r‡j&ahF]rˆU lagoze-2008r‰ahI]rŠh auhKMhLhhM]r‹(jN)rŒ}r(h5X Lagoze-2008hA}rŽ(hC]hD]hE]hF]hI]uh6j„hM]rhXX Lagoze-2008r…r‘}r’(h5Uh6jŒubah?jVubhy)r“}r”(h5XôLagoze, C., Van de Sompel, H., Johnston, P., Nelson, M., Sanderson, R., Warner, S. (2008). Open Archives Initiative Object Reuse and Exchange: ORE User Guide - Primer. Retrieved November 1, 2010, from http://www.openarchives.org/ore/1.0/primer.h6j„h=h>h?hˆhA}r•(hC]hD]hE]hF]hI]uhKMhM]r–(hXXÉLagoze, C., Van de Sompel, H., Johnston, P., Nelson, M., Sanderson, R., Warner, S. (2008). Open Archives Initiative Object Reuse and Exchange: ORE User Guide - Primer. Retrieved November 1, 2010, from r—…r˜}r™(h5XÉLagoze, C., Van de Sompel, H., Johnston, P., Nelson, M., Sanderson, R., Warner, S. (2008). Open Archives Initiative Object Reuse and Exchange: ORE User Guide - Primer. Retrieved November 1, 2010, from h6j“ubh~)rš}r›(h5X*http://www.openarchives.org/ore/1.0/primerrœhA}r(UrefurijœhF]hE]hC]hD]hI]uh6j“hM]ržhXX*http://www.openarchives.org/ore/1.0/primerrŸ…r }r¡(h5Uh6jšubah?h‡ubhXX.…r¢}r£(h5X.h6j“ubeubeubjE)r¤}r¥(h5Xd____________. (2010). NetCDF Users' Guide. http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/ jˆKh6h8h=h>h?j#hA}r¦(hC]hD]hE]r§jyahF]r¨U netcdf-2010r©ahI]rªh-auhKM’hLhhM]r«(jN)r¬}r­(h5X NETCDF-2010hA}r®(hC]hD]hE]hF]hI]uh6j¤hM]r¯hXX NETCDF-2010r°…r±}r²(h5Uh6j¬ubah?jVubhy)r³}r´(h5Xc____________. (2010). NetCDF Users' Guide. http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/h6j¤h=h>h?hˆhA}rµ(hC]hD]hE]hF]hI]uhKM’hM]r¶(hXX+____________. (2010). NetCDF Users' Guide. r·…r¸}r¹(h5X+____________. (2010). NetCDF Users' Guide. h6j³ubh~)rº}r»(h5X8http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/r¼hA}r½(Urefurij¼hF]hE]hC]hD]hI]uh6j³hM]r¾hXX8http://www.unidata.ucar.edu/software/netcdf/docs/netcdf/r¿…rÀ}rÁ(h5Uh6jºubah?h‡ubeubeubjE)rÂ}rÃ(h5XSauermann, L, Cyganiak, R. (2008). Cool URIs for the Semantic Web. W3C Interest Group Note 03 December 2008. http://www.w3.org/TR/cooluris/ jˆKh6h8h=h>h?j#hA}rÄ(hC]hD]hE]rÅj>ahF]rÆUsauermann-cyganiak-2008rÇahI]rÈhauhKM•hLhhM]rÉ(jN)rÊ}rË(h5XSauermann_Cyganiak-2008hA}rÌ(hC]hD]hE]hF]hI]uh6jÂhM]rÍhXXSauermann_Cyganiak-2008rÎ…rÏ}rÐ(h5Uh6jÊubah?jVubhy)rÑ}rÒ(h5XŒSauermann, L, Cyganiak, R. (2008). Cool URIs for the Semantic Web. W3C Interest Group Note 03 December 2008. http://www.w3.org/TR/cooluris/h6jÂh=h>h?hˆhA}rÓ(hC]hD]hE]hF]hI]uhKM•hM]rÔ(hXXnSauermann, L, Cyganiak, R. (2008). Cool URIs for the Semantic Web. W3C Interest Group Note 03 December 2008. rÕ…rÖ}r×(h5XnSauermann, L, Cyganiak, R. (2008). Cool URIs for the Semantic Web. W3C Interest Group Note 03 December 2008. h6jÑubh~)rØ}rÙ(h5Xhttp://www.w3.org/TR/cooluris/rÚhA}rÛ(UrefurijÚhF]hE]hC]hD]hI]uh6jÑhM]rÜhXXhttp://www.w3.org/TR/cooluris/rÝ…rÞ}rß(h5Uh6jØubah?h‡ubeubeubjÓ)rà}rá(h5XY.. _Foresite python library: http://code.google.com/p/foresite-toolkit/wiki/PythonLibraryh:Kh6h8h=h>h?jÖhA}râ(jŠj hF]rãUforesite-python-libraryräahE]hC]hD]hI]råh#auhKM˜hLhhM]ubjÓ)ræ}rç(h5X-.. _Cool URIs: http://www.w3.org/TR/cooluris/h:Kh6h8h=h>h?jÖhA}rè(jŠj1hF]réU cool-urisrêahE]hC]hD]hI]rëhauhKMšhLhhM]ubeubh=h>h?Usystem_messagerìhA}rí(hC]UlevelKhF]hE]rîjaUsourceh>hD]hI]UlineM„UtypeUINFOrïuhKM„hLhhM]rðhy)rñ}rò(h5X-Duplicate implicit target name: "references".hA}ró(hC]hD]hE]hF]hI]uh6h3hM]rôhXX-Duplicate implicit target name: "references".rõ…rö}r÷(h5Uh6jñubah?hˆubaubaUcurrent_sourcerøNU decorationrùNUautofootnote_startrúKUnameidsrû}rü(hjêhj(hhHh jñ h jth j‰h j×h hdhj‡hhþhhØhjhj;hjßhjîhj hj±hjÄhjß hh®hj hjKhjý hjÇhhÅhjh jšh!jå h"jÙh#jäh$jNh%hšh&jkh'jah(jë h)hëh*j h+j÷ h,j h-j©uhM]rýh;ah5UU transformerrþNU footnote_refsrÿ}rUrefnamesr}r(Xeml-2010r]rcdocutils.nodes citation_reference r)r}r(h5X [EML-2010]_jˆKh6j¸h?Ucitation_referencerhA}r (hF]r jÄahE]hC]hD]hI]hUjkuhM]r hXXEML-2010r …r }r(h5Uh6jubaubaXoai-ore]rj†aj ]rj aXforesite python library]rjŠ aX cool uris]r(j.jòejð]rjíajN ]rjK aX isrequiredby]rjùaX netcdf-2010r]rj)r}r(h5X[NETCDF-2010]_jˆKh6jmh?jhA}r(hF]rjyahE]hC]hD]hI]hUj©uhM]rhXX NETCDF-2010r…r}r(h5Uh6jubaubaXore vocabulary document]r jÉajÙ]r!jÖaX boyko-2009r"]r#j)r$}r%(h5X [Boyko-2009]_jˆKh6j$ h?jhA}r&(hF]r'j0 ahE]hC]hD]hI]hUjKuhM]r(hXX Boyko-2009r)…r*}r+(h5Uh6j$ubaubaXcito]r,(j! jj eXisreferencedby]r-jâajü ]r.(jù jN eX lagoze-2008r/]r0j)r1}r2(h5X[Lagoze-2008]_jˆKh6jh?jhA}r3(hF]r4j&ahE]hC]hD]hI]hUj‰uhM]r5hXX Lagoze-2008r6…r7}r8(h5Uh6j1ubaubaXsauermann_cyganiak-2008r9]r:j)r;}r<(h5X[Sauermann_Cyganiak-2008]_jˆKh6jh?jhA}r=(hF]r>j>ahE]hC]hD]hI]hUjÇuhM]r?hXXSauermann_Cyganiak-2008r@…rA}rB(h5Uh6j;ubaubaX datacite2rdf]rCj auUsymbol_footnotesrD]rEUautofootnote_refsrF]rGUsymbol_footnote_refsrH]rIU citationsrJ]rK(jFjfj„j¤jÂehLhU current_linerLNUtransform_messagesrM]rNh2)rO}rP(h5UhA}rQ(hC]UlevelKhF]hE]Usourceh>hD]hI]UlineMPUtypejïuhM]rRhy)rS}rT(h5UhA}rU(hC]hD]hE]hF]hI]uh6jOhM]rVhXX0Hyperlink target "conformsto" is not referenced.rW…rX}rY(h5Uh6jSubah?hˆubah?jìubaUreporterrZNUid_startr[KU autofootnotesr\]r]U citation_refsr^}r_(j"]r`j$aj/]raj1aj]rbjaj9]rcj;aj]rdjauUindirect_targetsre]rfUsettingsrg(cdocutils.frontend Values rhori}rj(Ufootnote_backlinksrkKUrecord_dependenciesrlNU rfc_base_urlrmUhttps://tools.ietf.org/html/rnU tracebackroˆUpep_referencesrpNUstrip_commentsrqNU toc_backlinksrrjwU language_codersUenrtU datestampruNU report_levelrvKU _destinationrwNU halt_levelrxKU strip_classesryNhSNUerror_encoding_error_handlerrzUbackslashreplacer{Udebugr|NUembed_stylesheetr}‰Uoutput_encoding_error_handlerr~UstrictrU sectnum_xformr€KUdump_transformsrNU docinfo_xformr‚KUwarning_streamrƒNUpep_file_url_templater„Upep-%04dr…Uexit_status_levelr†KUconfigr‡NUstrict_visitorrˆNUcloak_email_addressesr‰ˆUtrim_footnote_reference_spacerŠ‰Uenvr‹NUdump_pseudo_xmlrŒNUexpose_internalsrNUsectsubtitle_xformrŽ‰U source_linkrNUrfc_referencesrNUoutput_encodingr‘Uutf-8r’U source_urlr“NUinput_encodingr”U utf-8-sigr•U_disable_configr–NU id_prefixr—UU tab_widthr˜KUerror_encodingr™UUTF-8ršU_sourcer›h>Ugettext_compactrœˆU generatorrNUdump_internalsržNU smart_quotesrŸ‰U pep_base_urlr U https://www.python.org/dev/peps/r¡Usyntax_highlightr¢Ulongr£Uinput_encoding_error_handlerr¤jUauto_id_prefixr¥Uidr¦Udoctitle_xformr§‰Ustrip_elements_with_classesr¨NU _config_filesr©]Ufile_insertion_enabledrªˆU raw_enabledr«KU dump_settingsr¬NubUsymbol_footnote_startr­KUidsr®}r¯(j(jBhHh;j‡j j;jSjÇjÂjë jç jtjv hÅjïjšj j™j•j‰j„hdh]jMjIjjh®jújh8jjýjÄjjyjj>j;j0 j$j&j1hVhh™h•h­h©hÄhÀh×hÓhêhæhýhùj j j'j#j:j6jÖjÒj×j–jjjß jÛ j j jKjFjj jý jù jj5jÄj@jêjæjNj jÃj¿jajŠjîj«jj`j°j¬jå já jÙjÔjsjohëj8j÷ jó jÆ j j±j/ jjüjíjéhšjjkjfjßjÛjäjàj`j\jñ jí j†j‚j j hþj hØj j jÿ j©j¤uUsubstitution_namesr°}r±h?hLhA}r²(hC]hF]hE]Usourceh>hD]hI]uU footnotesr³]r´Urefidsrµ}r¶ub.