Quick Reference
A series of 8-bit bytes which combined together form a digital object. OctetStream is used to transfer object bytes such as the response to MNRead.get().
A simple integer. The range of expected values should be described with the accompanying API call.
The Integer type is serialized over XML using the predefined XMLSchema integer type, the value space of which is the infinite series {...,-2,-1,0,1,2,...}.
A boolean response is commonly used in the DataONE service APIs to indicate success or otherwise of an operation. For operations that are called through the service interfaces, a positive boolean response (i.e. True) is indicated by returning a HTTP response with a status code of “200”. The body of the message may contain additional content, but this should be ignored by the receiver.
A False or failure response must return an appropriate Error message and must set the appropriate HTTP status code on the response to indicate a failure.
The Boolean type is serialized over XML using the predefined XMLSchema boolean type, an instance of which can have the following legal literals {true, false, 1, 0}.
A string that completely identifies a specific date and time. When DateTime values are used within fields in request and response messages, and as URL-encoded values for parameters, all DateTime values will be typed using the XML Schema Datatypes definition (see XMLSchema dateTime) for the datetime serialization syntax (xs:dateTime). This syntax represents a subset of the ISO 8601 standard notation, and so standard ISO 8601 parsing libraries can be used to parse the values (see libraries used below). In addition, within DataONE, these values MUST be expressed with a timezone designation in UTC/GMT time only; local times are not permitted.
Valid representations include:
The milliseconds may be left off if that precision is not available.
In addition, in any methods that use date time values in HTTP headers, the serialization will follow the HTTP Full Date standard (RFC 1123), e.g:
Sun, 06 Nov 1994 08:49:37 GMT
In Java, code against java.util.Date, though serialization and deserialization will be performed with org.joda.DateTime to ensure millisecond precision is correct.
In Python, we use datetime.datetime to represent datetimes internally and a library called iso8601 to serialize and deserialize to Types.DateTime and Pyxb for the XML representation.
See also the XMLSchema dateTime type which is used for serializing DateTime values in XML transmitted between DataONE components.
The MNRead.describe() method provides a low cost hint about the type, size and state of an object.
The DescribeResponse is returned from the server in a HTTP HEAD response, and hence the values must be represented in the HTTP response headers. There is no XML serialization of a DescribeResponse.
The value of the SystemMetadata.formatId entry available in the SystemMetadata.
Size of the object in bytes, the value of SystemMetadata.size from SystemMetadata.
A DateTime value that indicates when the system metadata associated with the object was last modified, i.e. the value of SystemMetadata.dateSysMetadataModified for the object.
The checksumAlgorithm and checksum value of the object being examined. The algorithm and checksum values are separated by a single comma with the algorithm first.
The serialVersion value of the system metadata for the object as reported by the Node responding to the describe request.
Example of a HEAD response on object “ABC123”:
curl -I http://mn1.dataone.org/mn/v1/object/ABC123
HTTP/1.1 200 OK
Last-Modified: Wed, 16 Dec 2009 13:58:34 GMT
Content-Length: 10400
Content-Type: application/octet-stream
DataONE-formatId: eml://ecoinformatics.org/eml-2.0.1
DataONE-Checksum: SHA-1,2e01e17467891f7c933dbaa00e1459d23db3fe4f
DataONE-SerialVersion: 1234
The cryptographic hash algorithm used to calculate a checksum. DataONE recognizes the Library of Congress list of cryptographic hash algorithms that can be used as names in this field, and specifically uses the madsrdf:authoritativeLabel field as the name of the algorithm in this field. See: Library of Congress Cryptographic Algorithm Vocabulary. All compliant implementations must support at least SHA-1 and MD5, but may support other algorithms as well.
Valid entries include: SHA-1, MD5
The default checksum is SHA-1.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ChecksumAlgorithm">
<xs:restriction xmlns:d1="http://ns.dataone.org/service/types/v1" base="xs:string"/>
</xs:simpleType>
A single value in the series of values that together form a single crontab entry. The format follows the syntax conventions defined by the Quartz Scheduler, as excerpted here under the Apache 2 license:
Field Name | Allowed Values | Allowed Special Characters |
---|---|---|
Seconds | 0-59 | , - * / |
Minutes | 0-59 | , - * / |
Hours | 0-23 | , - * / |
Day-of-month | 1-31 | , - * ? / L W |
Month | 1-12 or JAN-DEC | , - * / |
Day-of-Week | 1-7 or SUN-SAT | , - * ? / L # |
Year (Optional) | empty, 1970-2199 | , - * / |
The ‘*’ character is used to specify all values. For example, “*” in the minute field means “every minute”.
The ‘?’ character is allowed for the day-of-month and day-of-week fields. It is used to specify ‘no specific value’. This is useful when you need to specify something in one of the two fields, but not the other.
The ‘-‘ character is used to specify ranges For example “10-12” in the hour field means “the hours 10, 11 and 12”.
The ‘,’ character is used to specify additional values. For example “MON,WED,FRI” in the day-of-week field means “the days Monday, Wednesday, and Friday”.
The ‘/’ character is used to specify increments. For example “0/15” in the seconds field means “the seconds 0, 15, 30, and 45”. And “5/15” in the seconds field means “the seconds 5, 20, 35, and 50”. Specifying ‘*’ before the ‘/’ is equivalent to specifying 0 is the value to start with. Essentially, for each field in the expression, there is a set of numbers that can be turned on or off. For seconds and minutes, the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to 31, and for months 1 to 12. The “/” character simply helps you turn on every “nth” value in the given set. Thus “7/6” in the month field only turns on month “7”, it does NOT mean every 6th month, please note that subtlety.
The ‘L’ character is allowed for the day-of-month and day-of-week fields. This character is short-hand for “last”, but it has different meaning in each of the two fields. For example, the value “L” in the day-of-month field means “the last day of the month” - day 31 for January, day 28 for February on non-leap years. If used in the day-of-week field by itself, it simply means “7” or “SAT”. But if used in the day-of-week field after another value, it means “the last xxx day of the month” - for example “6L” means “the last friday of the month”. You can also specify an offset from the last day of the month, such as “L-3” which would mean the third-to-last day of the calendar month. When using the ‘L’ option, it is important not to specify lists, or ranges of values, as you’ll get confusing/unexpected results.
The ‘W’ character is allowed for the day-of-month field. This character is used to specify the weekday (Monday-Friday) nearest the given day. As an example, if you were to specify “15W” as the value for the day-of-month field, the meaning is: “the nearest weekday to the 15th of the month”. So if the 15th is a Saturday, the trigger will fire on Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th. However if you specify “1W” as the value for day-of-month, and the 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not ‘jump’ over the boundary of a month’s days. The ‘W’ character can only be specified when the day-of-month is a single day, not a range or list of days.
The ‘L’ and ‘W’ characters can also be combined for the day-of-month expression to yield ‘LW’, which translates to “last weekday of the month”.
The ‘#’ character is allowed for the day-of-week field. This character is used to specify “the nth” XXX day of the month. For example, the value of “6#3” in the day-of-week field means the third Friday of the month (day 6 = Friday and “#3” = the 3rd one in the month). Other examples: “2#1” = the first Monday of the month and “4#5” = the fifth Wednesday of the month. Note that if you specify “#5” and there is not 5 of the given day-of-week in the month, then no firing will occur that month. If the ‘#’ character is used, there can only be one expression in the day-of-week field (“3#1,6#3” is not valid, since there are two expressions).
The legal characters and the names of months and days of the week are not case sensitive.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="CrontabEntry">
<xs:restriction base="xs:token">
<xs:pattern xmlns:d1="http://ns.dataone.org/service/types/v1" value="([\?\*\d/#,\-a-zA-Z])+"/>
</xs:restriction>
</xs:simpleType>
A restriction on the seconds field in a single Schedule entry, following the syntax conventions defined by the Quartz Scheduler.
The wildcard character value is not allowed in this (seconds) field as this would create an impractical synchronization schedule
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="CrontabEntrySeconds">
<xs:restriction base="xs:token">
<xs:pattern xmlns:d1="http://ns.dataone.org/service/types/v1" value="[0-5]?\d"/>
</xs:restriction>
</xs:simpleType>
The controlled list of events that are logged, which will include create, update, delete, read, replicate, synchronization_failed and replication_failed events.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Event">
<xs:restriction base="xs:string">
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="create"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="read"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="update"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="delete"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="replicate"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="synchronization_failed"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="replication_failed"/>
</xs:restriction>
</xs:simpleType>
An indicator of the current node accessibility. Nodes that are marked down are inaccessible for service operations, those that are up are in the normal accessible state, and unknown indicates that the state has not been determined yet.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NodeState">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="up"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="down"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="unknown"/>
</xs:restriction>
</xs:simpleType>
The type of this node, which is either mn for Member Nodes, or cn for Coordinating Nodes.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NodeType">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="mn"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="cn"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="Monitor"/>
</xs:restriction>
</xs:simpleType>
A derived string type with at least length 1 and it must contain non-whitespace.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NonEmptyString">
<xs:restriction base="xs:string">
<xs:minLength xmlns:d1="http://ns.dataone.org/service/types/v1" value="1"/>
<xs:pattern xmlns:d1="http://ns.dataone.org/service/types/v1" value="[\s]*[\S][\s\S]*"/>
</xs:restriction>
</xs:simpleType>
A string used to identify an instance of Types.ObjectFormat and MUST be unique within an instance of Types.ObjectFormatList.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ObjectFormatIdentifier">
<xs:restriction xmlns:d1="http://ns.dataone.org/service/types/v1" base="d1:NonEmptyString"/>
</xs:simpleType>
An NonEmptyString800 is a NonEmptyString string with a maximum length of 800 characters.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NonEmptyString800">
<xs:restriction base="d1:NonEmptyString">
<xs:maxLength xmlns:d1="http://ns.dataone.org/service/types/v1" value="800"/>
</xs:restriction>
</xs:simpleType>
A NonEmptyNoWhitespaceString800 is a NonEmptyString800 string that doesn’t allow whitespace characters (space, tab, newline, carriage return). Unicode whitespace characters outside of the ASCII character set need to be checked programmatically.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NonEmptyNoWhitespaceString800">
<xs:restriction base="d1:NonEmptyString800">
<xs:pattern xmlns:d1="http://ns.dataone.org/service/types/v1" value="\S+"/>
</xs:restriction>
</xs:simpleType>
A string value indicating the set of actions that can be performed on a resource as specified in an access policy. The set of permissions include the ability to read a resource (read), modify a resource (write), and to change the set of access control policies for a resource (changePermission). Permission levels are cumulative, in that write permission implicitly grants read access, and changePermission permission implicitly grants write access (and therefore read as well). If a subject is granted multiple permissions, the highest level of access applies.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Permission">
<xs:restriction base="xs:string">
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="read"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="write"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="changePermission"/>
</xs:restriction>
</xs:simpleType>
An enumerated string value indicating the current state of a replica of an object. When an object identified needs to be replicated, it is added to the replication task queue and is marked as queued; a CN will pick up that task and request that it be replicated to a MN and marks that it as requested; when a MN finishes replicating the object, it informs the CN that it is finished and it is marked as completed.
If an MN is unable to complete replication, the replication status is marked as failed.
Periodically a CN checks each replica to be sure it is both available and valid (matching checksum with original), and if it is either inaccessible or invalid then it marks it as invalidated, which indicates that the object replication needs to be invoked again.
The replication process is described in Use Case 09 (Use Case 09 - Replicate MN to MN).
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ReplicationStatus">
<xs:restriction base="xs:string">
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="queued"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="requested"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="completed"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="failed"/>
<xs:enumeration xmlns:d1="http://ns.dataone.org/service/types/v1" value="invalidated"/>
</xs:restriction>
</xs:simpleType>
The name of a service that is available on a Node.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ServiceName">
<xs:restriction xmlns:d1="http://ns.dataone.org/service/types/v1" base="d1:NonEmptyString"/>
</xs:simpleType>
The version of a service provided by a Node. Service versions are expressed as version labels such as “v1”, “v2”. DataONE services are released only as major service versions; patches to services are not indicated in this version label.
<xs:simpleType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ServiceVersion">
<xs:restriction xmlns:d1="http://ns.dataone.org/service/types/v1" base="d1:NonEmptyString"/>
</xs:simpleType>
A set of rules that specifies as a whole the allowable permissions that a given user, group, or system has for accessing a resource, including data, metadata, resource map, and service resources. An access policy consists of a sequence of allow rules that grant permissions to principals, which can be individual users, groups of users, symbolic users, or systems and services.
Type: Types.AccessRule
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="AccessPolicy">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="allow" type="d1:AccessRule" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
A rule that is used to allow a subject to perform an action (such as read or write) on an object in DataONE. Rules are tuples (subject, permission) specifying which permissions are allowed for the subjects(s). If a subject is granted multiple permissions, the highest level of access applies. The resource on which the access control rules are being applied is determined by the containing SystemMetadata document, or in the case of methods such as CNAuthorization.setAccessPolicy(), by the pid in the method parameters.
Access control rules are specified by the Origin Member Node when the object is first registered in DataONE. If no rules are specified at that time, then the object is deemed to be private and the only user with access to the object (read, write, or otherwise) is the Rights Holder.
Type: Types.Subject
Type: Types.Permission
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="AccessRule">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="subject" type="d1:Subject" minOccurs="1" maxOccurs="unbounded"/>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="permission" type="d1:Permission" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Represents the value of a computed checksum expressed as a hexadecimal formatted version of the message digest. Note that these hex values should be treated as case-insensitive strings, in that leading zeros must be preserved, and digests can use a mixture of upper and lower case letters to represent the hex values. Comparison algorithms MUST be able to handle any variant of these representations (e.g., by performing a case-insensitive string match on hex digests from the same algorithm).
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Checksum">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="algorithm" type="d1:ChecksumAlgorithm" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
Represents a list of checksum algorithms.
Type: Types.ChecksumAlgorithm
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ChecksumAlgorithmList">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="algorithm" type="d1:ChecksumAlgorithm" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Group represents metadata about a Subject that represents a collection of other Subjects. Groups provide a convenient mechanism to express access rules for certain roles that are not necessarily tied to particular principals over time.
Type: Types.Subject
The unique, immutable identifier of the group. Group subjects must not be reused, and so they are both immutable and can not be deleted from the DataONE system.
Type: Types.NonEmptyString
The name of the Group.
Type: Types.Subject
A Subject that is a member of this group, expressed using the unique identifier for that Subject.
Type: Types.Subject
Represents the list of owners of this group. All groups are readable by anyone in the DataONE system, but can only be modified by subjects listed in rightsHolder fields. Designation as a rightsHolder allows the subject, or their equivalent identities, to make changes to the mutable properties of the group, including its name, membership list and rights holder list. The subject of the group itself is immutable.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Group">
<xs:sequence>
<xs:element name="subject" type="d1:Subject" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="groupName" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="hasMember" type="d1:Subject" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="rightsHolder" type="d1:Subject" minOccurs="1" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
An identifier (PID) in the DataONE system that is used to uniquely and globally identify an object. Identifiers can not be reused once assigned. Identifiers can not be deleted from the DataONE system.Identifiers are represented by a Unicode string of printable characters, excluding whitespace. All representations of identifiers must be encoded in 7-bit ASCII or UTF-8.
Identifiers have a maximum length of 800 characters, and a variety of other properties designed for preservation and longevity. Some discussion on this is described in the PID documentation and in decision ticket 577.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Identifier">
<xs:simpleContent>
<xs:extension xmlns:d1="http://ns.dataone.org/service/types/v1" base="d1:NonEmptyNoWhitespaceString800"/>
</xs:simpleContent>
</xs:complexType>
Represents a collection of Types.LogEntry elements, used to transfer log information between DataONE components.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Log">
<xs:complexContent>
<xs:extension base="d1:Slice">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="logEntry" type="d1:LogEntry" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
A single log entry as reported by a Member Node or Coordinating Node through the MNCore.getLogRecords() or CNCore.getLogRecords() methods.
Type: Types.NonEmptyString
A unique identifier for this log entry. The identifier should be unique for a particular node; This is not drawn from the same value space as other identifiers in DataONE, and so is not subjec to the same restrictions.
Type: Types.Identifier
The identifier of the object that was the target of the operation which generated this log entry.
Type: Types.xs.string
The IP address, as reported by the service receiving the request, of the request origin.
Type: Types.xs.string
The user agent of the client making the request, as reported in the User-Agent HTTP header.
Type: Types.Subject
The Subject used for making the request. This may be the DataONE public user if the request is not authenticated, otherwise it will be the Subject of the certificate used for authenticating the request.
Type: Types.Event
An entry from the Types.Event enumeration indicating the type of operation that triggered the log message.
Type: Types.xs.dateTime
A Types.DateTime time stamp indicating when the event triggering the log message ocurred. Note that all time stamps in DataONE are in UTC.
Type: Types.NodeReference
The unique identifier for the node where the log message was generated.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="LogEntry">
<xs:sequence>
<xs:element name="entryId" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="identifier" type="d1:Identifier" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="ipAddress" type="xs:string" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="userAgent" type="xs:string" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="subject" type="d1:Subject" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="event" type="d1:Event" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="dateLogged" type="xs:dateTime" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="nodeIdentifier" type="d1:NodeReference" minOccurs="1" maxOccurs="1">
</xs:element>
</xs:sequence>
</xs:complexType>
A set of values that describe a member or coordinating node, its Internet location, and the services it supports. Several nodes may exist on a single physical device or hostname.
Type: Types.NodeReference
A unique identifier for the node of the form urn:node:NODEID where NODEID is the node specific identifier. This value MUST NOT change for future implementations of the same node, whereas the baseURL may change in the future.
Type: Types.NonEmptyString
A human readable name of the Node. This name can be used as a label in many systems to represent the node, and thus should be short, but understandable.
Type: Types.NonEmptyString
Description of a Node, explaining the community it serves and other relevant information about the node, such as what content is maintained by this node and any other free style notes.
Type: Types.xs.anyURI
The base URL of the node, indicating the protocol, fully qualified domain name, and path to the implementing service, excluding the version of the API. e.g. https://server.example.edu/app/d1/mn rather than https://server.example.edu/app/d1/mn/v1
Type: Types.Services
A list of services that are provided by this node. Used in node descriptions so that nodes can provide metadata about each service they implement and support.
Type: Types.Synchronization
Configuration information for the process by which content is harvested from Member Nodes to Coordinating Nodes. This includes the schedule on which harvesting should occur, and metadata about the last synchronization attempts for the node.
Type: Types.NodeReplicationPolicy
The replication policy for this node that expresses constraints on object size, total objects, source nodes, and object format types. A node may want to restrict replication from only certain peer nodes, may have file size limits, total allocated size limits, or may want to focus on being a replica target for domain-specific object formats.
Type: Types.Ping
Stored results from the MNCore.ping() and CNCore.ping() methods.
Type: Types.Subject
The Subject of this node, which can be repeated as needed. The Node.subject represents the identifier of the node that would be found in X.509 certificates used to securely communicate with this node. Thus, it is an X.509 Distinguished Name that applies to the host on which the Node is operating. When (and if) this hostname changes the new subject for the node would be added to the Node to track the subject that has been used in various access control rules over time.
Type: Types.Subject
The appropriate person or group to contact regarding the disposition, management, and status of this Member Node. The Node.contactSubject is an X.509 Distinguished Name for a person or group that can be used to look up current contact details (e.g., name, email address) for the contact in the DataONE Identity service. DataONE uses the contactSubject to provide notices of interest to DataONE nodes, including information such as policy changes, maintenance updates, node outage notifications, among other information useful for administering a node. Each node that is registered with DataONE must provide at least one contactSubject that has been verified with DataONE.
Type: Types.xs.boolean
Set to true if the node is willing to be a replication target, otherwise false.
Type: Types.xs.boolean
Set to true if the node should be synchronized by a Coordinating Node, otherwise false.
Type: Types.NodeType
The type of the node (Coordinating, Member), chosen from the Types.NodeType type.
Type: Types.NodeState
The state of the node (up, down), chosen from the Types.NodeState type.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Node">
<xs:sequence>
<xs:element name="identifier" type="d1:NodeReference" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="name" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="description" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="baseURL" type="xs:anyURI" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="services" type="d1:Services" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="synchronization" type="d1:Synchronization" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="nodeReplicationPolicy" type="d1:NodeReplicationPolicy" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="ping" type="d1:Ping" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="subject" type="d1:Subject" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="contactSubject" type="d1:Subject" minOccurs="1" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
<xs:attribute name="replicate" use="required" type="xs:boolean">
</xs:attribute>
<xs:attribute name="synchronize" use="required" type="xs:boolean">
</xs:attribute>
<xs:attribute name="type" use="required" type="d1:NodeType">
</xs:attribute>
<xs:attribute name="state" use="required" type="d1:NodeState">
</xs:attribute>
</xs:complexType>
The overall replication policy for the node that expresses constraints on object size, total objects, source nodes, and object format types. A node may choose to restrict replication from only certain peer nodes, may have file size limits, total allocated size limits, or may want to focus on being a replication target for domain-specific object formats.
Type: Types.xs.unsignedLong
An optional statement of the maximum size in octets (8-bit bytes) of objects this node is willing to accept for replication.
Type: Types.xs.unsignedLong
An optional statement of the total space in bytes allocated for replication object storage on this node.
Type: Types.NodeReference
An optional, repeatable statement of a peer source node from which this node is willing to replicate content, expressed as a Types.NodeReference.
Type: Types.ObjectFormatIdentifier
An optional, repeatable statement of an object format that this node is willing to replicate, expressed as a Types.ObjectFormatIdentifier.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NodeReplicationPolicy">
<xs:sequence>
<xs:element name="maxObjectSize" type="xs:unsignedLong" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="spaceAllocated" type="xs:unsignedLong" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="allowedNode" type="d1:NodeReference" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="allowedObjectFormat" type="d1:ObjectFormatIdentifier" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
A list of Types.Node entries returned by CNCore.listNodes().
NodeList is described in NodeList.
Type: Types.Node
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NodeList">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" maxOccurs="unbounded" name="node" type="d1:Node" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
A unique identifier for a DataONE Node. The NodeReference must be unique across nodes, and must always be assigned to one Member or Coordinating Node instance even in the event of the BaseURL or other characteristics changing.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="NodeReference">
<xs:simpleContent>
<xs:extension xmlns:d1="http://ns.dataone.org/service/types/v1" base="d1:NonEmptyString"/>
</xs:simpleContent>
</xs:complexType>
One value from the DataONE Object Format Vocabulary which is returned by CNCore.getFormat().
An ObjectFormat is the structure returned from the CNCore.getFormat() method of the CN REST interface. It provides the unique identifier and the name associated with the object format. Future versions may contain additional structured content from external common typing systems.
Type: Types.ObjectFormatIdentifier
The unique identifier of the object format in the DataONE Object Format Vocabulary. The identifier should comply with DataONE Identifier rules, i.e. no whitespace, only UTF-8 or US-ASCII printable characters.
Type: Types.xs.string
For objects that are typed using a Document Type Definition, this lists the well-known and accepted named version of the DTD. In other cases, an appropriately unambiguous descriptive name should be chosen.
Type: Types.xs.string
A string field indicating whether or not this format is science data (DATA), science metadata (METADATA) or a resource map (RESOURCE). If the format is a self-describing data format that includes science metadata, then the field should also be set to science metadata.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ObjectFormat">
<xs:sequence>
<xs:element name="formatId" type="d1:ObjectFormatIdentifier" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="formatName" type="xs:string" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="formatType" type="xs:string" minOccurs="1" maxOccurs="1">
</xs:element>
</xs:sequence>
</xs:complexType>
An ObjectFormatList is the structure returned from the CNCore.listFormats() method of the CN REST interface. It provides a list of named object formats defined in the DataONE system. Each Types.ObjectFormat returned in the list describes the object format via its name, and future versions may contain additional structured content from common external typing systems.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ObjectFormatList">
<xs:complexContent>
<xs:extension base="d1:Slice">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="objectFormat" type="d1:ObjectFormat" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Metadata about an object, representing a subset of the metadata found in Types.SystemMetadata.
Type: Types.Identifier
Type: Types.Checksum
Type: Types.xs.dateTime
Type: Types.xs.unsignedLong
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ObjectInfo">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="identifier" type="d1:Identifier" minOccurs="1" maxOccurs="1"/>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="formatId" type="d1:ObjectFormatIdentifier"/>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="checksum" type="d1:Checksum" minOccurs="1" maxOccurs="1"/>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="dateSysMetadataModified" type="xs:dateTime"/>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="size" type="xs:unsignedLong"/>
</xs:sequence>
</xs:complexType>
A list of object locations (nodes) from which the object can be retrieved.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ObjectList">
<xs:complexContent>
<xs:extension base="d1:Slice">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="objectInfo" type="d1:ObjectInfo" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Portion of an Types.ObjectLocationList indicating the node from which the object can be retrieved. The principal information on each location is found in the nodeIdentifier, all other fields are provided for convenience, but could also be looked up from the Types.NodeList information obtained from CNCore.listNodes().
Type: Types.NodeReference
Identifier of the Types.Node (the same identifier used in the node registry for identifying the node).
Type: Types.xs.anyURI
The current base URL (the baseURL element from the Types.Node record) for services implemented on the target node. Used with service version to construct a URL for service calls to this node. Note that complete information on services available on a Node is available from the CNCore.listNodes() service.
Type: Types.ServiceVersion
The version of services implemented on the node. Used with base url to construct a URL for service calls to this node. Note that complete information on services available on a Node is available from the CNCore.listNodes() service.
Type: Types.xs.anyURI
The full (absolute) URL that can be used to retrieve the object using the get() method of the rest interface.
For example, if identifier was “ABX154”, and the node had a base URL of http://mn1.dataone.org/mn then the value would be http://mn1.dataone.org/mn/v1/object/ABX154
Type: Types.xs.int
A weighting parameter that provides a hint to the caller for the relative preference for nodes from which the content should be retrieved. Higher values have higher preference.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ObjectLocation">
<xs:sequence>
<xs:element name="nodeIdentifier" type="d1:NodeReference" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="baseURL" type="xs:anyURI" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="version" type="d1:ServiceVersion" minOccurs="1" maxOccurs="unbounded">
</xs:element>
<xs:element name="url" type="xs:anyURI" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="preference" type="xs:int" minOccurs="0" maxOccurs="1">
</xs:element>
</xs:sequence>
</xs:complexType>
An ObjectLocationList is the structure returned from the CNRead.resolve() method of the CN REST interface. It provides a list of locations from which the specified object can be retrieved.
Type: Types.Identifier
The identifier of the object being resolved.
Type: Types.ObjectLocation
List of nodes from which the object can be retrieved
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ObjectLocationList">
<xs:sequence>
<xs:element name="identifier" type="d1:Identifier" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="objectLocation" type="d1:ObjectLocation" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
Person represents metadata about a Principal that is a person and that can be used by clients and nodes for Types.AccessPolicy information. The mutable properties of a Person instance can only be changed by itself (i.e., the Subject identifying the Person instance) and by the Coordinating Node identity, but can be read by any identity in the DataONE system.
Type: Types.Subject
The unique, immutable identifier for the Person.
Type: Types.NonEmptyString
The given name of the Person, repeatable if they have more than one given name.
Type: Types.NonEmptyString
The family name of the Person.
Type: Types.NonEmptyString
The email address of the Person, repeatable if they have more than one email address.
Type: Types.Subject
A group or role in which the Person is a member, expressed using the unique Types.Subject identifier for that Types.Group, and repeatable if they are a member of more than one group.
Type: Types.Subject
An alternative but equivalent identity for the principal that has been used in alternate identity systems, repeatable if more than one equivalent identity applies.
Type: Types.xs.boolean
true if the name and email address of the Person have been verified to ensure that the givenName and familyName represent the real person’s legal name, and that the email address is correct for that person and is in the control of the indicated individual. Verification occurs through an established procedure within DataONE as part of the Identity Management system. A Person can not change their own verified field, but rather must be verified and changed through this DataONE established process.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Person">
<xs:sequence>
<xs:element name="subject" type="d1:Subject" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="givenName" type="d1:NonEmptyString" minOccurs="1" maxOccurs="unbounded">
</xs:element>
<xs:element name="familyName" type="d1:NonEmptyString" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="email" type="d1:NonEmptyString" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="isMemberOf" type="d1:Subject" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="equivalentIdentity" type="d1:Subject" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="verified" type="xs:boolean" minOccurs="0" maxOccurs="1">
</xs:element>
</xs:sequence>
</xs:complexType>
Store results from the MNCore.ping() method.
Type: Types.xs.boolean
A boolean flag indicating true if the node was reached by the last MNCore.ping() or CNCore.ping() call, otherwise false.
Type: Types.xs.dateTime
The date time value (UTC) of the last time a successful ping was performed.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Ping">
<xs:attribute name="success" type="xs:boolean">
</xs:attribute>
<xs:attribute name="lastSuccess" type="xs:dateTime">
</xs:attribute>
</xs:complexType>
Replica information that describes the existence of a replica of some object managed by the DataONE infrastructure, and its status.
Type: Types.NodeReference
A reference to the Member Node that houses this replica, regardless of whether it has arrived at the Member Node or not. See replicationStatus to determine if the replica is completely transferred.
Type: Types.ReplicationStatus
The current status of this replica, indicating the stage of replication process for the object. Only completed replicas should be considered as available.
Type: Types.xs.dateTime
The last date and time on which the integrity of a replica was verified by the coordinating node. Verification occurs by checking that the checksum of the stored object matches the checksum recorded for the object in the system metadata.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Replica">
<xs:sequence>
<xs:element name="replicaMemberNode" type="d1:NodeReference">
</xs:element>
<xs:element name="replicationStatus" type="d1:ReplicationStatus">
</xs:element>
<xs:element name="replicaVerified" type="xs:dateTime">
</xs:element>
</xs:sequence>
</xs:complexType>
The ReplicationPolicy for an object defines if replication should be attempted for this object, and if so, how many replicas should be maintained. It also permits specification of preferred and blocked nodes as potential replication targets.
Type: Types.NodeReference
Preferred Nodes are utilized over other nodes as replication targets, up to the number of replicas requested. If preferred nodes are unavailable, or if insufficient nodes are listed as preferred to meet the requested number of replicas, then the Coordinating Nodes will pick additional replica nodes for the content.
Type: Types.NodeReference
The object MUST never be replicated to nodes listed as blockedMemberNodes. Where there is a conflict between a preferredMemberNode and a blockedMemberNode entry, the blockedMemberNode entry prevails.
Type: Types.xs.boolean
A boolean flag indicating if the object should be replicated (true, default) or not (false).
Type: Types.xs.int
An integer indicating the number of replicas targeted for this object. Defaults to 3.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ReplicationPolicy">
<xs:sequence>
<xs:element name="preferredMemberNode" type="d1:NodeReference" minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="blockedMemberNode" type="d1:NodeReference" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
<xs:attribute name="replicationAllowed" type="xs:boolean">
</xs:attribute>
<xs:attribute name="numberReplicas" type="xs:int">
</xs:attribute>
</xs:complexType>
The available Dataone Service APIs that are exposed on a Node. Without a restriction, all service methods are available to all callers. Restrictions may be placed on individual methods of the service to limit the service to a certain set of Subjects. Enforcement of these service restrictions is incumbent on the Node service implementation.
Type: Types.ServiceMethodRestriction
A list of method names and Subjects with permission to invoke those methods.
Type: Types.ServiceName
The name of the service. The valid list of entries for Member Nodes includes: MNCore, MNRead, MNAuthorization, MNStorage, and MNReplication. The valid list of entries for Coordinating Nodes includes: CNCore, CNRead, CNAuthorization, CNIdentity, CNReplication, and CNRegister.
Type: Types.ServiceVersion
Version of the service supported by the node. Version is expressed in whole steps, no minor version identifiers are used. For example, the version 1.0.0 API would be indicated by the value “v1”
Type: Types.xs.boolean
A boolean flag indicating if the service is available (true, default) or otherwise (false).
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Service">
<xs:sequence>
<xs:element name="restriction" type="d1:ServiceMethodRestriction" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="d1:ServiceName" use="required">
</xs:attribute>
<xs:attribute name="version" type="d1:ServiceVersion" use="required">
</xs:attribute>
<xs:attribute name="available" type="xs:boolean">
</xs:attribute>
</xs:complexType>
Describes an optional restriction policy for a given method. If this element exists for a service method, its use is restricted, and only Subjects listed in the list are allowed to invoke the method named in the methodName attribute.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="ServiceMethodRestriction">
<xs:complexContent>
<xs:extension base="d1:SubjectList">
<xs:attribute name="methodName" use="required" type="xs:string">
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
A list of services that are provided by a node. Used in Node descriptions so that Nodes can provide metadata about each service they implement and support.
Type: Types.Service
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Services">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="service" type="d1:Service" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Information about the authenticated session for a service transaction. Session data is retrieved from the SSL client certificate and populated in the Session object. The subject represents the person or system that authenticated successfully, and the subjectInfo contains a listing of alternate identities (both Persons and Groups) that are also valid identities for this user. The subjectInfo should include at least one Types.Person or Types.Group entry that provides the attributes of the subject that was authenticated.
Type: Types.Subject
Type: Types.SubjectInfo
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Session">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="subject" type="d1:Subject" minOccurs="1" maxOccurs="1"/>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="subjectInfo" type="d1:SubjectInfo" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
The schedule on which synchronization will run for a particular node. Syntax for each time slot follows the syntax conventions defined by the Quartz Scheduler (http://www.quartz-scheduler.org/api/2.1.0/org/quartz/CronExpression.html)
Type: Types.CrontabEntry
Type: Types.CrontabEntry
Type: Types.CrontabEntry
Type: Types.CrontabEntry
Type: Types.CrontabEntry
Type: Types.CrontabEntry
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Schedule">
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="hour" use="required" type="d1:CrontabEntry"/>
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="mday" use="required" type="d1:CrontabEntry"/>
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="min" use="required" type="d1:CrontabEntry"/>
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="mon" use="required" type="d1:CrontabEntry"/>
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="sec" use="required" type="d1:CrontabEntrySeconds"/>
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="wday" use="required" type="d1:CrontabEntry"/>
<xs:attribute xmlns:d1="http://ns.dataone.org/service/types/v1" name="year" use="required" type="d1:CrontabEntry"/>
</xs:complexType>
An abstract type used as a common base for other types that need to include count, start, and total attributes to indicate which slice of a list is represented by a set of records.
The first element in a list is always index 0, i.e. list indexes are zero-based.
Type: Types.xs.int
The number of entries in the slice.
Type: Types.xs.int
The zero-based index of the first element in the slice.
Type: Types.xs.int
The total number of entries in the source list from which the slice was extracted.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Slice">
<xs:attribute name="count" use="required" type="xs:int">
</xs:attribute>
<xs:attribute name="start" use="required" type="xs:int">
</xs:attribute>
<xs:attribute name="total" use="required" type="xs:int">
</xs:attribute>
</xs:complexType>
Configuration information for the process by which metadata is harvested from Member Nodes to Coordinating Nodes, including the schedule on which harvesting should occur, and information about the last synchronization attempts for the node. Member Nodes providing Synchronization information only need to provide the schedule. Coordinating Nodes must set values for the lastHarvested and lastCompleteHarvest fields.
Type: Types.Schedule
An entry set by the Member Node indicating the frequency for which synchronization should occur. This setting will be influenced by the frequency with which content is updated on the Member Node and the acceptable latency for detection and subsequent processing of new content.
Type: Types.xs.dateTime
The most recent modification date (UTC) of objects checked during the last harvest of the node.
Type: Types.xs.dateTime
The last time (UTC) all the data from a node was pulled from a member node during a complete synchronization process.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Synchronization">
<xs:sequence>
<xs:element name="schedule" type="d1:Schedule" minOccurs="1" maxOccurs="1">
</xs:element>
<xs:element name="lastHarvested" type="xs:dateTime" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="lastCompleteHarvest" type="xs:dateTime" minOccurs="0" maxOccurs="1">
</xs:element>
</xs:sequence>
</xs:complexType>
An identifier for a Person (user), Group, Organization, or System.
The Subject is a string that provides a formal name to identify a user or group in the DataONE Identity Management Service. The subject is represented by a unique, persistent, non-reassignable identifier string that follows the same constraints as Types.Identifier. Subjects are immutable and can not be deleted.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="Subject">
<xs:simpleContent>
<xs:extension xmlns:d1="http://ns.dataone.org/service/types/v1" base="d1:NonEmptyString"><!-- Note: Can also be special symbolic principals: verifiedUser:
anyone with checked credentials for whom their real name and email has
been verified authenticatedUser: anyone with checked credentials
public: anyone, whether authenticated or not --></xs:extension>
</xs:simpleContent>
</xs:complexType>
A list of Subjects, including both Types.Person and Types.Group entries returned from the CNIdentity.getSubjectInfo() service and CNIdentity.listSubjects() services.
Type: Types.Person
Type: Types.Group
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="SubjectInfo">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="person" type="d1:Person" minOccurs="0" maxOccurs="unbounded"/>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="group" type="d1:Group" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
A list of Subjects used for identity/group management
Type: Types.Subject
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="SubjectList">
<xs:sequence>
<xs:element xmlns:d1="http://ns.dataone.org/service/types/v1" name="subject" type="d1:Subject" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
System metadata (often referred to as sysmeta) is the information used by DataONE to track and manage objects across the distributed Coordinating and Member Nodes of the network. System metadata documents contain low level information (e.g. size, type, owner, access control rules) about managed objects such as science data, science metadata, and resource map objects and the relationships between objects (e.g. obsoletes and obsoletedBy).
The information is maintained dynamically by Coordinating Nodes and is mutable in that it reflects the current state of an object in the system. Initial properties of system metadata are generated by clients and Member Nodes. After object synchronization, the Coordinating Nodes hold authoritative copies of system metadata. Mirror copies of system metadata are maintained at each of the Coordinating nodes.
System metadata are considered operational information needed to run DataONE, and can be read by all Coordinating Nodes and Member Nodes in the course of service provision. In order to reduce issues with third-party tracking of data status information, users can read system metadata for an object if they have the access rights to read the corresponding object which a system metadata record describes.
System Metadata elements are partitioned into two classes: metadata elements that must be provided by client software to the DataONE system, and elements that are generated by DataONE itself in the course of managing objects.
Type: Types.xs.unsignedLong
A serial number maintained by the coordinating node to indicate when changes have occurred to SystemMetadata to avoid update conflicts. Clients should ensure that they have the most recent version of a SystemMetadata document before attempting to update, otherwise an error will be thrown to prevent conflicts. The Coordinating Node must set this optional field when it receives the system metadata document.
Type: Types.Identifier
The identifier is a unique Unicode string that is used to canonically name and identify the object in DataONE. Each object in DataONE is immutable, and therefore all objects must have a unique Identifier. If two objects are related to one another (such as one object is a more recent version of another object), each of these two objects will have unique identifiers. The relationship among the objects is specified in other metadata fields (see Obsoletes and ObsoletedBy), but this does not preclude the inclusion of version information in the identifier string. However, DataONE treats all Identifiers as opaque and will not try to infer versioning semantics based on the content of the Identifiers – rather, this information is found in the Obsoletes and ObsoletedBy fields. Note that identifiers are used in a number of REST API calls as parts of the URL path. As such, all special characters such as “/”, ” ”, “+”, “”, “%” must be properly encoded, e.g. “%2F”, “%20”, “%2B”, “%5C”, “%25” respectively when used in REST method calls. See RFC3896 for more details. For example, the MNRead.get() call for an object with identifier:
http://some.location.name/mydata.cgi?id=2088
would be:
http://mn1.server.name/mn/v1/object/http:%2F%2Fsome.location.name%2Fmydata.cgi%3Fid%3D2088
Type: Types.ObjectFormatIdentifier
Designation of the standard or format that should be used to interpret the contents of the object, drawn from controlled list of formats that are provided by the DataONE Types.ObjectFormat service. DataONE maintains a list of formats in use and their canonical FormatIdentifiers. The format identifier for an object should imply its mime type for data objects and metadata type and serialization format for metadata objects. Examples include the namespace of the EML 2.1 metadata specification, the DOCTYPE of the Biological Data Profile, the mime type of text/csv files, and the canonical name of the NetCDF specification.
Type: Types.xs.unsignedLong
The size of the object in octets (8-bit bytes).
Type: Types.Checksum
A calculated hash value used to validate object integrity over time and after network transfers. The value is calculated using a standard hashing algorithm that is accepted by DataONE and that is indicated in the included ChecksumAlgorithm attribute.
Type: Types.Subject
Subject who submitted the associated abject to the DataONE Member Node. The Member Node must set this field when it receives the system metadata document from a client (the field is optional from the client perspective, but is required when a MN creates an object). By default, the submitter lacks any rights to modify an object, so care must be taken to set rightsHolder and accessPolicy correctly with a reference to the subject of the submitter if the submitter is to be able to make further changes to the object.
Type: Types.Subject
Subject that has ultimate authority for the object and is authorized to make all decisions regarding the disposition and accessibility of the object. The rightsHolder has all rights to access the object, update the object, and grant permissions for the object, even if additional access control rules are not specified for the object. Typically, the rightsHolder field would be set to the name of the subject submitting an object, so that the person can make further changes later. By default, the submitter lacks any rights to modify an object, so care must be taken to set rightsHolder and accessPolicy correctly with a reference to the subject of the submitter if the submitter is to be able to make further changes to the object.
Type: Types.AccessPolicy
The accessPolicy determines which Subjects are allowed to make changes to an object in addition to the rightsHolder and authoritativeMemberNode. The accessPolicy is set for an object during a MNStorage.create() or MNStorage.update() call, or when SystemMetadata is updated on the Coordinating Node via various mechanisms. This policy replaces any existing policies that might exist for the object. Member Nodes that house an object are obligated to enforce the accessPolicy for that object.
Type: Types.ReplicationPolicy
A controlled list of policy choices that determine how many replicas should be maintained for a given object and any preferences or requirements as to which Member Nodes should be allowed to house the replicas. The policy determines whether replication is allowed, the number of replicas desired, the list of preferred nodes to hold the replicas, and a list of blocked nodes on which replicas must not exist.
Type: Types.Identifier
The Identifier of an object that is a prior version of the object described in this system metadata record and that is obsoleted by this object. When an object is obsoleted, it is removed from all DataONE search indices but is still accessible from the CNRead.get() service.
Type: Types.Identifier
The Identifier of an object that is a subsequent version of the object described in this system metadata record and that therefore obsoletes this object. When an object is obsoleted, it is removed from all DataONE search indices but is still accessible from the CNRead.get() service.
Type: Types.xs.boolean
A boolean flag, set to true if the object has been classified as archived. An archived object does not show up in search indexes in DataONE, but is still accessible via the CNRead and MNRead services if associated access polices allow. The field is optional, and if absent, then objects are implied to not be archived, which is the same as setting archived to false.
Type: Types.xs.dateTime
Date and time (UTC) that the object was uploaded into the DataONE system, which is typically the time that the object is first created on a Member Node using the MNStorage.create() operation. Note this is independent of the publication or release date of the object. The Member Node must set this optional field when it receives the system metadata document from a client.
Type: Types.xs.dateTime
Date and time (UTC) that this system metadata record was last modified in the DataONE system. This is the same timestamp as dateUploaded until the system metadata is further modified. The Member Node must set this optional field when it receives the system metadata document from a client.
Type: Types.NodeReference
A reference to the Member Node that originally uploaded the associated object. This value should never change, even if the Member Node ceases to exist.
Type: Types.NodeReference
A reference to the Member Node that acts as the authoritative source for an object in the system. The authoritativeMemberNode will often also be the originMemberNode, unless there has been a need to transfer authority for an object to a new node, such as when a Member Node becomes defunct. The authoritativeMemberNode has all the rights of the rightsHolder to maintain and curate the object, including making any changes necessary.
Type: Types.Replica
A container field used to repeatedly provide several metadata fields about each replica that exists in the system, or is being replicated. Note that a replica field exists even for the Authoritative/Origin Member Nodes so that the status of those objects can be tracked.
<xs:complexType xmlns:xs="http://www.w3.org/2001/XMLSchema" name="SystemMetadata">
<xs:sequence>
<xs:element name="serialVersion" type="xs:unsignedLong" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="identifier" type="d1:Identifier">
</xs:element>
<xs:element name="formatId" type="d1:ObjectFormatIdentifier">
</xs:element>
<xs:element name="size" type="xs:unsignedLong">
</xs:element>
<xs:element name="checksum" type="d1:Checksum">
</xs:element>
<xs:element name="submitter" type="d1:Subject" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="rightsHolder" type="d1:Subject">
</xs:element>
<xs:element name="accessPolicy" type="d1:AccessPolicy" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="replicationPolicy" type="d1:ReplicationPolicy" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="obsoletes" type="d1:Identifier" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="obsoletedBy" type="d1:Identifier" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="archived" type="xs:boolean" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="dateUploaded" type="xs:dateTime" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="dateSysMetadataModified" type="xs:dateTime" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="originMemberNode" type="d1:NodeReference" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="authoritativeMemberNode" type="d1:NodeReference" minOccurs="0" maxOccurs="1">
</xs:element>
<xs:element name="replica" type="d1:Replica" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>