Class Metadata

  • All Implemented Interfaces:
    IMetadata

    @MetaschemaAssembly(formalName="Document Metadata",
                        description="Provides information about the containing document, and defines concepts that are shared across the document.",
                        name="metadata",
                        metaschema=OscalMetadataMetaschema.class,
                        remarks="All OSCAL documents use the same metadata structure, that provides a consistent way of expressing OSCAL document metadata across all OSCAL models. The metadata section also includes declarations of individual objects (i.e., roles, location, parties) that may be referenced within and across linked OSCAL documents.\n\nThe metadata in an OSCAL document has few required fields, representing only the bare minimum data needed to differentiate one instance from another. Tools and users creating OSCAL documents may choose to use any of the optional fields, as well as extension mechanisms (e.g., properties, links) to go beyond this minimum to suit their use cases.\n\nA publisher of OSCAL content can use the `published`, `last-modified`, and `version` fields to establish information about an individual in a sequence of successive revisions of a given OSCAL-based publication. The metadata for a previous revision can be represented as a `revision` within this object. Links may also be provided using the `predecessor-version` and `successor-version` link relations to provide for direct access to the related resource. These relations can be provided as a link child of this object or as `link` within a given `revision`.\n\nA `responsible-party` entry in this context refers to roles and parties that have responsibility relative to the production, review, publication, and use of the containing document.")
    @AllowedValues(id="allowed-metadata-responsibe-party-role-ids",level=ERROR,target="responsible-party/@role-id",allowOthers=true,values={@AllowedValue(value="creator",description="Indicates the person or organization that created this content."),@AllowedValue(value="prepared-by",description="Indicates the person or organization that prepared this content."),@AllowedValue(value="prepared-for",description="Indicates the person or organization for which this content was created."),@AllowedValue(value="content-approver",description="Indicates the person or organization responsible for all content represented in the \"document\"."),@AllowedValue(value="contact",description="Indicates the person or organization to contact for questions or support related to this content.")}) @AllowedValues(level=ERROR,target="prop[has-oscal-namespace(\'http://csrc.nist.gov/ns/oscal\')]/@name",values=@AllowedValue(value="keywords",description="The value identifies a comma-seperated listing of keywords associated with this content. These keywords may be used as search terms for indexing and other applications.")) @AllowedValues(level=ERROR,target="link/@rel",allowOthers=true,values={@AllowedValue(value="canonical",description="The link identifies the authoritative location for this resource. Defined by [RFC 6596](https://tools.ietf.org/html/rfc6596)."),@AllowedValue(value="alternate",description="The link identifies an alternative location or format for this resource. Defined by [the HTML Living Standard](https://html.spec.whatwg.org/multipage/links.html#linkTypes)"),@AllowedValue(value="latest-version",description="This link identifies a resource containing the latest version in the version history. Defined by [RFC 5829](https://tools.ietf.org/html/rfc5829)."),@AllowedValue(value="predecessor-version",description="This link identifies a resource containing the predecessor version in the version history. Defined by [RFC 5829](https://tools.ietf.org/html/rfc5829)."),@AllowedValue(value="successor-version",description="This link identifies a resource containing the predecessor version in the version history. Defined by [RFC 5829](https://tools.ietf.org/html/rfc5829).")})
    @AssemblyConstraints(index={@Index(id="index-metadata-roles",level=ERROR,target="role",name="index-metadata-role-ids",keyFields=@KeyField(target="@id")),@Index(id="index-metadata-property-uuid",level=ERROR,target=".//prop",name="index-metadata-property-uuid",keyFields=@KeyField(target="@uuid")),@Index(id="index-metadata-role-id",level=ERROR,target="role",name="index-metadata-role-id",keyFields=@KeyField(target="@id")),@Index(id="index-metadata-location-uuid",level=ERROR,target="location",name="index-metadata-location-uuid",keyFields=@KeyField(target="@uuid")),@Index(id="index-metadata-party-uuid",level=ERROR,target="party",name="index-metadata-party-uuid",keyFields=@KeyField(target="@uuid")),@Index(id="index-metadata-party-organizations-uuid",level=ERROR,target="party[@type=\'organization\']",name="index-metadata-party-organizations-uuid",keyFields=@KeyField(target="@uuid"))},isUnique={@IsUnique(id="unique-metadata-doc-id",level=ERROR,target="document-id",keyFields={@KeyField(target="@scheme"),@KeyField}),@IsUnique(id="unique-metadata-property",level=ERROR,target="prop",keyFields={@KeyField(target="@name"),@KeyField(target="@ns"),@KeyField(target="@class"),@KeyField(target="@group"),@KeyField(target="@value")}),@IsUnique(id="unique-metadata-link",level=ERROR,target="link",keyFields={@KeyField(target="@href"),@KeyField(target="@rel"),@KeyField(target="@media-type")}),@IsUnique(id="unique-metadata-responsible-party",level=ERROR,target="responsible-party",keyFields=@KeyField(target="@role-id"),remarks="Since `responsible-party` associates multiple `party-uuid` entries with a single `role-id`, each role-id must be referenced only once."),@IsUnique(level=ERROR,target="document-id",keyFields={@KeyField(target="@scheme"),@KeyField},remarks="The combination of `scheme` and the field value must be unique.")})
    public class Metadata
    extends AbstractMetadata
    Provides information about the containing document, and defines concepts that are shared across the document.