€cdocutils.nodes document q)q}q(U nametypesq}q(Xversion storageqNX+requirements on member node implementationsqNXlimits on the seriesqNXretrieval vs. resolutionq NXthe series identifierq NXoverviewq NX$5. support for accumulating datasetsq NXsemantics of "current"q NXcase 2qNXcase 3qNXcase 1qNXcase 6qNXcase 7qNXcase 4qNXcase 5qNXcase 8qNXcase 9qNX&2. mutable content member node supportqNXcontentsqNXassigning identifiersqNX the problemqNXCreassignment of authoritativemembernode field for unhosted versionsqNXversion preservationqNX%replication of unhosted back-versionsqNXaccumulating datasetsqNX!referencing content by identifierqNX(working drafts vs. repository publishingq NXservice development plansq!NXresolving series identifiersq"NX use casesq#NXtypes of mutable objectsq$NXproposalq%NX'7. supporting 'unrecorded' data streamsq&NXmn api method changesq'NXcase 18q(NXcase 19q)NXcase 10q*NXcase 11q+NXcase 12q,NXcase 13q-NXcase 14q.NX mutability of content in dataoneq/NXcase 16q0NXcase 15q1NXretrieval / citation supportq2NXmixed metadata-data objectsq3NXcase 17q4NXoptionalq5NX54. support for frequently changing / overwritten dataq6NXcn api method changesq7NX*6. support for mixed metadata/data objectsq8NX3. citation supportq9NX1. data preservationq:NX/synchronizing content from mutable member nodesq;NuUsubstitution_defsq<}q=(XS2q>cdocutils.nodes substitution_definition q?)q@}qA(U rawsourceqBX.. |S2| replace:: :math:`S_2`UparentqCcdocutils.nodes section qD)qE}qF(hBUhChD)qG}qH(hBUhChUsourceqIXm/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/ContentMutability.txtqJUtagnameqKUsectionqLU attributesqM}qN(UdupnamesqO]UclassesqP]UbackrefsqQ]UidsqR]qSU mutability-of-content-in-dataoneqTaUnamesqU]qVh/auUlineqWKUdocumentqXhUchildrenqY]qZ(cdocutils.nodes title q[)q\}q](hBX Mutability of Content in DataONEq^hChGhIhJhKUtitleq_hM}q`(hR]hQ]hO]hP]hU]UrefidqaUid1qbuhWKhXhhY]qccdocutils.nodes Text qdX Mutability of Content in DataONEqe…qf}qg(hBh^hCh\ubaubcsphinx.addnodes index qh)qi}qj(hBUhChGhIhJhKUindexqkhM}ql(hR]hQ]hO]hP]hU]Uentriesqm]qn(UsingleqoX mutabilityUindex-0qpUNtqqaUinlineqr‰uhWKhXhhY]ubcdocutils.nodes target qs)qt}qu(hBUhChGhIhJhKUtargetqvhM}qw(hR]hQ]hO]hP]hU]hahpuhWKhXhhY]ubcdocutils.nodes topic qx)qy}qz(hBUhChGhIhJUexpect_referenced_by_nameq{}hKUtopicq|hM}q}(hO]hP]q~UcontentsqahQ]hR]q€(UcontentsqhpehU]q‚hauhWKhXhUexpect_referenced_by_idqƒ}q„hphtshY]q…(h[)q†}q‡(hBXContentshM}qˆ(hO]hP]hQ]hR]hU]uhChyhY]q‰hdXContentsqŠ…q‹}qŒ(hBUhCh†ubahKh_ubcdocutils.nodes bullet_list q)qŽ}q(hBUhChyhINhKU bullet_listqhM}q‘(hO]hP]hQ]hR]hU]uhWNhXhhY]q’cdocutils.nodes list_item q“)q”}q•(hBUhM}q–(hO]hP]hQ]hR]hU]uhChŽhY]q—(cdocutils.nodes paragraph q˜)q™}qš(hBUhM}q›(hO]hP]hQ]hR]hU]uhCh”hY]qœcdocutils.nodes reference q)qž}qŸ(hBUhM}q (hR]q¡hbahQ]hO]hP]hU]UrefidhTuhCh™hY]q¢hdX Mutability of Content in DataONEq£…q¤}q¥(hBh^hChžubahKU referenceq¦ubahKU paragraphq§ubh)q¨}q©(hBUhM}qª(hO]hP]hQ]hR]hU]uhCh”hY]q«(h“)q¬}q­(hBUhM}q®(hO]hP]hQ]hR]hU]uhCh¨hY]q¯h˜)q°}q±(hBUhM}q²(hO]hP]hQ]hR]hU]uhCh¬hY]q³h)q´}qµ(hBUhM}q¶(hR]q·Uid2q¸ahQ]hO]hP]hU]UrefidUoverviewq¹uhCh°hY]qºhdXOverviewq»…q¼}q½(hBXOverviewq¾hCh´ubahKh¦ubahKh§ubahKU list_itemq¿ubh“)qÀ}qÁ(hBUhM}qÂ(hO]hP]hQ]hR]hU]uhCh¨hY]qÃ(h˜)qÄ}qÅ(hBUhM}qÆ(hO]hP]hQ]hR]hU]uhChÀhY]qÇh)qÈ}qÉ(hBUhM}qÊ(hR]qËUid3qÌahQ]hO]hP]hU]UrefidUresolving-series-identifiersqÍuhChÄhY]qÎhdXResolving Series IdentifiersqÏ…qÐ}qÑ(hBXResolving Series IdentifiersqÒhChÈubahKh¦ubahKh§ubh)qÓ}qÔ(hBUhM}qÕ(hO]hP]hQ]hR]hU]uhChÀhY]qÖ(h“)q×}qØ(hBUhM}qÙ(hO]hP]hQ]hR]hU]uhChÓhY]qÚh˜)qÛ}qÜ(hBUhM}qÝ(hO]hP]hQ]hR]hU]uhCh×hY]qÞh)qß}qà(hBUhM}qá(hR]qâUid4qãahQ]hO]hP]hU]UrefidUcase-1qäuhChÛhY]qåhdXCase 1qæ…qç}qè(hBXCase 1qéhChßubahKh¦ubahKh§ubahKh¿ubh“)qê}që(hBUhM}qì(hO]hP]hQ]hR]hU]uhChÓhY]qíh˜)qî}qï(hBUhM}qð(hO]hP]hQ]hR]hU]uhChêhY]qñh)qò}qó(hBUhM}qô(hR]qõUid5qöahQ]hO]hP]hU]UrefidUcase-2q÷uhChîhY]qøhdXCase 2qù…qú}qû(hBXCase 2qühChòubahKh¦ubahKh§ubahKh¿ubh“)qý}qþ(hBUhM}qÿ(hO]hP]hQ]hR]hU]uhChÓhY]rh˜)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhChýhY]rh)r}r(hBUhM}r(hR]rUid6r ahQ]hO]hP]hU]UrefidUcase-3r uhCjhY]r hdXCase 3r …r }r(hBXCase 3rhCjubahKh¦ubahKh§ubahKh¿ubh“)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhChÓhY]rh˜)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]rh)r}r(hBUhM}r(hR]rUid7rahQ]hO]hP]hU]UrefidUcase-4ruhCjhY]rhdXCase 4r…r }r!(hBXCase 4r"hCjubahKh¦ubahKh§ubahKh¿ubh“)r#}r$(hBUhM}r%(hO]hP]hQ]hR]hU]uhChÓhY]r&h˜)r'}r((hBUhM}r)(hO]hP]hQ]hR]hU]uhCj#hY]r*h)r+}r,(hBUhM}r-(hR]r.Uid8r/ahQ]hO]hP]hU]UrefidUcase-5r0uhCj'hY]r1hdXCase 5r2…r3}r4(hBXCase 5r5hCj+ubahKh¦ubahKh§ubahKh¿ubh“)r6}r7(hBUhM}r8(hO]hP]hQ]hR]hU]uhChÓhY]r9h˜)r:}r;(hBUhM}r<(hO]hP]hQ]hR]hU]uhCj6hY]r=h)r>}r?(hBUhM}r@(hR]rAUid9rBahQ]hO]hP]hU]UrefidUcase-6rCuhCj:hY]rDhdXCase 6rE…rF}rG(hBXCase 6rHhCj>ubahKh¦ubahKh§ubahKh¿ubh“)rI}rJ(hBUhM}rK(hO]hP]hQ]hR]hU]uhChÓhY]rLh˜)rM}rN(hBUhM}rO(hO]hP]hQ]hR]hU]uhCjIhY]rPh)rQ}rR(hBUhM}rS(hR]rTUid10rUahQ]hO]hP]hU]UrefidUcase-7rVuhCjMhY]rWhdXCase 7rX…rY}rZ(hBXCase 7r[hCjQubahKh¦ubahKh§ubahKh¿ubh“)r\}r](hBUhM}r^(hO]hP]hQ]hR]hU]uhChÓhY]r_h˜)r`}ra(hBUhM}rb(hO]hP]hQ]hR]hU]uhCj\hY]rch)rd}re(hBUhM}rf(hR]rgUid11rhahQ]hO]hP]hU]UrefidUcase-8riuhCj`hY]rjhdXCase 8rk…rl}rm(hBXCase 8rnhCjdubahKh¦ubahKh§ubahKh¿ubh“)ro}rp(hBUhM}rq(hO]hP]hQ]hR]hU]uhChÓhY]rrh˜)rs}rt(hBUhM}ru(hO]hP]hQ]hR]hU]uhCjohY]rvh)rw}rx(hBUhM}ry(hR]rzUid12r{ahQ]hO]hP]hU]UrefidUcase-9r|uhCjshY]r}hdXCase 9r~…r}r€(hBXCase 9rhCjwubahKh¦ubahKh§ubahKh¿ubh“)r‚}rƒ(hBUhM}r„(hO]hP]hQ]hR]hU]uhChÓhY]r…h˜)r†}r‡(hBUhM}rˆ(hO]hP]hQ]hR]hU]uhCj‚hY]r‰h)rŠ}r‹(hBUhM}rŒ(hR]rUid13rŽahQ]hO]hP]hU]UrefidUcase-10ruhCj†hY]rhdXCase 10r‘…r’}r“(hBXCase 10r”hCjŠubahKh¦ubahKh§ubahKh¿ubh“)r•}r–(hBUhM}r—(hO]hP]hQ]hR]hU]uhChÓhY]r˜h˜)r™}rš(hBUhM}r›(hO]hP]hQ]hR]hU]uhCj•hY]rœh)r}rž(hBUhM}rŸ(hR]r Uid14r¡ahQ]hO]hP]hU]UrefidUcase-11r¢uhCj™hY]r£hdXCase 11r¤…r¥}r¦(hBXCase 11r§hCjubahKh¦ubahKh§ubahKh¿ubh“)r¨}r©(hBUhM}rª(hO]hP]hQ]hR]hU]uhChÓhY]r«h˜)r¬}r­(hBUhM}r®(hO]hP]hQ]hR]hU]uhCj¨hY]r¯h)r°}r±(hBUhM}r²(hR]r³Uid15r´ahQ]hO]hP]hU]UrefidUcase-12rµuhCj¬hY]r¶hdXCase 12r·…r¸}r¹(hBXCase 12rºhCj°ubahKh¦ubahKh§ubahKh¿ubh“)r»}r¼(hBUhM}r½(hO]hP]hQ]hR]hU]uhChÓhY]r¾h˜)r¿}rÀ(hBUhM}rÁ(hO]hP]hQ]hR]hU]uhCj»hY]rÂh)rÃ}rÄ(hBUhM}rÅ(hR]rÆUid16rÇahQ]hO]hP]hU]UrefidUcase-13rÈuhCj¿hY]rÉhdXCase 13rÊ…rË}rÌ(hBXCase 13rÍhCjÃubahKh¦ubahKh§ubahKh¿ubh“)rÎ}rÏ(hBUhM}rÐ(hO]hP]hQ]hR]hU]uhChÓhY]rÑh˜)rÒ}rÓ(hBUhM}rÔ(hO]hP]hQ]hR]hU]uhCjÎhY]rÕh)rÖ}r×(hBUhM}rØ(hR]rÙUid17rÚahQ]hO]hP]hU]UrefidUcase-14rÛuhCjÒhY]rÜhdXCase 14rÝ…rÞ}rß(hBXCase 14ràhCjÖubahKh¦ubahKh§ubahKh¿ubh“)rá}râ(hBUhM}rã(hO]hP]hQ]hR]hU]uhChÓhY]räh˜)rå}ræ(hBUhM}rç(hO]hP]hQ]hR]hU]uhCjáhY]rèh)ré}rê(hBUhM}rë(hR]rìUid18ríahQ]hO]hP]hU]UrefidUcase-15rîuhCjåhY]rïhdXCase 15rð…rñ}rò(hBXCase 15róhCjéubahKh¦ubahKh§ubahKh¿ubh“)rô}rõ(hBUhM}rö(hO]hP]hQ]hR]hU]uhChÓhY]r÷h˜)rø}rù(hBUhM}rú(hO]hP]hQ]hR]hU]uhCjôhY]rûh)rü}rý(hBUhM}rþ(hR]rÿUid19rahQ]hO]hP]hU]UrefidUcase-16ruhCjøhY]rhdXCase 16r…r}r(hBXCase 16rhCjüubahKh¦ubahKh§ubahKh¿ubh“)r}r(hBUhM}r (hO]hP]hQ]hR]hU]uhChÓhY]r h˜)r }r (hBUhM}r (hO]hP]hQ]hR]hU]uhCjhY]rh)r}r(hBUhM}r(hR]rUid20rahQ]hO]hP]hU]UrefidUcase-17ruhCj hY]rhdXCase 17r…r}r(hBXCase 17rhCjubahKh¦ubahKh§ubahKh¿ubh“)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhChÓhY]rh˜)r}r(hBUhM}r (hO]hP]hQ]hR]hU]uhCjhY]r!h)r"}r#(hBUhM}r$(hR]r%Uid21r&ahQ]hO]hP]hU]UrefidUcase-18r'uhCjhY]r(hdXCase 18r)…r*}r+(hBXCase 18r,hCj"ubahKh¦ubahKh§ubahKh¿ubh“)r-}r.(hBUhM}r/(hO]hP]hQ]hR]hU]uhChÓhY]r0h˜)r1}r2(hBUhM}r3(hO]hP]hQ]hR]hU]uhCj-hY]r4h)r5}r6(hBUhM}r7(hR]r8Uid22r9ahQ]hO]hP]hU]UrefidUcase-19r:uhCj1hY]r;hdXCase 19r<…r=}r>(hBXCase 19r?hCj5ubahKh¦ubahKh§ubahKh¿ubehKhubehKh¿ubh“)r@}rA(hBUhM}rB(hO]hP]hQ]hR]hU]uhCh¨hY]rCh˜)rD}rE(hBUhM}rF(hO]hP]hQ]hR]hU]uhCj@hY]rGh)rH}rI(hBUhM}rJ(hR]rKUid23rLahQ]hO]hP]hU]UrefidU!referencing-content-by-identifierrMuhCjDhY]rNhdX!Referencing Content by IdentifierrO…rP}rQ(hBX!Referencing Content by IdentifierrRhCjHubahKh¦ubahKh§ubahKh¿ubh“)rS}rT(hBUhM}rU(hO]hP]hQ]hR]hU]uhCh¨hY]rVh˜)rW}rX(hBUhM}rY(hO]hP]hQ]hR]hU]uhCjShY]rZh)r[}r\(hBUhM}r](hR]r^Uid24r_ahQ]hO]hP]hU]UrefidUassigning-identifiersr`uhCjWhY]rahdXAssigning Identifiersrb…rc}rd(hBXAssigning IdentifiersrehCj[ubahKh¦ubahKh§ubahKh¿ubh“)rf}rg(hBUhM}rh(hO]hP]hQ]hR]hU]uhCh¨hY]rih˜)rj}rk(hBUhM}rl(hO]hP]hQ]hR]hU]uhCjfhY]rmh)rn}ro(hBUhM}rp(hR]rqUid25rrahQ]hO]hP]hU]UrefidUlimits-on-the-seriesrsuhCjjhY]rthdXLimits on the Seriesru…rv}rw(hBXLimits on the SeriesrxhCjnubahKh¦ubahKh§ubahKh¿ubh“)ry}rz(hBUhM}r{(hO]hP]hQ]hR]hU]uhCh¨hY]r|h˜)r}}r~(hBUhM}r(hO]hP]hQ]hR]hU]uhCjyhY]r€h)r}r‚(hBUhM}rƒ(hR]r„Uid26r…ahQ]hO]hP]hU]UrefidU+requirements-on-member-node-implementationsr†uhCj}hY]r‡hdX+Requirements on Member Node Implementationsrˆ…r‰}rŠ(hBX+Requirements on Member Node Implementationsr‹hCjubahKh¦ubahKh§ubahKh¿ubh“)rŒ}r(hBUhM}rŽ(hO]hP]hQ]hR]hU]uhCh¨hY]rh˜)r}r‘(hBUhM}r’(hO]hP]hQ]hR]hU]uhCjŒhY]r“h)r”}r•(hBUhM}r–(hR]r—Uid27r˜ahQ]hO]hP]hU]UrefidUCreassignment-of-authoritativemembernode-field-for-unhosted-versionsr™uhCjhY]ršhdXCReassignment of AuthoritativeMemberNode field for unhosted versionsr›…rœ}r(hBXCReassignment of AuthoritativeMemberNode field for unhosted versionsržhCj”ubahKh¦ubahKh§ubahKh¿ubh“)rŸ}r (hBUhM}r¡(hO]hP]hQ]hR]hU]uhCh¨hY]r¢h˜)r£}r¤(hBUhM}r¥(hO]hP]hQ]hR]hU]uhCjŸhY]r¦h)r§}r¨(hBUhM}r©(hR]rªUid28r«ahQ]hO]hP]hU]UrefidU%replication-of-unhosted-back-versionsr¬uhCj£hY]r­hdX%Replication of unhosted back-versionsr®…r¯}r°(hBX%Replication of unhosted back-versionsr±hCj§ubahKh¦ubahKh§ubahKh¿ubh“)r²}r³(hBUhM}r´(hO]hP]hQ]hR]hU]uhCh¨hY]rµh˜)r¶}r·(hBUhM}r¸(hO]hP]hQ]hR]hU]uhCj²hY]r¹h)rº}r»(hBUhM}r¼(hR]r½Uid29r¾ahQ]hO]hP]hU]UrefidU/synchronizing-content-from-mutable-member-nodesr¿uhCj¶hY]rÀhdX/Synchronizing Content from Mutable Member NodesrÁ…rÂ}rÃ(hBX/Synchronizing Content from Mutable Member NodesrÄhCjºubahKh¦ubahKh§ubahKh¿ubh“)rÅ}rÆ(hBUhM}rÇ(hO]hP]hQ]hR]hU]uhCh¨hY]rÈh˜)rÉ}rÊ(hBUhM}rË(hO]hP]hQ]hR]hU]uhCjÅhY]rÌh)rÍ}rÎ(hBUhM}rÏ(hR]rÐUid30rÑahQ]hO]hP]hU]UrefidU the-problemrÒuhCjÉhY]rÓhdX The ProblemrÔ…rÕ}rÖ(hBX The Problemr×hCjÍubahKh¦ubahKh§ubahKh¿ubh“)rØ}rÙ(hBUhM}rÚ(hO]hP]hQ]hR]hU]uhCh¨hY]rÛh˜)rÜ}rÝ(hBUhM}rÞ(hO]hP]hQ]hR]hU]uhCjØhY]rßh)rà}rá(hBUhM}râ(hR]rãUid31räahQ]hO]hP]hU]UrefidUproposalråuhCjÜhY]ræhdXProposalrç…rè}ré(hBXProposalrêhCjàubahKh¦ubahKh§ubahKh¿ubh“)rë}rì(hBUhM}rí(hO]hP]hQ]hR]hU]uhCh¨hY]rî(h˜)rï}rð(hBUhM}rñ(hO]hP]hQ]hR]hU]uhCjëhY]ròh)ró}rô(hBUhM}rõ(hR]röUid32r÷ahQ]hO]hP]hU]UrefidUthe-series-identifierrøuhCjïhY]rùhdXThe Series Identifierrú…rû}rü(hBXThe Series IdentifierrýhCjóubahKh¦ubahKh§ubh)rþ}rÿ(hBUhM}r(hO]hP]hQ]hR]hU]uhCjëhY]r(h“)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjþhY]r(h˜)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]r h)r }r (hBUhM}r (hR]r Uid33rahQ]hO]hP]hU]UrefidUsemantics-of-currentruhCjhY]rhdXSemantics of "Current"r…r}r(hBXSemantics of "Current"rhCj ubahKh¦ubahKh§ubh)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]rh“)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]rh˜)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]r h)r!}r"(hBUhM}r#(hR]r$Uid34r%ahQ]hO]hP]hU]UrefidUversion-storager&uhCjhY]r'hdXVersion Storager(…r)}r*(hBXVersion Storager+hCj!ubahKh¦ubahKh§ubahKh¿ubahKhubehKh¿ubh“)r,}r-(hBUhM}r.(hO]hP]hQ]hR]hU]uhCjþhY]r/h˜)r0}r1(hBUhM}r2(hO]hP]hQ]hR]hU]uhCj,hY]r3h)r4}r5(hBUhM}r6(hR]r7Uid35r8ahQ]hO]hP]hU]UrefidUversion-preservationr9uhCj0hY]r:hdXVersion preservationr;…r<}r=(hBXVersion preservationr>hCj4ubahKh¦ubahKh§ubahKh¿ubh“)r?}r@(hBUhM}rA(hO]hP]hQ]hR]hU]uhCjþhY]rB(h˜)rC}rD(hBUhM}rE(hO]hP]hQ]hR]hU]uhCj?hY]rFh)rG}rH(hBUhM}rI(hR]rJUid36rKahQ]hO]hP]hU]UrefidU'working-drafts-vs-repository-publishingrLuhCjChY]rMhdX(Working drafts vs. Repository publishingrN…rO}rP(hBX(Working drafts vs. Repository publishingrQhCjGubahKh¦ubahKh§ubh)rR}rS(hBUhM}rT(hO]hP]hQ]hR]hU]uhCj?hY]rUh“)rV}rW(hBUhM}rX(hO]hP]hQ]hR]hU]uhCjRhY]rYh˜)rZ}r[(hBUhM}r\(hO]hP]hQ]hR]hU]uhCjVhY]r]h)r^}r_(hBUhM}r`(hR]raUid37rbahQ]hO]hP]hU]UrefidUtypes-of-mutable-objectsrcuhCjZhY]rdhdXTypes of Mutable Objectsre…rf}rg(hBXTypes of Mutable ObjectsrhhCj^ubahKh¦ubahKh§ubahKh¿ubahKhubehKh¿ubh“)ri}rj(hBUhM}rk(hO]hP]hQ]hR]hU]uhCjþhY]rlh˜)rm}rn(hBUhM}ro(hO]hP]hQ]hR]hU]uhCjihY]rph)rq}rr(hBUhM}rs(hR]rtUid38ruahQ]hO]hP]hU]UrefidUaccumulating-datasetsrvuhCjmhY]rwhdXAccumulating datasetsrx…ry}rz(hBXAccumulating datasetsr{hCjqubahKh¦ubahKh§ubahKh¿ubh“)r|}r}(hBUhM}r~(hO]hP]hQ]hR]hU]uhCjþhY]r(h˜)r€}r(hBUhM}r‚(hO]hP]hQ]hR]hU]uhCj|hY]rƒh)r„}r…(hBUhM}r†(hR]r‡Uid39rˆahQ]hO]hP]hU]UrefidUmixed-metadata-data-objectsr‰uhCj€hY]rŠhdXMixed metadata-data objectsr‹…rŒ}r(hBXMixed metadata-data objectsrŽhCj„ubahKh¦ubahKh§ubh)r}r(hBUhM}r‘(hO]hP]hQ]hR]hU]uhCj|hY]r’h“)r“}r”(hBUhM}r•(hO]hP]hQ]hR]hU]uhCjhY]r–h˜)r—}r˜(hBUhM}r™(hO]hP]hQ]hR]hU]uhCj“hY]ršh)r›}rœ(hBUhM}r(hR]ržUid40rŸahQ]hO]hP]hU]UrefidUretrieval-citation-supportr uhCj—hY]r¡hdXRetrieval / Citation Supportr¢…r£}r¤(hBXRetrieval / Citation Supportr¥hCj›ubahKh¦ubahKh§ubahKh¿ubahKhubehKh¿ubh“)r¦}r§(hBUhM}r¨(hO]hP]hQ]hR]hU]uhCjþhY]r©h˜)rª}r«(hBUhM}r¬(hO]hP]hQ]hR]hU]uhCj¦hY]r­h)r®}r¯(hBUhM}r°(hR]r±Uid41r²ahQ]hO]hP]hU]UrefidUretrieval-vs-resolutionr³uhCjªhY]r´hdXRetrieval vs. Resolutionrµ…r¶}r·(hBXRetrieval vs. Resolutionr¸hCj®ubahKh¦ubahKh§ubahKh¿ubh“)r¹}rº(hBUhM}r»(hO]hP]hQ]hR]hU]uhCjþhY]r¼h˜)r½}r¾(hBUhM}r¿(hO]hP]hQ]hR]hU]uhCj¹hY]rÀh)rÁ}rÂ(hBUhM}rÃ(hR]rÄUid42rÅahQ]hO]hP]hU]UrefidUservice-development-plansrÆuhCj½hY]rÇhdXService development plansrÈ…rÉ}rÊ(hBXService development plansrËhCjÁubahKh¦ubahKh§ubahKh¿ubh“)rÌ}rÍ(hBUhM}rÎ(hO]hP]hQ]hR]hU]uhCjþhY]rÏh˜)rÐ}rÑ(hBUhM}rÒ(hO]hP]hQ]hR]hU]uhCjÌhY]rÓh)rÔ}rÕ(hBUhM}rÖ(hR]r×Uid43rØahQ]hO]hP]hU]UrefidUmn-api-method-changesrÙuhCjÐhY]rÚhdXMN API method changesrÛ…rÜ}rÝ(hBXMN API method changesrÞhCjÔubahKh¦ubahKh§ubahKh¿ubh“)rß}rà(hBUhM}rá(hO]hP]hQ]hR]hU]uhCjþhY]râh˜)rã}rä(hBUhM}rå(hO]hP]hQ]hR]hU]uhCjßhY]ræh)rç}rè(hBUhM}ré(hR]rêUid44rëahQ]hO]hP]hU]UrefidUcn-api-method-changesrìuhCjãhY]ríhdXCN API method changesrî…rï}rð(hBXCN API method changesrñhCjçubahKh¦ubahKh§ubahKh¿ubehKhubehKh¿ubh“)rò}ró(hBUhM}rô(hO]hP]hQ]hR]hU]uhCh¨hY]rõ(h˜)rö}r÷(hBUhM}rø(hO]hP]hQ]hR]hU]uhCjòhY]rùh)rú}rû(hBUhM}rü(hR]rýUid45rþahQ]hO]hP]hU]UrefidU use-casesrÿuhCjöhY]rhdX Use Casesr…r}r(hBX Use CasesrhCjúubahKh¦ubahKh§ubh)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjòhY]r(h“)r }r (hBUhM}r (hO]hP]hQ]hR]hU]uhCjhY]r h˜)r }r(hBUhM}r(hO]hP]hQ]hR]hU]uhCj hY]rh)r}r(hBUhM}r(hR]rUid46rahQ]hO]hP]hU]UrefidUdata-preservationruhCj hY]rhdX1. Data preservationr…r}r(hBX1. Data preservationrhCjubahKh¦ubahKh§ubahKh¿ubh“)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]rh˜)r }r!(hBUhM}r"(hO]hP]hQ]hR]hU]uhCjhY]r#h)r$}r%(hBUhM}r&(hR]r'Uid47r(ahQ]hO]hP]hU]UrefidU#mutable-content-member-node-supportr)uhCj hY]r*hdX&2. Mutable Content Member Node supportr+…r,}r-(hBX&2. Mutable Content Member Node supportr.hCj$ubahKh¦ubahKh§ubahKh¿ubh“)r/}r0(hBUhM}r1(hO]hP]hQ]hR]hU]uhCjhY]r2(h˜)r3}r4(hBUhM}r5(hO]hP]hQ]hR]hU]uhCj/hY]r6h)r7}r8(hBUhM}r9(hR]r:Uid48r;ahQ]hO]hP]hU]UrefidUcitation-supportr<uhCj3hY]r=hdX3. Citation supportr>…r?}r@(hBX3. Citation supportrAhCj7ubahKh¦ubahKh§ubh)rB}rC(hBUhM}rD(hO]hP]hQ]hR]hU]uhCj/hY]rEh“)rF}rG(hBUhM}rH(hO]hP]hQ]hR]hU]uhCjBhY]rIh˜)rJ}rK(hBUhM}rL(hO]hP]hQ]hR]hU]uhCjFhY]rMh)rN}rO(hBUhM}rP(hR]rQUid49rRahQ]hO]hP]hU]UrefidUoptionalrSuhCjJhY]rThdXOptionalrU…rV}rW(hBXOptionalrXhCjNubahKh¦ubahKh§ubahKh¿ubahKhubehKh¿ubh“)rY}rZ(hBUhM}r[(hO]hP]hQ]hR]hU]uhCjhY]r\h˜)r]}r^(hBUhM}r_(hO]hP]hQ]hR]hU]uhCjYhY]r`h)ra}rb(hBUhM}rc(hR]rdUid50reahQ]hO]hP]hU]UrefidU0support-for-frequently-changing-overwritten-datarfuhCj]hY]rghdX54. Support for frequently changing / overwritten datarh…ri}rj(hBX54. Support for frequently changing / overwritten datarkhCjaubahKh¦ubahKh§ubahKh¿ubh“)rl}rm(hBUhM}rn(hO]hP]hQ]hR]hU]uhCjhY]roh˜)rp}rq(hBUhM}rr(hO]hP]hQ]hR]hU]uhCjlhY]rsh)rt}ru(hBUhM}rv(hR]rwUid51rxahQ]hO]hP]hU]UrefidU!support-for-accumulating-datasetsryuhCjphY]rzhdX$5. Support for accumulating datasetsr{…r|}r}(hBX$5. Support for accumulating datasetsr~hCjtubahKh¦ubahKh§ubahKh¿ubh“)r}r€(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]r‚h˜)rƒ}r„(hBUhM}r…(hO]hP]hQ]hR]hU]uhCjhY]r†h)r‡}rˆ(hBUhM}r‰(hR]rŠUid52r‹ahQ]hO]hP]hU]UrefidU'support-for-mixed-metadata-data-objectsrŒuhCjƒhY]rhdX*6. Support for mixed metadata/data objectsrŽ…r}r(hBX*6. Support for mixed metadata/data objectsr‘hCj‡ubahKh¦ubahKh§ubahKh¿ubh“)r’}r“(hBUhM}r”(hO]hP]hQ]hR]hU]uhCjhY]r•h˜)r–}r—(hBUhM}r˜(hO]hP]hQ]hR]hU]uhCj’hY]r™h)rš}r›(hBUhM}rœ(hR]rUid53ržahQ]hO]hP]hU]UrefidU"supporting-unrecorded-data-streamsrŸuhCj–hY]r hdX'7. Supporting 'unrecorded' data streamsr¡…r¢}r£(hBX'7. Supporting 'unrecorded' data streamsr¤hCjšubahKh¦ubahKh§ubahKh¿ubehKhubehKh¿ubehKhubehKh¿ubaubeubhD)r¥}r¦(hBUhChGhIhJhKhLhM}r§(hO]hP]hQ]hR]r¨h¹ahU]r©h auhWK hXhhY]rª(h[)r«}r¬(hBh¾hCj¥hIhJhKh_hM}r­(hR]hQ]hO]hP]hU]hah¸uhWK hXhhY]r®hdXOverviewr¯…r°}r±(hBh¾hCj«ubaubh˜)r²}r³(hBXÛAll content synchronized by DataONE is immutable, and so resolution of a :term:`persistent identifier` (PID) will always result in a pointer (URI) to a set of bytes that are in all respects identical to the original. Version 2.0 of the DataONE APIs introduced the ability to associate an optional series identifier (SID) with an object. Unlike a PID, resolution of a SID will always result in a pointer (URI) to a set of bytes that represent the latest revision of an object.hCj¥hIhJhKh§hM}r´(hO]hP]hQ]hR]hU]uhWK hXhhY]rµ(hdXIAll content synchronized by DataONE is immutable, and so resolution of a r¶…r·}r¸(hBXIAll content synchronized by DataONE is immutable, and so resolution of a hCj²ubcsphinx.addnodes pending_xref r¹)rº}r»(hBX:term:`persistent identifier`r¼hCj²hIhJhKU pending_xrefr½hM}r¾(UreftypeXtermUrefwarnr¿ˆU reftargetrÀXpersistent identifierU refdomainXstdrÁhR]hQ]U refexplicit‰hO]hP]hU]UrefdocrÂXdesign/ContentMutabilityrÃuhWK hY]rÄcdocutils.nodes inline rÅ)rÆ}rÇ(hBj¼hM}rÈ(hO]hP]rÉ(UxrefrÊjÁXstd-termrËehQ]hR]hU]uhCjºhY]rÌhdXpersistent identifierrÍ…rÎ}rÏ(hBUhCjÆubahKhrubaubhdXu (PID) will always result in a pointer (URI) to a set of bytes that are in all respects identical to the original. Version 2.0 of the DataONE APIs introduced the ability to associate an optional series identifier (SID) with an object. Unlike a PID, resolution of a SID will always result in a pointer (URI) to a set of bytes that represent the latest revision of an object.rÐ…rÑ}rÒ(hBXu (PID) will always result in a pointer (URI) to a set of bytes that are in all respects identical to the original. Version 2.0 of the DataONE APIs introduced the ability to associate an optional series identifier (SID) with an object. Unlike a PID, resolution of a SID will always result in a pointer (URI) to a set of bytes that represent the latest revision of an object.hCj²ubeubh˜)rÓ}rÔ(hBXÆA revision or obsolescence chain is constructed by setting the obsoletes and obsoletedBy properties of the new and old objects respectively. For example, here PID_B represents the latest revision of object as it obsoletes PID_A (object PID_A has a value of "PID_B" in its system metadata :attr:`~Types.SystemMetadata.obsoletedBy` property, and object PID_B has a value of "PID_A" in its system metadata :attr:`~Types.SystemMetadata.obsoletes` property)::hCj¥hIhJhKh§hM}rÕ(hO]hP]hQ]hR]hU]uhWKhXhhY]rÖ(hdX A revision or obsolescence chain is constructed by setting the obsoletes and obsoletedBy properties of the new and old objects respectively. For example, here PID_B represents the latest revision of object as it obsoletes PID_A (object PID_A has a value of "PID_B" in its system metadata r×…rØ}rÙ(hBX A revision or obsolescence chain is constructed by setting the obsoletes and obsoletedBy properties of the new and old objects respectively. For example, here PID_B represents the latest revision of object as it obsoletes PID_A (object PID_A has a value of "PID_B" in its system metadata hCjÓubj¹)rÚ}rÛ(hBX):attr:`~Types.SystemMetadata.obsoletedBy`rÜhCjÓhIhJhKj½hM}rÝ(UreftypeXattrj¿‰jÀX Types.SystemMetadata.obsoletedByU refdomainXpyrÞhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃUpy:classrßNU py:moduleràNuhWKhY]rácdocutils.nodes literal râ)rã}rä(hBjÜhM}rå(hO]hP]ræ(jÊjÞXpy-attrrçehQ]hR]hU]uhCjÚhY]rèhdX obsoletedByré…rê}rë(hBUhCjãubahKUliteralrìubaubhdXJ property, and object PID_B has a value of "PID_A" in its system metadata rí…rî}rï(hBXJ property, and object PID_B has a value of "PID_A" in its system metadata hCjÓubj¹)rð}rñ(hBX':attr:`~Types.SystemMetadata.obsoletes`ròhCjÓhIhJhKj½hM}ró(UreftypeXattrj¿‰jÀXTypes.SystemMetadata.obsoletesU refdomainXpyrôhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKhY]rõjâ)rö}r÷(hBjòhM}rø(hO]hP]rù(jÊjôXpy-attrrúehQ]hR]hU]uhCjðhY]rûhdX obsoletesrü…rý}rþ(hBUhCjöubahKjìubaubhdX property):rÿ…r}r(hBX property):hCjÓubeubcdocutils.nodes literal_block r)r}r(hBXI+------------+ +------------+ | | ----- obsoletes ---> | | | PID_B | | PID_A | | | <--- obsoletedBy --- | | +------------+ +------------+ resolve(PID_A) => PID_A resolve(PID_B) => PID_BhCj¥hIhJhKU literal_blockrhM}r(U xml:spacerUpreserverhR]hQ]hO]hP]hU]uhWKhXhhY]r hdXI+------------+ +------------+ | | ----- obsoletes ---> | | | PID_B | | PID_A | | | <--- obsoletedBy --- | | +------------+ +------------+ resolve(PID_A) => PID_A resolve(PID_B) => PID_Br …r }r (hBUhCjubaubh˜)r }r(hBX"In version 1.x of DataONE, it was necessary to manually follow the obsolescence chain in order to find the latest version of an object. This process is simplified in version 2.x and later through the use of series identifiers. The previous example can be augmented with series identifiers::hCj¥hIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWK%hXhhY]rhdX!In version 1.x of DataONE, it was necessary to manually follow the obsolescence chain in order to find the latest version of an object. This process is simplified in version 2.x and later through the use of series identifiers. The previous example can be augmented with series identifiers:r…r}r(hBX!In version 1.x of DataONE, it was necessary to manually follow the obsolescence chain in order to find the latest version of an object. This process is simplified in version 2.x and later through the use of series identifiers. The previous example can be augmented with series identifiers:hCj ubaubj)r}r(hBX¡+------------+ +------------+ | | ----- obsoletes ---> | | | PID_B | | PID_A | | SID_1 | | SID_1 | | | <--- obsoletedBy --- | | +------------+ +------------+ resolve(PID_A) => PID_A resolve(PID_B) => PID_B resolve(SID_1) => PID_BhCj¥hIhJhKjhM}r(jjhR]hQ]hO]hP]hU]uhWK+hXhhY]rhdX¡+------------+ +------------+ | | ----- obsoletes ---> | | | PID_B | | PID_A | | SID_1 | | SID_1 | | | <--- obsoletedBy --- | | +------------+ +------------+ resolve(PID_A) => PID_A resolve(PID_B) => PID_B resolve(SID_1) => PID_Br…r}r(hBUhCjubaubh˜)r}r(hBX$Each object in the obsolescence chain has the same value for the series identifier ("SID_1"), and calling :func:`~CNRead.resolve` with the value "SID_1" will result in the URIs from which the object "PID_B" may be retrieved, since that object is the latest revision in the obsolescence chain.hCj¥hIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWK7hXhhY]r(hdXjEach object in the obsolescence chain has the same value for the series identifier ("SID_1"), and calling r…r }r!(hBXjEach object in the obsolescence chain has the same value for the series identifier ("SID_1"), and calling hCjubj¹)r"}r#(hBX:func:`~CNRead.resolve`r$hCjhIhJhKj½hM}r%(UreftypeXfuncj¿‰jÀXCNRead.resolveU refdomainXpyr&hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWK7hY]r'jâ)r(}r)(hBj$hM}r*(hO]hP]r+(jÊj&Xpy-funcr,ehQ]hR]hU]uhCj"hY]r-hdX resolve()r.…r/}r0(hBUhCj(ubahKjìubaubhdX£ with the value "SID_1" will result in the URIs from which the object "PID_B" may be retrieved, since that object is the latest revision in the obsolescence chain.r1…r2}r3(hBX£ with the value "SID_1" will result in the URIs from which the object "PID_B" may be retrieved, since that object is the latest revision in the obsolescence chain.hCjubeubh˜)r4}r5(hBXThe availability of PIDs and SIDs means users may now refer to objects using either a PID when it is necessary or appropriate to refer to an exact set of bytes that represent an object or through a SID when referring to the latest version of an object. The former is important for repeatable analyses, since the same content may be reliably referenced and retrieved. The latter is important for referencing the most up to date revision of some object, and so may be useful for example to perform anaysis with the latest information available.r6hCj¥hIhJhKh§hM}r7(hO]hP]hQ]hR]hU]uhWKhCj¥hIhJhKh§hM}r?(hO]hP]hQ]hR]hU]uhWKEhXhhY]r@hdXœUnless indicated otherwise, the DataONE version 2.x and later APIs will accept either a PID or a SID when an identifier is specified as a request parameter.rA…rB}rC(hBj>hCj<ubaubeubhEhD)rD}rE(hBUhChGhIhJhKhLhM}rF(hO]hP]hQ]hR]rGjMahU]rHhauhWM“hXhhY]rI(h[)rJ}rK(hBjRhCjDhIhJhKh_hM}rL(hR]hQ]hO]hP]hU]hajLuhWM“hXhhY]rMhdX!Referencing Content by IdentifierrN…rO}rP(hBjRhCjJubaubh˜)rQ}rR(hBXùThe use of the PID or SID for either citation or analysis workflows is up to the user and is context dependent. In general, DataONE anticipates ``DATA`` and ``RESOURCE_MAP`` objects will be referenced by PID, to ensure reproducibility; and in general, ``METADATA`` documents will be referenced by SID, to take advantage of any data curation / correction efforts that would not otherwise affect scientific reproducibility. Additionally, clues for the content submitter's preference can be found in the format of the identifiers themselves. For example, DOIs and EZIDs take a recognizable format, and are often encouraged in scientific communities for citations, so an end-user might take that into consideration when deciding which identifier to choose.hCjDhIhJhKh§hM}rS(hO]hP]hQ]hR]hU]uhWM•hXhhY]rT(hdXThe use of the PID or SID for either citation or analysis workflows is up to the user and is context dependent. In general, DataONE anticipates rU…rV}rW(hBXThe use of the PID or SID for either citation or analysis workflows is up to the user and is context dependent. In general, DataONE anticipates hCjQubjâ)rX}rY(hBX``DATA``hM}rZ(hO]hP]hQ]hR]hU]uhCjQhY]r[hdXDATAr\…r]}r^(hBUhCjXubahKjìubhdX and r_…r`}ra(hBX and hCjQubjâ)rb}rc(hBX``RESOURCE_MAP``hM}rd(hO]hP]hQ]hR]hU]uhCjQhY]rehdX RESOURCE_MAPrf…rg}rh(hBUhCjbubahKjìubhdXQ objects will be referenced by PID, to ensure reproducibility; and in general, ri…rj}rk(hBXQ objects will be referenced by PID, to ensure reproducibility; and in general, hCjQubjâ)rl}rm(hBX ``METADATA``hM}rn(hO]hP]hQ]hR]hU]uhCjQhY]rohdXMETADATArp…rq}rr(hBUhCjlubahKjìubhdXï documents will be referenced by SID, to take advantage of any data curation / correction efforts that would not otherwise affect scientific reproducibility. Additionally, clues for the content submitter's preference can be found in the format of the identifiers themselves. For example, DOIs and EZIDs take a recognizable format, and are often encouraged in scientific communities for citations, so an end-user might take that into consideration when deciding which identifier to choose.rs…rt}ru(hBXï documents will be referenced by SID, to take advantage of any data curation / correction efforts that would not otherwise affect scientific reproducibility. Additionally, clues for the content submitter's preference can be found in the format of the identifiers themselves. For example, DOIs and EZIDs take a recognizable format, and are often encouraged in scientific communities for citations, so an end-user might take that into consideration when deciding which identifier to choose.hCjQubeubhs)rv}rw(hBUhCjDhIhJhKhvhM}rx(hR]hQ]hO]hP]hU]haUindex-1ryuhWNhXhhY]ubcsphinx.ext.todo todo_node rz)r{}r|(hBXqguidance on RESOURCE_MAPS - initial thoughts: depends on references to DATA objects, whether they be SIDs or PIDsr}hCjDhIhJh{}hKU todo_noder~hM}r(hO]hP]r€Uadmonition-todorahQ]hR]r‚jyahU]uhWM hXhhƒ}rƒjyjvshY]r„(h[)r…}r†(hBXTodor‡hM}rˆ(hO]hP]hQ]hR]hU]uhCj{hY]r‰hdXTodorŠ…r‹}rŒ(hBUhCj…ubahKh_ubh˜)r}rŽ(hBXqguidance on RESOURCE_MAPS - initial thoughts: depends on references to DATA objects, whether they be SIDs or PIDsrhCj{hIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWM¢hY]r‘hdXqguidance on RESOURCE_MAPS - initial thoughts: depends on references to DATA objects, whether they be SIDs or PIDsr’…r“}r”(hBjhCjubaubeubeubhD)r•}r–(hBUhChGhIhJhKhLhM}r—(hO]hP]hQ]hR]r˜j`ahU]r™hauhWM§hXhhY]rš(h[)r›}rœ(hBjehCj•hIhJhKh_hM}r(hR]hQ]hO]hP]hU]haj_uhWM§hXhhY]ržhdXAssigning IdentifiersrŸ…r }r¡(hBjehCj›ubaubh˜)r¢}r£(hBX÷Depending on the Member Node used as the primary repository, content originators may have some choice in assigning identifiers. For those that do, it is advised that they assign PIDs and SIDs according to the typical usage pattern described above.r¤hCj•hIhJhKh§hM}r¥(hO]hP]hQ]hR]hU]uhWM©hXhhY]r¦hdX÷Depending on the Member Node used as the primary repository, content originators may have some choice in assigning identifiers. For those that do, it is advised that they assign PIDs and SIDs according to the typical usage pattern described above.r§…r¨}r©(hBj¤hCj¢ubaubh˜)rª}r«(hBXNSome Member Nodes may not preserve past versions of content, in which case the PID is likely to be automatically generated, and the submitter only has to determine the SID, and may not need to know the difference between the SID and PID. Other Member Nodes may still be at v1 of the DataONE APIs and only allow assignment of the PID.r¬hCj•hIhJhKh§hM}r­(hO]hP]hQ]hR]hU]uhWM®hXhhY]r®hdXNSome Member Nodes may not preserve past versions of content, in which case the PID is likely to be automatically generated, and the submitter only has to determine the SID, and may not need to know the difference between the SID and PID. Other Member Nodes may still be at v1 of the DataONE APIs and only allow assignment of the PID.r¯…r°}r±(hBj¬hCjªubaubeubhD)r²}r³(hBUhChGhIhJhKhLhM}r´(hO]hP]hQ]hR]rµjsahU]r¶hauhWM¶hXhhY]r·(h[)r¸}r¹(hBjxhCj²hIhJhKh_hM}rº(hR]hQ]hO]hP]hU]hajruhWM¶hXhhY]r»hdXLimits on the Seriesr¼…r½}r¾(hBjxhCj¸ubaubh˜)r¿}rÀ(hBXXThe SID is used to conceptually represent an object that may vary modestly over time, but remains conceptually the same. Content contributers should be careful to apply reasonable limits on the scope of documents such that an entity does not deviate too much from the original item. In such cases, a new / different series should be initiated.rÁhCj²hIhJhKh§hM}rÂ(hO]hP]hQ]hR]hU]uhWM¸hXhhY]rÃhdXXThe SID is used to conceptually represent an object that may vary modestly over time, but remains conceptually the same. Content contributers should be careful to apply reasonable limits on the scope of documents such that an entity does not deviate too much from the original item. In such cases, a new / different series should be initiated.rÄ…rÅ}rÆ(hBjÁhCj¿ubaubeubhD)rÇ}rÈ(hBUhChGhIhJhKhLhM}rÉ(hO]hP]hQ]hR]rÊj†ahU]rËhauhWMÀhXhhY]rÌ(h[)rÍ}rÎ(hBj‹hCjÇhIhJhKh_hM}rÏ(hR]hQ]hO]hP]hU]haj…uhWMÀhXhhY]rÐhdX+Requirements on Member Node ImplementationsrÑ…rÒ}rÓ(hBj‹hCjÍubaubh˜)rÔ}rÕ(hBXÅFor Member Nodes that employ a mutable content storage model, the only additional DataONE requirement is that the Member Node generate a SystemMetadata document for the updated content, containing:rÖhCjÇhIhJhKh§hM}r×(hO]hP]hQ]hR]hU]uhWMÂhXhhY]rØhdXÅFor Member Nodes that employ a mutable content storage model, the only additional DataONE requirement is that the Member Node generate a SystemMetadata document for the updated content, containing:rÙ…rÚ}rÛ(hBjÖhCjÔubaubcdocutils.nodes block_quote rÜ)rÝ}rÞ(hBUhCjÇhINhKU block_quoterßhM}rà(hO]hP]hQ]hR]hU]uhWNhXhhY]rácdocutils.nodes enumerated_list râ)rã}rä(hBUhM}rå(UsuffixræU.hR]hQ]hO]UprefixrçUhP]hU]UenumtyperèUarabicréuhCjÝhY]rê(h“)rë}rì(hBX.unique PID in systemMetadata.identifier field hM}rí(hO]hP]hQ]hR]hU]uhCjãhY]rîh˜)rï}rð(hBX-unique PID in systemMetadata.identifier fieldrñhCjëhIhJhKh§hM}rò(hO]hP]hQ]hR]hU]uhWMÆhY]róhdX-unique PID in systemMetadata.identifier fieldrô…rõ}rö(hBjñhCjïubaubahKh¿ubh“)r÷}rø(hBX new checksum hM}rù(hO]hP]hQ]hR]hU]uhCjãhY]rúh˜)rû}rü(hBX new checksumrýhCj÷hIhJhKh§hM}rþ(hO]hP]hQ]hR]hU]uhWMÈhY]rÿhdX new checksumr…r}r(hBjýhCjûubaubahKh¿ubh“)r}r(hBX7the previous PID in the systemMetadata.obsoletes field hM}r(hO]hP]hQ]hR]hU]uhCjãhY]rh˜)r}r(hBX6the previous PID in the systemMetadata.obsoletes fieldr hCjhIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMÊhY]r hdX6the previous PID in the systemMetadata.obsoletes fieldr …r }r(hBj hCjubaubahKh¿ubehKUenumerated_listrubaubh˜)r}r(hBX¤Ideally, the SystemMetadata of now unavailable versions will be maintained, and the ``obsoletedBy`` field is populated with the PID of the version that replaced it.hCjÇhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWMÌhXhhY]r(hdXTIdeally, the SystemMetadata of now unavailable versions will be maintained, and the r…r}r(hBXTIdeally, the SystemMetadata of now unavailable versions will be maintained, and the hCjubjâ)r}r(hBX``obsoletedBy``hM}r(hO]hP]hQ]hR]hU]uhCjhY]rhdX obsoletedByr…r}r(hBUhCjubahKjìubhdXA field is populated with the PID of the version that replaced it.r…r}r (hBXA field is populated with the PID of the version that replaced it.hCjubeubh˜)r!}r"(hBXŽSome Member Nodes may opt to preserve recent back-versions to aid the complete capture of versions by the DataONE network via synchronization.r#hCjÇhIhJhKh§hM}r$(hO]hP]hQ]hR]hU]uhWMÐhXhhY]r%hdXŽSome Member Nodes may opt to preserve recent back-versions to aid the complete capture of versions by the DataONE network via synchronization.r&…r'}r((hBj#hCj!ubaubeubhD)r)}r*(hBUhChGhIhJhKhLhM}r+(hO]hP]hQ]hR]r,j™ahU]r-hauhWMÕhXhhY]r.(h[)r/}r0(hBjžhCj)hIhJhKh_hM}r1(hR]hQ]hO]hP]hU]haj˜uhWMÕhXhhY]r2hdXCReassignment of AuthoritativeMemberNode field for unhosted versionsr3…r4}r5(hBjžhCj/ubaubh˜)r6}r7(hBXto be determinedr8hCj)hIhJhKh§hM}r9(hO]hP]hQ]hR]hU]uhWM×hXhhY]r:hdXto be determinedr;…r<}r=(hBj8hCj6ubaubeubhD)r>}r?(hBUhChGhIhJhKhLhM}r@(hO]hP]hQ]hR]rAj¬ahU]rBhauhWMÛhXhhY]rC(h[)rD}rE(hBj±hCj>hIhJhKh_hM}rF(hR]hQ]hO]hP]hU]haj«uhWMÛhXhhY]rGhdX%Replication of unhosted back-versionsrH…rI}rJ(hBj±hCjDubaubh˜)rK}rL(hBXDataONE will attempt to synchronize all versions it's made aware of through the synchronization process, but may miss short-lived versions that are in existence only between the Member Node's synchronization interval. Please note, also, that the synchronization schedule is not guaranteed. Periods of DataONE maintenance may suspend synchronization, or high CN load could prolong the synchronization interval.rMhCj>hIhJhKh§hM}rN(hO]hP]hQ]hR]hU]uhWMÝhXhhY]rOhdXDataONE will attempt to synchronize all versions it's made aware of through the synchronization process, but may miss short-lived versions that are in existence only between the Member Node's synchronization interval. Please note, also, that the synchronization schedule is not guaranteed. Periods of DataONE maintenance may suspend synchronization, or high CN load could prolong the synchronization interval.rP…rQ}rR(hBjMhCjKubaubh˜)rS}rT(hBXìMember Nodes keen to make sure versions have the highest chance of synchronization can choose to issue a :func:`CNCore.synchronize` command that will put the item on the synchronization queue instead of waiting for the harvest interval.hCj>hIhJhKh§hM}rU(hO]hP]hQ]hR]hU]uhWMähXhhY]rV(hdXiMember Nodes keen to make sure versions have the highest chance of synchronization can choose to issue a rW…rX}rY(hBXiMember Nodes keen to make sure versions have the highest chance of synchronization can choose to issue a hCjSubj¹)rZ}r[(hBX:func:`CNCore.synchronize`r\hCjShIhJhKj½hM}r](UreftypeXfuncj¿‰jÀXCNCore.synchronizeU refdomainXpyr^hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWMähY]r_jâ)r`}ra(hBj\hM}rb(hO]hP]rc(jÊj^Xpy-funcrdehQ]hR]hU]uhCjZhY]rehdXCNCore.synchronize()rf…rg}rh(hBUhCj`ubahKjìubaubhdXi command that will put the item on the synchronization queue instead of waiting for the harvest interval.ri…rj}rk(hBXi command that will put the item on the synchronization queue instead of waiting for the harvest interval.hCjSubeubh˜)rl}rm(hBX¡Conversely, if the Member Node expressly doesn't want DataONE to preserve back-versions, they can set systemMetadata.replicationPolicy.numberReplicas field to 0.rnhCj>hIhJhKh§hM}ro(hO]hP]hQ]hR]hU]uhWMéhXhhY]rphdX¡Conversely, if the Member Node expressly doesn't want DataONE to preserve back-versions, they can set systemMetadata.replicationPolicy.numberReplicas field to 0.rq…rr}rs(hBjnhCjlubaubeubhD)rt}ru(hBUhChGhIhJhKhLhM}rv(hO]hP]hQ]hR]rwj¿ahU]rxh;auhWMïhXhhY]ry(h[)rz}r{(hBjÄhCjthIhJhKh_hM}r|(hR]hQ]hO]hP]hU]haj¾uhWMïhXhhY]r}hdX/Synchronizing Content from Mutable Member Nodesr~…r}r€(hBjÄhCjzubaubh˜)r}r‚(hBX¬At its core, DataONE is in the business of preserving definite versions of content through centrally coordinated per-to-peer replication. That is, DataONE Coordinating Nodes direct certain Member Nodes to replicate newly synchronized objects from the originating Member Node to better preserve it. New versions of objects appear as first class immutable objects with unique PIDs, even if originating from mutable Member Nodes.rƒhCjthIhJhKh§hM}r„(hO]hP]hQ]hR]hU]uhWMñhXhhY]r…hdX¬At its core, DataONE is in the business of preserving definite versions of content through centrally coordinated per-to-peer replication. That is, DataONE Coordinating Nodes direct certain Member Nodes to replicate newly synchronized objects from the originating Member Node to better preserve it. New versions of objects appear as first class immutable objects with unique PIDs, even if originating from mutable Member Nodes.r†…r‡}rˆ(hBjƒhCjubaubh˜)r‰}rŠ(hBXÌFrom the DataONE perspective the only difference between objects from mutable Member Nodes and immutable Member Nodes is the completeness of the series of versions it is able to synchronize and replicate.r‹hCjthIhJhKh§hM}rŒ(hO]hP]hQ]hR]hU]uhWMøhXhhY]rhdXÌFrom the DataONE perspective the only difference between objects from mutable Member Nodes and immutable Member Nodes is the completeness of the series of versions it is able to synchronize and replicate.rŽ…r}r(hBj‹hCj‰ubaubeubhD)r‘}r’(hBUhChGhIhJhKhLhM}r“(hO]hP]hQ]hR]r”jÒahU]r•hauhWMÿhXhhY]r–(h[)r—}r˜(hBj×hCj‘hIhJhKh_hM}r™(hR]hQ]hO]hP]hU]hajÑuhWMÿhXhhY]ršhdX The Problemr›…rœ}r(hBj×hCj—ubaubh˜)rž}rŸ(hBX*Current DataONE replication processes and fixity checks depend on content identified by a PID that does not change. If this were not enforced, mutable content from a member node would not be differentiated from corrupt copies of the object and our replication and recovery features would attempt to correct the byte inconsistency. The immutability requirement helps to ensure reproducible results of any use of an object. Any analysis on a data set repeated sometime in the future should yield identical results (within the limits of precision of the analytical tools) and this is one of the major guiding principles in creating DataONE as a long term data repository federation. By simply overwriting existing content using the same identifier, nodes cannot be relied upon for repeatable retrieval of content.r hCj‘hIhJhKh§hM}r¡(hO]hP]hQ]hR]hU]uhWMhXhhY]r¢hdX*Current DataONE replication processes and fixity checks depend on content identified by a PID that does not change. If this were not enforced, mutable content from a member node would not be differentiated from corrupt copies of the object and our replication and recovery features would attempt to correct the byte inconsistency. The immutability requirement helps to ensure reproducible results of any use of an object. Any analysis on a data set repeated sometime in the future should yield identical results (within the limits of precision of the analytical tools) and this is one of the major guiding principles in creating DataONE as a long term data repository federation. By simply overwriting existing content using the same identifier, nodes cannot be relied upon for repeatable retrieval of content.r£…r¤}r¥(hBj hCjžubaubeubhD)r¦}r§(hBUhChGhIhJhKhLhM}r¨(hO]hP]hQ]hR]r©jåahU]rªh%auhWMhXhhY]r«(h[)r¬}r­(hBjêhCj¦hIhJhKh_hM}r®(hR]hQ]hO]hP]hU]hajäuhWMhXhhY]r¯hdXProposalr°…r±}r²(hBjêhCj¬ubaubh˜)r³}r´(hBXThe proposal for supporting "mutable" content is to allow a series identifier (SID) to facilitate the semantics of citing an object at the conceptual level, instead of the version level. As content changes over time, new identifiers (PIDs) will still be used to mark each change, but the conceptual object can continue to be referred to with an unchanging identifier (SID). The member node will be responsible for creating each version and assigning a unique PID to it and these objects will be synchronized and replicated to other DataONE member nodes as they are today. So instead of allowing content to be directly modified, we are allowing strongly-versioned chains to be referenced by an identifier; and relaxing the requirement that all revisions be resolvable forever.rµhCj¦hIhJhKh§hM}r¶(hO]hP]hQ]hR]hU]uhWMhXhhY]r·hdXThe proposal for supporting "mutable" content is to allow a series identifier (SID) to facilitate the semantics of citing an object at the conceptual level, instead of the version level. As content changes over time, new identifiers (PIDs) will still be used to mark each change, but the conceptual object can continue to be referred to with an unchanging identifier (SID). The member node will be responsible for creating each version and assigning a unique PID to it and these objects will be synchronized and replicated to other DataONE member nodes as they are today. So instead of allowing content to be directly modified, we are allowing strongly-versioned chains to be referenced by an identifier; and relaxing the requirement that all revisions be resolvable forever.r¸…r¹}rº(hBjµhCj³ubaubeubhD)r»}r¼(hBUhChGhIhJhKhLhM}r½(hO]hP]hQ]hR]r¾jøahU]r¿h auhWMhXhhY]rÀ(h[)rÁ}rÂ(hBjýhCj»hIhJhKh_hM}rÃ(hR]hQ]hO]hP]hU]haj÷uhWMhXhhY]rÄhdXThe Series IdentifierrÅ…rÆ}rÇ(hBjýhCjÁubaubh˜)rÈ}rÉ(hBX"The proposed solution is to model and implement a "series identifier" (SID) along with modified services that would work with both SIDs and PIDs. From a DataONE perspective, the series identifiers would be assigned to all versions of an object, be unique in DataONE (assigned to only one version chain), and would be reserved just as PIDs - from the same namespace. The series identifier, once assigned to the version chain, would similarly be immutable, and could apply to all new versions of the item. It is also assumed that in order to coordinate users to use one identifier for citations, that the cardinality for the citation identifier would be 0..1. The semantics for making API calls with a SID would, in general, be to return responses as if the call were made with the most current PID.rÊhCj»hIhJhKh§hM}rË(hO]hP]hQ]hR]hU]uhWM hXhhY]rÌhdX"The proposed solution is to model and implement a "series identifier" (SID) along with modified services that would work with both SIDs and PIDs. From a DataONE perspective, the series identifiers would be assigned to all versions of an object, be unique in DataONE (assigned to only one version chain), and would be reserved just as PIDs - from the same namespace. The series identifier, once assigned to the version chain, would similarly be immutable, and could apply to all new versions of the item. It is also assumed that in order to coordinate users to use one identifier for citations, that the cardinality for the citation identifier would be 0..1. The semantics for making API calls with a SID would, in general, be to return responses as if the call were made with the most current PID.rÍ…rÎ}rÏ(hBjÊhCjÈubaubh˜)rÐ}rÑ(hBXMember Nodes that only maintain the latest version of an item would be required to use a new PID for any updated content, and modify the System Metadata appropriately so that the new version can be synchronized with the network. The same SID would typically be used for the updated object, although we would allow the revision chain to shift to a new SID as desired by the client and/or member node.rÒhCj»hIhJhKh§hM}rÓ(hO]hP]hQ]hR]hU]uhWM,hXhhY]rÔhdXMember Nodes that only maintain the latest version of an item would be required to use a new PID for any updated content, and modify the System Metadata appropriately so that the new version can be synchronized with the network. The same SID would typically be used for the updated object, although we would allow the revision chain to shift to a new SID as desired by the client and/or member node.rÕ…rÖ}r×(hBjÒhCjÐubaubh˜)rØ}rÙ(hBXFIt cannot be assumed that a user with an identifier in hand knows whether it is a SID or a PID, so DataONE expects the user to refer to the System Metadata once it has the item to determine if the identifier used in the call matches the PID or the SID. Similarly, they could interrogate search results for the same information. For high-level interfaces, like D1Client.getD1Object(id), the PID of the object returned may or may not match the passed in 'id'. So, high-level functions or applications that use resolve will have to make sure they handle the new resolving semantics.rÚhCj»hIhJhKh§hM}rÛ(hO]hP]hQ]hR]hU]uhWM3hXhhY]rÜhdXFIt cannot be assumed that a user with an identifier in hand knows whether it is a SID or a PID, so DataONE expects the user to refer to the System Metadata once it has the item to determine if the identifier used in the call matches the PID or the SID. Similarly, they could interrogate search results for the same information. For high-level interfaces, like D1Client.getD1Object(id), the PID of the object returned may or may not match the passed in 'id'. So, high-level functions or applications that use resolve will have to make sure they handle the new resolving semantics.rÝ…rÞ}rß(hBjÚhCjØubaubh˜)rà}rá(hBX€It is recommended that search indexes include a search field for the series identifier that can also be returned in the results.râhCj»hIhJhKh§hM}rã(hO]hP]hQ]hR]hU]uhWM<hXhhY]rähdX€It is recommended that search indexes include a search field for the series identifier that can also be returned in the results.rå…ræ}rç(hBjâhCjàubaubhD)rè}ré(hBUhCj»hIhJhKhLhM}rê(hO]hP]hQ]hR]rëjahU]rìh auhWMAhXhhY]rí(h[)rî}rï(hBjhCjèhIhJhKh_hM}rð(hR]hQ]hO]hP]hU]hajuhWMAhXhhY]rñhdXSemantics of "Current"rò…ró}rô(hBjhCjîubaubh˜)rõ}rö(hBX*A SID chain closes with two types of ends:r÷hCjèhIhJhKh§hM}rø(hO]hP]hQ]hR]hU]uhWMChXhhY]rùhdX*A SID chain closes with two types of ends:rú…rû}rü(hBj÷hCjõubaubh˜)rý}rþ(hBXHType 1: An object on the SID chain doesn't have the "obsoletedBy" field.rÿhCjèhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWMEhXhhY]rhdXHType 1: An object on the SID chain doesn't have the "obsoletedBy" field.r…r}r(hBjÿhCjýubaubh˜)r}r(hBX Example::rhCjèhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWMGhXhhY]r hdXExample:r …r }r (hBXExample:hCjubaubj)r }r(hBXP1(S1) ⟺ P2(S1)hCjèhIhJhKjhM}r(jjhR]hQ]hO]hP]hU]uhWMIhXhhY]rhdXP1(S1) ⟺ P2(S1)r…r}r(hBUhCj ubaubh˜)r}r(hBX``P2`` is a type 1 end.rhCjèhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWMKhXhhY]r(jâ)r}r(hBX``P2``hM}r(hO]hP]hQ]hR]hU]uhCjhY]rhdXP2r…r}r(hBUhCjubahKjìubhdX is a type 1 end.r …r!}r"(hBX is a type 1 end.hCjubeubh˜)r#}r$(hBXšType 2: An object on the SID chain does have the "obsoletedBy" field, but the PID in the "obsoletedBy" field has a different SID (including no SID value).r%hCjèhIhJhKh§hM}r&(hO]hP]hQ]hR]hU]uhWMMhXhhY]r'hdXšType 2: An object on the SID chain does have the "obsoletedBy" field, but the PID in the "obsoletedBy" field has a different SID (including no SID value).r(…r)}r*(hBj%hCj#ubaubh˜)r+}r,(hBX Examples::r-hCjèhIhJhKh§hM}r.(hO]hP]hQ]hR]hU]uhWMPhXhhY]r/hdX Examples:r0…r1}r2(hBX Examples:hCj+ubaubj)r3}r4(hBX"P1(S1) ⟺ P2(S2) P1(S1) ⟺ P2()hCjèhIhJhKjhM}r5(jjhR]hQ]hO]hP]hU]uhWMRhXhhY]r6hdX"P1(S1) ⟺ P2(S2) P1(S1) ⟺ P2()r7…r8}r9(hBUhCj3ubaubh˜)r:}r;(hBX&``P1`` is a type 2 end on both chains.r<hCjèhIhJhKh§hM}r=(hO]hP]hQ]hR]hU]uhWMVhXhhY]r>(jâ)r?}r@(hBX``P1``hM}rA(hO]hP]hQ]hR]hU]uhCj:hY]rBhdXP1rC…rD}rE(hBUhCj?ubahKjìubhdX is a type 2 end on both chains.rF…rG}rH(hBX is a type 2 end on both chains.hCj:ubeubh˜)rI}rJ(hBXwIt is tricky to determine a type 2 end if the object in the "obsoletedBy" field is missing. For example, ``P1(S1) ⟺ P2(S1) ⟹ ??``. We don't have the knowledge of the series id of the object "??". So we generally consider it a type 2 end except we are sure it is not an end - there is another object in the chain (has the same series id) that obsoletes the missing object.hCjèhIhJhKh§hM}rK(hO]hP]hQ]hR]hU]uhWMXhXhhY]rL(hdXiIt is tricky to determine a type 2 end if the object in the "obsoletedBy" field is missing. For example, rM…rN}rO(hBXiIt is tricky to determine a type 2 end if the object in the "obsoletedBy" field is missing. For example, hCjIubjâ)rP}rQ(hBX``P1(S1) ⟺ P2(S1) ⟹ ??``hM}rR(hO]hP]hQ]hR]hU]uhCjIhY]rShdXP1(S1) ⟺ P2(S1) ⟹ ??rT…rU}rV(hBUhCjPubahKjìubhdXò. We don't have the knowledge of the series id of the object "??". So we generally consider it a type 2 end except we are sure it is not an end - there is another object in the chain (has the same series id) that obsoletes the missing object.rW…rX}rY(hBXò. We don't have the knowledge of the series id of the object "??". So we generally consider it a type 2 end except we are sure it is not an end - there is another object in the chain (has the same series id) that obsoletes the missing object.hCjIubeubh˜)rZ}r[(hBXMIn previous example [P1(S1) ⟺ P2(S1) ⟹ ??], P2 is a type 2 end (case 12).r\hCjèhIhJhKh§hM}r](hO]hP]hQ]hR]hU]uhWM^hXhhY]r^hdXMIn previous example [P1(S1) ⟺ P2(S1) ⟹ ??], P2 is a type 2 end (case 12).r_…r`}ra(hBj\hCjZubaubh˜)rb}rc(hBXåHowever, P1(S1) ⟺ P2(S1) ⟹ ?? ⟸ P4(S1), P2 is not an end (case 8) since "??" is in the obsoletes field of P4 that has the same series id - S1 (We are sure that the "??" has the series id S1 as well, so P2 is not an end).rdhCjèhIhJhKh§hM}re(hO]hP]hQ]hR]hU]uhWM`hXhhY]rfhdXåHowever, P1(S1) ⟺ P2(S1) ⟹ ?? ⟸ P4(S1), P2 is not an end (case 8) since "??" is in the obsoletes field of P4 that has the same series id - S1 (We are sure that the "??" has the series id S1 as well, so P2 is not an end).rg…rh}ri(hBjdhCjbubaubh˜)rj}rk(hBXÁIn P1(S1) ⟺ P2(S1) ⟹ ?? ⟸ P4(S2), P2 is a type 2 end even though "??" is in the obsoletes field of P4. But P4 has a different series id - S2 (so we are not sure "??" has the S1 or S2).rlhCjèhIhJhKh§hM}rm(hO]hP]hQ]hR]hU]uhWMbhXhhY]rnhdXÁIn P1(S1) ⟺ P2(S1) ⟹ ?? ⟸ P4(S2), P2 is a type 2 end even though "??" is in the obsoletes field of P4. But P4 has a different series id - S2 (so we are not sure "??" has the S1 or S2).ro…rp}rq(hBjlhCjjubaubh˜)rr}rs(hBX“Ideally, if there is one and only one end on a SID chain, this end will be the HEAD (current) version. This kind of chains are called ideal chains.rthCjèhIhJhKh§hM}ru(hO]hP]hQ]hR]hU]uhWMdhXhhY]rvhdX“Ideally, if there is one and only one end on a SID chain, this end will be the HEAD (current) version. This kind of chains are called ideal chains.rw…rx}ry(hBjthCjrubaubcdocutils.nodes definition_list rz)r{}r|(hBUhCjèhINhKUdefinition_listr}hM}r~(hO]hP]hQ]hR]hU]uhWNhXhhY]r(cdocutils.nodes definition_list_item r€)r}r‚(hBX°If there are more than one end on a SID chain because of the incompleteness of the system metadata, It is hard to determine which one is the real end. This kind of chain is not a ideal chain and we have to use this mechanism to determine the HEAD version: 1. Choose the end with latest dateUploaded in the chain as the temporary HEAD version. This rule works if the uploaded time stamps of objects aren't messed up. 2. If the time stamps are messed up, we need to test if any object obsoletes the temporary HEAD on the obsolete chain with the SAME SID. If nothing obsoletes the temporary HEAD, the temporary HEAD is the final HEAD; otherwise, the end of obsolete chain is the final HEAD. hCj{hIhJhKUdefinition_list_itemrƒhM}r„(hO]hP]hQ]hR]hU]uhWMhhY]r…(cdocutils.nodes term r†)r‡}rˆ(hBXÿIf there are more than one end on a SID chain because of the incompleteness of the system metadata, It is hard to determine which one is the real end. This kind of chain is not a ideal chain and we have to use this mechanism to determine the HEAD version:r‰hCjhIhJhKUtermrŠhM}r‹(hO]hP]hQ]hR]hU]uhWMhhY]rŒhdXÿIf there are more than one end on a SID chain because of the incompleteness of the system metadata, It is hard to determine which one is the real end. This kind of chain is not a ideal chain and we have to use this mechanism to determine the HEAD version:r…rŽ}r(hBj‰hCj‡ubaubcdocutils.nodes definition r)r‘}r’(hBUhM}r“(hO]hP]hQ]hR]hU]uhCjhY]r”jâ)r•}r–(hBUhM}r—(jæU.hR]hQ]hO]jçUhP]hU]jèjéuhCj‘hY]r˜(h“)r™}rš(hBXœChoose the end with latest dateUploaded in the chain as the temporary HEAD version. This rule works if the uploaded time stamps of objects aren't messed up.r›hM}rœ(hO]hP]hQ]hR]hU]uhCj•hY]rh˜)rž}rŸ(hBj›hCj™hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMghY]r¡hdXœChoose the end with latest dateUploaded in the chain as the temporary HEAD version. This rule works if the uploaded time stamps of objects aren't messed up.r¢…r£}r¤(hBj›hCjžubaubahKh¿ubh“)r¥}r¦(hBX If the time stamps are messed up, we need to test if any object obsoletes the temporary HEAD on the obsolete chain with the SAME SID. If nothing obsoletes the temporary HEAD, the temporary HEAD is the final HEAD; otherwise, the end of obsolete chain is the final HEAD. hM}r§(hO]hP]hQ]hR]hU]uhCj•hY]r¨h˜)r©}rª(hBX If the time stamps are messed up, we need to test if any object obsoletes the temporary HEAD on the obsolete chain with the SAME SID. If nothing obsoletes the temporary HEAD, the temporary HEAD is the final HEAD; otherwise, the end of obsolete chain is the final HEAD.r«hCj¥hIhJhKh§hM}r¬(hO]hP]hQ]hR]hU]uhWMhhY]r­hdX If the time stamps are messed up, we need to test if any object obsoletes the temporary HEAD on the obsolete chain with the SAME SID. If nothing obsoletes the temporary HEAD, the temporary HEAD is the final HEAD; otherwise, the end of obsolete chain is the final HEAD.r®…r¯}r°(hBj«hCj©ubaubahKh¿ubehKjubahKU definitionr±ubeubj€)r²}r³(hBX9Take this example P1[S1, t1] ⟸P2[S1, t2] ⟸P3(S1, t3) (case 19) (The t1, t2 and t3 are time stamps and t1 > t2 > t3. This means the time stamps are messing up - the newest version P3 was uploaded the earliest while the oldest version p1 was uploaded the latest) 1. This chain has three type 1 ends - P1, P2 and P3. It is not an ideal chain. 2. Choose P1 which has the latest date of uploaded as the temporary HEAD. 3. P2 obsoletes P1 and also P3 obsoletes P2 on the obsolete chain P1 ⟸ P2 ⟸ P3. So we choose the end of the whole chain - P3 as the final HEAD. hCj{hIhJhKjƒhM}r´(hO]hP]hQ]hR]hU]uhWMphXhhY]rµ(j†)r¶}r·(hBXTake this example P1[S1, t1] ⟸P2[S1, t2] ⟸P3(S1, t3) (case 19) (The t1, t2 and t3 are time stamps and t1 > t2 > t3. This means the time stamps are messing up - the newest version P3 was uploaded the earliest while the oldest version p1 was uploaded the latest)r¸hCj²hIhJhKjŠhM}r¹(hO]hP]hQ]hR]hU]uhWMphY]rºhdXTake this example P1[S1, t1] ⟸P2[S1, t2] ⟸P3(S1, t3) (case 19) (The t1, t2 and t3 are time stamps and t1 > t2 > t3. This means the time stamps are messing up - the newest version P3 was uploaded the earliest while the oldest version p1 was uploaded the latest)r»…r¼}r½(hBj¸hCj¶ubaubj)r¾}r¿(hBUhM}rÀ(hO]hP]hQ]hR]hU]uhCj²hY]rÁjâ)rÂ}rÃ(hBUhM}rÄ(jæU.hR]hQ]hO]jçUhP]hU]jèjéuhCj¾hY]rÅ(h“)rÆ}rÇ(hBXKThis chain has three type 1 ends - P1, P2 and P3. It is not an ideal chain.rÈhM}rÉ(hO]hP]hQ]hR]hU]uhCjÂhY]rÊh˜)rË}rÌ(hBjÈhCjÆhIhJhKh§hM}rÍ(hO]hP]hQ]hR]hU]uhWMkhY]rÎhdXKThis chain has three type 1 ends - P1, P2 and P3. It is not an ideal chain.rÏ…rÐ}rÑ(hBjÈhCjËubaubahKh¿ubh“)rÒ}rÓ(hBXFChoose P1 which has the latest date of uploaded as the temporary HEAD.rÔhM}rÕ(hO]hP]hQ]hR]hU]uhCjÂhY]rÖh˜)r×}rØ(hBjÔhCjÒhIhJhKh§hM}rÙ(hO]hP]hQ]hR]hU]uhWMlhY]rÚhdXFChoose P1 which has the latest date of uploaded as the temporary HEAD.rÛ…rÜ}rÝ(hBjÔhCj×ubaubahKh¿ubh“)rÞ}rß(hBX”P2 obsoletes P1 and also P3 obsoletes P2 on the obsolete chain P1 ⟸ P2 ⟸ P3. So we choose the end of the whole chain - P3 as the final HEAD. hM}rà(hO]hP]hQ]hR]hU]uhCjÂhY]ráh˜)râ}rã(hBXP2 obsoletes P1 and also P3 obsoletes P2 on the obsolete chain P1 ⟸ P2 ⟸ P3. So we choose the end of the whole chain - P3 as the final HEAD.rähCjÞhIhJhKh§hM}rå(hO]hP]hQ]hR]hU]uhWMmhY]ræhdXP2 obsoletes P1 and also P3 obsoletes P2 on the obsolete chain P1 ⟸ P2 ⟸ P3. So we choose the end of the whole chain - P3 as the final HEAD.rç…rè}ré(hBjähCjâubaubahKh¿ubehKjubahKj±ubeubeubhD)rê}rë(hBUhCjèhIhJhKhLhM}rì(hO]hP]hQ]hR]ríj&ahU]rîhauhWMshXhhY]rï(h[)rð}rñ(hBj+hCjêhIhJhKh_hM}rò(hR]hQ]hO]hP]hU]haj%uhWMshXhhY]róhdXVersion Storagerô…rõ}rö(hBj+hCjðubaubh˜)r÷}rø(hBXŽMutable content implies that back-versions of content may not be readily available on the nodes that originally produce the content. For metadata and resource maps, the coordinating nodes will store previous versions of objects during the synchronization process, but any data updates will result in only the latest version being available at the originating node. If the data objects were replicated (as is the hope), it is likely that previous versions of the data can still be resolved from replica target nodes, though this is dependent on replication policies, synchronization schedules and the availability of replica storage across the federation.rùhCjêhIhJhKh§hM}rú(hO]hP]hQ]hR]hU]uhWMthXhhY]rûhdXŽMutable content implies that back-versions of content may not be readily available on the nodes that originally produce the content. For metadata and resource maps, the coordinating nodes will store previous versions of objects during the synchronization process, but any data updates will result in only the latest version being available at the originating node. If the data objects were replicated (as is the hope), it is likely that previous versions of the data can still be resolved from replica target nodes, though this is dependent on replication policies, synchronization schedules and the availability of replica storage across the federation.rü…rý}rþ(hBjùhCj÷ubaubh˜)rÿ}r(hBX‹The current DataONE storage model, through the MN_Storage.update method, places responsibility for storing versions squarely on the submitter. Each update to the object requires a new unique identifier (PID) and must state which PID the new version is obsoleting. We will continue to require that unique PIDs are provided for each and every version of an object, but the member node will not be required to maintain a copy of previous revisions if it chooses not to. An optional series identifier (SID) can be provided with object SystemMetadata to group revisions together and to provide a convenient way to refer to the latest version of the object.rhCjêhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWM|hXhhY]rhdX‹The current DataONE storage model, through the MN_Storage.update method, places responsibility for storing versions squarely on the submitter. Each update to the object requires a new unique identifier (PID) and must state which PID the new version is obsoleting. We will continue to require that unique PIDs are provided for each and every version of an object, but the member node will not be required to maintain a copy of previous revisions if it chooses not to. An optional series identifier (SID) can be provided with object SystemMetadata to group revisions together and to provide a convenient way to refer to the latest version of the object.r…r}r(hBjhCjÿubaubeubeubhD)r}r(hBUhCj»hIhJhKhLhM}r (hO]hP]hQ]hR]r j9ahU]r hauhWM†hXhhY]r (h[)r }r(hBj>hCjhIhJhKh_hM}r(hR]hQ]hO]hP]hU]haj8uhWM†hXhhY]rhdXVersion preservationr…r}r(hBj>hCj ubaubh˜)r}r(hBXôAs is currently the case, the member node should maintain all versions of content using unique identifiers (PID) and synchronization will harvest each new revision to the network. While there will be no requirement that the Member node continue to make available the object identified by the obsoleted PID, the hope is that they will persist the data history as best they can. If the objects in the revision chain have a SID assigned, the new PID will be considered the latest version of this series.rhCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWM‡hXhhY]rhdXôAs is currently the case, the member node should maintain all versions of content using unique identifiers (PID) and synchronization will harvest each new revision to the network. While there will be no requirement that the Member node continue to make available the object identified by the obsoleted PID, the hope is that they will persist the data history as best they can. If the objects in the revision chain have a SID assigned, the new PID will be considered the latest version of this series.r…r}r(hBjhCjubaubh˜)r}r(hBX.The member node can allow access to the current version of the object using MN_Read.get(sid) as a convenience and any reference to the SID would resolve to the latest version of the object with a potentially different checksum and PID from what was originally present when the citation was distributed.rhCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWMŽhXhhY]r hdX.The member node can allow access to the current version of the object using MN_Read.get(sid) as a convenience and any reference to the SID would resolve to the latest version of the object with a potentially different checksum and PID from what was originally present when the citation was distributed.r!…r"}r#(hBjhCjubaubh˜)r$}r%(hBX™The member node must [minimally] maintain system metadata for the current revision of the object. Any updated object is still required to be identified by a new unique PID, but would include the same SID used in the previous version. The obsoletes field should indicate that the new PID replaces the previous PID. The coordinating node learns about the updated content during synchronization because there is:r&hCjhIhJhKh§hM}r'(hO]hP]hQ]hR]hU]uhWM’hXhhY]r(hdX™The member node must [minimally] maintain system metadata for the current revision of the object. Any updated object is still required to be identified by a new unique PID, but would include the same SID used in the previous version. The obsoletes field should indicate that the new PID replaces the previous PID. The coordinating node learns about the updated content during synchronization because there is:r)…r*}r+(hBj&hCj$ubaubjÜ)r,}r-(hBUhCjhINhKjßhM}r.(hO]hP]hQ]hR]hU]uhWNhXhhY]r/h)r0}r1(hBUhM}r2(Ubulletr3X-hR]hQ]hO]hP]hU]uhCj,hY]r4(h“)r5}r6(hBX a new PIDr7hM}r8(hO]hP]hQ]hR]hU]uhCj0hY]r9h˜)r:}r;(hBj7hCj5hIhJhKh§hM}r<(hO]hP]hQ]hR]hU]uhWM–hY]r=hdX a new PIDr>…r?}r@(hBj7hCj:ubaubahKh¿ubh“)rA}rB(hBX.an updated dateSystemMetadataUpdated timestamprChM}rD(hO]hP]hQ]hR]hU]uhCj0hY]rEh˜)rF}rG(hBjChCjAhIhJhKh§hM}rH(hO]hP]hQ]hR]hU]uhWM—hY]rIhdX.an updated dateSystemMetadataUpdated timestamprJ…rK}rL(hBjChCjFubaubahKh¿ubh“)rM}rN(hBX8an updated checksum (other fields may also be updated). hM}rO(hO]hP]hQ]hR]hU]uhCj0hY]rPh˜)rQ}rR(hBX7an updated checksum (other fields may also be updated).rShCjMhIhJhKh§hM}rT(hO]hP]hQ]hR]hU]uhWM˜hY]rUhdX7an updated checksum (other fields may also be updated).rV…rW}rX(hBjShCjQubaubahKh¿ubehKhubaubh˜)rY}rZ(hBXUN.B. Multiple revisions between synchronization periods would not result in multiple versions recorded in the federation - just the revision[s] that happened to be synchronized would be persisted in DataONE. This leaves open the possibility of an end user retrieving a version from the MN that will ultimately not be persisted in perpetuity.r[hCjhIhJhKh§hM}r\(hO]hP]hQ]hR]hU]uhWMšhXhhY]r]hdXUN.B. Multiple revisions between synchronization periods would not result in multiple versions recorded in the federation - just the revision[s] that happened to be synchronized would be persisted in DataONE. This leaves open the possibility of an end user retrieving a version from the MN that will ultimately not be persisted in perpetuity.r^…r_}r`(hBj[hCjYubaubeubhD)ra}rb(hBUhCj»hIhJhKhLhM}rc(hO]hP]hQ]hR]rdjLahU]reh auhWM¡hXhhY]rf(h[)rg}rh(hBjQhCjahIhJhKh_hM}ri(hR]hQ]hO]hP]hU]hajKuhWM¡hXhhY]rjhdX(Working drafts vs. Repository publishingrk…rl}rm(hBjQhCjgubaubh˜)rn}ro(hBXODataONE essentially considers member nodes as the originators of *selected* versions of content. That is, not every intermediate revision on the way to a final product should neccessarily be saved for future reference. Organizations following the mutable content model for storage may wish to limit the objects returned by listObjects() to those that are considered in their publishable form. Certainly theses objects can later be updated as needed, but minimizing draft-status objects will reduce the amount of [possibly irretrievable] draft content floating around the federated network.hCjahIhJhKh§hM}rp(hO]hP]hQ]hR]hU]uhWM¢hXhhY]rq(hdXADataONE essentially considers member nodes as the originators of rr…rs}rt(hBXADataONE essentially considers member nodes as the originators of hCjnubcdocutils.nodes emphasis ru)rv}rw(hBX *selected*hM}rx(hO]hP]hQ]hR]hU]uhCjnhY]ryhdXselectedrz…r{}r|(hBUhCjvubahKUemphasisr}ubhdX versions of content. That is, not every intermediate revision on the way to a final product should neccessarily be saved for future reference. Organizations following the mutable content model for storage may wish to limit the objects returned by listObjects() to those that are considered in their publishable form. Certainly theses objects can later be updated as needed, but minimizing draft-status objects will reduce the amount of [possibly irretrievable] draft content floating around the federated network.r~…r}r€(hBX versions of content. That is, not every intermediate revision on the way to a final product should neccessarily be saved for future reference. Organizations following the mutable content model for storage may wish to limit the objects returned by listObjects() to those that are considered in their publishable form. Certainly theses objects can later be updated as needed, but minimizing draft-status objects will reduce the amount of [possibly irretrievable] draft content floating around the federated network.hCjnubeubhD)r}r‚(hBUhCjahIhJhKhLhM}rƒ(hO]hP]hQ]hR]r„jcahU]r…h$auhWM­hXhhY]r†(h[)r‡}rˆ(hBjhhCjhIhJhKh_hM}r‰(hR]hQ]hO]hP]hU]hajbuhWM­hXhhY]rŠhdXTypes of Mutable Objectsr‹…rŒ}r(hBjhhCj‡ubaubh˜)rŽ}r(hBXáAs illustrated in the optional use cases, the rate and regularity of change of objects can be widely variable. The more frequent the change, the less likely that all versions would need to be reproduced, and the utility of complete version history diminishes. One can imagine a member node serving up an unrecorded data stream, such as a web-cam, delaying creating a version until a user calls MN.get() on the item, by tee'ing the output stream to file while returning the object.rhCjhIhJhKh§hM}r‘(hO]hP]hQ]hR]hU]uhWM®hXhhY]r’hdXáAs illustrated in the optional use cases, the rate and regularity of change of objects can be widely variable. The more frequent the change, the less likely that all versions would need to be reproduced, and the utility of complete version history diminishes. One can imagine a member node serving up an unrecorded data stream, such as a web-cam, delaying creating a version until a user calls MN.get() on the item, by tee'ing the output stream to file while returning the object.r“…r”}r•(hBjhCjŽubaubh˜)r–}r—(hBXÊAdditionally the need to keep past versions may be less important for metadata objects (correcting typos that do not change the meaning or interpretation of the data) than data objects or resource maps.r˜hCjhIhJhKh§hM}r™(hO]hP]hQ]hR]hU]uhWMµhXhhY]ršhdXÊAdditionally the need to keep past versions may be less important for metadata objects (correcting typos that do not change the meaning or interpretation of the data) than data objects or resource maps.r›…rœ}r(hBj˜hCj–ubaubeubeubhD)rž}rŸ(hBUhCj»hIhJhKhLhM}r (hO]hP]hQ]hR]r¡jvahU]r¢hauhWMºhXhhY]r£(h[)r¤}r¥(hBj{hCjžhIhJhKh_hM}r¦(hR]hQ]hO]hP]hU]hajuuhWMºhXhhY]r§hdXAccumulating datasetsr¨…r©}rª(hBj{hCj¤ubaubh˜)r«}r¬(hBXThe use case of mutable data objects that grow with new records appended to the end of a table, for example, was given as a common practice for some groups, and one that would produce progressively redundant information with each persisted version. The motivation for rolling up records accumulated over time instead of new data files for each is the ease of use for end users. Using a SID to access the data object will always give the latest snapshot of the data records where old revisions may or may not also be accessible.r­hCjžhIhJhKh§hM}r®(hO]hP]hQ]hR]hU]uhWM»hXhhY]r¯hdXThe use case of mutable data objects that grow with new records appended to the end of a table, for example, was given as a common practice for some groups, and one that would produce progressively redundant information with each persisted version. The motivation for rolling up records accumulated over time instead of new data files for each is the ease of use for end users. Using a SID to access the data object will always give the latest snapshot of the data records where old revisions may or may not also be accessible.r°…r±}r²(hBj­hCj«ubaubeubhD)r³}r´(hBUhCj»hIhJhKhLhM}rµ(hO]hP]hQ]hR]r¶j‰ahU]r·h3auhWMÅhXhhY]r¸(h[)r¹}rº(hBjŽhCj³hIhJhKh_hM}r»(hR]hQ]hO]hP]hU]hajˆuhWMÅhXhhY]r¼hdXMixed metadata-data objectsr½…r¾}r¿(hBjŽhCj¹ubaubh˜)rÀ}rÁ(hBXObjects like NetCDF files that include both metadata and data in the same object will be managed with the same PID and SID considerations. If only the metadata portion of the file is modified, the SID may remain the same, but a new PID and checksum must be created and made available for synchronization. The old revision may immediately become inaccessible using the PID and that is allowable under the proposal.rÂhCj³hIhJhKh§hM}rÃ(hO]hP]hQ]hR]hU]uhWMÆhXhhY]rÄhdXObjects like NetCDF files that include both metadata and data in the same object will be managed with the same PID and SID considerations. If only the metadata portion of the file is modified, the SID may remain the same, but a new PID and checksum must be created and made available for synchronization. The old revision may immediately become inaccessible using the PID and that is allowable under the proposal.rÅ…rÆ}rÇ(hBjÂhCjÀubaubhD)rÈ}rÉ(hBUhCj³hIhJhKhLhM}rÊ(hO]hP]hQ]hR]rËj ahU]rÌh2auhWMÎhXhhY]rÍ(h[)rÎ}rÏ(hBj¥hCjÈhIhJhKh_hM}rÐ(hR]hQ]hO]hP]hU]hajŸuhWMÎhXhhY]rÑhdXRetrieval / Citation SupportrÒ…rÓ}rÔ(hBj¥hCjÎubaubh˜)rÕ}rÖ(hBX‘Implicit in the support for versioned content is support for retrieval of, or possibly just resolution to, the current object bytes by the identifier assigned in the originating system. At a minimum CNs will be required to support calculating which is the current version of series of versions and returning it or its identifier. This will be accomplished using the series identifier (SID) associated with object[s] in a revision chain. The "current" version of an object is defined as the non-obsoleted object with a SID that matches the requested identifier. Objects that are marked as "archived" may be returned as the most current version, but they should not be seen in default search interfaces. Since DataONE identifiers have no special formating semantics, those following a citation will not know by looking at the identifier whether it is referring to a specific version (PID) or the latest version of the item (SID), so services may be provided to easily investigate an entire version series. Existing services allow clients to deduce this information by inspecting the system metadata for the identifier and following any obsolescence properties as needed.r×hCjÈhIhJhKh§hM}rØ(hO]hP]hQ]hR]hU]uhWMÏhXhhY]rÙhdX‘Implicit in the support for versioned content is support for retrieval of, or possibly just resolution to, the current object bytes by the identifier assigned in the originating system. At a minimum CNs will be required to support calculating which is the current version of series of versions and returning it or its identifier. This will be accomplished using the series identifier (SID) associated with object[s] in a revision chain. The "current" version of an object is defined as the non-obsoleted object with a SID that matches the requested identifier. Objects that are marked as "archived" may be returned as the most current version, but they should not be seen in default search interfaces. Since DataONE identifiers have no special formating semantics, those following a citation will not know by looking at the identifier whether it is referring to a specific version (PID) or the latest version of the item (SID), so services may be provided to easily investigate an entire version series. Existing services allow clients to deduce this information by inspecting the system metadata for the identifier and following any obsolescence properties as needed.rÚ…rÛ}rÜ(hBj×hCjÕubaubeubeubhD)rÝ}rÞ(hBUhCj»hIhJhKhLhM}rß(hO]hP]hQ]hR]ràj³ahU]ráh auhWMÞhXhhY]râ(h[)rã}rä(hBj¸hCjÝhIhJhKh_hM}rå(hR]hQ]hO]hP]hU]haj²uhWMÞhXhhY]ræhdXRetrieval vs. Resolutionrç…rè}ré(hBj¸hCjãubaubh˜)rê}rë(hBXBecause the content of an object is retrieved in a separate call from its system metadata, use of the SID for MN Read API calls is troublesome because the content may be updated between the two calls. It would be impossible to tell if the bytes retrieved were incorrect (bit rot) or correct (newer version) when comparing checksums in this case. If data consistency is important to the caller, the PID should be used to guarantee that only the expected bytes (or a NotFound exception) are returned by any MN.get calls.rìhCjÝhIhJhKh§hM}rí(hO]hP]hQ]hR]hU]uhWMßhXhhY]rîhdXBecause the content of an object is retrieved in a separate call from its system metadata, use of the SID for MN Read API calls is troublesome because the content may be updated between the two calls. It would be impossible to tell if the bytes retrieved were incorrect (bit rot) or correct (newer version) when comparing checksums in this case. If data consistency is important to the caller, the PID should be used to guarantee that only the expected bytes (or a NotFound exception) are returned by any MN.get calls.rï…rð}rñ(hBjìhCjêubaubh˜)rò}ró(hBXðThose making a citation may wish to cite a specific version, or the latest current version. Followers of citations may wish to, if given an identifier representing a specific version (PID), find out what is the latest version (another, newer PID, or the SID). Conversely, if given a series identifier that navigates to the latest version, they may wish to find out what the content was at some previous point in time (e.g., the time of the citation) by following the obsolescence chain backward.rôhCjÝhIhJhKh§hM}rõ(hO]hP]hQ]hR]hU]uhWMæhXhhY]röhdXðThose making a citation may wish to cite a specific version, or the latest current version. Followers of citations may wish to, if given an identifier representing a specific version (PID), find out what is the latest version (another, newer PID, or the SID). Conversely, if given a series identifier that navigates to the latest version, they may wish to find out what the content was at some previous point in time (e.g., the time of the citation) by following the obsolescence chain backward.r÷…rø}rù(hBjôhCjòubaubeubhD)rú}rû(hBUhCj»hIhJhKhLhM}rü(hO]hP]hQ]hR]rýjÆahU]rþh!auhWMïhXhhY]rÿ(h[)r }r (hBjËhCjúhIhJhKh_hM}r (hR]hQ]hO]hP]hU]hajÅuhWMïhXhhY]r hdXService development plansr …r }r (hBjËhCj ubaubh˜)r }r (hBXeDataONE will be providing CN services for navigating to the latest version of an object, since the only way to do it currently is for the clients to serially retrieve the system metadata for versions in the chain until they reach the head version, which is can be inefficient. A new method to retrieve the entire version history is also under consideration.r hCjúhIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMðhXhhY]r hdXeDataONE will be providing CN services for navigating to the latest version of an object, since the only way to do it currently is for the clients to serially retrieve the system metadata for versions in the chain until they reach the head version, which is can be inefficient. A new method to retrieve the entire version history is also under consideration.r …r }r (hBj hCj ubaubeubhD)r }r (hBUhCj»hIhJhKhLhM}r (hO]hP]hQ]hR]r jÙahU]r h'auhWM÷hXhhY]r (h[)r }r (hBjÞhCj hIhJhKh_hM}r (hR]hQ]hO]hP]hU]hajØuhWM÷hXhhY]r hdXMN API method changesr …r }r (hBjÞhCj ubaubjz)r }r (hBUhCj hIhJhKj}hM}r (hO]hP]hQ]hR]hU]uhWNhXhhY]r (j€)r }r! (hBX|MN.get(Identifier id): Identifier can be either a PID or SID, and if a SID, return the bytes of the HEAD PID in the series. hCj hIhJhKjƒhM}r" (hO]hP]hQ]hR]hU]uhWMúhY]r# (j†)r$ }r% (hBXMN.get(Identifier id):r& hCj hIhJhKjŠhM}r' (hO]hP]hQ]hR]hU]uhWMúhY]r( hdXMN.get(Identifier id):r) …r* }r+ (hBj& hCj$ ubaubj)r, }r- (hBUhM}r. (hO]hP]hQ]hR]hU]uhCj hY]r/ h˜)r0 }r1 (hBXdIdentifier can be either a PID or SID, and if a SID, return the bytes of the HEAD PID in the series.r2 hCj, hIhJhKh§hM}r3 (hO]hP]hQ]hR]hU]uhWMúhY]r4 hdXdIdentifier can be either a PID or SID, and if a SID, return the bytes of the HEAD PID in the series.r5 …r6 }r7 (hBj2 hCj0 ubaubahKj±ubeubj€)r8 }r9 (hBXsMN.getSystemMetadata(Identifier id): If PID, return SystemMetadata of PID. If SID, return HEAD PID SystemMetadata. hCj hIhJhKjƒhM}r: (hO]hP]hQ]hR]hU]uhWMþhXhhY]r; (j†)r< }r= (hBX$MN.getSystemMetadata(Identifier id):r> hCj8 hIhJhKjŠhM}r? (hO]hP]hQ]hR]hU]uhWMþhY]r@ hdX$MN.getSystemMetadata(Identifier id):rA …rB }rC (hBj> hCj< ubaubj)rD }rE (hBUhM}rF (hO]hP]hQ]hR]hU]uhCj8 hY]rG h˜)rH }rI (hBXMIf PID, return SystemMetadata of PID. If SID, return HEAD PID SystemMetadata.rJ hCjD hIhJhKh§hM}rK (hO]hP]hQ]hR]hU]uhWMýhY]rL hdXMIf PID, return SystemMetadata of PID. If SID, return HEAD PID SystemMetadata.rM …rN }rO (hBjJ hCjH ubaubahKj±ubeubj€)rP }rQ (hBX_MN.describe(Identifier id): If PID, return header for PID. If SID, return header for HEAD PID. hCj hIhJhKjƒhM}rR (hO]hP]hQ]hR]hU]uhWMhXhhY]rS (j†)rT }rU (hBXMN.describe(Identifier id):rV hCjP hIhJhKjŠhM}rW (hO]hP]hQ]hR]hU]uhWMhY]rX hdXMN.describe(Identifier id):rY …rZ }r[ (hBjV hCjT ubaubj)r\ }r] (hBUhM}r^ (hO]hP]hQ]hR]hU]uhCjP hY]r_ h˜)r` }ra (hBXBIf PID, return header for PID. If SID, return header for HEAD PID.rb hCj\ hIhJhKh§hM}rc (hO]hP]hQ]hR]hU]uhWMhY]rd hdXBIf PID, return header for PID. If SID, return header for HEAD PID.re …rf }rg (hBjb hCj` ubaubahKj±ubeubj€)rh }ri (hBXSMN.getChecksum(Identifier pid): Requires PID to effectively verify data integrity. hCj hIhJhKjƒhM}rj (hO]hP]hQ]hR]hU]uhWMhXhhY]rk (j†)rl }rm (hBXMN.getChecksum(Identifier pid):rn hCjh hIhJhKjŠhM}ro (hO]hP]hQ]hR]hU]uhWMhY]rp hdXMN.getChecksum(Identifier pid):rq …rr }rs (hBjn hCjl ubaubj)rt }ru (hBUhM}rv (hO]hP]hQ]hR]hU]uhCjh hY]rw h˜)rx }ry (hBX2Requires PID to effectively verify data integrity.rz hCjt hIhJhKh§hM}r{ (hO]hP]hQ]hR]hU]uhWMhY]r| hdX2Requires PID to effectively verify data integrity.r} …r~ }r (hBjz hCjx ubaubahKj±ubeubj€)r€ }r (hBXíMN.create(Identifier pid, object, SystemMetadata): Identifier must be PID and included in accompanying systemMetadata. SID may be included in accompanying systemMetadata if known at time of creation. The SID mustn't exist in the system. hCj hIhJhKjƒhM}r‚ (hO]hP]hQ]hR]hU]uhWM hXhhY]rƒ (j†)r„ }r… (hBX2MN.create(Identifier pid, object, SystemMetadata):r† hCj€ hIhJhKjŠhM}r‡ (hO]hP]hQ]hR]hU]uhWM hY]rˆ hdX2MN.create(Identifier pid, object, SystemMetadata):r‰ …rŠ }r‹ (hBj† hCj„ ubaubj)rŒ }r (hBUhM}rŽ (hO]hP]hQ]hR]hU]uhCj€ hY]r h˜)r }r‘ (hBX¹Identifier must be PID and included in accompanying systemMetadata. SID may be included in accompanying systemMetadata if known at time of creation. The SID mustn't exist in the system.r’ hCjŒ hIhJhKh§hM}r“ (hO]hP]hQ]hR]hU]uhWMhY]r” hdX¹Identifier must be PID and included in accompanying systemMetadata. SID may be included in accompanying systemMetadata if known at time of creation. The SID mustn't exist in the system.r• …r– }r— (hBj’ hCj ubaubahKj±ubeubj€)r˜ }r™ (hBXbMN.update(Identifier id, Identifier newPid, SystemMetadata): Identifier id may be a PID or SID -- in the case of a SID, the method works with the HEAD PID of the chain. The new Identifier must be a PID and must match the accompanying SystemMetadata. The new SID can match the old SID in previous SystemMetadata (objects are in the same series), or it can be any unique SID that does not already exist in the system (newly assigning a SID or shifting the SID because of a "scientifically meaningful change"). Moreover, the new system metadata may not have a SID no matter the previous version has a SID or not. hCj hIhJhKjƒhM}rš (hO]hP]hQ]hR]hU]uhWMhXhhY]r› (j†)rœ }r (hBX<MN.update(Identifier id, Identifier newPid, SystemMetadata):rž hCj˜ hIhJhKjŠhM}rŸ (hO]hP]hQ]hR]hU]uhWMhY]r  hdX<MN.update(Identifier id, Identifier newPid, SystemMetadata):r¡ …r¢ }r£ (hBjž hCjœ ubaubj)r¤ }r¥ (hBUhM}r¦ (hO]hP]hQ]hR]hU]uhCj˜ hY]r§ h˜)r¨ }r© (hBX$Identifier id may be a PID or SID -- in the case of a SID, the method works with the HEAD PID of the chain. The new Identifier must be a PID and must match the accompanying SystemMetadata. The new SID can match the old SID in previous SystemMetadata (objects are in the same series), or it can be any unique SID that does not already exist in the system (newly assigning a SID or shifting the SID because of a "scientifically meaningful change"). Moreover, the new system metadata may not have a SID no matter the previous version has a SID or not.rª hCj¤ hIhJhKh§hM}r« (hO]hP]hQ]hR]hU]uhWM hY]r¬ hdX$Identifier id may be a PID or SID -- in the case of a SID, the method works with the HEAD PID of the chain. The new Identifier must be a PID and must match the accompanying SystemMetadata. The new SID can match the old SID in previous SystemMetadata (objects are in the same series), or it can be any unique SID that does not already exist in the system (newly assigning a SID or shifting the SID because of a "scientifically meaningful change"). Moreover, the new system metadata may not have a SID no matter the previous version has a SID or not.r­ …r® }r¯ (hBjª hCj¨ ubaubahKj±ubeubj€)r° }r± (hBX»MN.getLogRecords(?idFilter): Filter can be PID or SID. The MN should resolve the SID to the HEAD PID, and return the log records for that PID. If a client wishes to retrieve log records for the entire family of objects referenced by a SID, then the client should retrieve a list of PIDs for the SID, the call getLogRecords for each PID to retrieve the entire set of log records. The Log.identifier field will only contain PID values, no SIDs. hCj hIhJhKjƒhM}r² (hO]hP]hQ]hR]hU]uhWMhXhhY]r³ (j†)r´ }rµ (hBXMN.getLogRecords(?idFilter):r¶ hCj° hIhJhKjŠhM}r· (hO]hP]hQ]hR]hU]uhWMhY]r¸ hdXMN.getLogRecords(?idFilter):r¹ …rº }r» (hBj¶ hCj´ ubaubj)r¼ }r½ (hBUhM}r¾ (hO]hP]hQ]hR]hU]uhCj° hY]r¿ h˜)rÀ }rÁ (hBXFilter can be PID or SID. The MN should resolve the SID to the HEAD PID, and return the log records for that PID. If a client wishes to retrieve log records for the entire family of objects referenced by a SID, then the client should retrieve a list of PIDs for the SID, the call getLogRecords for each PID to retrieve the entire set of log records. The Log.identifier field will only contain PID values, no SIDs.r hCj¼ hIhJhKh§hM}rà (hO]hP]hQ]hR]hU]uhWMhY]rÄ hdXFilter can be PID or SID. The MN should resolve the SID to the HEAD PID, and return the log records for that PID. If a client wishes to retrieve log records for the entire family of objects referenced by a SID, then the client should retrieve a list of PIDs for the SID, the call getLogRecords for each PID to retrieve the entire set of log records. The Log.identifier field will only contain PID values, no SIDs.rÅ …rÆ }rÇ (hBj hCjÀ ubaubahKj±ubeubj€)rÈ }rÉ (hBX…MN.delete(Identifier id): Identifier can be PID or SID. If PID, delete that specific version; If a SID, delete the HEAD PID version. hCj hIhJhKjƒhM}rÊ (hO]hP]hQ]hR]hU]uhWMhXhhY]rË (j†)rÌ }rÍ (hBXMN.delete(Identifier id):rÎ hCjÈ hIhJhKjŠhM}rÏ (hO]hP]hQ]hR]hU]uhWMhY]rÐ hdXMN.delete(Identifier id):rÑ …rÒ }rÓ (hBjÎ hCjÌ ubaubj)rÔ }rÕ (hBUhM}rÖ (hO]hP]hQ]hR]hU]uhCjÈ hY]r× h˜)rØ }rÙ (hBXjIdentifier can be PID or SID. If PID, delete that specific version; If a SID, delete the HEAD PID version.rÚ hCjÔ hIhJhKh§hM}rÛ (hO]hP]hQ]hR]hU]uhWMhY]rÜ hdXjIdentifier can be PID or SID. If PID, delete that specific version; If a SID, delete the HEAD PID version.rÝ …rÞ }rß (hBjÚ hCjØ ubaubahKj±ubeubj€)rà }rá (hBX€MN.archive(Identifier id): Identifier can be PID or SID. If PID, archive that specific version. If a SID, archive the HEAD PID. hCj hIhJhKjƒhM}râ (hO]hP]hQ]hR]hU]uhWMhXhhY]rã (j†)rä }rå (hBXMN.archive(Identifier id):ræ hCjà hIhJhKjŠhM}rç (hO]hP]hQ]hR]hU]uhWMhY]rè hdXMN.archive(Identifier id):ré …rê }rë (hBjæ hCjä ubaubj)rì }rí (hBUhM}rî (hO]hP]hQ]hR]hU]uhCjà hY]rï h˜)rð }rñ (hBXdIdentifier can be PID or SID. If PID, archive that specific version. If a SID, archive the HEAD PID.rò hCjì hIhJhKh§hM}ró (hO]hP]hQ]hR]hU]uhWMhY]rô hdXdIdentifier can be PID or SID. If PID, archive that specific version. If a SID, archive the HEAD PID.rõ …rö }r÷ (hBjò hCjð ubaubahKj±ubeubj€)rø }rù (hBX”MN.isAuthorized(Identifier id): Can accept either PID or SID, but in the case of a SID parameter only reports on the the accessPolicy for HEAD PID. hCj hIhJhKjƒhM}rú (hO]hP]hQ]hR]hU]uhWM"hXhhY]rû (j†)rü }rý (hBXMN.isAuthorized(Identifier id):rþ hCjø hIhJhKjŠhM}rÿ (hO]hP]hQ]hR]hU]uhWM"hY]r hdXMN.isAuthorized(Identifier id):r …r }r (hBjþ hCjü ubaubj)r }r (hBUhM}r (hO]hP]hQ]hR]hU]uhCjø hY]r h˜)r }r (hBXsCan accept either PID or SID, but in the case of a SID parameter only reports on the the accessPolicy for HEAD PID.r hCj hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWM"hY]r hdXsCan accept either PID or SID, but in the case of a SID parameter only reports on the the accessPolicy for HEAD PID.r …r }r (hBj hCj ubaubahKj±ubeubj€)r }r (hBXqMN.synchronizationFailed(Identifier pid): Inter-node communication should only use PIDs for identifying objects. hCj hIhJhKjƒhM}r (hO]hP]hQ]hR]hU]uhWM%hXhhY]r (j†)r }r (hBX)MN.synchronizationFailed(Identifier pid):r hCj hIhJhKjŠhM}r (hO]hP]hQ]hR]hU]uhWM%hY]r hdX)MN.synchronizationFailed(Identifier pid):r …r }r (hBj hCj ubaubj)r }r (hBUhM}r (hO]hP]hQ]hR]hU]uhCj hY]r h˜)r }r! (hBXFInter-node communication should only use PIDs for identifying objects.r" hCj hIhJhKh§hM}r# (hO]hP]hQ]hR]hU]uhWM%hY]r$ hdXFInter-node communication should only use PIDs for identifying objects.r% …r& }r' (hBj" hCj ubaubahKj±ubeubj€)r( }r) (hBXÚMN.replicate(Identifier id): No changes in behavior. SystemMetadata object has changed structure so there is a change in signature. Replication is based on the PID so that we can ensure content has not been corrupted. hCj hIhJhKjƒhM}r* (hO]hP]hQ]hR]hU]uhWM)hXhhY]r+ (j†)r, }r- (hBXMN.replicate(Identifier id):r. hCj( hIhJhKjŠhM}r/ (hO]hP]hQ]hR]hU]uhWM)hY]r0 hdXMN.replicate(Identifier id):r1 …r2 }r3 (hBj. hCj, ubaubj)r4 }r5 (hBUhM}r6 (hO]hP]hQ]hR]hU]uhCj( hY]r7 h˜)r8 }r9 (hBX¼No changes in behavior. SystemMetadata object has changed structure so there is a change in signature. Replication is based on the PID so that we can ensure content has not been corrupted.r: hCj4 hIhJhKh§hM}r; (hO]hP]hQ]hR]hU]uhWM(hY]r< hdX¼No changes in behavior. SystemMetadata object has changed structure so there is a change in signature. Replication is based on the PID so that we can ensure content has not been corrupted.r= …r> }r? (hBj: hCj8 ubaubahKj±ubeubj€)r@ }rA (hBXjMN.getReplica(Identifier id): Can only make requests for PIDs so that checksum integrity can be verified. hCj hIhJhKjƒhM}rB (hO]hP]hQ]hR]hU]uhWM,hXhhY]rC (j†)rD }rE (hBXMN.getReplica(Identifier id):rF hCj@ hIhJhKjŠhM}rG (hO]hP]hQ]hR]hU]uhWM,hY]rH hdXMN.getReplica(Identifier id):rI …rJ }rK (hBjF hCjD ubaubj)rL }rM (hBUhM}rN (hO]hP]hQ]hR]hU]uhCj@ hY]rO h˜)rP }rQ (hBXKCan only make requests for PIDs so that checksum integrity can be verified.rR hCjL hIhJhKh§hM}rS (hO]hP]hQ]hR]hU]uhWM,hY]rT hdXKCan only make requests for PIDs so that checksum integrity can be verified.rU …rV }rW (hBjR hCjP ubaubahKj±ubeubj€)rX }rY (hBXMMN.systemMetadataChanged(Identifier, serialVersion, dateSysMetaModified): May be called on the MN if the CN infers an obsoletes relationship for a new PID based on a shared SID. Identifier can be either a PID or a SID. If a SID, the MN will fetch SystemMetadata from the CN using SID (which will return the HEAD PID SystemMetadata). hCj hIhJhKjƒhM}rZ (hO]hP]hQ]hR]hU]uhWM1hXhhY]r[ (j†)r\ }r] (hBXIMN.systemMetadataChanged(Identifier, serialVersion, dateSysMetaModified):r^ hCjX hIhJhKjŠhM}r_ (hO]hP]hQ]hR]hU]uhWM1hY]r` hdXIMN.systemMetadataChanged(Identifier, serialVersion, dateSysMetaModified):ra …rb }rc (hBj^ hCj\ ubaubj)rd }re (hBUhM}rf (hO]hP]hQ]hR]hU]uhCjX hY]rg h˜)rh }ri (hBXMay be called on the MN if the CN infers an obsoletes relationship for a new PID based on a shared SID. Identifier can be either a PID or a SID. If a SID, the MN will fetch SystemMetadata from the CN using SID (which will return the HEAD PID SystemMetadata).rj hCjd hIhJhKh§hM}rk (hO]hP]hQ]hR]hU]uhWM/hY]rl hdXMay be called on the MN if the CN infers an obsoletes relationship for a new PID based on a shared SID. Identifier can be either a PID or a SID. If a SID, the MN will fetch SystemMetadata from the CN using SID (which will return the HEAD PID SystemMetadata).rm …rn }ro (hBjj hCjh ubaubahKj±ubeubj€)rp }rq (hBXMN.listObjects(?identifier=XXX): Returns an ObjectList like normal, but can be filtered by identifer (SID or PID). If the Identifier is a PID, it returns just the single entry for that PID. If the Identifier is a SID, it returns the objects (PIDs) of all objects that have that SID. hCj hIhJhKjƒhM}rr (hO]hP]hQ]hR]hU]uhWM6hXhhY]rs (j†)rt }ru (hBX MN.listObjects(?identifier=XXX):rv hCjp hIhJhKjŠhM}rw (hO]hP]hQ]hR]hU]uhWM6hY]rx hdX MN.listObjects(?identifier=XXX):ry …rz }r{ (hBjv hCjt ubaubj)r| }r} (hBUhM}r~ (hO]hP]hQ]hR]hU]uhCjp hY]r h˜)r€ }r (hBXùReturns an ObjectList like normal, but can be filtered by identifer (SID or PID). If the Identifier is a PID, it returns just the single entry for that PID. If the Identifier is a SID, it returns the objects (PIDs) of all objects that have that SID.r‚ hCj| hIhJhKh§hM}rƒ (hO]hP]hQ]hR]hU]uhWM4hY]r„ hdXùReturns an ObjectList like normal, but can be filtered by identifer (SID or PID). If the Identifier is a PID, it returns just the single entry for that PID. If the Identifier is a SID, it returns the objects (PIDs) of all objects that have that SID.r… …r† }r‡ (hBj‚ hCj€ ubaubahKj±ubeubj€)rˆ }r‰ (hBXšMN.view(Identifier id): Can accept either PID or SID. If a PID, get the formated view for the specified version. If a SID, get the view for the HEAD PID. hCj hIhJhKjƒhM}rŠ (hO]hP]hQ]hR]hU]uhWM9hXhhY]r‹ (j†)rŒ }r (hBXMN.view(Identifier id):rŽ hCjˆ hIhJhKjŠhM}r (hO]hP]hQ]hR]hU]uhWM9hY]r hdXMN.view(Identifier id):r‘ …r’ }r“ (hBjŽ hCjŒ ubaubj)r” }r• (hBUhM}r– (hO]hP]hQ]hR]hU]uhCjˆ hY]r— h˜)r˜ }r™ (hBXCan accept either PID or SID. If a PID, get the formated view for the specified version. If a SID, get the view for the HEAD PID.rš hCj” hIhJhKh§hM}r› (hO]hP]hQ]hR]hU]uhWM9hY]rœ hdXCan accept either PID or SID. If a PID, get the formated view for the specified version. If a SID, get the view for the HEAD PID.r …rž }rŸ (hBjš hCj˜ ubaubahKj±ubeubj€)r  }r¡ (hBX›MN.getPackage(Identifier id): Can accept either PID or SID. If a PID, get the package of the specified version. If a SID, get the package of the HEAD PID. hCj hIhJhKjƒhM}r¢ (hO]hP]hQ]hR]hU]uhWM<hXhhY]r£ (j†)r¤ }r¥ (hBXMN.getPackage(Identifier id):r¦ hCj  hIhJhKjŠhM}r§ (hO]hP]hQ]hR]hU]uhWM<hY]r¨ hdXMN.getPackage(Identifier id):r© …rª }r« (hBj¦ hCj¤ ubaubj)r¬ }r­ (hBUhM}r® (hO]hP]hQ]hR]hU]uhCj  hY]r¯ h˜)r° }r± (hBX|Can accept either PID or SID. If a PID, get the package of the specified version. If a SID, get the package of the HEAD PID.r² hCj¬ hIhJhKh§hM}r³ (hO]hP]hQ]hR]hU]uhWM<hY]r´ hdX|Can accept either PID or SID. If a PID, get the package of the specified version. If a SID, get the package of the HEAD PID.rµ …r¶ }r· (hBj² hCj° ubaubahKj±ubeubj€)r¸ }r¹ (hBXrMN.updateSystemMetadata(Identifier id, SystemMetadata newSysmeta): Requires a PID. The SID can exist in the newSysmeta object. Since SID is immutable, the SID in the newSysmeta should match the current SID if it exists. If current system metadata doesn't have a SID, the new SID can be one of the following cases: 1. The new SID is null (without a SID). 2. The new SID is a unique identifier which doesn't exist in the system. 3. The new SID matches the SID in the system metadata of the object in the "obsoletes" value. 4. The new SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hCj hIhJhKjƒhM}rº (hO]hP]hQ]hR]hU]uhWMDhXhhY]r» (j†)r¼ }r½ (hBXBMN.updateSystemMetadata(Identifier id, SystemMetadata newSysmeta):r¾ hCj¸ hIhJhKjŠhM}r¿ (hO]hP]hQ]hR]hU]uhWMDhY]rÀ hdXBMN.updateSystemMetadata(Identifier id, SystemMetadata newSysmeta):rÁ …r }rà (hBj¾ hCj¼ ubaubj)rÄ }rÅ (hBUhM}rÆ (hO]hP]hQ]hR]hU]uhCj¸ hY]rÇ jz)rÈ }rÉ (hBUhM}rÊ (hO]hP]hQ]hR]hU]uhCjÄ hY]rË j€)rÌ }rÍ (hBX'Requires a PID. The SID can exist in the newSysmeta object. Since SID is immutable, the SID in the newSysmeta should match the current SID if it exists. If current system metadata doesn't have a SID, the new SID can be one of the following cases: 1. The new SID is null (without a SID). 2. The new SID is a unique identifier which doesn't exist in the system. 3. The new SID matches the SID in the system metadata of the object in the "obsoletes" value. 4. The new SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hCjÈ hIhJhKjƒhM}rÎ (hO]hP]hQ]hR]hU]uhWMDhY]rÏ (j†)rÐ }rÑ (hBXöRequires a PID. The SID can exist in the newSysmeta object. Since SID is immutable, the SID in the newSysmeta should match the current SID if it exists. If current system metadata doesn't have a SID, the new SID can be one of the following cases:rÒ hCjÌ hIhJhKjŠhM}rÓ (hO]hP]hQ]hR]hU]uhWMDhY]rÔ hdXöRequires a PID. The SID can exist in the newSysmeta object. Since SID is immutable, the SID in the newSysmeta should match the current SID if it exists. If current system metadata doesn't have a SID, the new SID can be one of the following cases:rÕ …rÖ }r× (hBjÒ hCjÐ ubaubj)rØ }rÙ (hBUhM}rÚ (hO]hP]hQ]hR]hU]uhCjÌ hY]rÛ jâ)rÜ }rÝ (hBUhM}rÞ (jæU.hR]hQ]hO]jçUhP]hU]jèjéuhCjØ hY]rß (h“)rà }rá (hBX$The new SID is null (without a SID).râ hM}rã (hO]hP]hQ]hR]hU]uhCjÜ hY]rä h˜)rå }ræ (hBjâ hCjà hIhJhKh§hM}rç (hO]hP]hQ]hR]hU]uhWM@hY]rè hdX$The new SID is null (without a SID).ré …rê }rë (hBjâ hCjå ubaubahKh¿ubh“)rì }rí (hBXEThe new SID is a unique identifier which doesn't exist in the system.rî hM}rï (hO]hP]hQ]hR]hU]uhCjÜ hY]rð h˜)rñ }rò (hBjî hCjì hIhJhKh§hM}ró (hO]hP]hQ]hR]hU]uhWMAhY]rô hdXEThe new SID is a unique identifier which doesn't exist in the system.rõ …rö }r÷ (hBjî hCjñ ubaubahKh¿ubh“)rø }rù (hBXZThe new SID matches the SID in the system metadata of the object in the "obsoletes" value.rú hM}rû (hO]hP]hQ]hR]hU]uhCjÜ hY]rü h˜)rý }rþ (hBjú hCjø hIhJhKh§hM}rÿ (hO]hP]hQ]hR]hU]uhWMBhY]r hdXZThe new SID matches the SID in the system metadata of the object in the "obsoletes" value.r …r }r (hBjú hCjý ubaubahKh¿ubh“)r }r (hBX^The new SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hM}r (hO]hP]hQ]hR]hU]uhCjÜ hY]r h˜)r }r (hBX\The new SID matches the SID in the system metadata of the object in the "obsoletedBy" value.r hCj hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMChY]r hdX\The new SID matches the SID in the system metadata of the object in the "obsoletedBy" value.r …r }r (hBj hCj ubaubahKh¿ubehKjubahKj±ubeubahKj}ubahKj±ubeubeubeubhD)r }r (hBUhCj»hIhJhKhLhM}r (hO]hP]hQ]hR]r jìahU]r h7auhWMGhXhhY]r (h[)r }r (hBjñhCj hIhJhKh_hM}r (hR]hQ]hO]hP]hU]hajëuhWMGhXhhY]r hdXCN API method changesr …r }r (hBjñhCj ubaubjz)r }r (hBUhCj hIhJhKj}hM}r (hO]hP]hQ]hR]hU]uhWNhXhhY]r (j€)r! }r" (hBX.CN.get(Identifier id): Behaves the same as MN hCj hIhJhKjƒhM}r# (hO]hP]hQ]hR]hU]uhWMJhY]r$ (j†)r% }r& (hBXCN.get(Identifier id):r' hCj! hIhJhKjŠhM}r( (hO]hP]hQ]hR]hU]uhWMJhY]r) hdXCN.get(Identifier id):r* …r+ }r, (hBj' hCj% ubaubj)r- }r. (hBUhM}r/ (hO]hP]hQ]hR]hU]uhCj! hY]r0 h˜)r1 }r2 (hBXBehaves the same as MNr3 hCj- hIhJhKh§hM}r4 (hO]hP]hQ]hR]hU]uhWMJhY]r5 hdXBehaves the same as MNr6 …r7 }r8 (hBj3 hCj1 ubaubahKj±ubeubj€)r9 }r: (hBX3CN.describe(Identifier id): Behaves the same as MN hCj hIhJhKjƒhM}r; (hO]hP]hQ]hR]hU]uhWMMhXhhY]r< (j†)r= }r> (hBXCN.describe(Identifier id):r? hCj9 hIhJhKjŠhM}r@ (hO]hP]hQ]hR]hU]uhWMMhY]rA hdXCN.describe(Identifier id):rB …rC }rD (hBj? hCj= ubaubj)rE }rF (hBUhM}rG (hO]hP]hQ]hR]hU]uhCj9 hY]rH h˜)rI }rJ (hBXBehaves the same as MNrK hCjE hIhJhKh§hM}rL (hO]hP]hQ]hR]hU]uhWMMhY]rM hdXBehaves the same as MNrN …rO }rP (hBjK hCjI ubaubahKj±ubeubj€)rQ }rR (hBXÎCN.getSystemMetadata(Identifier id): Behaves the same as MN. N.B. This method can be used with a SID to locate the PID of the latest version which may be sufficient without implementing a getHead() method. hCj hIhJhKjƒhM}rS (hO]hP]hQ]hR]hU]uhWMRhXhhY]rT (j†)rU }rV (hBX$CN.getSystemMetadata(Identifier id):rW hCjQ hIhJhKjŠhM}rX (hO]hP]hQ]hR]hU]uhWMRhY]rY hdX$CN.getSystemMetadata(Identifier id):rZ …r[ }r\ (hBjW hCjU ubaubj)r] }r^ (hBUhM}r_ (hO]hP]hQ]hR]hU]uhCjQ hY]r` h˜)ra }rb (hBX¨Behaves the same as MN. N.B. This method can be used with a SID to locate the PID of the latest version which may be sufficient without implementing a getHead() method.rc hCj] hIhJhKh§hM}rd (hO]hP]hQ]hR]hU]uhWMPhY]re hdX¨Behaves the same as MN. N.B. This method can be used with a SID to locate the PID of the latest version which may be sufficient without implementing a getHead() method.rf …rg }rh (hBjc hCja ubaubahKj±ubeubj€)ri }rj (hBX6CN.getChecksum(Identifier id): Behaves the same as MN hCj hIhJhKjƒhM}rk (hO]hP]hQ]hR]hU]uhWMUhXhhY]rl (j†)rm }rn (hBXCN.getChecksum(Identifier id):ro hCji hIhJhKjŠhM}rp (hO]hP]hQ]hR]hU]uhWMUhY]rq hdXCN.getChecksum(Identifier id):rr …rs }rt (hBjo hCjm ubaubj)ru }rv (hBUhM}rw (hO]hP]hQ]hR]hU]uhCji hY]rx h˜)ry }rz (hBXBehaves the same as MNr{ hCju hIhJhKh§hM}r| (hO]hP]hQ]hR]hU]uhWMUhY]r} hdXBehaves the same as MNr~ …r }r€ (hBj{ hCjy ubaubahKj±ubeubj€)r }r‚ (hBX4CN.getLogRecords(?idFilter): Behaves the same as MN hCj hIhJhKjƒhM}rƒ (hO]hP]hQ]hR]hU]uhWMXhXhhY]r„ (j†)r… }r† (hBXCN.getLogRecords(?idFilter):r‡ hCj hIhJhKjŠhM}rˆ (hO]hP]hQ]hR]hU]uhWMXhY]r‰ hdXCN.getLogRecords(?idFilter):rŠ …r‹ }rŒ (hBj‡ hCj… ubaubj)r }rŽ (hBUhM}r (hO]hP]hQ]hR]hU]uhCj hY]r h˜)r‘ }r’ (hBXBehaves the same as MNr“ hCj hIhJhKh§hM}r” (hO]hP]hQ]hR]hU]uhWMXhY]r• hdXBehaves the same as MNr– …r— }r˜ (hBj“ hCj‘ ubaubahKj±ubeubj€)r™ }rš (hBXôCN.create(Identifier pid, object, SystemMetadata): Identifier must be PID and included in accompanying systemMetadata. SID may be included in accompanying systemMetadata if known at time of creation. The SID can be one of the following cases: 1. The SID is a unique identifier which doesn't exist in the system. 2. The SID matches the SID in the system metadata of the object in the "obsoletes" value. 3. The SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hCj hIhJhKjƒhM}r› (hO]hP]hQ]hR]hU]uhWM^hXhhY]rœ (j†)r }rž (hBX2CN.create(Identifier pid, object, SystemMetadata):rŸ hCj™ hIhJhKjŠhM}r  (hO]hP]hQ]hR]hU]uhWM^hY]r¡ hdX2CN.create(Identifier pid, object, SystemMetadata):r¢ …r£ }r¤ (hBjŸ hCj ubaubj)r¥ }r¦ (hBUhM}r§ (hO]hP]hQ]hR]hU]uhCj™ hY]r¨ jz)r© }rª (hBUhM}r« (hO]hP]hQ]hR]hU]uhCj¥ hY]r¬ j€)r­ }r® (hBX»Identifier must be PID and included in accompanying systemMetadata. SID may be included in accompanying systemMetadata if known at time of creation. The SID can be one of the following cases: 1. The SID is a unique identifier which doesn't exist in the system. 2. The SID matches the SID in the system metadata of the object in the "obsoletes" value. 3. The SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hCj© hIhJhKjƒhM}r¯ (hO]hP]hQ]hR]hU]uhWM^hY]r° (j†)r± }r² (hBX¿Identifier must be PID and included in accompanying systemMetadata. SID may be included in accompanying systemMetadata if known at time of creation. The SID can be one of the following cases:r³ hCj­ hIhJhKjŠhM}r´ (hO]hP]hQ]hR]hU]uhWM^hY]rµ hdX¿Identifier must be PID and included in accompanying systemMetadata. SID may be included in accompanying systemMetadata if known at time of creation. The SID can be one of the following cases:r¶ …r· }r¸ (hBj³ hCj± ubaubj)r¹ }rº (hBUhM}r» (hO]hP]hQ]hR]hU]uhCj­ hY]r¼ jâ)r½ }r¾ (hBUhM}r¿ (jæU.hR]hQ]hO]jçUhP]hU]jèjéuhCj¹ hY]rÀ (h“)rÁ }r (hBXAThe SID is a unique identifier which doesn't exist in the system.rà hM}rÄ (hO]hP]hQ]hR]hU]uhCj½ hY]rÅ h˜)rÆ }rÇ (hBjà hCjÁ hIhJhKh§hM}rÈ (hO]hP]hQ]hR]hU]uhWM\hY]rÉ hdXAThe SID is a unique identifier which doesn't exist in the system.rÊ …rË }rÌ (hBjà hCjÆ ubaubahKh¿ubh“)rÍ }rÎ (hBXVThe SID matches the SID in the system metadata of the object in the "obsoletes" value.rÏ hM}rÐ (hO]hP]hQ]hR]hU]uhCj½ hY]rÑ h˜)rÒ }rÓ (hBjÏ hCjÍ hIhJhKh§hM}rÔ (hO]hP]hQ]hR]hU]uhWM]hY]rÕ hdXVThe SID matches the SID in the system metadata of the object in the "obsoletes" value.rÖ …r× }rØ (hBjÏ hCjÒ ubaubahKh¿ubh“)rÙ }rÚ (hBXYThe SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hM}rÛ (hO]hP]hQ]hR]hU]uhCj½ hY]rÜ h˜)rÝ }rÞ (hBXXThe SID matches the SID in the system metadata of the object in the "obsoletedBy" value.rß hCjÙ hIhJhKh§hM}rà (hO]hP]hQ]hR]hU]uhWM^hY]rá hdXXThe SID matches the SID in the system metadata of the object in the "obsoletedBy" value.râ …rã }rä (hBjß hCjÝ ubaubahKh¿ubehKjubahKj±ubeubahKj}ubahKj±ubeubj€)rå }ræ (hBX£CN.registerSystemMetadata(Identifier pid, SystemMetadata sysmeta): Requires a PID, allows a SID in the SystemMetadata. The SID can be one of the following cases: 1. The SID is a unique identifier which doesn't exist in the system. 2. The SID matches the SID in the system metadata of the object in the "obsoletes" value. 3. The SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hCj hIhJhKjƒhM}rç (hO]hP]hQ]hR]hU]uhWMdhXhhY]rè (j†)ré }rê (hBXBCN.registerSystemMetadata(Identifier pid, SystemMetadata sysmeta):rë hCjå hIhJhKjŠhM}rì (hO]hP]hQ]hR]hU]uhWMdhY]rí hdXBCN.registerSystemMetadata(Identifier pid, SystemMetadata sysmeta):rî …rï }rð (hBjë hCjé ubaubj)rñ }rò (hBUhM}ró (hO]hP]hQ]hR]hU]uhCjå hY]rô jz)rõ }rö (hBUhM}r÷ (hO]hP]hQ]hR]hU]uhCjñ hY]rø j€)rù }rú (hBXZRequires a PID, allows a SID in the SystemMetadata. The SID can be one of the following cases: 1. The SID is a unique identifier which doesn't exist in the system. 2. The SID matches the SID in the system metadata of the object in the "obsoletes" value. 3. The SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hCjõ hIhJhKjƒhM}rû (hO]hP]hQ]hR]hU]uhWMdhY]rü (j†)rý }rþ (hBX^Requires a PID, allows a SID in the SystemMetadata. The SID can be one of the following cases:rÿ hCjù hIhJhKjŠhM}r (hO]hP]hQ]hR]hU]uhWMdhY]r hdX^Requires a PID, allows a SID in the SystemMetadata. The SID can be one of the following cases:r …r }r (hBjÿ hCjý ubaubj)r }r (hBUhM}r (hO]hP]hQ]hR]hU]uhCjù hY]r jâ)r }r (hBUhM}r (jæU.hR]hQ]hO]jçUhP]hU]jèjéuhCj hY]r (h“)r }r (hBXAThe SID is a unique identifier which doesn't exist in the system.r hM}r (hO]hP]hQ]hR]hU]uhCj hY]r h˜)r }r (hBj hCj hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMbhY]r hdXAThe SID is a unique identifier which doesn't exist in the system.r …r }r (hBj hCj ubaubahKh¿ubh“)r }r (hBXVThe SID matches the SID in the system metadata of the object in the "obsoletes" value.r hM}r (hO]hP]hQ]hR]hU]uhCj hY]r h˜)r }r (hBj hCj hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMchY]r! hdXVThe SID matches the SID in the system metadata of the object in the "obsoletes" value.r" …r# }r$ (hBj hCj ubaubahKh¿ubh“)r% }r& (hBXYThe SID matches the SID in the system metadata of the object in the "obsoletedBy" value. hM}r' (hO]hP]hQ]hR]hU]uhCj hY]r( h˜)r) }r* (hBXXThe SID matches the SID in the system metadata of the object in the "obsoletedBy" value.r+ hCj% hIhJhKh§hM}r, (hO]hP]hQ]hR]hU]uhWMdhY]r- hdXXThe SID matches the SID in the system metadata of the object in the "obsoletedBy" value.r. …r/ }r0 (hBj+ hCj) ubaubahKh¿ubehKjubahKj±ubeubahKj}ubahKj±ubeubj€)r1 }r2 (hBXZCN.updateSystemMetadata(Identifier id, SystemMetadata newSysmeta): Behaves the same as MN hCj hIhJhKjƒhM}r3 (hO]hP]hQ]hR]hU]uhWMghXhhY]r4 (j†)r5 }r6 (hBXBCN.updateSystemMetadata(Identifier id, SystemMetadata newSysmeta):r7 hCj1 hIhJhKjŠhM}r8 (hO]hP]hQ]hR]hU]uhWMghY]r9 hdXBCN.updateSystemMetadata(Identifier id, SystemMetadata newSysmeta):r: …r; }r< (hBj7 hCj5 ubaubj)r= }r> (hBUhM}r? (hO]hP]hQ]hR]hU]uhCj1 hY]r@ h˜)rA }rB (hBXBehaves the same as MNrC hCj= hIhJhKh§hM}rD (hO]hP]hQ]hR]hU]uhWMghY]rE hdXBehaves the same as MNrF …rG }rH (hBjC hCjA ubaubahKj±ubeubj€)rI }rJ (hBX1CN.delete(Identifier id): Behaves the same as MN hCj hIhJhKjƒhM}rK (hO]hP]hQ]hR]hU]uhWMjhXhhY]rL (j†)rM }rN (hBXCN.delete(Identifier id):rO hCjI hIhJhKjŠhM}rP (hO]hP]hQ]hR]hU]uhWMjhY]rQ hdXCN.delete(Identifier id):rR …rS }rT (hBjO hCjM ubaubj)rU }rV (hBUhM}rW (hO]hP]hQ]hR]hU]uhCjI hY]rX h˜)rY }rZ (hBXBehaves the same as MNr[ hCjU hIhJhKh§hM}r\ (hO]hP]hQ]hR]hU]uhWMjhY]r] hdXBehaves the same as MNr^ …r_ }r` (hBj[ hCjY ubaubahKj±ubeubj€)ra }rb (hBX2CN.archive(Identifier id): Behaves the same as MN hCj hIhJhKjƒhM}rc (hO]hP]hQ]hR]hU]uhWMmhXhhY]rd (j†)re }rf (hBXCN.archive(Identifier id):rg hCja hIhJhKjŠhM}rh (hO]hP]hQ]hR]hU]uhWMmhY]ri hdXCN.archive(Identifier id):rj …rk }rl (hBjg hCje ubaubj)rm }rn (hBUhM}ro (hO]hP]hQ]hR]hU]uhCja hY]rp h˜)rq }rr (hBXBehaves the same as MNrs hCjm hIhJhKh§hM}rt (hO]hP]hQ]hR]hU]uhWMmhY]ru hdXBehaves the same as MNrv …rw }rx (hBjs hCjq ubaubahKj±ubeubj€)ry }rz (hBXaCN.reserveIdentifier(Identifier id): Accepts PID or SID values and treats them exactly the same. hCj hIhJhKjƒhM}r{ (hO]hP]hQ]hR]hU]uhWMphXhhY]r| (j†)r} }r~ (hBX$CN.reserveIdentifier(Identifier id):r hCjy hIhJhKjŠhM}r€ (hO]hP]hQ]hR]hU]uhWMphY]r hdX$CN.reserveIdentifier(Identifier id):r‚ …rƒ }r„ (hBj hCj} ubaubj)r… }r† (hBUhM}r‡ (hO]hP]hQ]hR]hU]uhCjy hY]rˆ h˜)r‰ }rŠ (hBX;Accepts PID or SID values and treats them exactly the same.r‹ hCj… hIhJhKh§hM}rŒ (hO]hP]hQ]hR]hU]uhWMphY]r hdX;Accepts PID or SID values and treats them exactly the same.rŽ …r }r (hBj‹ hCj‰ ubaubahKj±ubeubj€)r‘ }r’ (hBX^CN.hasReservation(Identifier id): Accepts PID or SID values and treats them exactly the same. hCj hIhJhKjƒhM}r“ (hO]hP]hQ]hR]hU]uhWMshXhhY]r” (j†)r• }r– (hBX!CN.hasReservation(Identifier id):r— hCj‘ hIhJhKjŠhM}r˜ (hO]hP]hQ]hR]hU]uhWMshY]r™ hdX!CN.hasReservation(Identifier id):rš …r› }rœ (hBj— hCj• ubaubj)r }rž (hBUhM}rŸ (hO]hP]hQ]hR]hU]uhCj‘ hY]r  h˜)r¡ }r¢ (hBX;Accepts PID or SID values and treats them exactly the same.r£ hCj hIhJhKh§hM}r¤ (hO]hP]hQ]hR]hU]uhWMshY]r¥ hdX;Accepts PID or SID values and treats them exactly the same.r¦ …r§ }r¨ (hBj£ hCj¡ ubaubahKj±ubeubj€)r© }rª (hBXQCN.resolve(Identifier): If PID, resolve it. If a SID, then resolve the HEAD PID. hCj hIhJhKjƒhM}r« (hO]hP]hQ]hR]hU]uhWMwhXhhY]r¬ (j†)r­ }r® (hBXCN.resolve(Identifier):r¯ hCj© hIhJhKjŠhM}r° (hO]hP]hQ]hR]hU]uhWMwhY]r± hdXCN.resolve(Identifier):r² …r³ }r´ (hBj¯ hCj­ ubaubj)rµ }r¶ (hBUhM}r· (hO]hP]hQ]hR]hU]uhCj© hY]r¸ h˜)r¹ }rº (hBX8If PID, resolve it. If a SID, then resolve the HEAD PID.r» hCjµ hIhJhKh§hM}r¼ (hO]hP]hQ]hR]hU]uhWMvhY]r½ hdX8If PID, resolve it. If a SID, then resolve the HEAD PID.r¾ …r¿ }rÀ (hBj» hCj¹ ubaubahKj±ubeubj€)rÁ }r (hBX7CN.isAuthorized(Identifier id): Behaves the same as MN hCj hIhJhKjƒhM}rà (hO]hP]hQ]hR]hU]uhWMzhXhhY]rÄ (j†)rÅ }rÆ (hBXCN.isAuthorized(Identifier id):rÇ hCjÁ hIhJhKjŠhM}rÈ (hO]hP]hQ]hR]hU]uhWMzhY]rÉ hdXCN.isAuthorized(Identifier id):rÊ …rË }rÌ (hBjÇ hCjÅ ubaubj)rÍ }rÎ (hBUhM}rÏ (hO]hP]hQ]hR]hU]uhCjÁ hY]rÐ h˜)rÑ }rÒ (hBXBehaves the same as MNrÓ hCjÍ hIhJhKh§hM}rÔ (hO]hP]hQ]hR]hU]uhWMzhY]rÕ hdXBehaves the same as MNrÖ …r× }rØ (hBjÓ hCjÑ ubaubahKj±ubeubj€)rÙ }rÚ (hBXrCN.isNodeAuthorized(Identifier id): Only accept PID since it is a replication related method. No behavior change. hCj hIhJhKjƒhM}rÛ (hO]hP]hQ]hR]hU]uhWM}hXhhY]rÜ (j†)rÝ }rÞ (hBX#CN.isNodeAuthorized(Identifier id):rß hCjÙ hIhJhKjŠhM}rà (hO]hP]hQ]hR]hU]uhWM}hY]rá hdX#CN.isNodeAuthorized(Identifier id):râ …rã }rä (hBjß hCjÝ ubaubj)rå }ræ (hBUhM}rç (hO]hP]hQ]hR]hU]uhCjÙ hY]rè h˜)ré }rê (hBXMOnly accept PID since it is a replication related method. No behavior change.rë hCjå hIhJhKh§hM}rì (hO]hP]hQ]hR]hU]uhWM}hY]rí hdXMOnly accept PID since it is a replication related method. No behavior change.rî …rï }rð (hBjë hCjé ubaubahKj±ubeubj€)rñ }rò (hBX{CN.updateReplicationMetadata(Identifier id): Only accept PID since it is a replication related method. No behavior change. hCj hIhJhKjƒhM}ró (hO]hP]hQ]hR]hU]uhWM€hXhhY]rô (j†)rõ }rö (hBX,CN.updateReplicationMetadata(Identifier id):r÷ hCjñ hIhJhKjŠhM}rø (hO]hP]hQ]hR]hU]uhWM€hY]rù hdX,CN.updateReplicationMetadata(Identifier id):rú …rû }rü (hBj÷ hCjõ ubaubj)rý }rþ (hBUhM}rÿ (hO]hP]hQ]hR]hU]uhCjñ hY]r h˜)r }r (hBXMOnly accept PID since it is a replication related method. No behavior change.r hCjý hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWM€hY]r hdXMOnly accept PID since it is a replication related method. No behavior change.r …r }r (hBj hCj ubaubahKj±ubeubj€)r }r (hBX{CN.deleteReplicationMetadata(Identifier id): Only accept PID since it is a replication related method. No behavior change. hCj hIhJhKjƒhM}r (hO]hP]hQ]hR]hU]uhWMƒhXhhY]r (j†)r }r (hBX,CN.deleteReplicationMetadata(Identifier id):r hCj hIhJhKjŠhM}r (hO]hP]hQ]hR]hU]uhWMƒhY]r hdX,CN.deleteReplicationMetadata(Identifier id):r …r }r (hBj hCj ubaubj)r }r (hBUhM}r (hO]hP]hQ]hR]hU]uhCj hY]r h˜)r }r (hBXMOnly accept PID since it is a replication related method. No behavior change.r hCj hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMƒhY]r hdXMOnly accept PID since it is a replication related method. No behavior change.r …r }r (hBj hCj ubaubahKj±ubeubj€)r! }r" (hBXvCN.setReplicationStatus(Identifier id): Only accept PID since it is a replication related method. No behavior change. hCj hIhJhKjƒhM}r# (hO]hP]hQ]hR]hU]uhWM†hXhhY]r$ (j†)r% }r& (hBX'CN.setReplicationStatus(Identifier id):r' hCj! hIhJhKjŠhM}r( (hO]hP]hQ]hR]hU]uhWM†hY]r) hdX'CN.setReplicationStatus(Identifier id):r* …r+ }r, (hBj' hCj% ubaubj)r- }r. (hBUhM}r/ (hO]hP]hQ]hR]hU]uhCj! hY]r0 h˜)r1 }r2 (hBXMOnly accept PID since it is a replication related method. No behavior change.r3 hCj- hIhJhKh§hM}r4 (hO]hP]hQ]hR]hU]uhWM†hY]r5 hdXMOnly accept PID since it is a replication related method. No behavior change.r6 …r7 }r8 (hBj3 hCj1 ubaubahKj±ubeubj€)r9 }r: (hBXiCN.setReplicationPolicy(): Only accept PID since it is a replication related method. No behavior change. hCj hIhJhKjƒhM}r; (hO]hP]hQ]hR]hU]uhWM‰hXhhY]r< (j†)r= }r> (hBXCN.setReplicationPolicy():r? hCj9 hIhJhKjŠhM}r@ (hO]hP]hQ]hR]hU]uhWM‰hY]rA hdXCN.setReplicationPolicy():rB …rC }rD (hBj? hCj= ubaubj)rE }rF (hBUhM}rG (hO]hP]hQ]hR]hU]uhCj9 hY]rH h˜)rI }rJ (hBXMOnly accept PID since it is a replication related method. No behavior change.rK hCjE hIhJhKh§hM}rL (hO]hP]hQ]hR]hU]uhWM‰hY]rM hdXMOnly accept PID since it is a replication related method. No behavior change.rN …rO }rP (hBjK hCjI ubaubahKj±ubeubj€)rQ }rR (hBXÓCN.setRightsHolder(): Ownerships apply to particular revisions, not the entire chain. If a SID is passed in to a method that affects one of these policies, the change is applied to the HEAD PID for that series. hCj hIhJhKjƒhM}rS (hO]hP]hQ]hR]hU]uhWMhXhhY]rT (j†)rU }rV (hBXCN.setRightsHolder():rW hCjQ hIhJhKjŠhM}rX (hO]hP]hQ]hR]hU]uhWMhY]rY hdXCN.setRightsHolder():rZ …r[ }r\ (hBjW hCjU ubaubj)r] }r^ (hBUhM}r_ (hO]hP]hQ]hR]hU]uhCjQ hY]r` h˜)ra }rb (hBX¼Ownerships apply to particular revisions, not the entire chain. If a SID is passed in to a method that affects one of these policies, the change is applied to the HEAD PID for that series.rc hCj] hIhJhKh§hM}rd (hO]hP]hQ]hR]hU]uhWMŒhY]re hdX¼Ownerships apply to particular revisions, not the entire chain. If a SID is passed in to a method that affects one of these policies, the change is applied to the HEAD PID for that series.rf …rg }rh (hBjc hCja ubaubahKj±ubeubj€)ri }rj (hBXÑCN.setAccessPolicy(): Policies apply to particular revisions, not the entire chain. If a SID is passed in to a method that affects one of these policies, the change is applied to the HEAD PID for that series. hCj hIhJhKjƒhM}rk (hO]hP]hQ]hR]hU]uhWM‘hXhhY]rl (j†)rm }rn (hBXCN.setAccessPolicy():ro hCji hIhJhKjŠhM}rp (hO]hP]hQ]hR]hU]uhWM‘hY]rq hdXCN.setAccessPolicy():rr …rs }rt (hBjo hCjm ubaubj)ru }rv (hBUhM}rw (hO]hP]hQ]hR]hU]uhCji hY]rx h˜)ry }rz (hBXºPolicies apply to particular revisions, not the entire chain. If a SID is passed in to a method that affects one of these policies, the change is applied to the HEAD PID for that series.r{ hCju hIhJhKh§hM}r| (hO]hP]hQ]hR]hU]uhWMhY]r} hdXºPolicies apply to particular revisions, not the entire chain. If a SID is passed in to a method that affects one of these policies, the change is applied to the HEAD PID for that series.r~ …r }r€ (hBj{ hCjy ubaubahKj±ubeubj€)r }r‚ (hBXwCN.setObsoletedBy(Identifier id, Identifier obsoletedByPid): Only PIDs can be used when expressing obsolescence chain. hCj hIhJhKjƒhM}rƒ (hO]hP]hQ]hR]hU]uhWM”hXhhY]r„ (j†)r… }r† (hBX<CN.setObsoletedBy(Identifier id, Identifier obsoletedByPid):r‡ hCj hIhJhKjŠhM}rˆ (hO]hP]hQ]hR]hU]uhWM”hY]r‰ hdX<CN.setObsoletedBy(Identifier id, Identifier obsoletedByPid):rŠ …r‹ }rŒ (hBj‡ hCj… ubaubj)r }rŽ (hBUhM}r (hO]hP]hQ]hR]hU]uhCj hY]r h˜)r‘ }r’ (hBX9Only PIDs can be used when expressing obsolescence chain.r“ hCj hIhJhKh§hM}r” (hO]hP]hQ]hR]hU]uhWM”hY]r• hdX9Only PIDs can be used when expressing obsolescence chain.r– …r— }r˜ (hBj“ hCj‘ ubaubahKj±ubeubj€)r™ }rš (hBX.CN.view(Identifier id) Behaves the same as MN hCj hIhJhKjƒhM}r› (hO]hP]hQ]hR]hU]uhWM—hXhhY]rœ (j†)r }rž (hBXCN.view(Identifier id)rŸ hCj™ hIhJhKjŠhM}r  (hO]hP]hQ]hR]hU]uhWM—hY]r¡ hdXCN.view(Identifier id)r¢ …r£ }r¤ (hBjŸ hCj ubaubj)r¥ }r¦ (hBUhM}r§ (hO]hP]hQ]hR]hU]uhCj™ hY]r¨ h˜)r© }rª (hBXBehaves the same as MNr« hCj¥ hIhJhKh§hM}r¬ (hO]hP]hQ]hR]hU]uhWM—hY]r­ hdXBehaves the same as MNr® …r¯ }r° (hBj« hCj© ubaubahKj±ubeubj€)r± }r² (hBX:CN.listObjects(?identifier=XXX): Behaves the same as MN hCj hIhJhKjƒhM}r³ (hO]hP]hQ]hR]hU]uhWMœhXhhY]r´ (j†)rµ }r¶ (hBX CN.listObjects(?identifier=XXX):r· hCj± hIhJhKjŠhM}r¸ (hO]hP]hQ]hR]hU]uhWMœhY]r¹ hdX CN.listObjects(?identifier=XXX):rº …r» }r¼ (hBj· hCjµ ubaubj)r½ }r¾ (hBUhM}r¿ (hO]hP]hQ]hR]hU]uhCj± hY]rÀ h˜)rÁ }r (hBXBehaves the same as MNrà hCj½ hIhJhKh§hM}rÄ (hO]hP]hQ]hR]hU]uhWMšhY]rÅ hdXBehaves the same as MNrÆ …rÇ }rÈ (hBjà hCjÁ ubaubahKj±ubeubeubeubeubhD)rÉ }rÊ (hBUhChGhIhJhKhLhM}rË (hO]hP]hQ]hR]rÌ jÿahU]rÍ h#auhWMŸhXhhY]rÎ (h[)rÏ }rÐ (hBjhCjÉ hIhJhKh_hM}rÑ (hR]hQ]hO]hP]hU]hajþuhWMŸhXhhY]rÒ hdX Use CasesrÓ …rÔ }rÕ (hBjhCjÏ ubaubh˜)rÖ }r× (hBXƒThe use cases below organize the identified requirements related to mutable content, with the most relevant use cases listed first.rØ hCjÉ hIhJhKh§hM}rÙ (hO]hP]hQ]hR]hU]uhWM¡hXhhY]rÚ hdXƒThe use cases below organize the identified requirements related to mutable content, with the most relevant use cases listed first.rÛ …rÜ }rÝ (hBjØ hCjÖ ubaubhD)rÞ }rß (hBUhCjÉ hIhJhKhLhM}rà (hO]hP]hQ]hR]rá jahU]râ h:auhWM¨hXhhY]rã (h[)rä }rå (hBjhCjÞ hIhJhKh_hM}ræ (hR]hQ]hO]hP]hU]hajuhWM¨hXhhY]rç hdX1. Data preservationrè …ré }rê (hBjhCjä ubaubh˜)rë }rì (hBXDefined as activities that help ensure continued discoverability and usefulness and usually in reference to metadata, not data.rí hCjÞ hIhJhKh§hM}rî (hO]hP]hQ]hR]hU]uhWM©hXhhY]rï hdXDefined as activities that help ensure continued discoverability and usefulness and usually in reference to metadata, not data.rð …rñ }rò (hBjí hCjë ubaubh)ró }rô (hBUhCjÞ hIhJhKhhM}rõ (j3X-hR]hQ]hO]hP]hU]uhWM¬hXhhY]rö (h“)r÷ }rø (hBX!metadata adaptation / improvementrù hCjó hIhJhKh¿hM}rú (hO]hP]hQ]hR]hU]uhWNhXhhY]rû h˜)rü }rý (hBjù hCj÷ hIhJhKh§hM}rþ (hO]hP]hQ]hR]hU]uhWM¬hY]rÿ hdX!metadata adaptation / improvementr…r}r(hBjù hCjü ubaubaubh“)r}r(hBXmetadata correctionrhCjó hIhJhKh¿hM}r(hO]hP]hQ]hR]hU]uhWNhXhhY]rh˜)r}r (hBjhCjhIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWM­hY]r hdXmetadata correctionr …r }r(hBjhCjubaubaubh“)r}r(hBXšabsent a "push" notification, users should be able to easily determine if they have the most current version of something, and easily and quickly get it. hCjó hIhJhKh¿hM}r(hO]hP]hQ]hR]hU]uhWNhXhhY]rh˜)r}r(hBX™absent a "push" notification, users should be able to easily determine if they have the most current version of something, and easily and quickly get it.rhCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWM®hY]rhdX™absent a "push" notification, users should be able to easily determine if they have the most current version of something, and easily and quickly get it.r…r}r(hBjhCjubaubaubeubeubhD)r}r(hBUhCjÉ hIhJhKhLhM}r(hO]hP]hQ]hR]rj)ahU]rhauhWM²hXhhY]r (h[)r!}r"(hBj.hCjhIhJhKh_hM}r#(hR]hQ]hO]hP]hU]haj(uhWM²hXhhY]r$hdX&2. Mutable Content Member Node supportr%…r&}r'(hBj.hCj!ubaubh˜)r(}r)(hBX3For institutions following a mutable content model:r*hCjhIhJhKh§hM}r+(hO]hP]hQ]hR]hU]uhWM³hXhhY]r,hdX3For institutions following a mutable content model:r-…r.}r/(hBj*hCj(ubaubh)r0}r1(hBUhCjhIhJhKhhM}r2(j3X-hR]hQ]hO]hP]hU]uhWMµhXhhY]r3(h“)r4}r5(hBX<Provide a path forward for integrating into DataONE network.r6hCj0hIhJhKh¿hM}r7(hO]hP]hQ]hR]hU]uhWNhXhhY]r8h˜)r9}r:(hBj6hCj4hIhJhKh§hM}r;(hO]hP]hQ]hR]hU]uhWMµhY]r<hdX<Provide a path forward for integrating into DataONE network.r=…r>}r?(hBj6hCj9ubaubaubh“)r@}rA(hBXDMinimize the burden of adaptation to working with versioned content.rBhCj0hIhJhKh¿hM}rC(hO]hP]hQ]hR]hU]uhWNhXhhY]rDh˜)rE}rF(hBjBhCj@hIhJhKh§hM}rG(hO]hP]hQ]hR]hU]uhWM¶hY]rHhdXDMinimize the burden of adaptation to working with versioned content.rI…rJ}rK(hBjBhCjEubaubaubh“)rL}rM(hBX›Allow use of their identifiers in DataONE in the context they are familiar with (if their identifier always points to the latest, in DataONE it should too)hCj0hIhJhKh¿hM}rN(hO]hP]hQ]hR]hU]uhWNhXhhY]rOh˜)rP}rQ(hBX›Allow use of their identifiers in DataONE in the context they are familiar with (if their identifier always points to the latest, in DataONE it should too)rRhCjLhIhJhKh§hM}rS(hO]hP]hQ]hR]hU]uhWM·hY]rThdX›Allow use of their identifiers in DataONE in the context they are familiar with (if their identifier always points to the latest, in DataONE it should too)rU…rV}rW(hBjRhCjPubaubaubh“)rX}rY(hBX%Options for maintaining past versionsrZhCj0hIhJhKh¿hM}r[(hO]hP]hQ]hR]hU]uhWNhXhhY]r\h˜)r]}r^(hBjZhCjXhIhJhKh§hM}r_(hO]hP]hQ]hR]hU]uhWM¹hY]r`hdX%Options for maintaining past versionsra…rb}rc(hBjZhCj]ubaubaubh“)rd}re(hBXFDifferentiating between incremental internal saves, vs. new revision. hCj0hIhJhKh¿hM}rf(hO]hP]hQ]hR]hU]uhWNhXhhY]rgh˜)rh}ri(hBXEDifferentiating between incremental internal saves, vs. new revision.rjhCjdhIhJhKh§hM}rk(hO]hP]hQ]hR]hU]uhWMºhY]rlhdXEDifferentiating between incremental internal saves, vs. new revision.rm…rn}ro(hBjjhCjhubaubaubeubeubhD)rp}rq(hBUhCjÉ hIhJhKhLhM}rr(hO]hP]hQ]hR]rsj<ahU]rth9auhWM½hXhhY]ru(h[)rv}rw(hBjAhCjphIhJhKh_hM}rx(hR]hQ]hO]hP]hU]haj;uhWM½hXhhY]ryhdX3. Citation supportrz…r{}r|(hBjAhCjvubaubh)r}}r~(hBUhCjphIhJhKhhM}r(j3X-hR]hQ]hO]hP]hU]uhWM¾hXhhY]r€(h“)r}r‚(hBXZavoid unnecessary costs associated with obtaining resolvable (e.g., DOIs) for each versionrƒhCj}hIhJhKh¿hM}r„(hO]hP]hQ]hR]hU]uhWNhXhhY]r…h˜)r†}r‡(hBjƒhCjhIhJhKh§hM}rˆ(hO]hP]hQ]hR]hU]uhWM¾hY]r‰hdXZavoid unnecessary costs associated with obtaining resolvable (e.g., DOIs) for each versionrŠ…r‹}rŒ(hBjƒhCj†ubaubaubh“)r}rŽ(hBXBcoordinating citation by a common identifier for citation trackingrhCj}hIhJhKh¿hM}r(hO]hP]hQ]hR]hU]uhWNhXhhY]r‘h˜)r’}r“(hBjhCjhIhJhKh§hM}r”(hO]hP]hQ]hR]hU]uhWM¿hY]r•hdXBcoordinating citation by a common identifier for citation trackingr–…r—}r˜(hBjhCj’ubaubaubh“)r™}rš(hBXWensuring that the cited object is the same when accessed as when it was originally usedr›hCj}hIhJhKh¿hM}rœ(hO]hP]hQ]hR]hU]uhWNhXhhY]rh˜)rž}rŸ(hBj›hCj™hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMÀhY]r¡hdXWensuring that the cited object is the same when accessed as when it was originally usedr¢…r£}r¤(hBj›hCjžubaubaubh“)r¥}r¦(hBX;ability to cite a version as well as the conceptual object hCj}hIhJhKh¿hM}r§(hO]hP]hQ]hR]hU]uhWNhXhhY]r¨h˜)r©}rª(hBX:ability to cite a version as well as the conceptual objectr«hCj¥hIhJhKh§hM}r¬(hO]hP]hQ]hR]hU]uhWMÁhY]r­hdX:ability to cite a version as well as the conceptual objectr®…r¯}r°(hBj«hCj©ubaubaubeubhD)r±}r²(hBUhCjphIhJhKhLhM}r³(hO]hP]hQ]hR]r´jSahU]rµh5auhWMÄhXhhY]r¶h[)r·}r¸(hBjXhCj±hIhJhKh_hM}r¹(hR]hQ]hO]hP]hU]hajRuhWMÄhXhhY]rºhdXOptionalr»…r¼}r½(hBjXhCj·ubaubaubeubhD)r¾}r¿(hBUhCjÉ hIhJhKhLhM}rÀ(hO]hP]hQ]hR]rÁjfahU]rÂh6auhWMÇhXhhY]rÃ(h[)rÄ}rÅ(hBjkhCj¾hIhJhKh_hM}rÆ(hR]hQ]hO]hP]hU]hajeuhWMÇhXhhY]rÇhdX54. Support for frequently changing / overwritten datarÈ…rÉ}rÊ(hBjkhCjÄubaubh˜)rË}rÌ(hBXÓWhat is the best way to version mutable data that frequently changes but may or not be used. For example a "current time" object, replaced every minute, or "current weather radar" that's replaced every 3 hours.rÍhCj¾hIhJhKh§hM}rÎ(hO]hP]hQ]hR]hU]uhWMÈhXhhY]rÏhdXÓWhat is the best way to version mutable data that frequently changes but may or not be used. For example a "current time" object, replaced every minute, or "current weather radar" that's replaced every 3 hours.rÐ…rÑ}rÒ(hBjÍhCjËubaubh)rÓ}rÔ(hBUhCj¾hIhJhKhhM}rÕ(j3X-hR]hQ]hO]hP]hU]uhWMÌhXhhY]rÖ(h“)r×}rØ(hBXFpreserving every version could be very expensive for very little valuerÙhCjÓhIhJhKh¿hM}rÚ(hO]hP]hQ]hR]hU]uhWNhXhhY]rÛh˜)rÜ}rÝ(hBjÙhCj×hIhJhKh§hM}rÞ(hO]hP]hQ]hR]hU]uhWMÌhY]rßhdXFpreserving every version could be very expensive for very little valuerà…rá}râ(hBjÙhCjÜubaubaubh“)rã}rä(hBX<what mechanisms could be employed to minimize the overhead? hCjÓhIhJhKh¿hM}rå(hO]hP]hQ]hR]hU]uhWNhXhhY]ræh˜)rç}rè(hBX;what mechanisms could be employed to minimize the overhead?réhCjãhIhJhKh§hM}rê(hO]hP]hQ]hR]hU]uhWMÍhY]rëhdX;what mechanisms could be employed to minimize the overhead?rì…rí}rî(hBjéhCjçubaubaubeubh˜)rï}rð(hBXWThe underlying dynamic here is the the rate of mutation vs. the rate of synchronizationrñhCj¾hIhJhKh§hM}rò(hO]hP]hQ]hR]hU]uhWMÏhXhhY]róhdXWThe underlying dynamic here is the the rate of mutation vs. the rate of synchronizationrô…rõ}rö(hBjñhCjïubaubeubhD)r÷}rø(hBUhCjÉ hIhJhKhLhM}rù(hO]hP]hQ]hR]rújyahU]rûh auhWMÒhXhhY]rü(h[)rý}rþ(hBj~hCj÷hIhJhKh_hM}rÿ(hR]hQ]hO]hP]hU]hajxuhWMÒhXhhY]rhdX$5. Support for accumulating datasetsr…r}r(hBj~hCjýubaubh˜)r}r(hBXFThis means supporting data objects that add records over time, either:rhCj÷hIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWMÓhXhhY]rhdXFThis means supporting data objects that add records over time, either:r …r }r (hBjhCjubaubh)r }r (hBUhCj÷hIhJhKhhM}r(j3X-hR]hQ]hO]hP]hU]uhWMÕhXhhY]r(h“)r}r(hBXkwithin pre-defined bounds e.g. "2013 year-to-date" (the metadata could stay the same, while data changes)hCj hIhJhKh¿hM}r(hO]hP]hQ]hR]hU]uhWNhXhhY]rh˜)r}r(hBXkwithin pre-defined bounds e.g. "2013 year-to-date" (the metadata could stay the same, while data changes)rhCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWMÕhY]rhdXkwithin pre-defined bounds e.g. "2013 year-to-date" (the metadata could stay the same, while data changes)r…r}r(hBjhCjubaubaubh“)r}r(hBXEwithout pre-defined bounds e.g. "JGoodall primate observation log"? hCj hIhJhKh¿hM}r(hO]hP]hQ]hR]hU]uhWNhXhhY]rh˜)r }r!(hBXCwithout pre-defined bounds e.g. "JGoodall primate observation log"?r"hCjhIhJhKh§hM}r#(hO]hP]hQ]hR]hU]uhWM×hY]r$hdXCwithout pre-defined bounds e.g. "JGoodall primate observation log"?r%…r&}r'(hBj"hCj ubaubaubeubeubhD)r(}r)(hBUhCjÉ hIhJhKhLhM}r*(hO]hP]hQ]hR]r+jŒahU]r,h8auhWMÛhXhhY]r-(h[)r.}r/(hBj‘hCj(hIhJhKh_hM}r0(hR]hQ]hO]hP]hU]haj‹uhWMÛhXhhY]r1hdX*6. Support for mixed metadata/data objectsr2…r3}r4(hBj‘hCj.ubaubh˜)r5}r6(hBX Some formats combine data with metadata, for example netCDF, so allowing the metadata to change without impacting the consistency assessment of the data itself.r7hCj(hIhJhKh§hM}r8(hO]hP]hQ]hR]hU]uhWMÜhXhhY]r9hdX Some formats combine data with metadata, for example netCDF, so allowing the metadata to change without impacting the consistency assessment of the data itself.r:…r;}r<(hBj7hCj5ubaubh)r=}r>(hBUhCj(hIhJhKhhM}r?(j3X-hR]hQ]hO]hP]hU]uhWMßhXhhY]r@h“)rA}rB(hBX}changes in the file are treated like any other change; they will be versioned, but may be referenced using a seriesId hCj=hINhKh¿hM}rC(hO]hP]hQ]hR]hU]uhWNhXhhY]rDjz)rE}rF(hBUhM}rG(hO]hP]hQ]hR]hU]uhCjAhY]rHj€)rI}rJ(hBXwchanges in the file are treated like any other change; they will be versioned, but may be referenced using a seriesId hCjEhIhJhKjƒhM}rK(hO]hP]hQ]hR]hU]uhWMáhY]rL(j†)rM}rN(hBXNchanges in the file are treated like any other change; they will be versioned,rOhCjIhIhJhKjŠhM}rP(hO]hP]hQ]hR]hU]uhWMáhY]rQhdXNchanges in the file are treated like any other change; they will be versioned,rR…rS}rT(hBjOhCjMubaubj)rU}rV(hBUhM}rW(hO]hP]hQ]hR]hU]uhCjIhY]rXh˜)rY}rZ(hBX&but may be referenced using a seriesIdr[hCjUhIhJhKh§hM}r\(hO]hP]hQ]hR]hU]uhWMàhY]r]hdX&but may be referenced using a seriesIdr^…r_}r`(hBj[hCjYubaubahKj±ubeubahKj}ubaubaubeubhD)ra}rb(hBUhCjÉ hIhJhKhLhM}rc(hO]hP]hQ]hR]rdjŸahU]reh&auhWMähXhhY]rf(h[)rg}rh(hBj¤hCjahIhJhKh_hM}ri(hR]hQ]hO]hP]hU]hajžuhWMähXhhY]rjhdX'7. Supporting 'unrecorded' data streamsrk…rl}rm(hBj¤hCjgubaubh˜)rn}ro(hBXrMutable content can theoretically include things that are live feeds from sensors, but are otherwise not captured.rphCjahIhJhKh§hM}rq(hO]hP]hQ]hR]hU]uhWMåhXhhY]rrhdXrMutable content can theoretically include things that are live feeds from sensors, but are otherwise not captured.rs…rt}ru(hBjphCjnubaubh˜)rv}rw(hBX|This proposal does not accommodate streams unless they have discrete snapshots that can be referenced as part of a seriesId.rxhCjahIhJhKh§hM}ry(hO]hP]hQ]hR]hU]uhWMèhXhhY]rzhdX|This proposal does not accommodate streams unless they have discrete snapshots that can be referenced as part of a seriesId.r{…r|}r}(hBjxhCjvubaubh)r~}r(hBUhCjahIhJhKhhM}r€(j3X-hR]hQ]hO]hP]hU]uhWMëhXhhY]r(h“)r‚}rƒ(hBXMShould we allow identifiers to resolve to a URL that returns an input stream?r„hCj~hIhJhKh¿hM}r…(hO]hP]hQ]hR]hU]uhWNhXhhY]r†h˜)r‡}rˆ(hBj„hCj‚hIhJhKh§hM}r‰(hO]hP]hQ]hR]hU]uhWMëhY]rŠhdXMShould we allow identifiers to resolve to a URL that returns an input stream?r‹…rŒ}r(hBj„hCj‡ubaubaubh“)rŽ}r(hBXCan we prevent it?rhCj~hIhJhKh¿hM}r‘(hO]hP]hQ]hR]hU]uhWNhXhhY]r’h˜)r“}r”(hBjhCjŽhIhJhKh§hM}r•(hO]hP]hQ]hR]hU]uhWMìhY]r–hdXCan we prevent it?r—…r˜}r™(hBjhCj“ubaubaubh“)rš}r›(hBX@Can we mark it as the user's responsibility to do the mn.create?rœhCj~hIhJhKh¿hM}r(hO]hP]hQ]hR]hU]uhWNhXhhY]ržh˜)rŸ}r (hBjœhCjšhIhJhKh§hM}r¡(hO]hP]hQ]hR]hU]uhWMíhY]r¢hdX@Can we mark it as the user's responsibility to do the mn.create?r£…r¤}r¥(hBjœhCjŸubaubaubeubeubeubeubhIhJhKhLhM}r¦(hO]hP]hQ]hR]r§hÍahU]r¨h"auhWKJhXhhY]r©(h[)rª}r«(hBhÒhChEhIhJhKh_hM}r¬(hR]hQ]hO]hP]hU]hahÌuhWKJhXhhY]r­hdXResolving Series Identifiersr®…r¯}r°(hBhÒhCjªubaubh˜)r±}r²(hBX±In a perfect world, all obsolescence chains will have be complete, bi-directional links, and so determining the latest version of an object is determined simply by examining the set of all objects with the same SID, and selecting the object that is not ``obsoletedBy`` anything else. Obsolescence chains may be incomplete for various reasons and in such situations, resolution of series identifiers should still operate consistently.hChEhIhJhKh§hM}r³(hO]hP]hQ]hR]hU]uhWKLhXhhY]r´(hdXýIn a perfect world, all obsolescence chains will have be complete, bi-directional links, and so determining the latest version of an object is determined simply by examining the set of all objects with the same SID, and selecting the object that is not rµ…r¶}r·(hBXýIn a perfect world, all obsolescence chains will have be complete, bi-directional links, and so determining the latest version of an object is determined simply by examining the set of all objects with the same SID, and selecting the object that is not hCj±ubjâ)r¸}r¹(hBX``obsoletedBy``hM}rº(hO]hP]hQ]hR]hU]uhCj±hY]r»hdX obsoletedByr¼…r½}r¾(hBUhCj¸ubahKjìubhdX¥ anything else. Obsolescence chains may be incomplete for various reasons and in such situations, resolution of series identifiers should still operate consistently.r¿…rÀ}rÁ(hBX¥ anything else. Obsolescence chains may be incomplete for various reasons and in such situations, resolution of series identifiers should still operate consistently.hCj±ubeubh˜)rÂ}rÃ(hBXjThe following series of scenarios demonstrate the behavior of the DataONE system when resolving a seriesId to a specific object. The behavior of resolution is to rely primarily on the obsoletes and obsoletedBy entities, falling back to the date when an object is added to a Member Node (:attr:`~Types.SystemMetadata.dateUploaded`) to determine the newer version.hChEhIhJhKh§hM}rÄ(hO]hP]hQ]hR]hU]uhWKShXhhY]rÅ(hdXThe following series of scenarios demonstrate the behavior of the DataONE system when resolving a seriesId to a specific object. The behavior of resolution is to rely primarily on the obsoletes and obsoletedBy entities, falling back to the date when an object is added to a Member Node (rÆ…rÇ}rÈ(hBXThe following series of scenarios demonstrate the behavior of the DataONE system when resolving a seriesId to a specific object. The behavior of resolution is to rely primarily on the obsoletes and obsoletedBy entities, falling back to the date when an object is added to a Member Node (hCjÂubj¹)rÉ}rÊ(hBX*:attr:`~Types.SystemMetadata.dateUploaded`rËhCjÂhIhJhKj½hM}rÌ(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyrÍhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKShY]rÎjâ)rÏ}rÐ(hBjËhM}rÑ(hO]hP]rÒ(jÊjÍXpy-attrrÓehQ]hR]hU]uhCjÉhY]rÔhdX dateUploadedrÕ…rÖ}r×(hBUhCjÏubahKjìubaubhdX!) to determine the newer version.rØ…rÙ}rÚ(hBX!) to determine the newer version.hCjÂubeubh˜)rÛ}rÜ(hBX&The following notation is used herein:rÝhChEhIhJhKh§hM}rÞ(hO]hP]hQ]hR]hU]uhWKYhXhhY]rßhdX&The following notation is used herein:rà…rá}râ(hBjÝhCjÛubaubcdocutils.nodes field_list rã)rä}rå(hBUhChEhIhJhKU field_listræhM}rç(hO]hP]hQ]hR]hU]uhWK[hXhhY]rè(cdocutils.nodes field ré)rê}rë(hBUhCjähIhJhKUfieldrìhM}rí(hO]hP]hQ]hR]hU]uhWK[hXhhY]rî(cdocutils.nodes field_name rï)rð}rñ(hBX|Pi|ròhCjêhIhJhKU field_nameróhM}rô(hO]hP]hQ]hR]hU]uhWKhY]rõcsphinx.ext.mathbase math rö)r÷}rø(hBUhCjðhINhKUmathrùhM}rú(UlatexXP_irûhR]hQ]hO]hP]hU]uhWNhY]ubaubcdocutils.nodes field_body rü)rý}rþ(hBX(Refers to a Persistent Identifier (PID) hM}rÿ(hO]hP]hQ]hR]hU]uhCjêhY]rh˜)r}r(hBX'Refers to a Persistent Identifier (PID)rhCjýhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWK[hY]rhdX'Refers to a Persistent Identifier (PID)r…r}r(hBjhCjubaubahKU field_bodyr ubeubjé)r }r (hBUhCjähIhJhKjìhM}r (hO]hP]hQ]hR]hU]uhWK]hXhhY]r (jï)r}r(hBX|Si|rhCj hIhJhKjóhM}r(hO]hP]hQ]hR]hU]uhWKhY]rjö)r}r(hBUhCjhINhKjùhM}r(UlatexXS_irhR]hQ]hO]hP]hU]uhWNhY]ubaubjü)r}r(hBX$Refers to a Series Identifier (SID) hM}r(hO]hP]hQ]hR]hU]uhCj hY]rh˜)r}r(hBX#Refers to a Series Identifier (SID)rhCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWK]hY]rhdX#Refers to a Series Identifier (SID)r …r!}r"(hBjhCjubaubahKj ubeubjé)r#}r$(hBUhCjähIhJhKjìhM}r%(hO]hP]hQ]hR]hU]uhWK_hXhhY]r&(jï)r'}r((hBX|ti|r)hCj#hIhJhKjóhM}r*(hO]hP]hQ]hR]hU]uhWKhY]r+jö)r,}r-(hBUhCj'hINhKjùhM}r.(UlatexXt_ir/hR]hQ]hO]hP]hU]uhWNhY]ubaubjü)r0}r1(hBXFThe value of :attr:`~Types.SystemMetadata.dateUploaded` for an object hM}r2(hO]hP]hQ]hR]hU]uhCj#hY]r3h˜)r4}r5(hBXEThe value of :attr:`~Types.SystemMetadata.dateUploaded` for an objecthCj0hIhJhKh§hM}r6(hO]hP]hQ]hR]hU]uhWK_hY]r7(hdX The value of r8…r9}r:(hBX The value of hCj4ubj¹)r;}r<(hBX*:attr:`~Types.SystemMetadata.dateUploaded`r=hCj4hIhJhKj½hM}r>(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyr?hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWK_hY]r@jâ)rA}rB(hBj=hM}rC(hO]hP]rD(jÊj?Xpy-attrrEehQ]hR]hU]uhCj;hY]rFhdX dateUploadedrG…rH}rI(hBUhCjAubahKjìubaubhdX for an objectrJ…rK}rL(hBX for an objecthCj4ubeubahKj ubeubjé)rM}rN(hBUhCjähIhJhKjìhM}rO(hO]hP]hQ]hR]hU]uhWKbhXhhY]rP(jï)rQ}rR(hBX |t1| < |t2|hCjMhIhJhKjóhM}rS(hO]hP]hQ]hR]hU]uhWKhY]rT(jö)rU}rV(hBUhCjQhINhKjùhM}rW(UlatexXt_1rXhR]hQ]hO]hP]hU]uhWNhY]ubhdX < rY…rZ}r[(hBX < hCjQubjö)r\}r](hBUhCjQhINhKjùhM}r^(UlatexXt_2r_hR]hQ]hO]hP]hU]uhWNhY]ubeubjü)r`}ra(hBX|t1| is older than |t2| hM}rb(hO]hP]hQ]hR]hU]uhCjMhY]rch˜)rd}re(hBX|t1| is older than |t2|hCj`hIhJhKh§hM}rf(hO]hP]hQ]hR]hU]uhWKbhY]rg(jö)rh}ri(hBUhCjdhINhKjùhM}rj(UlatexjXhR]hQ]hO]hP]hU]uhWNhY]ubhdX is older than rk…rl}rm(hBX is older than hCjdubjö)rn}ro(hBUhCjdhINhKjùhM}rp(Ulatexj_hR]hQ]hO]hP]hU]uhWNhY]ubeubahKj ubeubjé)rq}rr(hBUhCjähIhJhKjìhM}rs(hO]hP]hQ]hR]hU]uhWKdhXhhY]rt(jï)ru}rv(hBX|PiSjtk|rwhCjqhIhJhKjóhM}rx(hO]hP]hQ]hR]hU]uhWKhY]ryjö)rz}r{(hBUhCjuhINhKjùhM}r|(UlatexXP_i \binom{S_j}{t_k}r}hR]hQ]hO]hP]hU]uhWNhY]ubaubjü)r~}r(hBX»An object with :attr:`~Types.SystemMetadata.identifier` (PID) |Pi|, a :attr:`~v2_0.Types.SystemMetadata.seriesId` (SID) of |Sj|, and a :attr:`~Types.SystemMetadata.dateUploaded` of |tk|. hM}r€(hO]hP]hQ]hR]hU]uhCjqhY]rh˜)r‚}rƒ(hBXºAn object with :attr:`~Types.SystemMetadata.identifier` (PID) |Pi|, a :attr:`~v2_0.Types.SystemMetadata.seriesId` (SID) of |Sj|, and a :attr:`~Types.SystemMetadata.dateUploaded` of |tk|.hCj~hIhJhKh§hM}r„(hO]hP]hQ]hR]hU]uhWKdhY]r…(hdXAn object with r†…r‡}rˆ(hBXAn object with hCj‚ubj¹)r‰}rŠ(hBX(:attr:`~Types.SystemMetadata.identifier`r‹hCj‚hIhJhKj½hM}rŒ(UreftypeXattrj¿‰jÀXTypes.SystemMetadata.identifierU refdomainXpyrhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKdhY]rŽjâ)r}r(hBj‹hM}r‘(hO]hP]r’(jÊjXpy-attrr“ehQ]hR]hU]uhCj‰hY]r”hdX identifierr•…r–}r—(hBUhCjubahKjìubaubhdX (PID) r˜…r™}rš(hBX (PID) hCj‚ubjö)r›}rœ(hBUhCj‚hINhKjùhM}r(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX, a rž…rŸ}r (hBX, a hCj‚ubj¹)r¡}r¢(hBX+:attr:`~v2_0.Types.SystemMetadata.seriesId`r£hCj‚hIhJhKj½hM}r¤(UreftypeXattrj¿‰jÀX"v2_0.Types.SystemMetadata.seriesIdU refdomainXpyr¥hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKdhY]r¦jâ)r§}r¨(hBj£hM}r©(hO]hP]rª(jÊj¥Xpy-attrr«ehQ]hR]hU]uhCj¡hY]r¬hdXseriesIdr­…r®}r¯(hBUhCj§ubahKjìubaubhdX (SID) of r°…r±}r²(hBX (SID) of hCj‚ubjö)r³}r´(hBUhCj‚hINhKjùhM}rµ(UlatexXS_jr¶hR]hQ]hO]hP]hU]uhWNhY]ubhdX, and a r·…r¸}r¹(hBX, and a hCj‚ubj¹)rº}r»(hBX*:attr:`~Types.SystemMetadata.dateUploaded`r¼hCj‚hIhJhKj½hM}r½(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyr¾hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKdhY]r¿jâ)rÀ}rÁ(hBj¼hM}rÂ(hO]hP]rÃ(jÊj¾Xpy-attrrÄehQ]hR]hU]uhCjºhY]rÅhdX dateUploadedrÆ…rÇ}rÈ(hBUhCjÀubahKjìubaubhdX of rÉ…rÊ}rË(hBX of hCj‚ubjö)rÌ}rÍ(hBUhCj‚hINhKjùhM}rÎ(UlatexXt_krÏhR]hQ]hO]hP]hU]uhWNhY]ubhdX.…rÐ}rÑ(hBX.hCj‚ubeubahKj ubeubjé)rÒ}rÓ(hBUhCjähIhJhKjìhM}rÔ(hO]hP]hQ]hR]hU]uhWKjhXhhY]rÕ(jï)rÖ}r×(hBX |Pi| |b| |Pj|hCjÒhIhJhKjóhM}rØ(hO]hP]hQ]hR]hU]uhWKhY]rÙ(jö)rÚ}rÛ(hBUhCjÖhINhKjùhM}rÜ(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX …rÝ}rÞ(hBX hCjÖubjö)rß}rà(hBUhCjÖhINhKjùhM}rá(UlatexX \rightarrowrâhR]hQ]hO]hP]hU]uhWNhY]ubhdX …rã}rä(hBX hCjÖubjö)rå}ræ(hBUhCjÖhINhKjùhM}rç(UlatexXP_jrèhR]hQ]hO]hP]hU]uhWNhY]ubeubjü)ré}rê(hBXY|Pi| has an :attr:`~Types.SystemMetadata.obsoletedBy` entry that contains the value |Pj| hM}rë(hO]hP]hQ]hR]hU]uhCjÒhY]rìh˜)rí}rî(hBXX|Pi| has an :attr:`~Types.SystemMetadata.obsoletedBy` entry that contains the value |Pj|hCjéhIhJhKh§hM}rï(hO]hP]hQ]hR]hU]uhWKjhY]rð(jö)rñ}rò(hBUhCjíhINhKjùhM}ró(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX has an rô…rõ}rö(hBX has an hCjíubj¹)r÷}rø(hBX):attr:`~Types.SystemMetadata.obsoletedBy`rùhCjíhIhJhKj½hM}rú(UreftypeXattrj¿‰jÀX Types.SystemMetadata.obsoletedByU refdomainXpyrûhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKjhY]rüjâ)rý}rþ(hBjùhM}rÿ(hO]hP]r(jÊjûXpy-attrrehQ]hR]hU]uhCj÷hY]rhdX obsoletedByr…r}r(hBUhCjýubahKjìubaubhdX entry that contains the value r…r}r(hBX entry that contains the value hCjíubjö)r }r (hBUhCjíhINhKjùhM}r (UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubeubahKj ubeubjé)r }r (hBUhCjähIhJhKjìhM}r(hO]hP]hQ]hR]hU]uhWKmhXhhY]r(jï)r}r(hBX |Pi| |o| |Pj|hCj hIhJhKjóhM}r(hO]hP]hQ]hR]hU]uhWKhY]r(jö)r}r(hBUhCjhINhKjùhM}r(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX …r}r(hBX hCjubjö)r}r(hBUhCjhINhKjùhM}r(UlatexX \leftarrowrhR]hQ]hO]hP]hU]uhWNhY]ubhdX …r}r(hBX hCjubjö)r}r (hBUhCjhINhKjùhM}r!(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubeubjü)r"}r#(hBXW|Pj| has an :attr:`~Types.SystemMetadata.obsoletes` entry that contains the value |Pi| hM}r$(hO]hP]hQ]hR]hU]uhCj hY]r%h˜)r&}r'(hBXV|Pj| has an :attr:`~Types.SystemMetadata.obsoletes` entry that contains the value |Pi|hCj"hIhJhKh§hM}r((hO]hP]hQ]hR]hU]uhWKmhY]r)(jö)r*}r+(hBUhCj&hINhKjùhM}r,(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubhdX has an r-…r.}r/(hBX has an hCj&ubj¹)r0}r1(hBX':attr:`~Types.SystemMetadata.obsoletes`r2hCj&hIhJhKj½hM}r3(UreftypeXattrj¿‰jÀXTypes.SystemMetadata.obsoletesU refdomainXpyr4hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKmhY]r5jâ)r6}r7(hBj2hM}r8(hO]hP]r9(jÊj4Xpy-attrr:ehQ]hR]hU]uhCj0hY]r;hdX obsoletesr<…r=}r>(hBUhCj6ubahKjìubaubhdX entry that contains the value r?…r@}rA(hBX entry that contains the value hCj&ubjö)rB}rC(hBUhCj&hINhKjùhM}rD(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubeubahKj ubeubjé)rE}rF(hBUhCjähIhJhKjìhM}rG(hO]hP]hQ]hR]hU]uhWKphXhhY]rH(jï)rI}rJ(hBX |Pi| |O| |Pj|hCjEhIhJhKjóhM}rK(hO]hP]hQ]hR]hU]uhWKhY]rL(jö)rM}rN(hBUhCjIhINhKjùhM}rO(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX …rP}rQ(hBX hCjIubjö)rR}rS(hBUhCjIhINhKjùhM}rT(UlatexX\leftrightarrowsrUhR]hQ]hO]hP]hU]uhWNhY]ubhdX …rV}rW(hBX hCjIubjö)rX}rY(hBUhCjIhINhKjùhM}rZ(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubeubjü)r[}r\(hBXµ|Pi| has an :attr:`~Types.SystemMetadata.obsoletedBy` entry that contains the value |Pj| and |Pj| has an :attr:`~Types.SystemMetadata.obsoletes` entry that contains the value |Pi|. hM}r](hO]hP]hQ]hR]hU]uhCjEhY]r^h˜)r_}r`(hBX´|Pi| has an :attr:`~Types.SystemMetadata.obsoletedBy` entry that contains the value |Pj| and |Pj| has an :attr:`~Types.SystemMetadata.obsoletes` entry that contains the value |Pi|.hCj[hIhJhKh§hM}ra(hO]hP]hQ]hR]hU]uhWKphY]rb(jö)rc}rd(hBUhCj_hINhKjùhM}re(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX has an rf…rg}rh(hBX has an hCj_ubj¹)ri}rj(hBX):attr:`~Types.SystemMetadata.obsoletedBy`rkhCj_hIhJhKj½hM}rl(UreftypeXattrj¿‰jÀX Types.SystemMetadata.obsoletedByU refdomainXpyrmhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKphY]rnjâ)ro}rp(hBjkhM}rq(hO]hP]rr(jÊjmXpy-attrrsehQ]hR]hU]uhCjihY]rthdX obsoletedByru…rv}rw(hBUhCjoubahKjìubaubhdX entry that contains the value rx…ry}rz(hBX entry that contains the value hCj_ubjö)r{}r|(hBUhCj_hINhKjùhM}r}(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubhdX and r~…r}r€(hBX and hCj_ubjö)r}r‚(hBUhCj_hINhKjùhM}rƒ(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubhdX has an r„…r…}r†(hBX has an hCj_ubj¹)r‡}rˆ(hBX':attr:`~Types.SystemMetadata.obsoletes`r‰hCj_hIhJhKj½hM}rŠ(UreftypeXattrj¿‰jÀXTypes.SystemMetadata.obsoletesU refdomainXpyr‹hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKphY]rŒjâ)r}rŽ(hBj‰hM}r(hO]hP]r(jÊj‹Xpy-attrr‘ehQ]hR]hU]uhCj‡hY]r’hdX obsoletesr“…r”}r•(hBUhCjubahKjìubaubhdX entry that contains the value r–…r—}r˜(hBX entry that contains the value hCj_ubjö)r™}rš(hBUhCj_hINhKjùhM}r›(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX.…rœ}r(hBX.hCj_ubeubahKj ubeubjé)rž}rŸ(hBUhCjähIhJhKjìhM}r (hO]hP]hQ]hR]hU]uhWKvhXhhY]r¡(jï)r¢}r£(hBX |Pi| |x| |Pj|hCjžhIhJhKjóhM}r¤(hO]hP]hQ]hR]hU]uhWKhY]r¥(jö)r¦}r§(hBUhCj¢hINhKjùhM}r¨(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX …r©}rª(hBX hCj¢ubjö)r«}r¬(hBUhCj¢hINhKjùhM}r­(UlatexX\squarer®hR]hQ]hO]hP]hU]uhWNhY]ubhdX …r¯}r°(hBX hCj¢ubjö)r±}r²(hBUhCj¢hINhKjùhM}r³(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubeubjü)r´}rµ(hBXwNeither :attr:`~Types.SystemMetadata.obsoletedBy` nor :attr:`~Types.SystemMetadata.obsoletes` is set by |Pi| or |Pj|. hM}r¶(hO]hP]hQ]hR]hU]uhCjžhY]r·h˜)r¸}r¹(hBXvNeither :attr:`~Types.SystemMetadata.obsoletedBy` nor :attr:`~Types.SystemMetadata.obsoletes` is set by |Pi| or |Pj|.hCj´hIhJhKh§hM}rº(hO]hP]hQ]hR]hU]uhWKvhY]r»(hdXNeither r¼…r½}r¾(hBXNeither hCj¸ubj¹)r¿}rÀ(hBX):attr:`~Types.SystemMetadata.obsoletedBy`rÁhCj¸hIhJhKj½hM}rÂ(UreftypeXattrj¿‰jÀX Types.SystemMetadata.obsoletedByU refdomainXpyrÃhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKvhY]rÄjâ)rÅ}rÆ(hBjÁhM}rÇ(hO]hP]rÈ(jÊjÃXpy-attrrÉehQ]hR]hU]uhCj¿hY]rÊhdX obsoletedByrË…rÌ}rÍ(hBUhCjÅubahKjìubaubhdX nor rÎ…rÏ}rÐ(hBX nor hCj¸ubj¹)rÑ}rÒ(hBX':attr:`~Types.SystemMetadata.obsoletes`rÓhCj¸hIhJhKj½hM}rÔ(UreftypeXattrj¿‰jÀXTypes.SystemMetadata.obsoletesU refdomainXpyrÕhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKvhY]rÖjâ)r×}rØ(hBjÓhM}rÙ(hO]hP]rÚ(jÊjÕXpy-attrrÛehQ]hR]hU]uhCjÑhY]rÜhdX obsoletesrÝ…rÞ}rß(hBUhCj×ubahKjìubaubhdX is set by rà…rá}râ(hBX is set by hCj¸ubjö)rã}rä(hBUhCj¸hINhKjùhM}rå(UlatexjûhR]hQ]hO]hP]hU]uhWNhY]ubhdX or ræ…rç}rè(hBX or hCj¸ubjö)ré}rê(hBUhCj¸hINhKjùhM}rë(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubhdX.…rì}rí(hBX.hCj¸ubeubahKj ubeubjé)rî}rï(hBUhCjähIhJhKjìhM}rð(hO]hP]hQ]hR]hU]uhWKzhXhhY]rñ(jï)rò}ró(hBX``??``rôhCjîhIhJhKjóhM}rõ(hO]hP]hQ]hR]hU]uhWKhY]röjâ)r÷}rø(hBjôhM}rù(hO]hP]hQ]hR]hU]uhCjòhY]rúhdX??rû…rü}rý(hBUhCj÷ubahKjìubaubjü)rþ}rÿ(hBX7Object was not synchronized, and so unknown to DataONE hM}r(hO]hP]hQ]hR]hU]uhCjîhY]rh˜)r}r(hBX6Object was not synchronized, and so unknown to DataONErhCjþhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWKzhY]rhdX6Object was not synchronized, and so unknown to DataONEr…r}r (hBjhCjubaubahKj ubeubjé)r }r (hBUhCjähIhJhKjìhM}r (hO]hP]hQ]hR]hU]uhWK|hXhhY]r (jï)r}r(hBX|rSi|rhCj hIhJhKjóhM}r(hO]hP]hQ]hR]hU]uhWKhY]rjö)r}r(hBUhCjhINhKjùhM}r(UlatexXresolve(S_i) \Rrightarrow P_jrhR]hQ]hO]hP]hU]uhWNhY]ubaubjü)r}r(hBX(Resolving SID |Si| results in PID |Pj| hM}r(hO]hP]hQ]hR]hU]uhCj hY]rh˜)r}r(hBX&Resolving SID |Si| results in PID |Pj|hCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWK|hY]r(hdXResolving SID r…r }r!(hBXResolving SID hCjubjö)r"}r#(hBUhCjhINhKjùhM}r$(UlatexjhR]hQ]hO]hP]hU]uhWNhY]ubhdX results in PID r%…r&}r'(hBX results in PID hCjubjö)r(}r)(hBUhCjhINhKjùhM}r*(UlatexjèhR]hQ]hO]hP]hU]uhWNhY]ubeubahKj ubeubeubh?)r+}r,(hBX.. |Pi| replace:: :math:`P_i`hChEhIhJhKUsubstitution_definitionr-hM}r.(hO]hP]hQ]hR]hU]r/XPir0auhWKhXhhY]r1jö)r2}r3(hBUhM}r4(UlatexjûhR]hQ]hO]hP]hU]uhCj+hY]hKjùubaubh?)r5}r6(hBX.. |Pj| replace:: :math:`P_j`hChEhIhJhKj-hM}r7(hO]hP]hQ]hR]hU]r8XPjr9auhWK€hXhhY]r:jö)r;}r<(hBUhM}r=(UlatexjèhR]hQ]hO]hP]hU]uhCj5hY]hKjùubaubh?)r>}r?(hBX.. |P1| replace:: :math:`P_1`hChEhIhJhKj-hM}r@(hO]hP]hQ]hR]hU]rAXP1rBauhWKhXhhY]rCjö)rD}rE(hBUhM}rF(UlatexXP_1rGhR]hQ]hO]hP]hU]uhCj>hY]hKjùubaubh?)rH}rI(hBX.. |P2| replace:: :math:`P_2`hChEhIhJhKj-hM}rJ(hO]hP]hQ]hR]hU]rKXP2rLauhWK‚hXhhY]rMjö)rN}rO(hBUhM}rP(UlatexXP_2rQhR]hQ]hO]hP]hU]uhCjHhY]hKjùubaubh?)rR}rS(hBX.. |P3| replace:: :math:`P_3`hChEhIhJhKj-hM}rT(hO]hP]hQ]hR]hU]rUXP3rVauhWKƒhXhhY]rWjö)rX}rY(hBUhM}rZ(UlatexXP_3r[hR]hQ]hO]hP]hU]uhCjRhY]hKjùubaubh?)r\}r](hBX.. |P4| replace:: :math:`P_4`hChEhIhJhKj-hM}r^(hO]hP]hQ]hR]hU]r_XP4r`auhWK„hXhhY]rajö)rb}rc(hBUhM}rd(UlatexXP_4rehR]hQ]hO]hP]hU]uhCj\hY]hKjùubaubh?)rf}rg(hBX.. |Si| replace:: :math:`S_i`hChEhIhJhKj-hM}rh(hO]hP]hQ]hR]hU]riXSirjauhWK…hXhhY]rkjö)rl}rm(hBUhM}rn(UlatexjhR]hQ]hO]hP]hU]uhCjfhY]hKjùubaubh?)ro}rp(hBX.. |Sj| replace:: :math:`S_j`hChEhIhJhKj-hM}rq(hO]hP]hQ]hR]hU]rrXSjrsauhWK†hXhhY]rtjö)ru}rv(hBUhM}rw(Ulatexj¶hR]hQ]hO]hP]hU]uhCjohY]hKjùubaubh?)rx}ry(hBX.. |S1| replace:: :math:`S_1`hChEhIhJhKj-hM}rz(hO]hP]hQ]hR]hU]r{XS1r|auhWK‡hXhhY]r}jö)r~}r(hBUhM}r€(UlatexXS_1rhR]hQ]hO]hP]hU]uhCjxhY]hKjùubaubh@h?)r‚}rƒ(hBX.. |ti| replace:: :math:`t_i`hChEhIhJhKj-hM}r„(hO]hP]hQ]hR]hU]r…Xtir†auhWK‰hXhhY]r‡jö)rˆ}r‰(hBUhM}rŠ(Ulatexj/hR]hQ]hO]hP]hU]uhCj‚hY]hKjùubaubh?)r‹}rŒ(hBX.. |tk| replace:: :math:`t_k`hChEhIhJhKj-hM}r(hO]hP]hQ]hR]hU]rŽXtkrauhWKŠhXhhY]rjö)r‘}r’(hBUhM}r“(UlatexjÏhR]hQ]hO]hP]hU]uhCj‹hY]hKjùubaubh?)r”}r•(hBX.. |t1| replace:: :math:`t_1`hChEhIhJhKj-hM}r–(hO]hP]hQ]hR]hU]r—Xt1r˜auhWK‹hXhhY]r™jö)rš}r›(hBUhM}rœ(UlatexjXhR]hQ]hO]hP]hU]uhCj”hY]hKjùubaubh?)r}rž(hBX.. |t2| replace:: :math:`t_2`hChEhIhJhKj-hM}rŸ(hO]hP]hQ]hR]hU]r Xt2r¡auhWKŒhXhhY]r¢jö)r£}r¤(hBUhM}r¥(Ulatexj_hR]hQ]hO]hP]hU]uhCjhY]hKjùubaubh?)r¦}r§(hBX.. |t3| replace:: :math:`t_3`hChEhIhJhKj-hM}r¨(hO]hP]hQ]hR]hU]r©Xt3rªauhWKhXhhY]r«jö)r¬}r­(hBUhM}r®(UlatexXt_3hR]hQ]hO]hP]hU]uhCj¦hY]hKjùubaubh?)r¯}r°(hBX.. |_| unicode:: 0xA0 :trim:hChEhIhJhKj-hM}r±(Ultrimr²KhR]hQ]hO]hP]hU]r³X_aUrtrimr´KuhWKŽhXhhY]rµhdX …r¶}r·(hBUhCj¯ubaubh?)r¸}r¹(hBX2.. |PiSjtk| replace:: :math:`P_i \binom{S_j}{t_k}`hChEhIhJhKj-hM}rº(hO]hP]hQ]hR]hU]r»XPiSjtkr¼auhWKhXhhY]r½jö)r¾}r¿(hBUhM}rÀ(Ulatexj}hR]hQ]hO]hP]hU]uhCj¸hY]hKjùubaubh?)rÁ}rÂ(hBX8.. |rSi| replace:: :math:`resolve(S_i) \Rrightarrow P_j`hChEhIhJhKj-hM}rÃ(hO]hP]hQ]hR]hU]rÄXrSirÅauhWK‘hXhhY]rÆjö)rÇ}rÈ(hBUhM}rÉ(UlatexjhR]hQ]hO]hP]hU]uhCjÁhY]hKjùubaubh?)rÊ}rË(hBX#.. |o| replace:: :math:`\leftarrow`hChEhIhJhKj-hM}rÌ(hO]hP]hQ]hR]hU]rÍXoauhWK’hXhhY]rÎjö)rÏ}rÐ(hBUhM}rÑ(UlatexjhR]hQ]hO]hP]hU]uhCjÊhY]hKjùubaubh?)rÒ}rÓ(hBX$.. |b| replace:: :math:`\rightarrow`hChEhIhJhKj-hM}rÔ(hO]hP]hQ]hR]hU]rÕXbauhWK“hXhhY]rÖjö)r×}rØ(hBUhM}rÙ(UlatexjâhR]hQ]hO]hP]hU]uhCjÒhY]hKjùubaubh?)rÚ}rÛ(hBX).. |O| replace:: :math:`\leftrightarrows`hChEhIhJhKj-hM}rÜ(hO]hP]hQ]hR]hU]rÝXOauhWK”hXhhY]rÞjö)rß}rà(hBUhM}rá(UlatexjUhR]hQ]hO]hP]hU]uhCjÚhY]hKjùubaubh?)râ}rã(hBX#.. |x| replace:: :math:`\square` hChEhIhJhKj-hM}rä(hO]hP]hQ]hR]hU]råXxauhWK•hXhhY]ræjö)rç}rè(hBUhM}ré(Ulatexj®hR]hQ]hO]hP]hU]uhCjâhY]hKjùubaubhD)rê}rë(hBUhChEhIhJhKhLhM}rì(hO]hP]hQ]hR]ríhäahU]rîhauhWKšhXhhY]rï(h[)rð}rñ(hBhéhCjêhIhJhKh_hM}rò(hR]hQ]hO]hP]hU]hahãuhWKšhXhhY]róhdXCase 1rô…rõ}rö(hBhéhCjðubaubhs)r÷}rø(hBUhCjêhIhJhKhvhM}rù(hR]hQ]hO]hP]hU]haX equation-c1rúuhWNhXhhY]ubcsphinx.ext.mathbase displaymath rû)rü}rý(hBUhCjêhIhJh{}hKU displaymathrþhM}rÿ(UlatexrXlP_1\binom{S_1}{t_1} & \leftrightarrows P_2\binom{S_1}{t_2} \\ t_1 & < t_2 \\ resolve(S_1) & \Rrightarrow P_2Unowrapr‰UnumberrKhR]rjúahQ]hO]hP]hU]UdocnamerjÃUlabelrcdocutils.nodes reprunicode rXc1r…r}r buhWKhXhhƒ}r júj÷shY]ubh˜)r }r (hBX\A set of objects :math:`O = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjêhIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWK¤hXhhY]r(hdXA set of objects r…r}r(hBXA set of objects hCj ubjö)r}r(hBUhM}r(UlatexXO = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCj hY]hKjùubhdX" have the same series identifier, r…r}r(hBX" have the same series identifier, hCj ubjö)r}r(hBUhCj hINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r(hBX.hCj ubeubh˜)r}r(hBX¶All objects in :math:`O` are participants in an obsolescence chain since |P2| :attr:`~Types.SystemMetadata.obsoletes` |P1| and |P1| is :attr:`~Types.SystemMetadata.obsoletedBy` |P2|.hCjêhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWK§hXhhY]r (hdXAll objects in r!…r"}r#(hBXAll objects in hCjubjö)r$}r%(hBUhM}r&(UlatexXOhR]hQ]hO]hP]hU]uhCjhY]hKjùubhdX1 are participants in an obsolescence chain since r'…r(}r)(hBX1 are participants in an obsolescence chain since hCjubjö)r*}r+(hBUhCjhINhKjùhM}r,(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX …r-}r.(hBX hCjubj¹)r/}r0(hBX':attr:`~Types.SystemMetadata.obsoletes`r1hCjhIhJhKj½hM}r2(UreftypeXattrj¿‰jÀXTypes.SystemMetadata.obsoletesU refdomainXpyr3hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWK§hY]r4jâ)r5}r6(hBj1hM}r7(hO]hP]r8(jÊj3Xpy-attrr9ehQ]hR]hU]uhCj/hY]r:hdX obsoletesr;…r<}r=(hBUhCj5ubahKjìubaubhdX …r>}r?(hBX hCjubjö)r@}rA(hBUhCjhINhKjùhM}rB(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX and rC…rD}rE(hBX and hCjubjö)rF}rG(hBUhCjhINhKjùhM}rH(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX is rI…rJ}rK(hBX is hCjubj¹)rL}rM(hBX):attr:`~Types.SystemMetadata.obsoletedBy`rNhCjhIhJhKj½hM}rO(UreftypeXattrj¿‰jÀX Types.SystemMetadata.obsoletedByU refdomainXpyrPhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWK§hY]rQjâ)rR}rS(hBjNhM}rT(hO]hP]rU(jÊjPXpy-attrrVehQ]hR]hU]uhCjLhY]rWhdX obsoletedByrX…rY}rZ(hBUhCjRubahKjìubaubhdX …r[}r\(hBX hCjubjö)r]}r^(hBUhCjhINhKjùhM}r_(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r`}ra(hBX.hCjubeubh˜)rb}rc(hBXnAll elements of the obsolescence chain :math:`P_1 \leftrightarrows P_2` have the same series identifier, |S1|.hCjêhIhJhKh§hM}rd(hO]hP]hQ]hR]hU]uhWK«hXhhY]re(hdX'All elements of the obsolescence chain rf…rg}rh(hBX'All elements of the obsolescence chain hCjbubjö)ri}rj(hBUhM}rk(UlatexXP_1 \leftrightarrows P_2hR]hQ]hO]hP]hU]uhCjbhY]hKjùubhdX" have the same series identifier, rl…rm}rn(hBX" have the same series identifier, hCjbubjö)ro}rp(hBUhCjbhINhKjùhM}rq(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rr}rs(hBX.hCjbubeubh˜)rt}ru(hBXRThe :attr:`~Types.SystemMetadata.dateUploaded` of |P1| is older than that of |P2|.hCjêhIhJhKh§hM}rv(hO]hP]hQ]hR]hU]uhWK®hXhhY]rw(hdXThe rx…ry}rz(hBXThe hCjtubj¹)r{}r|(hBX*:attr:`~Types.SystemMetadata.dateUploaded`r}hCjthIhJhKj½hM}r~(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyrhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWK®hY]r€jâ)r}r‚(hBj}hM}rƒ(hO]hP]r„(jÊjXpy-attrr…ehQ]hR]hU]uhCj{hY]r†hdX dateUploadedr‡…rˆ}r‰(hBUhCjubahKjìubaubhdX of rŠ…r‹}rŒ(hBX of hCjtubjö)r}rŽ(hBUhCjthINhKjùhM}r(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX is older than that of r…r‘}r’(hBX is older than that of hCjtubjö)r“}r”(hBUhCjthINhKjùhM}r•(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r–}r—(hBX.hCjtubeubh˜)r˜}r™(hBXeThis is a perfect obsolescence chain and resolving |S1| will result in the object identified by |P2|.hCjêhIhJhKh§hM}rš(hO]hP]hQ]hR]hU]uhWK±hXhhY]r›(hdX3This is a perfect obsolescence chain and resolving rœ…r}rž(hBX3This is a perfect obsolescence chain and resolving hCj˜ubjö)rŸ}r (hBUhCj˜hINhKjùhM}r¡(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX) will result in the object identified by r¢…r£}r¤(hBX) will result in the object identified by hCj˜ubjö)r¥}r¦(hBUhCj˜hINhKjùhM}r§(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r¨}r©(hBX.hCj˜ubeubeubhD)rª}r«(hBUhChEhIhJhKhLhM}r¬(hO]hP]hQ]hR]r­h÷ahU]r®hauhWK¶hXhhY]r¯(h[)r°}r±(hBhühCjªhIhJhKh_hM}r²(hR]hQ]hO]hP]hU]hahöuhWK¶hXhhY]r³hdXCase 2r´…rµ}r¶(hBhühCj°ubaubhs)r·}r¸(hBUhCjªhIhJhKhvhM}r¹(hR]hQ]hO]hP]hU]haX equation-c2rºuhWNhXhhY]ubjû)r»}r¼(hBUhCjªhIhJh{}hKjþhM}r½(jXhP_1\binom{S_1}{t_1}\; & \square \; P_2\binom{S_1}{t_2} \\ t_1 & < t_2 \\ resolve(S_1) & \Rrightarrow P_2j‰jKhR]r¾jºahQ]hO]hP]hU]jjÃjjXc2r¿…rÀ}rÁbuhWK¸hXhhƒ}rÂjºj·shY]ubh˜)rÃ}rÄ(hBX\A set of objects :math:`O = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjªhIhJhKh§hM}rÅ(hO]hP]hQ]hR]hU]uhWK¿hXhhY]rÆ(hdXA set of objects rÇ…rÈ}rÉ(hBXA set of objects hCjÃubjö)rÊ}rË(hBUhM}rÌ(UlatexXO = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCjÃhY]hKjùubhdX" have the same series identifier, rÍ…rÎ}rÏ(hBX" have the same series identifier, hCjÃubjö)rÐ}rÑ(hBUhCjÃhINhKjùhM}rÒ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÓ}rÔ(hBX.hCjÃubeubh˜)rÕ}rÖ(hBX<No obsolescence information associates objects in :math:`O`.r×hCjªhIhJhKh§hM}rØ(hO]hP]hQ]hR]hU]uhWKÂhXhhY]rÙ(hdX2No obsolescence information associates objects in rÚ…rÛ}rÜ(hBX2No obsolescence information associates objects in hCjÕubjö)rÝ}rÞ(hBUhM}rß(UlatexXOhR]hQ]hO]hP]hU]uhCjÕhY]hKjùubhdX.…rà}rá(hBX.hCjÕubeubh˜)râ}rã(hBXRThe :attr:`~Types.SystemMetadata.dateUploaded` of |P1| is older than that of |P2|.hCjªhIhJhKh§hM}rä(hO]hP]hQ]hR]hU]uhWKÄhXhhY]rå(hdXThe ræ…rç}rè(hBXThe hCjâubj¹)ré}rê(hBX*:attr:`~Types.SystemMetadata.dateUploaded`rëhCjâhIhJhKj½hM}rì(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyríhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKÄhY]rîjâ)rï}rð(hBjëhM}rñ(hO]hP]rò(jÊjíXpy-attrróehQ]hR]hU]uhCjéhY]rôhdX dateUploadedrõ…rö}r÷(hBUhCjïubahKjìubaubhdX of rø…rù}rú(hBX of hCjâubjö)rû}rü(hBUhCjâhINhKjùhM}rý(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX is older than that of rþ…rÿ}r(hBX is older than that of hCjâubjö)r}r(hBUhCjâhINhKjùhM}r(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r(hBX.hCjâubeubh˜)r}r(hBX†No obsolescence assertions are made, so resolution is inferred by the most recent value of :attr:`~Types.SystemMetadata.dateUploaded`.hCjªhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWKÇhXhhY]r (hdX[No obsolescence assertions are made, so resolution is inferred by the most recent value of r …r }r (hBX[No obsolescence assertions are made, so resolution is inferred by the most recent value of hCjubj¹)r }r(hBX*:attr:`~Types.SystemMetadata.dateUploaded`rhCjhIhJhKj½hM}r(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyrhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKÇhY]rjâ)r}r(hBjhM}r(hO]hP]r(jÊjXpy-attrrehQ]hR]hU]uhCj hY]rhdX dateUploadedr…r}r(hBUhCjubahKjìubaubhdX.…r}r(hBX.hCjubeubeubhD)r}r(hBUhChEhIhJhKhLhM}r (hO]hP]hQ]hR]r!j ahU]r"hauhWKÌhXhhY]r#(h[)r$}r%(hBjhCjhIhJhKh_hM}r&(hR]hQ]hO]hP]hU]haj uhWKÌhXhhY]r'hdXCase 3r(…r)}r*(hBjhCj$ubaubhs)r+}r,(hBUhCjhIhJhKhvhM}r-(hR]hQ]hO]hP]hU]haX equation-c3r.uhWNhXhhY]ubjû)r/}r0(hBUhCjhIhJh{}hKjþhM}r1(jXkP_1\binom{S_1}{t_1}\; & \leftarrow \; P_2\binom{S_1}{t_2} \\ t_1 & < t_2 \\ resolve(S_1) & \Rrightarrow P_2j‰jKhR]r2j.ahQ]hO]hP]hU]jjÃjjXc3r3…r4}r5buhWKÎhXhhƒ}r6j.j+shY]ubh˜)r7}r8(hBX\A set of objects :math:`O = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjhIhJhKh§hM}r9(hO]hP]hQ]hR]hU]uhWKÕhXhhY]r:(hdXA set of objects r;…r<}r=(hBXA set of objects hCj7ubjö)r>}r?(hBUhM}r@(UlatexXO = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCj7hY]hKjùubhdX" have the same series identifier, rA…rB}rC(hBX" have the same series identifier, hCj7ubjö)rD}rE(hBUhCj7hINhKjùhM}rF(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rG}rH(hBX.hCj7ubeubh˜)rI}rJ(hBXÑAll objects in :math:`O` are participants in an obsolescence chain since |P2| :attr:`~Types.SystemMetadata.obsoletes` |P1| even though |P1| does not assert it is :attr:`~Types.SystemMetadata.obsoletedBy` |P2|.hCjhIhJhKh§hM}rK(hO]hP]hQ]hR]hU]uhWKØhXhhY]rL(hdXAll objects in rM…rN}rO(hBXAll objects in hCjIubjö)rP}rQ(hBUhM}rR(UlatexXOhR]hQ]hO]hP]hU]uhCjIhY]hKjùubhdX1 are participants in an obsolescence chain since rS…rT}rU(hBX1 are participants in an obsolescence chain since hCjIubjö)rV}rW(hBUhCjIhINhKjùhM}rX(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX …rY}rZ(hBX hCjIubj¹)r[}r\(hBX':attr:`~Types.SystemMetadata.obsoletes`r]hCjIhIhJhKj½hM}r^(UreftypeXattrj¿‰jÀXTypes.SystemMetadata.obsoletesU refdomainXpyr_hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKØhY]r`jâ)ra}rb(hBj]hM}rc(hO]hP]rd(jÊj_Xpy-attrreehQ]hR]hU]uhCj[hY]rfhdX obsoletesrg…rh}ri(hBUhCjaubahKjìubaubhdX …rj}rk(hBX hCjIubjö)rl}rm(hBUhCjIhINhKjùhM}rn(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX even though ro…rp}rq(hBX even though hCjIubjö)rr}rs(hBUhCjIhINhKjùhM}rt(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX does not assert it is ru…rv}rw(hBX does not assert it is hCjIubj¹)rx}ry(hBX):attr:`~Types.SystemMetadata.obsoletedBy`rzhCjIhIhJhKj½hM}r{(UreftypeXattrj¿‰jÀX Types.SystemMetadata.obsoletedByU refdomainXpyr|hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKØhY]r}jâ)r~}r(hBjzhM}r€(hO]hP]r(jÊj|Xpy-attrr‚ehQ]hR]hU]uhCjxhY]rƒhdX obsoletedByr„…r…}r†(hBUhCj~ubahKjìubaubhdX …r‡}rˆ(hBX hCjIubjö)r‰}rŠ(hBUhCjIhINhKjùhM}r‹(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rŒ}r(hBX.hCjIubeubh˜)rŽ}r(hBXhAll elements of the obsolescence chain :math:`P_1 \leftarrow P_2` have the same series identifier, |S1|.hCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWKÜhXhhY]r‘(hdX'All elements of the obsolescence chain r’…r“}r”(hBX'All elements of the obsolescence chain hCjŽubjö)r•}r–(hBUhM}r—(UlatexXP_1 \leftarrow P_2hR]hQ]hO]hP]hU]uhCjŽhY]hKjùubhdX" have the same series identifier, r˜…r™}rš(hBX" have the same series identifier, hCjŽubjö)r›}rœ(hBUhCjŽhINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rž}rŸ(hBX.hCjŽubeubh˜)r }r¡(hBXRThe :attr:`~Types.SystemMetadata.dateUploaded` of |P1| is older than that of |P2|.hCjhIhJhKh§hM}r¢(hO]hP]hQ]hR]hU]uhWKßhXhhY]r£(hdXThe r¤…r¥}r¦(hBXThe hCj ubj¹)r§}r¨(hBX*:attr:`~Types.SystemMetadata.dateUploaded`r©hCj hIhJhKj½hM}rª(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyr«hR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWKßhY]r¬jâ)r­}r®(hBj©hM}r¯(hO]hP]r°(jÊj«Xpy-attrr±ehQ]hR]hU]uhCj§hY]r²hdX dateUploadedr³…r´}rµ(hBUhCj­ubahKjìubaubhdX of r¶…r·}r¸(hBX of hCj ubjö)r¹}rº(hBUhCj hINhKjùhM}r»(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX is older than that of r¼…r½}r¾(hBX is older than that of hCj ubjö)r¿}rÀ(hBUhCj hINhKjùhM}rÁ(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÂ}rÃ(hBX.hCj ubeubh˜)rÄ}rÅ(hBXuThis is a damaged, but consistent obsolescence chain and resolving |S1| will result in the object identified by |P2|.hCjhIhJhKh§hM}rÆ(hO]hP]hQ]hR]hU]uhWKâhXhhY]rÇ(hdXCThis is a damaged, but consistent obsolescence chain and resolving rÈ…rÉ}rÊ(hBXCThis is a damaged, but consistent obsolescence chain and resolving hCjÄubjö)rË}rÌ(hBUhCjÄhINhKjùhM}rÍ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX) will result in the object identified by rÎ…rÏ}rÐ(hBX) will result in the object identified by hCjÄubjö)rÑ}rÒ(hBUhCjÄhINhKjùhM}rÓ(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÔ}rÕ(hBX.hCjÄubeubeubhD)rÖ}r×(hBUhChEhIhJhKhLhM}rØ(hO]hP]hQ]hR]rÙjahU]rÚhauhWKçhXhhY]rÛ(h[)rÜ}rÝ(hBj"hCjÖhIhJhKh_hM}rÞ(hR]hQ]hO]hP]hU]hajuhWKçhXhhY]rßhdXCase 4rà…rá}râ(hBj"hCjÜubaubhs)rã}rä(hBUhCjÖhIhJhKhvhM}rå(hR]hQ]hO]hP]hU]haX equation-c4ræuhWNhXhhY]ubjû)rç}rè(hBUhCjÖhIhJh{}hKjþhM}ré(jX¹P_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2}& \leftrightarrows P_3\binom{S_2}{t_3}\\ t_1 < t_2 & < t_3 \\ resolve(S_1) &\Rrightarrow P_2 \\ resolve(S_2) &\Rrightarrow P_3 \\j‰jKhR]rêjæahQ]hO]hP]hU]jjÃjjXc4rë…rì}ríbuhWKéhXhhƒ}rîjæjãshY]ubh˜)rï}rð(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjÖhIhJhKh§hM}rñ(hO]hP]hQ]hR]hU]uhWKóhXhhY]rò(hdXA set of objects ró…rô}rõ(hBXA set of objects hCjïubjö)rö}r÷(hBUhM}rø(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCjïhY]hKjùubhdX" have the same series identifier, rù…rú}rû(hBX" have the same series identifier, hCjïubjö)rü}rý(hBUhCjïhINhKjùhM}rþ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÿ}r(hBX.hCjïubeubh˜)r}r(hBXWA set of objects :math:`O_{S_2} = \lbrace P_3 \rbrace` has the series identifier, |S2|.hCjÖhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWKöhXhhY]r(hdXA set of objects r…r}r(hBXA set of objects hCjubjö)r}r (hBUhM}r (UlatexXO_{S_2} = \lbrace P_3 \rbracehR]hQ]hO]hP]hU]uhCjhY]hKjùubhdX has the series identifier, r …r }r (hBX has the series identifier, hCjubjö)r}r(hBUhCjhINhKjùhM}r(UlatexXS_2rhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r(hBX.hCjubeubh˜)r}r(hBXfObjects :math:`O = O_{S_1} \cup O_{S_2}` all participate in a full, bi-directional obsolescence chain.hCjÖhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWKùhXhhY]r(hdXObjects r…r}r(hBXObjects hCjubjö)r}r(hBUhM}r(UlatexXO = O_{S_1} \cup O_{S_2}hR]hQ]hO]hP]hU]uhCjhY]hKjùubhdX> all participate in a full, bi-directional obsolescence chain.r…r}r (hBX> all participate in a full, bi-directional obsolescence chain.hCjubeubh˜)r!}r"(hBX½In this case resolving |S1| will result in |P2| which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by |S1|.hCjÖhIhJhKh§hM}r#(hO]hP]hQ]hR]hU]uhWKühXhhY]r$(hdXIn this case resolving r%…r&}r'(hBXIn this case resolving hCj!ubjö)r(}r)(hBUhCj!hINhKjùhM}r*(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r+…r,}r-(hBX will result in hCj!ubjö)r.}r/(hBUhCj!hINhKjùhM}r0(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by r1…r2}r3(hBX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by hCj!ubjö)r4}r5(hBUhCj!hINhKjùhM}r6(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r7}r8(hBX.hCj!ubeubh˜)r9}r:(hBX#Resolving |S2| will result in |P3|.r;hCjÖhIhJhKh§hM}r<(hO]hP]hQ]hR]hU]uhWMhXhhY]r=(hdX Resolving r>…r?}r@(hBX Resolving hCj9ubjö)rA}rB(hBUhCj9hINhKjùhM}rC(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in rD…rE}rF(hBX will result in hCj9ubjö)rG}rH(hBUhCj9hINhKjùhM}rI(Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rJ}rK(hBX.hCj9ubeubeubhD)rL}rM(hBUhChEhIhJhKhLhM}rN(hO]hP]hQ]hR]rOj0ahU]rPhauhWMhXhhY]rQ(h[)rR}rS(hBj5hCjLhIhJhKh_hM}rT(hR]hQ]hO]hP]hU]haj/uhWMhXhhY]rUhdXCase 5rV…rW}rX(hBj5hCjRubaubhs)rY}rZ(hBUhCjLhIhJhKhvhM}r[(hR]hQ]hO]hP]hU]haX equation-c5r\uhWNhXhhY]ubjû)r]}r^(hBUhCjLhIhJh{}hKjþhM}r_(jX­P_1\binom{S_1}{t_1} \leftarrow P_2\binom{S_1}{t_2}& \leftarrow P_3\binom{S_2}{t_3}\\ t_1 < t_2 & < t_3 \\ resolve(S_1) &\Rrightarrow P_2 \\ resolve(S_2) &\Rrightarrow P_3 \\j‰jKhR]r`j\ahQ]hO]hP]hU]jjÃjjXc5ra…rb}rcbuhWMhXhhƒ}rdj\jYshY]ubh˜)re}rf(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjLhIhJhKh§hM}rg(hO]hP]hQ]hR]hU]uhWMhXhhY]rh(hdXA set of objects ri…rj}rk(hBXA set of objects hCjeubjö)rl}rm(hBUhM}rn(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCjehY]hKjùubhdX" have the same series identifier, ro…rp}rq(hBX" have the same series identifier, hCjeubjö)rr}rs(hBUhCjehINhKjùhM}rt(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…ru}rv(hBX.hCjeubeubh˜)rw}rx(hBXWA set of objects :math:`O_{S_2} = \lbrace P_3 \rbrace` has the series identifier, |S2|.hCjLhIhJhKh§hM}ry(hO]hP]hQ]hR]hU]uhWMhXhhY]rz(hdXA set of objects r{…r|}r}(hBXA set of objects hCjwubjö)r~}r(hBUhM}r€(UlatexXO_{S_2} = \lbrace P_3 \rbracehR]hQ]hO]hP]hU]uhCjwhY]hKjùubhdX has the series identifier, r…r‚}rƒ(hBX has the series identifier, hCjwubjö)r„}r…(hBUhCjwhINhKjùhM}r†(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r‡}rˆ(hBX.hCjwubeubh˜)r‰}rŠ(hBXlObjects :math:`O = O_{S_1} \cup O_{S_2}` all participate in a damaged, though consistent obsolescence chain.hCjLhIhJhKh§hM}r‹(hO]hP]hQ]hR]hU]uhWMhXhhY]rŒ(hdXObjects r…rŽ}r(hBXObjects hCj‰ubjö)r}r‘(hBUhM}r’(UlatexXO = O_{S_1} \cup O_{S_2}hR]hQ]hO]hP]hU]uhCj‰hY]hKjùubhdXD all participate in a damaged, though consistent obsolescence chain.r“…r”}r•(hBXD all participate in a damaged, though consistent obsolescence chain.hCj‰ubeubh˜)r–}r—(hBX½In this case resolving |S1| will result in |P2| which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by |S1|.hCjLhIhJhKh§hM}r˜(hO]hP]hQ]hR]hU]uhWMhXhhY]r™(hdXIn this case resolving rš…r›}rœ(hBXIn this case resolving hCj–ubjö)r}rž(hBUhCj–hINhKjùhM}rŸ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r …r¡}r¢(hBX will result in hCj–ubjö)r£}r¤(hBUhCj–hINhKjùhM}r¥(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by r¦…r§}r¨(hBX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by hCj–ubjö)r©}rª(hBUhCj–hINhKjùhM}r«(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r¬}r­(hBX.hCj–ubeubh˜)r®}r¯(hBX#Resolving |S2| will result in |P3|.r°hCjLhIhJhKh§hM}r±(hO]hP]hQ]hR]hU]uhWMhXhhY]r²(hdX Resolving r³…r´}rµ(hBX Resolving hCj®ubjö)r¶}r·(hBUhCj®hINhKjùhM}r¸(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r¹…rº}r»(hBX will result in hCj®ubjö)r¼}r½(hBUhCj®hINhKjùhM}r¾(Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r¿}rÀ(hBX.hCj®ubeubeubhD)rÁ}rÂ(hBUhChEhIhJhKhLhM}rÃ(hO]hP]hQ]hR]rÄjCahU]rÅhauhWM!hXhhY]rÆ(h[)rÇ}rÈ(hBjHhCjÁhIhJhKh_hM}rÉ(hR]hQ]hO]hP]hU]hajBuhWM!hXhhY]rÊhdXCase 6rË…rÌ}rÍ(hBjHhCjÇubaubhs)rÎ}rÏ(hBUhCjÁhIhJhKhvhM}rÐ(hR]hQ]hO]hP]hU]haX equation-c6rÑuhWNhXhhY]ubjû)rÒ}rÓ(hBUhCjÁhIhJh{}hKjþhM}rÔ(jX”P_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2}& \leftrightarrows P_3\binom{}{t_3}\\ t_1 < t_2 & < t_3 \\ resolve(S_1) &\Rrightarrow P_2 \\j‰jKhR]rÕjÑahQ]hO]hP]hU]jjÃjjXc6rÖ…r×}rØbuhWM#hXhhƒ}rÙjÑjÎshY]ubh˜)rÚ}rÛ(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjÁhIhJhKh§hM}rÜ(hO]hP]hQ]hR]hU]uhWM,hXhhY]rÝ(hdXA set of objects rÞ…rß}rà(hBXA set of objects hCjÚubjö)rá}râ(hBUhM}rã(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCjÚhY]hKjùubhdX" have the same series identifier, rä…rå}ræ(hBX" have the same series identifier, hCjÚubjö)rç}rè(hBUhCjÚhINhKjùhM}ré(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rê}rë(hBX.hCjÚubeubh˜)rì}rí(hBXNObjects :math:`O = O_{S_1} \cup P_3` all participate in an obsolescence chain.rîhCjÁhIhJhKh§hM}rï(hO]hP]hQ]hR]hU]uhWM/hXhhY]rð(hdXObjects rñ…rò}ró(hBXObjects hCjìubjö)rô}rõ(hBUhM}rö(UlatexXO = O_{S_1} \cup P_3hR]hQ]hO]hP]hU]uhCjìhY]hKjùubhdX* all participate in an obsolescence chain.r÷…rø}rù(hBX* all participate in an obsolescence chain.hCjìubeubh˜)rú}rû(hBX½In this case resolving |S1| will result in |P2| which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by |S1|.hCjÁhIhJhKh§hM}rü(hO]hP]hQ]hR]hU]uhWM1hXhhY]rý(hdXIn this case resolving rþ…rÿ}r(hBXIn this case resolving hCjúubjö)r}r(hBUhCjúhINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r…r}r(hBX will result in hCjúubjö)r}r(hBUhCjúhINhKjùhM}r (UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by r …r }r (hBX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by hCjúubjö)r }r(hBUhCjúhINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r(hBX.hCjúubeubeubhD)r}r(hBUhChEhIhJhKhLhM}r(hO]hP]hQ]hR]rjVahU]rhauhWM7hXhhY]r(h[)r}r(hBj[hCjhIhJhKh_hM}r(hR]hQ]hO]hP]hU]hajUuhWM7hXhhY]rhdXCase 7r…r}r(hBj[hCjubaubhs)r}r (hBUhCjhIhJhKhvhM}r!(hR]hQ]hO]hP]hU]haX equation-c7r"uhWNhXhhY]ubjû)r#}r$(hBUhCjhIhJh{}hKjþhM}r%(jXÞP_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2}& \leftrightarrows P_3\binom{}{t_3} \leftrightarrows P_4\binom{S_2}{t_4} \\ t_1 < t_2 & < t_3 < t_4\\ resolve(S_1) &\Rrightarrow P_2 \\ resolve(S_2) &\Rrightarrow P_4j‰jKhR]r&j"ahQ]hO]hP]hU]jjÃjjXc7r'…r(}r)buhWM9hXhhƒ}r*j"jshY]ubh˜)r+}r,(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjhIhJhKh§hM}r-(hO]hP]hQ]hR]hU]uhWMDhXhhY]r.(hdXA set of objects r/…r0}r1(hBXA set of objects hCj+ubjö)r2}r3(hBUhM}r4(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCj+hY]hKjùubhdX" have the same series identifier, r5…r6}r7(hBX" have the same series identifier, hCj+ubjö)r8}r9(hBUhCj+hINhKjùhM}r:(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r;}r<(hBX.hCj+ubeubh˜)r=}r>(hBXWA set of objects :math:`O_{S_2} = \lbrace P_4 \rbrace` has the series identifier, |S2|.hCjhIhJhKh§hM}r?(hO]hP]hQ]hR]hU]uhWMGhXhhY]r@(hdXA set of objects rA…rB}rC(hBXA set of objects hCj=ubjö)rD}rE(hBUhM}rF(UlatexXO_{S_2} = \lbrace P_4 \rbracehR]hQ]hO]hP]hU]uhCj=hY]hKjùubhdX has the series identifier, rG…rH}rI(hBX has the series identifier, hCj=ubjö)rJ}rK(hBUhCj=hINhKjùhM}rL(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rM}rN(hBX.hCj=ubeubh˜)rO}rP(hBX[Objects :math:`O = O_{S_1} \cup P_3 \cup O_{S_2}` all participate in an obsolescence chain.hCjhIhJhKh§hM}rQ(hO]hP]hQ]hR]hU]uhWMJhXhhY]rR(hdXObjects rS…rT}rU(hBXObjects hCjOubjö)rV}rW(hBUhM}rX(UlatexX!O = O_{S_1} \cup P_3 \cup O_{S_2}hR]hQ]hO]hP]hU]uhCjOhY]hKjùubhdX* all participate in an obsolescence chain.rY…rZ}r[(hBX* all participate in an obsolescence chain.hCjOubeubh˜)r\}r](hBX½In this case resolving |S1| will result in |P2| which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by |S1|.hCjhIhJhKh§hM}r^(hO]hP]hQ]hR]hU]uhWMMhXhhY]r_(hdXIn this case resolving r`…ra}rb(hBXIn this case resolving hCj\ubjö)rc}rd(hBUhCj\hINhKjùhM}re(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in rf…rg}rh(hBX will result in hCj\ubjö)ri}rj(hBUhCj\hINhKjùhM}rk(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by rl…rm}rn(hBX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by hCj\ubjö)ro}rp(hBUhCj\hINhKjùhM}rq(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rr}rs(hBX.hCj\ubeubh˜)rt}ru(hBX"Resolving |S2| will result in |P4|rvhCjhIhJhKh§hM}rw(hO]hP]hQ]hR]hU]uhWMQhXhhY]rx(hdX Resolving ry…rz}r{(hBX Resolving hCjtubjö)r|}r}(hBUhCjthINhKjùhM}r~(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r…r€}r(hBX will result in hCjtubjö)r‚}rƒ(hBUhCjthINhKjùhM}r„(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubeubeubhD)r…}r†(hBUhChEhIhJhKhLhM}r‡(hO]hP]hQ]hR]rˆjiahU]r‰hauhWMUhXhhY]rŠ(h[)r‹}rŒ(hBjnhCj…hIhJhKh_hM}r(hR]hQ]hO]hP]hU]hajhuhWMUhXhhY]rŽhdXCase 8r…r}r‘(hBjnhCj‹ubaubhs)r’}r“(hBUhCj…hIhJhKhvhM}r”(hR]hQ]hO]hP]hU]haX equation-c8r•uhWNhXhhY]ubjû)r–}r—(hBUhCj…hIhJh{}hKjþhM}r˜(jX P_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2}& \rightarrow ?? \leftarrow P_4\binom{S_1}{t_4} \\ t_1 < t_2 & < t_4\\ resolve(S_1) &\Rrightarrow P_4 \\j‰jKhR]r™j•ahQ]hO]hP]hU]jjÃjjXc8rš…r›}rœbuhWMWhXhhƒ}rj•j’shY]ubh˜)rž}rŸ(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_4 \rbrace` have the same series identifier, |S1|.hCj…hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMahXhhY]r¡(hdXA set of objects r¢…r£}r¤(hBXA set of objects hCjžubjö)r¥}r¦(hBUhM}r§(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_4 \rbracehR]hQ]hO]hP]hU]uhCjžhY]hKjùubhdX" have the same series identifier, r¨…r©}rª(hBX" have the same series identifier, hCjžubjö)r«}r¬(hBUhCjžhINhKjùhM}r­(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r®}r¯(hBX.hCjžubeubh˜)r°}r±(hBXCObjects :math:`O_{S_1}` all participate in an obsolescence chain, however the chain is broken with no way to traverse between |P2| and |P4| because the object that |P2| indicates it is ``obsoletedBy``, and the object that |P4| indicates it ``obsoletes`` is not recorded by the DataONE Coordinating Nodes (does not resolve).hCj…hIhJhKh§hM}r²(hO]hP]hQ]hR]hU]uhWMdhXhhY]r³(hdXObjects r´…rµ}r¶(hBXObjects hCj°ubjö)r·}r¸(hBUhM}r¹(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCj°hY]hKjùubhdXg all participate in an obsolescence chain, however the chain is broken with no way to traverse between rº…r»}r¼(hBXg all participate in an obsolescence chain, however the chain is broken with no way to traverse between hCj°ubjö)r½}r¾(hBUhCj°hINhKjùhM}r¿(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX and rÀ…rÁ}rÂ(hBX and hCj°ubjö)rÃ}rÄ(hBUhCj°hINhKjùhM}rÅ(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX because the object that rÆ…rÇ}rÈ(hBX because the object that hCj°ubjö)rÉ}rÊ(hBUhCj°hINhKjùhM}rË(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX indicates it is rÌ…rÍ}rÎ(hBX indicates it is hCj°ubjâ)rÏ}rÐ(hBX``obsoletedBy``hM}rÑ(hO]hP]hQ]hR]hU]uhCj°hY]rÒhdX obsoletedByrÓ…rÔ}rÕ(hBUhCjÏubahKjìubhdX, and the object that rÖ…r×}rØ(hBX, and the object that hCj°ubjö)rÙ}rÚ(hBUhCj°hINhKjùhM}rÛ(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX indicates it rÜ…rÝ}rÞ(hBX indicates it hCj°ubjâ)rß}rà(hBX ``obsoletes``hM}rá(hO]hP]hQ]hR]hU]uhCj°hY]râhdX obsoletesrã…rä}rå(hBUhCjßubahKjìubhdXF is not recorded by the DataONE Coordinating Nodes (does not resolve).ræ…rç}rè(hBXF is not recorded by the DataONE Coordinating Nodes (does not resolve).hCj°ubeubh˜)ré}rê(hBX{In this case resolving |S1| will result in |P4| since that is the most recent object in the set of objects :math:`O_{S_1}`.hCj…hIhJhKh§hM}rë(hO]hP]hQ]hR]hU]uhWMjhXhhY]rì(hdXIn this case resolving rí…rî}rï(hBXIn this case resolving hCjéubjö)rð}rñ(hBUhCjéhINhKjùhM}rò(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in ró…rô}rõ(hBX will result in hCjéubjö)rö}r÷(hBUhCjéhINhKjùhM}rø(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX< since that is the most recent object in the set of objects rù…rú}rû(hBX< since that is the most recent object in the set of objects hCjéubjö)rü}rý(hBUhM}rþ(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCjéhY]hKjùubhdX.…rÿ}r(hBX.hCjéubeubeubhD)r}r(hBUhChEhIhJhKhLhM}r(hO]hP]hQ]hR]rj|ahU]rhauhWMohXhhY]r(h[)r}r(hBjhCjhIhJhKh_hM}r (hR]hQ]hO]hP]hU]haj{uhWMohXhhY]r hdXCase 9r …r }r (hBjhCjubaubhs)r}r(hBUhCjhIhJhKhvhM}r(hR]hQ]hO]hP]hU]haX equation-c9ruhWNhXhhY]ubjû)r}r(hBUhCjhIhJh{}hKjþhM}r(jX P_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2}& \;\square\; ?? \leftarrow P_4\binom{S_1}{t_4} \\ t_1 < t_2 & < t_4\\ resolve(S_1) &\Rrightarrow P_4 \\j‰jK hR]rjahQ]hO]hP]hU]jjÃjjXc9r…r}rbuhWMqhXhhƒ}rjjshY]ubh˜)r}r(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_4 \rbrace` have the same series identifier, |S1|.hCjhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWM{hXhhY]r(hdXA set of objects r…r}r (hBXA set of objects hCjubjö)r!}r"(hBUhM}r#(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_4 \rbracehR]hQ]hO]hP]hU]uhCjhY]hKjùubhdX" have the same series identifier, r$…r%}r&(hBX" have the same series identifier, hCjubjö)r'}r((hBUhCjhINhKjùhM}r)(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r*}r+(hBX.hCjubeubh˜)r,}r-(hBX Objects :math:`O_{S_1}` all participate in an obsolescence chain, however the chain is broken with no way to traverse between |P2| and |P4| because the the object that |P4| indicates it ``obsoletes`` is not recorded by the DataONE Coordinating Nodes (does not resolve).hCjhIhJhKh§hM}r.(hO]hP]hQ]hR]hU]uhWM~hXhhY]r/(hdXObjects r0…r1}r2(hBXObjects hCj,ubjö)r3}r4(hBUhM}r5(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCj,hY]hKjùubhdXg all participate in an obsolescence chain, however the chain is broken with no way to traverse between r6…r7}r8(hBXg all participate in an obsolescence chain, however the chain is broken with no way to traverse between hCj,ubjö)r9}r:(hBUhCj,hINhKjùhM}r;(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX and r<…r=}r>(hBX and hCj,ubjö)r?}r@(hBUhCj,hINhKjùhM}rA(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX because the the object that rB…rC}rD(hBX because the the object that hCj,ubjö)rE}rF(hBUhCj,hINhKjùhM}rG(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX indicates it rH…rI}rJ(hBX indicates it hCj,ubjâ)rK}rL(hBX ``obsoletes``hM}rM(hO]hP]hQ]hR]hU]uhCj,hY]rNhdX obsoletesrO…rP}rQ(hBUhCjKubahKjìubhdXF is not recorded by the DataONE Coordinating Nodes (does not resolve).rR…rS}rT(hBXF is not recorded by the DataONE Coordinating Nodes (does not resolve).hCj,ubeubh˜)rU}rV(hBX{In this case resolving |S1| will result in |P4| since that is the most recent object in the set of objects :math:`O_{S_1}`.hCjhIhJhKh§hM}rW(hO]hP]hQ]hR]hU]uhWMƒhXhhY]rX(hdXIn this case resolving rY…rZ}r[(hBXIn this case resolving hCjUubjö)r\}r](hBUhCjUhINhKjùhM}r^(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r_…r`}ra(hBX will result in hCjUubjö)rb}rc(hBUhCjUhINhKjùhM}rd(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX< since that is the most recent object in the set of objects re…rf}rg(hBX< since that is the most recent object in the set of objects hCjUubjö)rh}ri(hBUhM}rj(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCjUhY]hKjùubhdX.…rk}rl(hBX.hCjUubeubeubhD)rm}rn(hBUhChEhIhJhKhLhM}ro(hO]hP]hQ]hR]rpjahU]rqh*auhWMˆhXhhY]rr(h[)rs}rt(hBj”hCjmhIhJhKh_hM}ru(hR]hQ]hO]hP]hU]hajŽuhWMˆhXhhY]rvhdXCase 10rw…rx}ry(hBj”hCjsubaubhs)rz}r{(hBUhCjmhIhJhKhvhM}r|(hR]hQ]hO]hP]hU]haX equation-c10r}uhWNhXhhY]ubjû)r~}r(hBUhCjmhIhJh{}hKjþhM}r€(jX¯P_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2}& \rightarrow P_{del}\binom{}{} \leftarrow P_4\binom{S_1}{t_4} \\ t_1 < t_2 & < t_4\\ resolve(S_1) &\Rrightarrow P_4 \\j‰jK hR]rj}ahQ]hO]hP]hU]jjÃjjXc10r‚…rƒ}r„buhWMŠhXhhƒ}r…j}jzshY]ubh˜)r†}r‡(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_4 \rbrace` have the same series identifier, |S1|.hCjmhIhJhKh§hM}rˆ(hO]hP]hQ]hR]hU]uhWM”hXhhY]r‰(hdXA set of objects rŠ…r‹}rŒ(hBXA set of objects hCj†ubjö)r}rŽ(hBUhM}r(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_4 \rbracehR]hQ]hO]hP]hU]uhCj†hY]hKjùubhdX" have the same series identifier, r…r‘}r’(hBX" have the same series identifier, hCj†ubjö)r“}r”(hBUhCj†hINhKjùhM}r•(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r–}r—(hBX.hCj†ubeubh˜)r˜}r™(hBXšThe object :math:`P_{del}` was deleted from the system, so the identifier is known, but the object and associated system metadata are no longer available.hCjmhIhJhKh§hM}rš(hO]hP]hQ]hR]hU]uhWM—hXhhY]r›(hdX The object rœ…r}rž(hBX The object hCj˜ubjö)rŸ}r (hBUhM}r¡(UlatexXP_{del}hR]hQ]hO]hP]hU]uhCj˜hY]hKjùubhdX€ was deleted from the system, so the identifier is known, but the object and associated system metadata are no longer available.r¢…r£}r¤(hBX€ was deleted from the system, so the identifier is known, but the object and associated system metadata are no longer available.hCj˜ubeubh˜)r¥}r¦(hBXCObjects :math:`O_{S_1}` all participate in an obsolescence chain, however the chain is broken with no way to traverse between |P2| and |P4| because the object that |P2| indicates it is ``obsoletedBy``, and the object that |P4| indicates it ``obsoletes`` is not recorded by the DataONE Coordinating Nodes (does not resolve).hCjmhIhJhKh§hM}r§(hO]hP]hQ]hR]hU]uhWMšhXhhY]r¨(hdXObjects r©…rª}r«(hBXObjects hCj¥ubjö)r¬}r­(hBUhM}r®(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCj¥hY]hKjùubhdXg all participate in an obsolescence chain, however the chain is broken with no way to traverse between r¯…r°}r±(hBXg all participate in an obsolescence chain, however the chain is broken with no way to traverse between hCj¥ubjö)r²}r³(hBUhCj¥hINhKjùhM}r´(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX and rµ…r¶}r·(hBX and hCj¥ubjö)r¸}r¹(hBUhCj¥hINhKjùhM}rº(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX because the object that r»…r¼}r½(hBX because the object that hCj¥ubjö)r¾}r¿(hBUhCj¥hINhKjùhM}rÀ(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX indicates it is rÁ…rÂ}rÃ(hBX indicates it is hCj¥ubjâ)rÄ}rÅ(hBX``obsoletedBy``hM}rÆ(hO]hP]hQ]hR]hU]uhCj¥hY]rÇhdX obsoletedByrÈ…rÉ}rÊ(hBUhCjÄubahKjìubhdX, and the object that rË…rÌ}rÍ(hBX, and the object that hCj¥ubjö)rÎ}rÏ(hBUhCj¥hINhKjùhM}rÐ(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX indicates it rÑ…rÒ}rÓ(hBX indicates it hCj¥ubjâ)rÔ}rÕ(hBX ``obsoletes``hM}rÖ(hO]hP]hQ]hR]hU]uhCj¥hY]r×hdX obsoletesrØ…rÙ}rÚ(hBUhCjÔubahKjìubhdXF is not recorded by the DataONE Coordinating Nodes (does not resolve).rÛ…rÜ}rÝ(hBXF is not recorded by the DataONE Coordinating Nodes (does not resolve).hCj¥ubeubh˜)rÞ}rß(hBX{In this case resolving |S1| will result in |P4| since that is the most recent object in the set of objects :math:`O_{S_1}`.hCjmhIhJhKh§hM}rà(hO]hP]hQ]hR]hU]uhWM hXhhY]rá(hdXIn this case resolving râ…rã}rä(hBXIn this case resolving hCjÞubjö)rå}ræ(hBUhCjÞhINhKjùhM}rç(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in rè…ré}rê(hBX will result in hCjÞubjö)rë}rì(hBUhCjÞhINhKjùhM}rí(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX< since that is the most recent object in the set of objects rî…rï}rð(hBX< since that is the most recent object in the set of objects hCjÞubjö)rñ}rò(hBUhM}ró(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCjÞhY]hKjùubhdX.…rô}rõ(hBX.hCjÞubeubeubhD)rö}r÷(hBUhChEhIhJhKhLhM}rø(hO]hP]hQ]hR]rùj¢ahU]rúh+auhWM¥hXhhY]rû(h[)rü}rý(hBj§hCjöhIhJhKh_hM}rþ(hR]hQ]hO]hP]hU]haj¡uhWM¥hXhhY]rÿhdXCase 11r…r}r(hBj§hCjüubaubhs)r}r(hBUhCjöhIhJhKhvhM}r(hR]hQ]hO]hP]hU]haX equation-c11ruhWNhXhhY]ubjû)r}r(hBUhCjöhIhJh{}hKjþhM}r (jX®P_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2}& \leftrightarrows archived\biggl[P_3\binom{S_1}{t_3}\biggr] \\ t_1 < t_2 & < t_3 \\ resolve(S_1) &\Rrightarrow P_3 \\j‰jK hR]r jahQ]hO]hP]hU]jjÃjjXc11r …r }r buhWM§hXhhƒ}rjjshY]ubh˜)r}r(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_3 \rbrace` have the same series identifier, |S1|.hCjöhIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWM°hXhhY]r(hdXA set of objects r…r}r(hBXA set of objects hCjubjö)r}r(hBUhM}r(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_3 \rbracehR]hQ]hO]hP]hU]uhCjhY]hKjùubhdX" have the same series identifier, r…r}r(hBX" have the same series identifier, hCjubjö)r}r(hBUhCjhINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r (hBX.hCjubeubh˜)r!}r"(hBXAObjects :math:`O_{S_1}` all participate in an obsolescence chain.r#hCjöhIhJhKh§hM}r$(hO]hP]hQ]hR]hU]uhWM³hXhhY]r%(hdXObjects r&…r'}r((hBXObjects hCj!ubjö)r)}r*(hBUhM}r+(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCj!hY]hKjùubhdX* all participate in an obsolescence chain.r,…r-}r.(hBX* all participate in an obsolescence chain.hCj!ubeubh˜)r/}r0(hBX:Object |P3| has been archived, and so is not discoverable.r1hCjöhIhJhKh§hM}r2(hO]hP]hQ]hR]hU]uhWMµhXhhY]r3(hdXObject r4…r5}r6(hBXObject hCj/ubjö)r7}r8(hBUhCj/hINhKjùhM}r9(Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX/ has been archived, and so is not discoverable.r:…r;}r<(hBX/ has been archived, and so is not discoverable.hCj/ubeubh˜)r=}r>(hBX…In this case resolving |S1| will result in |P3| which is the most recent object in the obsolescence chain even though it is archived.hCjöhIhJhKh§hM}r?(hO]hP]hQ]hR]hU]uhWM·hXhhY]r@(hdXIn this case resolving rA…rB}rC(hBXIn this case resolving hCj=ubjö)rD}rE(hBUhCj=hINhKjùhM}rF(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in rG…rH}rI(hBX will result in hCj=ubjö)rJ}rK(hBUhCj=hINhKjùhM}rL(Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdXV which is the most recent object in the obsolescence chain even though it is archived.rM…rN}rO(hBXV which is the most recent object in the obsolescence chain even though it is archived.hCj=ubeubeubhD)rP}rQ(hBUhChEhIhJhKhLhM}rR(hO]hP]hQ]hR]rSjµahU]rTh,auhWM¼hXhhY]rU(h[)rV}rW(hBjºhCjPhIhJhKh_hM}rX(hR]hQ]hO]hP]hU]haj´uhWM¼hXhhY]rYhdXCase 12rZ…r[}r\(hBjºhCjVubaubhs)r]}r^(hBUhCjPhIhJhKhvhM}r_(hR]hQ]hO]hP]hU]haX equation-c12r`uhWNhXhhY]ubjû)ra}rb(hBUhCjPhIhJh{}hKjþhM}rc(jX}P_1\binom{S_1}{t_1} & \leftrightarrows P_2\binom{S_1}{t_2} \rightarrow ?? \\ t_1 & < t_2 \\ resolve(S_1) &\Rrightarrow P_2 \\j‰jK hR]rdj`ahQ]hO]hP]hU]jjÃjjXc12re…rf}rgbuhWM¾hXhhƒ}rhj`j]shY]ubh˜)ri}rj(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjPhIhJhKh§hM}rk(hO]hP]hQ]hR]hU]uhWMÇhXhhY]rl(hdXA set of objects rm…rn}ro(hBXA set of objects hCjiubjö)rp}rq(hBUhM}rr(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCjihY]hKjùubhdX" have the same series identifier, rs…rt}ru(hBX" have the same series identifier, hCjiubjö)rv}rw(hBUhCjihINhKjùhM}rx(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…ry}rz(hBX.hCjiubeubh˜)r{}r|(hBXšObjects :math:`O_{S_1}` participate in an obsolescence chain which is damaged by |P2| indicating it is ``obsoletedBy`` some object that is not resolvable.hCjPhIhJhKh§hM}r}(hO]hP]hQ]hR]hU]uhWMÊhXhhY]r~(hdXObjects r…r€}r(hBXObjects hCj{ubjö)r‚}rƒ(hBUhM}r„(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCj{hY]hKjùubhdX: participate in an obsolescence chain which is damaged by r……r†}r‡(hBX: participate in an obsolescence chain which is damaged by hCj{ubjö)rˆ}r‰(hBUhCj{hINhKjùhM}rŠ(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX indicating it is r‹…rŒ}r(hBX indicating it is hCj{ubjâ)rŽ}r(hBX``obsoletedBy``hM}r(hO]hP]hQ]hR]hU]uhCj{hY]r‘hdX obsoletedByr’…r“}r”(hBUhCjŽubahKjìubhdX$ some object that is not resolvable.r•…r–}r—(hBX$ some object that is not resolvable.hCj{ubeubh˜)r˜}r™(hBXuIn this case resolving |S1| will result in |P2| which is the most recent resolvable object in the obsolescence chain.hCjPhIhJhKh§hM}rš(hO]hP]hQ]hR]hU]uhWMÍhXhhY]r›(hdXIn this case resolving rœ…r}rž(hBXIn this case resolving hCj˜ubjö)rŸ}r (hBUhCj˜hINhKjùhM}r¡(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r¢…r£}r¤(hBX will result in hCj˜ubjö)r¥}r¦(hBUhCj˜hINhKjùhM}r§(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdXF which is the most recent resolvable object in the obsolescence chain.r¨…r©}rª(hBXF which is the most recent resolvable object in the obsolescence chain.hCj˜ubeubeubhD)r«}r¬(hBUhChEhIhJhKhLhM}r­(hO]hP]hQ]hR]r®jÈahU]r¯h-auhWMÒhXhhY]r°(h[)r±}r²(hBjÍhCj«hIhJhKh_hM}r³(hR]hQ]hO]hP]hU]hajÇuhWMÒhXhhY]r´hdXCase 13rµ…r¶}r·(hBjÍhCj±ubaubhs)r¸}r¹(hBUhCj«hIhJhKhvhM}rº(hR]hQ]hO]hP]hU]haX equation-c13r»uhWNhXhhY]ubjû)r¼}r½(hBUhCj«hIhJh{}hKjþhM}r¾(jXwP_1\binom{S_1}{t_1} & \leftarrow P_2\binom{S_1}{t_2} \rightarrow ?? \\ t_1 & < t_2 \\ resolve(S_1) &\Rrightarrow P_2 \\j‰jK hR]r¿j»ahQ]hO]hP]hU]jjÃjjXc13rÀ…rÁ}rÂbuhWMÔhXhhƒ}rÃj»j¸shY]ubh˜)rÄ}rÅ(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCj«hIhJhKh§hM}rÆ(hO]hP]hQ]hR]hU]uhWMÝhXhhY]rÇ(hdXA set of objects rÈ…rÉ}rÊ(hBXA set of objects hCjÄubjö)rË}rÌ(hBUhM}rÍ(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCjÄhY]hKjùubhdX" have the same series identifier, rÎ…rÏ}rÐ(hBX" have the same series identifier, hCjÄubjö)rÑ}rÒ(hBUhCjÄhINhKjùhM}rÓ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÔ}rÕ(hBX.hCjÄubeubh˜)rÖ}r×(hBXÇObjects :math:`O_{S_1}` participate in a damaged obsolescence chain since |P2| indicates it is ``obsoletedBy`` some object that is not resolvable, and |P1| does not assert it is ``obsoletedBy`` |P2|.hCj«hIhJhKh§hM}rØ(hO]hP]hQ]hR]hU]uhWMàhXhhY]rÙ(hdXObjects rÚ…rÛ}rÜ(hBXObjects hCjÖubjö)rÝ}rÞ(hBUhM}rß(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCjÖhY]hKjùubhdX3 participate in a damaged obsolescence chain since rà…rá}râ(hBX3 participate in a damaged obsolescence chain since hCjÖubjö)rã}rä(hBUhCjÖhINhKjùhM}rå(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX indicates it is ræ…rç}rè(hBX indicates it is hCjÖubjâ)ré}rê(hBX``obsoletedBy``hM}rë(hO]hP]hQ]hR]hU]uhCjÖhY]rìhdX obsoletedByrí…rî}rï(hBUhCjéubahKjìubhdX) some object that is not resolvable, and rð…rñ}rò(hBX) some object that is not resolvable, and hCjÖubjö)ró}rô(hBUhCjÖhINhKjùhM}rõ(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX does not assert it is rö…r÷}rø(hBX does not assert it is hCjÖubjâ)rù}rú(hBX``obsoletedBy``hM}rû(hO]hP]hQ]hR]hU]uhCjÖhY]rühdX obsoletedByrý…rþ}rÿ(hBUhCjùubahKjìubhdX …r}r(hBX hCjÖubjö)r}r(hBUhCjÖhINhKjùhM}r(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r(hBX.hCjÖubeubh˜)r}r(hBXuIn this case resolving |S1| will result in |P2| which is the most recent resolvable object in the obsolescence chain.hCj«hIhJhKh§hM}r (hO]hP]hQ]hR]hU]uhWMähXhhY]r (hdXIn this case resolving r …r }r (hBXIn this case resolving hCjubjö)r}r(hBUhCjhINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r…r}r(hBX will result in hCjubjö)r}r(hBUhCjhINhKjùhM}r(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdXF which is the most recent resolvable object in the obsolescence chain.r…r}r(hBXF which is the most recent resolvable object in the obsolescence chain.hCjubeubeubhD)r}r(hBUhChEhIhJhKhLhM}r(hO]hP]hQ]hR]rjÛahU]rh.auhWMéhXhhY]r(h[)r }r!(hBjàhCjhIhJhKh_hM}r"(hR]hQ]hO]hP]hU]hajÚuhWMéhXhhY]r#hdXCase 14r$…r%}r&(hBjàhCj ubaubhs)r'}r((hBUhCjhIhJhKhvhM}r)(hR]hQ]hO]hP]hU]haX equation-c14r*uhWNhXhhY]ubjû)r+}r,(hBUhCjhIhJh{}hKjþhM}r-(jX«P_1\binom{S_1}{t_1} \leftarrow P_2\binom{S_1}{t_2}& \rightarrow P_3\binom{S_2}{t_3}\\ t_1 < t_2 & < t_3 \\ resolve(S_1) &\Rrightarrow P_2 \\ resolve(S_2) &\Rrightarrow P_3j‰jKhR]r.j*ahQ]hO]hP]hU]jjÃjjXc14r/…r0}r1buhWMëhXhhƒ}r2j*j'shY]ubh˜)r3}r4(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCjhIhJhKh§hM}r5(hO]hP]hQ]hR]hU]uhWMõhXhhY]r6(hdXA set of objects r7…r8}r9(hBXA set of objects hCj3ubjö)r:}r;(hBUhM}r<(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCj3hY]hKjùubhdX" have the same series identifier, r=…r>}r?(hBX" have the same series identifier, hCj3ubjö)r@}rA(hBUhCj3hINhKjùhM}rB(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rC}rD(hBX.hCj3ubeubh˜)rE}rF(hBXWA set of objects :math:`O_{S_2} = \lbrace P_3 \rbrace` has the series identifier, |S2|.hCjhIhJhKh§hM}rG(hO]hP]hQ]hR]hU]uhWMøhXhhY]rH(hdXA set of objects rI…rJ}rK(hBXA set of objects hCjEubjö)rL}rM(hBUhM}rN(UlatexXO_{S_2} = \lbrace P_3 \rbracehR]hQ]hO]hP]hU]uhCjEhY]hKjùubhdX has the series identifier, rO…rP}rQ(hBX has the series identifier, hCjEubjö)rR}rS(hBUhCjEhINhKjùhM}rT(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rU}rV(hBX.hCjEubeubh˜)rW}rX(hBX»Objects :math:`O = O_{S_1} \cup O_{S_2}` all participate in a damaged obsolescence chain, with |P1| not indicating it is obsoleted by |P2|, and |P3| not indicating that it obsoletes |P2|.hCjhIhJhKh§hM}rY(hO]hP]hQ]hR]hU]uhWMûhXhhY]rZ(hdXObjects r[…r\}r](hBXObjects hCjWubjö)r^}r_(hBUhM}r`(UlatexXO = O_{S_1} \cup O_{S_2}hR]hQ]hO]hP]hU]uhCjWhY]hKjùubhdX7 all participate in a damaged obsolescence chain, with ra…rb}rc(hBX7 all participate in a damaged obsolescence chain, with hCjWubjö)rd}re(hBUhCjWhINhKjùhM}rf(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX# not indicating it is obsoleted by rg…rh}ri(hBX# not indicating it is obsoleted by hCjWubjö)rj}rk(hBUhCjWhINhKjùhM}rl(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX, and rm…rn}ro(hBX, and hCjWubjö)rp}rq(hBUhCjWhINhKjùhM}rr(Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX" not indicating that it obsoletes rs…rt}ru(hBX" not indicating that it obsoletes hCjWubjö)rv}rw(hBUhCjWhINhKjùhM}rx(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…ry}rz(hBX.hCjWubeubh˜)r{}r|(hBX½In this case resolving |S1| will result in |P2| which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by |S1|.hCjhIhJhKh§hM}r}(hO]hP]hQ]hR]hU]uhWMÿhXhhY]r~(hdXIn this case resolving r…r€}r(hBXIn this case resolving hCj{ubjö)r‚}rƒ(hBUhCj{hINhKjùhM}r„(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r……r†}r‡(hBX will result in hCj{ubjö)rˆ}r‰(hBUhCj{hINhKjùhM}rŠ(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by r‹…rŒ}r(hBX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by hCj{ubjö)rŽ}r(hBUhCj{hINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r‘}r’(hBX.hCj{ubeubh˜)r“}r”(hBX|S2| will resolve to |P3|.r•hCjhIhJhKh§hM}r–(hO]hP]hQ]hR]hU]uhWMhXhhY]r—(jö)r˜}r™(hBUhCj“hINhKjùhM}rš(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will resolve to r›…rœ}r(hBX will resolve to hCj“ubjö)rž}rŸ(hBUhCj“hINhKjùhM}r (Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r¡}r¢(hBX.hCj“ubeubeubhD)r£}r¤(hBUhChEhIhJhKhLhM}r¥(hO]hP]hQ]hR]r¦jîahU]r§h1auhWMhXhhY]r¨(h[)r©}rª(hBjóhCj£hIhJhKh_hM}r«(hR]hQ]hO]hP]hU]hajíuhWMhXhhY]r¬hdXCase 15r­…r®}r¯(hBjóhCj©ubaubhs)r°}r±(hBUhCj£hIhJhKhvhM}r²(hR]hQ]hO]hP]hU]haX equation-c15r³uhWNhXhhY]ubjû)r´}rµ(hBUhCj£hIhJh{}hKjþhM}r¶(jXìP_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2} \; & \square \; ?? \leftarrow P_4\binom{S_1}{t_4} \leftrightarrows P_5\binom{S_2}{t_5}\\ t_1 < t_2 & < t_4 < t_5\\ resolve(S_1) &\Rrightarrow P_4 \\ resolve(S_2) &\Rrightarrow P_5j‰jKhR]r·j³ahQ]hO]hP]hU]jjÃjjXc15r¸…r¹}rºbuhWM hXhhƒ}r»j³j°shY]ubh˜)r¼}r½(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_4 \rbrace` have the same series identifier, |S1|.hCj£hIhJhKh§hM}r¾(hO]hP]hQ]hR]hU]uhWMhXhhY]r¿(hdXA set of objects rÀ…rÁ}rÂ(hBXA set of objects hCj¼ubjö)rÃ}rÄ(hBUhM}rÅ(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_4 \rbracehR]hQ]hO]hP]hU]uhCj¼hY]hKjùubhdX" have the same series identifier, rÆ…rÇ}rÈ(hBX" have the same series identifier, hCj¼ubjö)rÉ}rÊ(hBUhCj¼hINhKjùhM}rË(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÌ}rÍ(hBX.hCj¼ubeubh˜)rÎ}rÏ(hBXWA set of objects :math:`O_{S_2} = \lbrace P_5 \rbrace` has the series identifier, |S2|.hCj£hIhJhKh§hM}rÐ(hO]hP]hQ]hR]hU]uhWMhXhhY]rÑ(hdXA set of objects rÒ…rÓ}rÔ(hBXA set of objects hCjÎubjö)rÕ}rÖ(hBUhM}r×(UlatexXO_{S_2} = \lbrace P_5 \rbracehR]hQ]hO]hP]hU]uhCjÎhY]hKjùubhdX has the series identifier, rØ…rÙ}rÚ(hBX has the series identifier, hCjÎubjö)rÛ}rÜ(hBUhCjÎhINhKjùhM}rÝ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÞ}rß(hBX.hCjÎubeubh˜)rà}rá(hBXžObjects :math:`O = O_{S_1} \cup P_3 \cup O_{S_2}` all participate in a damaged obsolescence chain with no assertion of the relationship between |P2| and |P4|.hCj£hIhJhKh§hM}râ(hO]hP]hQ]hR]hU]uhWMhXhhY]rã(hdXObjects rä…rå}ræ(hBXObjects hCjàubjö)rç}rè(hBUhM}ré(UlatexX!O = O_{S_1} \cup P_3 \cup O_{S_2}hR]hQ]hO]hP]hU]uhCjàhY]hKjùubhdX_ all participate in a damaged obsolescence chain with no assertion of the relationship between rê…rë}rì(hBX_ all participate in a damaged obsolescence chain with no assertion of the relationship between hCjàubjö)rí}rî(hBUhCjàhINhKjùhM}rï(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX and rð…rñ}rò(hBX and hCjàubjö)ró}rô(hBUhCjàhINhKjùhM}rõ(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rö}r÷(hBX.hCjàubeubh˜)rø}rù(hBX½In this case resolving |S1| will result in |P4| which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by |S1|.hCj£hIhJhKh§hM}rú(hO]hP]hQ]hR]hU]uhWMhXhhY]rû(hdXIn this case resolving rü…rý}rþ(hBXIn this case resolving hCjøubjö)rÿ}r(hBUhCjøhINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r…r}r(hBX will result in hCjøubjö)r}r(hBUhCjøhINhKjùhM}r(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by r…r }r (hBX‰ which is not the most recent object in the obsolescence chain, however it is the newest version in the obsolescence chain identified by hCjøubjö)r }r (hBUhCjøhINhKjùhM}r (UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r(hBX.hCjøubeubh˜)r}r(hBX*Resolving |S2| will result in :math:`P_5`.rhCj£hIhJhKh§hM}r(hO]hP]hQ]hR]hU]uhWM"hXhhY]r(hdX Resolving r…r}r(hBX Resolving hCjubjö)r}r(hBUhCjhINhKjùhM}r(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r…r}r(hBX will result in hCjubjö)r}r(hBUhM}r (UlatexXP_5hR]hQ]hO]hP]hU]uhCjhY]hKjùubhdX.…r!}r"(hBX.hCjubeubeubhD)r#}r$(hBUhChEhIhJhKhLhM}r%(hO]hP]hQ]hR]r&jahU]r'h0auhWM&hXhhY]r((h[)r)}r*(hBjhCj#hIhJhKh_hM}r+(hR]hQ]hO]hP]hU]hajuhWM&hXhhY]r,hdXCase 16r-…r.}r/(hBjhCj)ubaubhs)r0}r1(hBUhCj#hIhJhKhvhM}r2(hR]hQ]hO]hP]hU]haX equation-c16r3uhWNhXhhY]ubjû)r4}r5(hBUhCj#hIhJh{}hKjþhM}r6(jXºP_1\binom{S_1}{t_1} \leftarrow P_2\binom{S_1}{t_2} & \rightarrow ?? \leftarrow P_4\binom{S_2}{t_4} \\ t_1 < t_2 & < t_4\\ resolve(S_1) &\Rrightarrow P_2 \\ resolve(S_2) &\Rrightarrow P_4j‰jKhR]r7j3ahQ]hO]hP]hU]jjÃjjXc16r8…r9}r:buhWM(hXhhƒ}r;j3j0shY]ubh˜)r<}r=(hBXbA set of objects :math:`O_{S_1} = \lbrace P_1, P_2 \rbrace` have the same series identifier, |S1|.hCj#hIhJhKh§hM}r>(hO]hP]hQ]hR]hU]uhWM3hXhhY]r?(hdXA set of objects r@…rA}rB(hBXA set of objects hCj<ubjö)rC}rD(hBUhM}rE(UlatexX"O_{S_1} = \lbrace P_1, P_2 \rbracehR]hQ]hO]hP]hU]uhCj<hY]hKjùubhdX" have the same series identifier, rF…rG}rH(hBX" have the same series identifier, hCj<ubjö)rI}rJ(hBUhCj<hINhKjùhM}rK(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rL}rM(hBX.hCj<ubeubh˜)rN}rO(hBXWA set of objects :math:`O_{S_2} = \lbrace P_4 \rbrace` has the series identifier, |S2|.hCj#hIhJhKh§hM}rP(hO]hP]hQ]hR]hU]uhWM6hXhhY]rQ(hdXA set of objects rR…rS}rT(hBXA set of objects hCjNubjö)rU}rV(hBUhM}rW(UlatexXO_{S_2} = \lbrace P_4 \rbracehR]hQ]hO]hP]hU]uhCjNhY]hKjùubhdX has the series identifier, rX…rY}rZ(hBX has the series identifier, hCjNubjö)r[}r\(hBUhCjNhINhKjùhM}r](UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r^}r_(hBX.hCjNubeubh˜)r`}ra(hBXoObjects :math:`O_{S_1}` and :math:`O_{S_2}` are both damaged obsolescence chains though the Coordinating Nodes may infer association between :math:`O_{S_1}` and :math:`O_{S_2}` since even though the object that |P2| is ``obsoletedBy`` and the object that |P4| ``obsoletes`` can not be resolved, :math:`P_2.obsoletedBy` and :math:`P_4.obsoletes` are be the same value.hCj#hIhJhKh§hM}rb(hO]hP]hQ]hR]hU]uhWM9hXhhY]rc(hdXObjects rd…re}rf(hBXObjects hCj`ubjö)rg}rh(hBUhM}ri(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCj`hY]hKjùubhdX and rj…rk}rl(hBX and hCj`ubjö)rm}rn(hBUhM}ro(UlatexXO_{S_2}hR]hQ]hO]hP]hU]uhCj`hY]hKjùubhdXb are both damaged obsolescence chains though the Coordinating Nodes may infer association between rp…rq}rr(hBXb are both damaged obsolescence chains though the Coordinating Nodes may infer association between hCj`ubjö)rs}rt(hBUhM}ru(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCj`hY]hKjùubhdX and rv…rw}rx(hBX and hCj`ubjö)ry}rz(hBUhM}r{(UlatexXO_{S_2}hR]hQ]hO]hP]hU]uhCj`hY]hKjùubhdX# since even though the object that r|…r}}r~(hBX# since even though the object that hCj`ubjö)r}r€(hBUhCj`hINhKjùhM}r(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX is r‚…rƒ}r„(hBX is hCj`ubjâ)r…}r†(hBX``obsoletedBy``hM}r‡(hO]hP]hQ]hR]hU]uhCj`hY]rˆhdX obsoletedByr‰…rŠ}r‹(hBUhCj…ubahKjìubhdX and the object that rŒ…r}rŽ(hBX and the object that hCj`ubjö)r}r(hBUhCj`hINhKjùhM}r‘(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX …r’}r“(hBX hCj`ubjâ)r”}r•(hBX ``obsoletes``hM}r–(hO]hP]hQ]hR]hU]uhCj`hY]r—hdX obsoletesr˜…r™}rš(hBUhCj”ubahKjìubhdX can not be resolved, r›…rœ}r(hBX can not be resolved, hCj`ubjö)rž}rŸ(hBUhM}r (UlatexXP_2.obsoletedByhR]hQ]hO]hP]hU]uhCj`hY]hKjùubhdX and r¡…r¢}r£(hBX and hCj`ubjö)r¤}r¥(hBUhM}r¦(UlatexX P_4.obsoleteshR]hQ]hO]hP]hU]uhCj`hY]hKjùubhdX are be the same value.r§…r¨}r©(hBX are be the same value.hCj`ubeubh˜)rª}r«(hBXuIn this case resolving |S1| will result in |P2| which is the most recent resolvable object in the obsolescence chain.hCj#hIhJhKh§hM}r¬(hO]hP]hQ]hR]hU]uhWM?hXhhY]r­(hdXIn this case resolving r®…r¯}r°(hBXIn this case resolving hCjªubjö)r±}r²(hBUhCjªhINhKjùhM}r³(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r´…rµ}r¶(hBX will result in hCjªubjö)r·}r¸(hBUhCjªhINhKjùhM}r¹(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdXF which is the most recent resolvable object in the obsolescence chain.rº…r»}r¼(hBXF which is the most recent resolvable object in the obsolescence chain.hCjªubeubh˜)r½}r¾(hBX*Resolving |S2| will result in :math:`P_4`.r¿hCj#hIhJhKh§hM}rÀ(hO]hP]hQ]hR]hU]uhWMBhXhhY]rÁ(hdX Resolving rÂ…rÃ}rÄ(hBX Resolving hCj½ubjö)rÅ}rÆ(hBUhCj½hINhKjùhM}rÇ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in rÈ…rÉ}rÊ(hBX will result in hCj½ubjö)rË}rÌ(hBUhM}rÍ(UlatexXP_4hR]hQ]hO]hP]hU]uhCj½hY]hKjùubhdX.…rÎ}rÏ(hBX.hCj½ubeubeubhD)rÐ}rÑ(hBUhChEhIhJhKhLhM}rÒ(hO]hP]hQ]hR]rÓjahU]rÔh4auhWMFhXhhY]rÕ(h[)rÖ}r×(hBjhCjÐhIhJhKh_hM}rØ(hR]hQ]hO]hP]hU]hajuhWMFhXhhY]rÙhdXCase 17rÚ…rÛ}rÜ(hBjhCjÖubaubhs)rÝ}rÞ(hBUhCjÐhIhJhKhvhM}rß(hR]hQ]hO]hP]hU]haX equation-c17ràuhWNhXhhY]ubjû)rá}râ(hBUhCjÐhIhJh{}hKjþhM}rã(jX˜P_1\binom{S_1}{t_1} \leftarrow P_2\binom{S_1}{t_2} & \rightarrow ?? \leftarrow P_4\binom{S_1}{t_4} \\ t_1 < t_2 & < t_4\\ resolve(S_1) &\Rrightarrow P_4j‰jKhR]räjàahQ]hO]hP]hU]jjÃjjXc17rå…ræ}rçbuhWMHhXhhƒ}rèjàjÝshY]ubh˜)ré}rê(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_4 \rbrace` have the same series identifier, |S1|.hCjÐhIhJhKh§hM}rë(hO]hP]hQ]hR]hU]uhWMRhXhhY]rì(hdXA set of objects rí…rî}rï(hBXA set of objects hCjéubjö)rð}rñ(hBUhM}rò(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_4 \rbracehR]hQ]hO]hP]hU]uhCjéhY]hKjùubhdX" have the same series identifier, ró…rô}rõ(hBX" have the same series identifier, hCjéubjö)rö}r÷(hBUhCjéhINhKjùhM}rø(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rù}rú(hBX.hCjéubeubh˜)rû}rü(hBXObjects :math:`O_{S_1}` form a damaged obsolescence chain though it can be inferred that |P2| is ``obsoletedBy`` and |P4| ``obsoletes`` the same object even though it can not be resolved, :math:`P_2.obsoletedBy` and :math:`P_4.obsoletes` are be the same value.hCjÐhIhJhKh§hM}rý(hO]hP]hQ]hR]hU]uhWMUhXhhY]rþ(hdXObjects rÿ…r}r(hBXObjects hCjûubjö)r}r(hBUhM}r(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCjûhY]hKjùubhdXB form a damaged obsolescence chain though it can be inferred that r…r}r(hBXB form a damaged obsolescence chain though it can be inferred that hCjûubjö)r}r (hBUhCjûhINhKjùhM}r (UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX is r …r }r (hBX is hCjûubjâ)r}r(hBX``obsoletedBy``hM}r(hO]hP]hQ]hR]hU]uhCjûhY]rhdX obsoletedByr…r}r(hBUhCjubahKjìubhdX and r…r}r(hBX and hCjûubjö)r}r(hBUhCjûhINhKjùhM}r(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX …r}r(hBX hCjûubjâ)r}r(hBX ``obsoletes``hM}r(hO]hP]hQ]hR]hU]uhCjûhY]r hdX obsoletesr!…r"}r#(hBUhCjubahKjìubhdX5 the same object even though it can not be resolved, r$…r%}r&(hBX5 the same object even though it can not be resolved, hCjûubjö)r'}r((hBUhM}r)(UlatexXP_2.obsoletedByhR]hQ]hO]hP]hU]uhCjûhY]hKjùubhdX and r*…r+}r,(hBX and hCjûubjö)r-}r.(hBUhM}r/(UlatexX P_4.obsoleteshR]hQ]hO]hP]hU]uhCjûhY]hKjùubhdX are be the same value.r0…r1}r2(hBX are be the same value.hCjûubeubh˜)r3}r4(hBX0In this case resolving |S1| will result in |P4|.r5hCjÐhIhJhKh§hM}r6(hO]hP]hQ]hR]hU]uhWMZhXhhY]r7(hdXIn this case resolving r8…r9}r:(hBXIn this case resolving hCj3ubjö)r;}r<(hBUhCj3hINhKjùhM}r=(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r>…r?}r@(hBX will result in hCj3ubjö)rA}rB(hBUhCj3hINhKjùhM}rC(UlatexjehR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rD}rE(hBX.hCj3ubeubeubhD)rF}rG(hBUhChEhIhJhKhLhM}rH(hO]hP]hQ]hR]rIj'ahU]rJh(auhWM_hXhhY]rK(h[)rL}rM(hBj,hCjFhIhJhKh_hM}rN(hR]hQ]hO]hP]hU]haj&uhWM_hXhhY]rOhdXCase 18rP…rQ}rR(hBj,hCjLubaubjû)rS}rT(hBUhCjFhIhJhKjþhM}rU(jX¯P_1\binom{S_1}{t_1} \leftrightarrows P_2\binom{S_1}{t_2} & \rightarrow ?? \; \square \; ?? \leftarrow P_5\binom{S_1}{t_5} \\ t_1 < t_2 & < t_5\\ resolve(S_1) &\Rrightarrow P_5j‰jNhR]hQ]hO]hP]hU]jjÃjjXc16rV…rW}rXbuhWMahXhhY]ubh˜)rY}rZ(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_5 \rbrace` have the same series identifier, |S1|.hCjFhIhJhKh§hM}r[(hO]hP]hQ]hR]hU]uhWMlhXhhY]r\(hdXA set of objects r]…r^}r_(hBXA set of objects hCjYubjö)r`}ra(hBUhM}rb(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_5 \rbracehR]hQ]hO]hP]hU]uhCjYhY]hKjùubhdX" have the same series identifier, rc…rd}re(hBX" have the same series identifier, hCjYubjö)rf}rg(hBUhCjYhINhKjùhM}rh(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…ri}rj(hBX.hCjYubeubh˜)rk}rl(hBXcThe obsolescence chain :math:`O_{S_1}` is broken, with no way to traverse from |P2| to :math:`P_5`.hCjFhIhJhKh§hM}rm(hO]hP]hQ]hR]hU]uhWMohXhhY]rn(hdXThe obsolescence chain ro…rp}rq(hBXThe obsolescence chain hCjkubjö)rr}rs(hBUhM}rt(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCjkhY]hKjùubhdX) is broken, with no way to traverse from ru…rv}rw(hBX) is broken, with no way to traverse from hCjkubjö)rx}ry(hBUhCjkhINhKjùhM}rz(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX to r{…r|}r}(hBX to hCjkubjö)r~}r(hBUhM}r€(UlatexXP_5hR]hQ]hO]hP]hU]uhCjkhY]hKjùubhdX.…r}r‚(hBX.hCjkubeubh˜)rƒ}r„(hBXrThe :attr:`~Types.SystemMetadata.dateUploaded` places :math:`P_5` as the newest object with the series Id of |S1|.hCjFhIhJhKh§hM}r…(hO]hP]hQ]hR]hU]uhWMrhXhhY]r†(hdXThe r‡…rˆ}r‰(hBXThe hCjƒubj¹)rŠ}r‹(hBX*:attr:`~Types.SystemMetadata.dateUploaded`rŒhCjƒhIhJhKj½hM}r(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyrŽhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWMrhY]rjâ)r}r‘(hBjŒhM}r’(hO]hP]r“(jÊjŽXpy-attrr”ehQ]hR]hU]uhCjŠhY]r•hdX dateUploadedr–…r—}r˜(hBUhCjubahKjìubaubhdX places r™…rš}r›(hBX places hCjƒubjö)rœ}r(hBUhM}rž(UlatexXP_5hR]hQ]hO]hP]hU]uhCjƒhY]hKjùubhdX, as the newest object with the series Id of rŸ…r }r¡(hBX, as the newest object with the series Id of hCjƒubjö)r¢}r£(hBUhCjƒhINhKjùhM}r¤(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r¥}r¦(hBX.hCjƒubeubh˜)r§}r¨(hBX&Resolving |S1| results in :math:`P_5`.r©hCjFhIhJhKh§hM}rª(hO]hP]hQ]hR]hU]uhWMuhXhhY]r«(hdX Resolving r¬…r­}r®(hBX Resolving hCj§ubjö)r¯}r°(hBUhCj§hINhKjùhM}r±(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX results in r²…r³}r´(hBX results in hCj§ubjö)rµ}r¶(hBUhM}r·(UlatexXP_5hR]hQ]hO]hP]hU]uhCj§hY]hKjùubhdX.…r¸}r¹(hBX.hCj§ubeubeubhD)rº}r»(hBUhChEhIhJhKhLhM}r¼(hO]hP]hQ]hR]r½j:ahU]r¾h)auhWMyhXhhY]r¿(h[)rÀ}rÁ(hBj?hCjºhIhJhKh_hM}rÂ(hR]hQ]hO]hP]hU]haj9uhWMyhXhhY]rÃhdXCase 19rÄ…rÅ}rÆ(hBj?hCjÀubaubjû)rÇ}rÈ(hBUhCjºhIhJhKjþhM}rÉ(jX‰P_1\binom{S_1}{t_1} \leftarrow P_2\binom{S_1}{t_2} & \leftarrow P_3\binom{S_1}{t_3} \\ t_1 > t_2 & > t_3\\ resolve(S_1) &\Rrightarrow P_3j‰jNhR]hQ]hO]hP]hU]jjÃjjXc17rÊ…rË}rÌbuhWM{hXhhY]ubh˜)rÍ}rÎ(hBXgA set of objects :math:`O_{S_1} = \lbrace P_1, P_2, P_3 \rbrace` have the same series identifier, |S1|.hCjºhIhJhKh§hM}rÏ(hO]hP]hQ]hR]hU]uhWM„hXhhY]rÐ(hdXA set of objects rÑ…rÒ}rÓ(hBXA set of objects hCjÍubjö)rÔ}rÕ(hBUhM}rÖ(UlatexX'O_{S_1} = \lbrace P_1, P_2, P_3 \rbracehR]hQ]hO]hP]hU]uhCjÍhY]hKjùubhdX" have the same series identifier, r×…rØ}rÙ(hBX" have the same series identifier, hCjÍubjö)rÚ}rÛ(hBUhCjÍhINhKjùhM}rÜ(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…rÝ}rÞ(hBX.hCjÍubeubh˜)rß}rà(hBXhObjects :math:`O_{S_1}` form a damaged obsolescence chain since only ``obsoletes`` values are specified.hCjºhIhJhKh§hM}rá(hO]hP]hQ]hR]hU]uhWM‡hXhhY]râ(hdXObjects rã…rä}rå(hBXObjects hCjßubjö)ræ}rç(hBUhM}rè(UlatexXO_{S_1}hR]hQ]hO]hP]hU]uhCjßhY]hKjùubhdX. form a damaged obsolescence chain since only ré…rê}rë(hBX. form a damaged obsolescence chain since only hCjßubjâ)rì}rí(hBX ``obsoletes``hM}rî(hO]hP]hQ]hR]hU]uhCjßhY]rïhdX obsoletesrð…rñ}rò(hBUhCjìubahKjìubhdX values are specified.ró…rô}rõ(hBX values are specified.hCjßubeubh˜)rö}r÷(hBXlThe :attr:`~Types.SystemMetadata.dateUploaded` of |P1| is newer than |P2|, which in turn is newer than |P3|.hCjºhIhJhKh§hM}rø(hO]hP]hQ]hR]hU]uhWMŠhXhhY]rù(hdXThe rú…rû}rü(hBXThe hCjöubj¹)rý}rþ(hBX*:attr:`~Types.SystemMetadata.dateUploaded`rÿhCjöhIhJhKj½hM}r(UreftypeXattrj¿‰jÀX!Types.SystemMetadata.dateUploadedU refdomainXpyrhR]hQ]U refexplicit‰hO]hP]hU]jÂjÃjßNjàNuhWMŠhY]rjâ)r}r(hBjÿhM}r(hO]hP]r(jÊjXpy-attrrehQ]hR]hU]uhCjýhY]rhdX dateUploadedr …r }r (hBUhCjubahKjìubaubhdX of r …r }r(hBX of hCjöubjö)r}r(hBUhCjöhINhKjùhM}r(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX is newer than r…r}r(hBX is newer than hCjöubjö)r}r(hBUhCjöhINhKjùhM}r(UlatexjQhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX, which in turn is newer than r…r}r(hBX, which in turn is newer than hCjöubjö)r}r(hBUhCjöhINhKjùhM}r(Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX.…r}r(hBX.hCjöubeubh˜)r }r!(hBXŒIn this case resolving |S1| will result in |P3| even though |P1| is the most recent object since the obsolescence chain overrides the times.hCjºhIhJhKh§hM}r"(hO]hP]hQ]hR]hU]uhWMhXhhY]r#(hdXIn this case resolving r$…r%}r&(hBXIn this case resolving hCj ubjö)r'}r((hBUhCj hINhKjùhM}r)(UlatexjhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX will result in r*…r+}r,(hBX will result in hCj ubjö)r-}r.(hBUhCj hINhKjùhM}r/(Ulatexj[hR]hQ]hO]hP]hU]uhWNhXhhY]ubhdX even though r0…r1}r2(hBX even though hCj ubjö)r3}r4(hBUhCj hINhKjùhM}r5(UlatexjGhR]hQ]hO]hP]hU]uhWNhXhhY]ubhdXL is the most recent object since the obsolescence chain overrides the times.r6…r7}r8(hBXL is the most recent object since the obsolescence chain overrides the times.hCj ubeubeubeubhIhJhKj-hM}r9(hO]hP]hQ]hR]hU]r:h>auhWKˆhXhhY]r;jö)r<}r=(hBUhM}r>(UlatexjhR]hQ]hO]hP]hU]uhCh@hY]hKjùubaubj|jxj9j5j¼j¸j0j+jÅjÁjj‹j†j‚jLjHjVjRjBj>j`j\XOjÚjsjojjjfX_j¯XbjÒj¡jjªj¦XojÊj˜j”XxjâuUparse_messagesr?]r@(cdocutils.nodes system_message rA)rB}rC(hBUhM}rD(hO]UlevelKhR]hQ]UsourcehJhP]hU]UlineMaUtypeUWARNINGrEuhY]rFh˜)rG}rH(hBUhM}rI(hO]hP]hQ]hR]hU]uhCjBhY]rJhdX duplicate label of equation c16, other instance in /var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/ContentMutability.txtrK…rL}rM(hBUhCjGubahKh§ubahKUsystem_messagerNubjA)rO}rP(hBUhM}rQ(hO]UlevelKhR]hQ]UsourcehJhP]hU]UlineM{UtypejEuhY]rRh˜)rS}rT(hBUhM}rU(hO]hP]hQ]hR]hU]uhCjOhY]rVhdX duplicate label of equation c17, other instance in /var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/ContentMutability.txtrW…rX}rY(hBUhCjSubahKh§ubahKjNubjA)rZ}r[(hBUhCjhIhJhKjNhM}r\(hO]UlevelKhR]hQ]UsourcehJhP]hU]UlineM–UtypeUERRORr]uhWM•hXhhY]r^h˜)r_}r`(hBXUnexpected indentation.hM}ra(hO]hP]hQ]hR]hU]uhCjZhY]rbhdXUnexpected indentation.rc…rd}re(hBUhCj_ubahKh§ubaubjA)rf}rg(hBUhCjÉ hIhJhKjNhM}rh(hO]UlevelKhR]hQ]UsourcehJhP]hU]UlineM¤UtypeUSEVEREriuhWM¥hXhhY]rj(h˜)rk}rl(hBXTitle level inconsistent:hM}rm(hO]hP]hQ]hR]hU]uhCjfhY]rnhdXTitle level inconsistent:ro…rp}rq(hBUhCjkubahKh§ubj)rr}rs(hBX#Prioritized goals ^^^^^^^^^^^^^^^^^hM}rt(jjhR]hQ]hO]hP]hU]uhCjfhY]ruhdX#Prioritized goals ^^^^^^^^^^^^^^^^^rv…rw}rx(hBUhCjrubahKjubeubeUcurrent_sourceryNU decorationrzNUautofootnote_startr{KUnameidsr|}r}(hj&hj†hjsh j³h jøh h¹h jyh jhh÷hj hhähjChjVhjhj0hjihj|hj)hhhj`hjÒhj™hj9hj¬hjvhjMh jLh!jÆh"hÍh#jÿh$jch%jåh&jŸh'jÙh(j'h)j:h*jh+j¢h,jµh-jÈh.jÛh/hTh0jh1jîh2j h3j‰h4jh5jSh6jfh7jìh8jŒh9j<h:jh;j¿uhY]r~hGahBUU transformerrNU footnote_refsr€}rUrefnamesr‚}rƒUsymbol_footnotesr„]r…Uautofootnote_refsr†]r‡Usymbol_footnote_refsrˆ]r‰U citationsrŠ]r‹hXhU current_linerŒNUtransform_messagesr]rŽ(jA)r}r(hBUhM}r‘(hO]UlevelKhR]hQ]UsourcehJhP]hU]UlineKUtypeUINFOr’uhY]r“h˜)r”}r•(hBUhM}r–(hO]hP]hQ]hR]hU]uhCjhY]r—hdX-Hyperlink target "index-0" is not referenced.r˜…r™}rš(hBUhCj”ubahKh§ubahKjNubjA)r›}rœ(hBUhM}r(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]ržh˜)rŸ}r (hBUhM}r¡(hO]hP]hQ]hR]hU]uhCj›hY]r¢hdX1Hyperlink target "equation-c1" is not referenced.r£…r¤}r¥(hBUhCjŸubahKh§ubahKjNubjA)r¦}r§(hBUhM}r¨(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]r©h˜)rª}r«(hBUhM}r¬(hO]hP]hQ]hR]hU]uhCj¦hY]r­hdX1Hyperlink target "equation-c2" is not referenced.r®…r¯}r°(hBUhCjªubahKh§ubahKjNubjA)r±}r²(hBUhM}r³(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]r´h˜)rµ}r¶(hBUhM}r·(hO]hP]hQ]hR]hU]uhCj±hY]r¸hdX1Hyperlink target "equation-c3" is not referenced.r¹…rº}r»(hBUhCjµubahKh§ubahKjNubjA)r¼}r½(hBUhM}r¾(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]r¿h˜)rÀ}rÁ(hBUhM}rÂ(hO]hP]hQ]hR]hU]uhCj¼hY]rÃhdX1Hyperlink target "equation-c4" is not referenced.rÄ…rÅ}rÆ(hBUhCjÀubahKh§ubahKjNubjA)rÇ}rÈ(hBUhM}rÉ(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rÊh˜)rË}rÌ(hBUhM}rÍ(hO]hP]hQ]hR]hU]uhCjÇhY]rÎhdX1Hyperlink target "equation-c5" is not referenced.rÏ…rÐ}rÑ(hBUhCjËubahKh§ubahKjNubjA)rÒ}rÓ(hBUhM}rÔ(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rÕh˜)rÖ}r×(hBUhM}rØ(hO]hP]hQ]hR]hU]uhCjÒhY]rÙhdX1Hyperlink target "equation-c6" is not referenced.rÚ…rÛ}rÜ(hBUhCjÖubahKh§ubahKjNubjA)rÝ}rÞ(hBUhM}rß(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]ràh˜)rá}râ(hBUhM}rã(hO]hP]hQ]hR]hU]uhCjÝhY]rähdX1Hyperlink target "equation-c7" is not referenced.rå…ræ}rç(hBUhCjáubahKh§ubahKjNubjA)rè}ré(hBUhM}rê(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rëh˜)rì}rí(hBUhM}rî(hO]hP]hQ]hR]hU]uhCjèhY]rïhdX1Hyperlink target "equation-c8" is not referenced.rð…rñ}rò(hBUhCjìubahKh§ubahKjNubjA)ró}rô(hBUhM}rõ(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]röh˜)r÷}rø(hBUhM}rù(hO]hP]hQ]hR]hU]uhCjóhY]rúhdX1Hyperlink target "equation-c9" is not referenced.rû…rü}rý(hBUhCj÷ubahKh§ubahKjNubjA)rþ}rÿ(hBUhM}r(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rh˜)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjþhY]rhdX2Hyperlink target "equation-c10" is not referenced.r…r}r(hBUhCjubahKh§ubahKjNubjA)r }r (hBUhM}r (hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]r h˜)r }r(hBUhM}r(hO]hP]hQ]hR]hU]uhCj hY]rhdX2Hyperlink target "equation-c11" is not referenced.r…r}r(hBUhCj ubahKh§ubahKjNubjA)r}r(hBUhM}r(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rh˜)r}r(hBUhM}r(hO]hP]hQ]hR]hU]uhCjhY]rhdX2Hyperlink target "equation-c12" is not referenced.r…r}r(hBUhCjubahKh§ubahKjNubjA)r}r (hBUhM}r!(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]r"h˜)r#}r$(hBUhM}r%(hO]hP]hQ]hR]hU]uhCjhY]r&hdX2Hyperlink target "equation-c13" is not referenced.r'…r(}r)(hBUhCj#ubahKh§ubahKjNubjA)r*}r+(hBUhM}r,(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]r-h˜)r.}r/(hBUhM}r0(hO]hP]hQ]hR]hU]uhCj*hY]r1hdX2Hyperlink target "equation-c14" is not referenced.r2…r3}r4(hBUhCj.ubahKh§ubahKjNubjA)r5}r6(hBUhM}r7(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]r8h˜)r9}r:(hBUhM}r;(hO]hP]hQ]hR]hU]uhCj5hY]r<hdX2Hyperlink target "equation-c15" is not referenced.r=…r>}r?(hBUhCj9ubahKh§ubahKjNubjA)r@}rA(hBUhM}rB(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rCh˜)rD}rE(hBUhM}rF(hO]hP]hQ]hR]hU]uhCj@hY]rGhdX2Hyperlink target "equation-c16" is not referenced.rH…rI}rJ(hBUhCjDubahKh§ubahKjNubjA)rK}rL(hBUhM}rM(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rNh˜)rO}rP(hBUhM}rQ(hO]hP]hQ]hR]hU]uhCjKhY]rRhdX2Hyperlink target "equation-c17" is not referenced.rS…rT}rU(hBUhCjOubahKh§ubahKjNubjA)rV}rW(hBUhM}rX(hO]UlevelKhR]hQ]UsourcehJhP]hU]Utypej’uhY]rYh˜)rZ}r[(hBUhM}r\(hO]hP]hQ]hR]hU]uhCjVhY]r]hdX-Hyperlink target "index-1" is not referenced.r^…r_}r`(hBUhCjZubahKh§ubahKjNubeUreporterraNUid_startrbK6U autofootnotesrc]rdU citation_refsre}rfUindirect_targetsrg]rhUsettingsri(cdocutils.frontend Values rjork}rl(Ufootnote_backlinksrmKUrecord_dependenciesrnNU rfc_base_urlroUhttps://tools.ietf.org/html/rpU tracebackrqˆUpep_referencesrrNUstrip_commentsrsNU toc_backlinksrtUentryruU language_codervUenrwU datestamprxNU report_levelryKU _destinationrzNU halt_levelr{KU strip_classesr|Nh_NUerror_encoding_error_handlerr}Ubackslashreplacer~UdebugrNUembed_stylesheetr€‰Uoutput_encoding_error_handlerrUstrictr‚U sectnum_xformrƒKUdump_transformsr„NU 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_xmlrNUexpose_internalsrNUsectsubtitle_xformr‘‰U source_linkr’NUrfc_referencesr“NUoutput_encodingr”Uutf-8r•U source_urlr–NUinput_encodingr—U utf-8-sigr˜U_disable_configr™NU id_prefixršUU tab_widthr›KUerror_encodingrœUUTF-8rU_sourceržhJUgettext_compactrŸˆU generatorr NUdump_internalsr¡NU smart_quotesr¢‰U pep_base_urlr£U https://www.python.org/dev/peps/r¤Usyntax_highlightr¥Ulongr¦Uinput_encoding_error_handlerr§j‚Uauto_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²(j9jj jÈj;j7j(j$jÿjÉ jþjújëjçjØjÔjÅjÁj²j®jŸj›jvjžjRjNjyj÷jjhphyjyj{jbj^j³jÝj&jêjÑjÍjÒj‘jcjhÍhEj¿jtj/j+j)jj jjjhãhßhöhòh¸h´hÌhÈjfj¾hbhžjLjajjj•j–j\j]jæjçj"j#jÑjÒjújüj.j/jºj»j†jÇjSj±j¢jöj™j)jÈj«jµjPjîj£jÛjjjÐjj#j:jºj'jFj<jph¹j¥jjÞ j`j•jUjQjhjdj{jwjŽjŠj¡jj´j°jÇjÃjjèjíjéjjüjåj¦jjmjÚjÖjMjDjŸjajÆjúj0jLjjÖjVjjCjÁhäjêj jh÷jªj|jjij…jsj²j‰j³hhyhThGjujqjˆj„jKjGjÙj j%j!j8j4j÷jójj jøj»jäjàjejajxjtj‹j‡jžjšjjj}j~j»j¼j`jaj³j´j*j+jàjáj3j4j¬j>jBj>jŒj(j¾jºj«j§jìj j&j"jjjLjHj9j5jrjnj_j[j˜j”j…juUsubstitution_namesr³}r´(Xp2jLXp3jVXp1jBXrsijÅXp4j`Xs2h>Xs1j|j¡j¡jªjªXoXOj˜j˜Xpisjtkj¼XsjjsXsijjXbXbjjj†j†Xpjj9XxXxXpij0X_X_uhKhXhM}rµ(hO]hR]hQ]UsourcehJhP]hU]uU footnotesr¶]r·Urefidsr¸}r¹(j`]rºj]aj3]r»j0ajà]r¼jÝaj³]r½j°aj*]r¾j'aj]r¿jaj]rÀjahp]rÁhtaj•]rÂj’ajy]rÃjvaj}]rÄjzaj\]rÅjYajæ]rÆjãaj"]rÇjajÑ]rÈjÎajú]rÉj÷aj»]rÊj¸aj.]rËj+ajº]rÌj·auub.