Äcdocutils.nodes
document
q)Åq}q(U	nametypesq}q(X���investigator toolkitqNX���itk architectureqNuUsubstitution_defsq}q	Uparse_messagesq
]qUcurrent_sourceqNU
decorationq
NUautofootnote_startqKUnameidsq}q(hUinvestigator-toolkitqhUitk-architecturequUchildrenq]qcdocutils.nodes
section
q)Åq}q(U	rawsourceqU�UparentqhUsourceqXh���/var/lib/jenkins/jobs/API_Documentation_trunk/workspace/api-documentation/source/design/itk-overview.txtqUtagnameqUsectionqU
attributesq}q(Udupnamesq ]Uclassesq!]Ubackrefsq"]Uidsq#]q$haUnamesq%]q&hauUlineq'KUdocumentq(hh]q)(cdocutils.nodes
title
q*)Åq+}q,(hX���Investigator Toolkitq-hhhhhUtitleq.h}q/(h ]h!]h"]h#]h%]uh'Kh(hh]q0cdocutils.nodes
Text
q1X���Investigator Toolkitq2ÖÅq3}q4(hh-hh+ubaubcdocutils.nodes
paragraph
q5)Åq6}q7(hX��The Investigator Toolkit provides a suite of software tools that are useful
for the various audiences that DataONE serves. The tools fall in a number
of categories, which are further developed here, with examples of potential
applications that would fit into each category.q8hhhhhU	paragraphq9h}q:(h ]h!]h"]h#]h%]uh'Kh(hh]q;h1X��The Investigator Toolkit provides a suite of software tools that are useful
for the various audiences that DataONE serves. The tools fall in a number
of categories, which are further developed here, with examples of potential
applications that would fit into each category.q<ÖÅq=}q>(hh8hh6ubaubcdocutils.nodes
compound
q?)Åq@}qA(hU�hhhhhUcompoundqBh}qC(h ]h!]qDUtoctree-wrapperqEah"]h#]h%]uh'Nh(hh]qFcsphinx.addnodes
toctree
qG)ÅqH}qI(hU�hh@hhhUtoctreeqJh}qK(UnumberedqLK�U
includehiddenqMâhX���design/itk-overviewqNUcaptionqONUglobqPâh#]h"]U
titlesonlyqQâh ]h!]h%]UentriesqR]qS(NX���design/itk-webqTÜqUNX���design/itk-metadataqVÜqWNX���design/itk-analysisqXÜqYNX���design/itk-librariesqZÜq[eUhiddenq\âUincludefilesq]]q^(hThVhXhZeUmaxdepthq_Kuh'K	h]ubaubh)Åq`}qa(hU�hhhhhhh}qb(h ]h!]h"]h#]qchah%]qdhauh'Kh(hh]qe(h*)Åqf}qg(hX���ITK Architectureqhhh`hhhh.h}qi(h ]h!]h"]h#]h%]uh'Kh(hh]qjh1X���ITK ArchitectureqkÖÅql}qm(hhhhhfubaubh5)Åqn}qo(hX��Outline of class structure for the client library. There are two fundamental
elements: nodes and granules. The former representing the base of Member and
Coordinating Node functionality, and the later representing the (currently)
smallest addressable unit of content in DataONE.qphh`hhhh9h}qq(h ]h!]h"]h#]h%]uh'Kh(hh]qrh1X��Outline of class structure for the client library. There are two fundamental
elements: nodes and granules. The former representing the base of Member and
Coordinating Node functionality, and the later representing the (currently)
smallest addressable unit of content in DataONE.qsÖÅqt}qu(hhphhnubaubcdocutils.nodes
comment
qv)Åqw}qx(hX¡��@startuml images/itk_structure.png

  NodeClient --|> CNodeClient
  NodeClient --|> MNodeClient

  DataOneClient .. CNodeClient
  DataOneClient .. MNodeClient

  DataOneClient --|> CachingDataOneClient

  Granule .. SystemMetadata

  Granule --|> DataObject
  Granule --|> ScienceMetadata
  Granule --|> DataPackage

  class CNodeClient {
    Node[] : resolve(Identifier pid)
  }

  class DataOneClient {
    CNodeClient : getCNodeClient()
    MNodeClient : getMNodeClient()

    Identifier[] : search(String query, long start, long count)
    Granule : get(Identifier)
  }

  class Granule {
    - DataOneClient : client
    - DataOneClient : getClient()
    Identifier : getPid()
    ObjectFormatIdentifier : getFormatId()
    long : getSize()
    ByteStream : get(Node node)
    Granule[] : getPackages()
  }

  class DataObject {
    Granule[] : getDocumentedBy()
  }

  class ScienceMetadata {
    Granule[] : getDocuments()
  }

  class DataPackage {
    Granule[] : getGranules()
    ScienceMetadata[] : getDocuments()
    DataObject[] : getData()
  }


  class SystemMetadata {
    + serialVersion : xs.long[1..1]
    + identifier : Identifier[1..1]
    + formatid : ObjectFormatIdentifier[1..1]
    + size : xs.unsignedLong[1..1]
    + checksum : Checksum[1..1]
    + submitter : Subject[1..1]
    + rightsHolder : Subject[1..1]
    + accessPolicy : AccessPolicy[0..1]
    + replicationPolicy : ReplicationPolicy[0..1]
    + obsoletes : Identifier[0..1]
    + obsoletedBy : Identifier[0..1]
    + dateUploaded : xs.dateTime[1..1]
    + dateSysMetadataModified : xs.dateTime[1..1]
    + originMemberNode : NodeReference[0..1]
    + authoritativeMemberNode : NodeReference[0..1]
    + replica : Replica[0..*]
  }


@endumlhh`hhhUcommentqyh}qz(U	xml:spaceq{Upreserveq|h#]h"]h ]h!]h%]uh'Keh(hh]q}h1X¡��@startuml images/itk_structure.png

  NodeClient --|> CNodeClient
  NodeClient --|> MNodeClient

  DataOneClient .. CNodeClient
  DataOneClient .. MNodeClient

  DataOneClient --|> CachingDataOneClient

  Granule .. SystemMetadata

  Granule --|> DataObject
  Granule --|> ScienceMetadata
  Granule --|> DataPackage

  class CNodeClient {
    Node[] : resolve(Identifier pid)
  }

  class DataOneClient {
    CNodeClient : getCNodeClient()
    MNodeClient : getMNodeClient()

    Identifier[] : search(String query, long start, long count)
    Granule : get(Identifier)
  }

  class Granule {
    - DataOneClient : client
    - DataOneClient : getClient()
    Identifier : getPid()
    ObjectFormatIdentifier : getFormatId()
    long : getSize()
    ByteStream : get(Node node)
    Granule[] : getPackages()
  }

  class DataObject {
    Granule[] : getDocumentedBy()
  }

  class ScienceMetadata {
    Granule[] : getDocuments()
  }

  class DataPackage {
    Granule[] : getGranules()
    ScienceMetadata[] : getDocuments()
    DataObject[] : getData()
  }


  class SystemMetadata {
    + serialVersion : xs.long[1..1]
    + identifier : Identifier[1..1]
    + formatid : ObjectFormatIdentifier[1..1]
    + size : xs.unsignedLong[1..1]
    + checksum : Checksum[1..1]
    + submitter : Subject[1..1]
    + rightsHolder : Subject[1..1]
    + accessPolicy : AccessPolicy[0..1]
    + replicationPolicy : ReplicationPolicy[0..1]
    + obsoletes : Identifier[0..1]
    + obsoletedBy : Identifier[0..1]
    + dateUploaded : xs.dateTime[1..1]
    + dateSysMetadataModified : xs.dateTime[1..1]
    + originMemberNode : NodeReference[0..1]
    + authoritativeMemberNode : NodeReference[0..1]
    + replica : Replica[0..*]
  }


@endumlq~ÖÅq}qÄ(hU�hhwubaubeubeubahU�UtransformerqÅNU
footnote_refsqÇ}qÉUrefnamesqÑ}qÖUsymbol_footnotesqÜ]qáUautofootnote_refsqà]qâUsymbol_footnote_refsqä]qãU	citationsqå]qçh(hUcurrent_lineqéNUtransform_messagesqè]qêUreporterqëNUid_startqíKU
autofootnotesqì]qîU
citation_refsqï}qñUindirect_targetsqó]qòUsettingsqô(cdocutils.frontend
Values
qöoqõ}qú(Ufootnote_backlinksqùKUrecord_dependenciesqûNUrfc_base_urlqüUhttps://tools.ietf.org/html/q†U	tracebackq°àUpep_referencesq¢NUstrip_commentsq£NU
toc_backlinksq§Uentryq•U
language_codeq¶UenqßU	datestampq®NUreport_levelq©KU_destinationq™NU
halt_levelq´KU
strip_classesq¨Nh.NUerror_encoding_error_handlerq≠UbackslashreplaceqÆUdebugqØNUembed_stylesheetq∞âUoutput_encoding_error_handlerq±Ustrictq≤U
sectnum_xformq≥KUdump_transformsq¥NU
docinfo_xformqµKUwarning_streamq∂NUpep_file_url_templateq∑Upep-%04dq∏Uexit_status_levelqπKUconfigq∫NUstrict_visitorqªNUcloak_email_addressesqºàUtrim_footnote_reference_spaceqΩâUenvqæNUdump_pseudo_xmlqøNUexpose_internalsq¿NUsectsubtitle_xformq¡âUsource_linkq¬NUrfc_referencesq√NUoutput_encodingqƒUutf-8q≈U
source_urlq∆NUinput_encodingq«U	utf-8-sigq»U_disable_configq…NU	id_prefixq U�U	tab_widthqÀKUerror_encodingqÃUUTF-8qÕU_sourceqŒhUgettext_compactqœàU	generatorq–NUdump_internalsq—NUsmart_quotesq“âUpep_base_urlq”U https://www.python.org/dev/peps/q‘Usyntax_highlightq’Ulongq÷Uinput_encoding_error_handlerq◊h≤Uauto_id_prefixqÿUidqŸUdoctitle_xformq⁄âUstrip_elements_with_classesq€NU
_config_filesq‹]Ufile_insertion_enabledq›àUraw_enabledqfiKU
dump_settingsqflNubUsymbol_footnote_startq‡K�Uidsq·}q‚(hhhh`uUsubstitution_namesq„}q‰hh(h}qÂ(h ]h#]h"]Usourcehh!]h%]uU	footnotesqÊ]qÁUrefidsqË}qÈub.