Basic example of version 2.0 system metadata for an EML metadata document. The mediaType and fileName options are specified.
Note: This code uses a current beta branch of the version 2.0 d1_common_python source located at https://repository.dataone.org/software/cicore/branches/d1_common_python_v2_vieglais
In [28]:
from d1_common.types import dataoneTypes
# Create minimal System Metadata instance with bogus data
system_metadata = dataoneTypes.systemMetadata()
system_metadata.identifier = "Test_identifier"
system_metadata.formatId = "eml://ecoinformatics.org/eml-2.0.1"
system_metadata.size = 17181
checksum = dataoneTypes.checksum("03ce09c6b4c3efc1681f3023402998a2")
checksum.algorithm = "MD5"
system_metadata.checksum = checksum
system_metadata.submitter = "CN=urn:node:cnStageUNM1,DC=dataone,DC=org"
system_metadata.rightsHolder = "CN=testRightsHolder,DC=dataone,DC=org"
#enable public read by adding read permission for the "Public" user
access_policy = dataoneTypes.accessPolicy()
access_rule = dataoneTypes.accessRule()
access_rule.subject.append("Public")
access_rule.permission.append(dataoneTypes.Permission('read'))
access_policy.append(access_rule)
system_metadata.accessPolicy = access_policy
#Replication Policy
replication_policy = dataoneTypes.replicationPolicy()
replication_policy.replicationAllowed = True
replication_policy.numberReplicas = 3
system_metadata.replicationPolicy = replication_policy
#Media type information
media_type = dataoneTypes.mediaType()
media_type.name = "text/xml"
system_metadata.mediaType = media_type
system_metadata.fileName = "metadata.xml"
dom = system_metadata.toDOM(None)
xml = dom.toprettyxml(indent=" ")
print xml
Some IANA media types (aka MIME types) have required or optional parameters. A good example is video/H264
( http://www.iana.org/assignments/media-types/video/H264 ). The example below provides a fictious system metadata instance describing a video file.
In [29]:
# Create minimal System Metadata instance with bogus data
system_metadata = dataoneTypes.systemMetadata()
system_metadata.identifier = "H264_video_example"
#No H264 formatId, so use generic octet-stream
system_metadata.formatId = "application/octet-stream"
system_metadata.size = 171199843
checksum = dataoneTypes.checksum("03ce094432c3efc1681f3023402998a2")
checksum.algorithm = "MD5"
system_metadata.checksum = checksum
system_metadata.submitter = "CN=urn:node:cnStageUNM1,DC=dataone,DC=org"
system_metadata.rightsHolder = "CN=testRightsHolder,DC=dataone,DC=org"
#enable public read by adding read permission for the "Public" user
access_policy = dataoneTypes.accessPolicy()
access_rule = dataoneTypes.accessRule()
access_rule.subject.append("Public")
access_rule.permission.append(dataoneTypes.Permission('read'))
access_policy.append(access_rule)
system_metadata.accessPolicy = access_policy
#Replication Policy
replication_policy = dataoneTypes.replicationPolicy()
replication_policy.replicationAllowed = True
replication_policy.numberReplicas = 3
system_metadata.replicationPolicy = replication_policy
#Media Type with optional parameters
media_type.name = "video/H264"
media_type_property = dataoneTypes.MediaTypeProperty("H44I")
media_type_property.name = "profile-level-id"
media_type.property_.append(media_type_property)
media_type_property = dataoneTypes.MediaTypeProperty("6F", name="max-recv-level")
media_type.property_.append(media_type_property)
media_type_property = dataoneTypes.MediaTypeProperty("255", name="sar-supported")
media_type.property_.append(media_type_property)
system_metadata.mediaType = media_type
system_metadata.fileName = "cool_video.avc"
dom = system_metadata.toDOM(None)
xml = dom.toprettyxml(indent=" ")
print xml
In [ ]: