Skip to content

Proposal: Deprecate Use of QNames for IDs

Ivan Kirillov edited this page Jul 29, 2015 · 9 revisions

Status: CLOSED
Comment Period Closes: July 28th, 2015
Affects Backwards Compatibility: Yes
Relevant Issue: https://github.com/MAECProject/schemas/issues/106

Background Information

In MAEC v4.1, all MAEC identifiers (IDs) are captured and formatted as qualified names (QNames). Each ID includes both a namespace portion (optional) and an ID portion (required), separated by a colon (":"). To use these IDs, MAEC producers and consumers must map XML namespace prefixes to namespaces.

Proposal

We propose using Uniform Resource Identifiers (URIs) instead of QNames for IDs; this would involve replacing the existing xs:QName type used in ID and IDREF attributes with xs:anyURI. This follows a W3C recommendation and will make the use of IDs more direct.

This change would affect the following existing types (those remaining after the other proposed MAEC 5.0 changes):

  1. maecBundle:ObjectReferenceType
  2. maecBundle:BehaviorReferenceType
  3. maecBundle:ProcessTreeNodeType
  4. maecBundle:CapabilityType
  5. maecBundle:CapabilityReferenceType
  6. maecBundle:BehaviorType
  7. maecPackage:AnalysisType
  8. maecPackage:PackageType
  9. maecPackage:MalwareSubjectType
  10. maecPackage:MalwareSubjectReferenceType

Example

Before
<maecPackage:MAEC_Package ... xmlns:AcmeCompany="http://www.acmecompany.com"...>
  <maecPackage:Malware_Subjects>
    <maecPackage:Malware_Subject id="AcmeCompany:example-sub-1">
    ...
    </maecPackage:Malware_Subject>
  </maecPackage:Malware_Subjects>
</maecPackage:MAEC_Package>
After
<maecPackage:MAEC_Package ...>
  <maecPackage:Malware_Subjects>
    <maecPackage:Malware_Subject id="http://www.acmecompany.com/example-sub-1">
    ...
    </maecPackage:Malware_Subject>
  </maecPackage:Malware_Subjects>
</maecPackage:MAEC_Package>

Impact

This change will not be backward compatible and is one of several revisions planned in new major version.

Requested Feedback

  1. Should URIs be used instead of QNames in IDs?
  2. Are there any circumstances when using QNames is necessary or preferable?
Clone this wiki locally