1 package gov.nist.secauto.oscal.lib.model; 2 3 import gov.nist.secauto.metaschema.binding.IBindingContext; 4 import gov.nist.secauto.metaschema.binding.model.AbstractBoundMetaschema; 5 import gov.nist.secauto.metaschema.binding.model.annotations.Metaschema; 6 import gov.nist.secauto.metaschema.model.common.IMetaschema; 7 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupLine; 8 import gov.nist.secauto.metaschema.model.common.datatype.markup.MarkupMultiline; 9 import java.lang.Override; 10 import java.lang.String; 11 import java.net.URI; 12 import java.util.List; 13 14 @Metaschema( 15 assemblies = { 16 Profile.class, 17 ProfileImport.class, 18 Merge.class, 19 ProfileGroup.class, 20 Modify.class, 21 InsertControls.class, 22 ProfileSelectControlById.class, 23 Matching.class 24 }, 25 imports = { 26 OscalMetadataMetaschema.class, 27 OscalControlCommonMetaschema.class 28 }, 29 remarks = "In OSCAL a profile represents a set of selected [controls](https://pages.nist.gov/OSCAL/concepts/terminology/#control) from one or more control catalogs. Such a set of controls can be referenced by an OSCAL [system security plan](https://pages.nist.gov/OSCAL/concepts/layer/implementation/ssp/) (SSP) to establish a control [baseline](https://pages.nist.gov/OSCAL/concepts/terminology/#baseline). This effective set of controls is produced from an OSCAL profile using a deterministic, predictable process called [profile resolution](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/).\n" 30 + "\n" 31 + "A profile references one or more OSCAL catalogs or profiles to import controls for control selection and tailoring. A profile can also describe how a resulting catalog is structured. When the profile is resolved, these selections and modifications are processed to produce a resulting OSCAL catalog.\n" 32 + "\n" 33 + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations." 34 ) 35 public final class OscalProfileMetaschema extends AbstractBoundMetaschema { 36 private static final MarkupLine NAME = MarkupLine.fromMarkdown("OSCAL Profile Model"); 37 38 private static final String SHORT_NAME = "oscal-profile"; 39 40 private static final String VERSION = "1.1.2"; 41 42 private static final URI XML_NAMESPACE = URI.create("http://csrc.nist.gov/ns/oscal/1.0"); 43 44 private static final URI JSON_BASE_URI = URI.create("http://csrc.nist.gov/ns/oscal"); 45 46 private static final MarkupMultiline REMARKS = MarkupMultiline.fromMarkdown("In OSCAL a profile represents a set of selected [controls](https://pages.nist.gov/OSCAL/concepts/terminology/#control) from one or more control catalogs. Such a set of controls can be referenced by an OSCAL [system security plan](https://pages.nist.gov/OSCAL/concepts/layer/implementation/ssp/) (SSP) to establish a control [baseline](https://pages.nist.gov/OSCAL/concepts/terminology/#baseline). This effective set of controls is produced from an OSCAL profile using a deterministic, predictable process called [profile resolution](https://pages.nist.gov/OSCAL/concepts/processing/profile-resolution/).\n" 47 + "\n" 48 + "A profile references one or more OSCAL catalogs or profiles to import controls for control selection and tailoring. A profile can also describe how a resulting catalog is structured. When the profile is resolved, these selections and modifications are processed to produce a resulting OSCAL catalog.\n" 49 + "\n" 50 + "OSCAL profiles have uses beyond establishing control baselines, such as documentation generation or as reference tables for validations."); 51 52 public OscalProfileMetaschema(List<? extends IMetaschema> importedMetaschema, 53 IBindingContext bindingContext) { 54 super(importedMetaschema, bindingContext); 55 } 56 57 @Override 58 public MarkupLine getName() { 59 return NAME; 60 } 61 62 @Override 63 public String getShortName() { 64 return SHORT_NAME; 65 } 66 67 @Override 68 public String getVersion() { 69 return VERSION; 70 } 71 72 @Override 73 public URI getXmlNamespace() { 74 return XML_NAMESPACE; 75 } 76 77 @Override 78 public URI getJsonBaseUri() { 79 return JSON_BASE_URI; 80 } 81 82 @Override 83 public MarkupMultiline getRemarks() { 84 return REMARKS; 85 } 86 }