Issue 7759: Reintroduce metamodel for Classification Schemas (ras-ftf) Source: Adaptive (Mr. Pete Rivett, pete.rivett@adaptive.com) Nature: Uncategorized Issue Severity: Summary: Though it is useful to have the flexibility of referring to external schemas, it leaves no standard means of defining the schemas: RAS should re-introduce the metamodel for Classification Schemas that was in RAS 1.x, allowing for the definition of Free-form or Enumeration Descriptors. Additionally it should be possible to define the nodes for an Enumeration Descriptor as 'exclusive' (allowing an asset to have only one from the set), and there should be a proper containment mechanism (so that when the schema is deleted all its nodes etc are also deleted). Resolution: Revised Text: The support for a lightweight classification schema as found in the earlier versions of RAS is brought back into the model. This allows for both simple name/value pair descriptors as well as collections or sets of descriptors from which can be selected for a given asset. There are several refinements, including: - nested DescriptorGroups through the recursive aggregation association - a DescriptorGroup to ClassificationSchema association, allowing a collection of descriptors to represent the "schema" and a collection of descriptors to reflect what was chosen, and hence how the asset is "classified" - deriving from Descriptor is both a NodeDescriptor class and a FreeFormDescriptor class; these classes provide the backbone for the classification scheme - an instance of FreeFormDescriptor is conceptually equivalent to the Descriptor class used in previous versions of RAS, the new FreeFormValue class therefore contains the "value" attribute The following classes, their attributes, class diagrams, and associated text should be added/updated: 7.4.9.4 ClassificationSchema {isAbstract = false} A classification schema contains a collection of related descriptors that form a specification for the descriptors that can be applied to an asset. The ClassificationSchema does not appear on the asset level but rather on the type/profile level. Attributes name type = String [1..1] - A name for the classification schema. References descriptor type = Descriptor [0..*] {isOrdered = true, isComposite = true} - Contains the descriptors that this classification schema groups. description type = Description [0..1] - The description for the classification schema. profile type = Profile [0..1] - This is NOT a Asset level association but rather a type level 7.4.9.5 NodeDescriptor {isAbstract = false} The definition of a classification quality or characteristic that requires no additional value. Inherits Descriptor Attributes exclusive type = Boolean [1..1], initialValue = false - When set to 'true' determine that only a single node descriptor from the its children through the specific reference can be referenced from a DescriptorGroup. When set to 'false' the descriptor group can reference none or any number of node specific NodeDescriptors. References general type = NodeDescriptor [0..1] {isComposite = true} - The descriptor node that contains this node and generalizes this classification definition. specific type = NodeDescriptor [0..*] {isOrdered = true} - The descriptor node that refine this node into more specific classification definitions. 7.4.9.6 FreeFormDescriptor {isAbstract = false} The descriptor definition where it is expected that the asset classification (through a descriptor group) will require a value to be supplied. It is usual for the same free form descriptor to be reused across many asset classifications where the specific values change. Inherits Descriptor 7.4.9.7 FreeFormValue {isAbstract = false} The specific value of a free form descriptor when classified against an asset through a descriptor group. Attributes value type = String [0..1] - The specific value of the free form descriptor when applied to the asset. References freeFormDescriptor type = FreeFormDescriptor [1..1] - The definition to which the value is applicable. 7.4.9.3 Descriptor The current text below should be removed: A <descriptor> is a simple key/value pair that emphasizes certain qualities and characteristics of the asset. Often these are searchable and may be used for asset discovery and evaluation. The key is specified by the name attribute, and is typically a word or two. The value is captured as the elements content in mixed text. A <descriptor> may be associated with a specific <context> through the context association. This means that the key and value should be thought of in the specified <context>. The value of the context association must reference an existing id of a <context> element. The new text for this class should be: Descriptor {isAbstract = true} The definition of a classification descriptor that describes qualities and characteristics of the asset. Attributes name type = String [1..1] - A name for the descriptor. This is usually unique within a classification schema. References classificationSchema type = ClassificationSchema [0..1] - The classification schema that contains this descriptor. description type = Description [0..1] - The description for the descriptor. Also the direct association to Context should be removed and the associations to Description and Classification Schema should be introduced, as shown below. A new section should be added for the ActivityParameter class, section 7.4.11.6 ActivityParameter. Because of the change in the nature of Descriptor it invalidates the resolution on issue 8212. As a result the nature of the association of ActivityParameter and Descriptor needs to change, as shown below. The image below should be added to this section with the following text: "This class provides a mechanism for capturing values associated with a particular Activity. The defaultValue attribute contains the anticipated value for the parameter. The name attribute contains the name of the ActivityParameter. The value attribute contains the selected value of the ActivityParameter." 7.4.9.2 DescriptorGroup {isAbstract = false} A descriptor group is simply a container for a related group of descriptor values that can either be descriptor nodes or free form values. These descriptor values can be from one or more classification schemas, and is used to collect together relevant classification definitions and values for a specific asset. Attributes name type = String [0..1] - An optional name for the descriptor group. References classificationSchema type = ClassificationSchema [0..*] - The classification schemas from those descriptors that this descriptor group either references or has specific values for. container type = DescriptorGroup [0..1] {isComposite = true} - The containing descriptor group. contains type = DescriptorGroup [0..*] {isOrdered = true} - The contained descriptor groups. nodeDescriptor type = NodeDescriptor [0..*] {isOrdered = true} - The node descriptors that this descriptor group references for this asset. freeFormValue type = FreeFormValue [0..*] {isOrdered = true, isComposite = true} - Contains the specific values of free form descriptors for the asset that is being classified through this descriptor group. This can contain multiple values for a single free form descriptor. freeFormDescriptor type = FreeFormDescriptor [0..*] {isOrdered = false, isComposite = true} - Contains the free form descriptors for the asset that is being classified through this descriptor group. Actions taken: September 20, 2004: received issue August 1, 2005: closed issue Discussion: Ought to consider inheriting DescriptorGroup from ClassificationSchema, and keep the link back from DescriptorGroup to ClassificationSchema so that where a descriptor group is grouping nodes from another formal schema, in fact this principle could be applied at the schema level. But for more flexibility a single descriptor group can be used to collect together classifications for a single object, regardless of where the nodes have been originally classified. This means that the link between DescriptorGroup and Descriptor can be broken in favor of the link between Descriptor and ClassificationSchema End of Annotations:===== ubject: Issues on Reusable Asset Specification Date: Sun, 19 Sep 2004 12:49:07 -0400 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Issues on Reusable Asset Specification Thread-Index: AcSeZwlf85s8rGtZRK+DjMFPA0VVZQ== From: "Pete Rivett" To: X-Virus-Scanned: by amavisd-new at sentraliant.com X-MIME-Autoconverted: from quoted-printable to 8bit by amethyst.omg.org id i8JGsU1U026524 1. Reintroduce metamodel for Classification Schemas Though it is useful to have the flexibility of referring to external schemas, it leaves no standard means of defining the schemas: RAS should re-introduce the metamodel for Classification Schemas that was in RAS 1.x, allowing for the definition of Free-form or Enumeration Descriptors. Additionally it should be possible to define the nodes for an Enumeration Descriptor as 'exclusive' (allowing an asset to have only one from the set), and there should be a proper containment mechanism Subject: Adaptive RAS FTF Issues Date: Mon, 28 Feb 2005 11:45:14 -0500 X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: Adaptive RAS FTF Issues Thread-Index: AcUUZhEHnc3QCGOjSl2gE5pXdAMRfAJPbB3A From: "Nick Dowler" To: X-Virus-Scanned: by amavisd-new at sentraliant.com All, Please find attached the proposed models to address issues 7759 and 7761. For issue 7766, we suggest that the xmi.uuid is used for clarity of globally unique IDs. Kind regards, Nick. (so that when the schema is deleted all its nodes etc are also deleted).