diff --git a/Glossary.md b/Glossary.md index 8557154a8..319bbca59 100644 --- a/Glossary.md +++ b/Glossary.md @@ -62,7 +62,11 @@ The action of checking or proving that instance data content conforms to the exp ## Profile -An explicit scope of usage for SPDX targeting support for particular use cases and scenarios (e.g., core, software, licensing, build, etc.). A profile identifies which particular SPDX namespaces, concept classes and properties it leverages along with any custom specializations of shape constraints unique to its use. NOTE: A profile is NOT the same thing as a namespace. A namespace is a formal part of the language ontology and defines specific concept classes, properties and shape constraints unique for a particular domain scope. A profile represents usage and conformance documentation for the language ontology and references concept classes, properties and shape constraints defined within namespaces. For a given profile, there may exist a namespace closely aligned to the same usage scope but they are not the same thing and the profile will often leverage/reference concept classes, properties and shape constraints from more namespaces (e.g., core) than just the aligned namespace. +A scope of usage for SPDX targeting support for particular use cases and scenarios (e.g., core, software, licensing, build, etc.). +Profiles are enumerated in the [ProfileIdentifier vocabulary](model/Core/Vocabularies/ProfileIdentifierType.md). +A profile identifies which particular SPDX namespaces, concept classes and properties it leverages along with any custom specializations of shape constraints unique to its use. NOTE:A profile is NOT the same thing as a namespace. A namespace is a formal part of the language ontology and defines specific concept classes, properties and shape constraints unique for a particular domain scope. A profile represents usage and conformance documentation for the language ontology and references concept classes, properties and shape constraints defined within namespaces. For a given profile, there may exist a namespace closely aligned to the same usage scope but they are not the same thing and the profile will often leverage/reference concept classes, properties and shape constraints from more namespaces (e.g., core) than just the aligned namespace. +When creating an [ElementCollection](model/Core/Classes/ElementCollection.md), the creator of the element can indicate whether they fully comply with all restrictions defined in the associated profile namespace using the [profileConformance](model/Core/Properties/profileConformance.md) property. +The creator of the ElementCollection can also indicate whether any of the associated namespace classes, properties or vocabularies may be used in the ElementCollection using the [profileNamespace](model/Core/Properties/profileNamespace.md) property. ## Serialization diff --git a/model/Core/Classes/CreationInfo.md b/model/Core/Classes/CreationInfo.md index b8d970537..398b098dc 100644 --- a/model/Core/Classes/CreationInfo.md +++ b/model/Core/Classes/CreationInfo.md @@ -37,9 +37,6 @@ The dateTime created is often the date of last change (e.g., a git commit date), - createdUsing - type: Tool - minCount: 0 -- profile - - type: ProfileIdentifierType - - minCount: 1 - dataLicense - type: xsd:string - minCount: 1 diff --git a/model/Core/Classes/ElementCollection.md b/model/Core/Classes/ElementCollection.md index 775c98c7f..4e986349b 100644 --- a/model/Core/Classes/ElementCollection.md +++ b/model/Core/Classes/ElementCollection.md @@ -8,7 +8,10 @@ A collection of Elements, not necessarily with unifying context. ## Description -An SpdxCollection is a collection of Elements, not necessarily with unifying context. +An ElementCollection is a collection of Elements, not necessarily with unifying context. + +Note that all ElementCollections must conform to the core profile even if the core profile is no specified in the profileConformance property. +If the profileConformance property is not provided, core is to be assumed as the default. ## Metadata @@ -26,4 +29,5 @@ An SpdxCollection is a collection of Elements, not necessarily with unifying con - minCount: 1 - imports - type: ExternalMap - +- profileConformance + - type: ProfileIdentifierType diff --git a/model/Core/Properties/profile.md b/model/Core/Properties/profile.md deleted file mode 100644 index 3aa4f2c63..000000000 --- a/model/Core/Properties/profile.md +++ /dev/null @@ -1,18 +0,0 @@ -SPDX-License-Identifier: Community-Spec-1.0 - -# profile - -## Summary - -Provides information about which profiles the Element belongs to. - -## Description - -This field provides information about which profiles the Element belongs to. - -## Metadata - -- name: profile -- Nature: ObjectProperty -- Range: ProfileIdentifierType - diff --git a/model/Core/Properties/profileConformance.md b/model/Core/Properties/profileConformance.md new file mode 100644 index 000000000..e6b9e5a70 --- /dev/null +++ b/model/Core/Properties/profileConformance.md @@ -0,0 +1,21 @@ +SPDX-License-Identifier: Community-Spec-1.0 + +# profileConformance + +## Summary + +Describes one a profile which the creator of this ElementCollection intends to conform to. + +## Description + +Describes a profile to which the creator of this ElementCollection intends to conform. +The profileConformance will apply to all Elements contained within the collection as well as the collection itself. +Conformance to a profile is defined by the additional restrictions documented in the profile specific documentation and schema files. +Use of this property allows the creator of an ElementCollection to communicate to consumers their intent to adhere to the profile additional restrictions. +The profileConformance has a default value of core if no other profileConformance is specified since all ElementCollections and Element must adhere to the core profile. + +## Metadata + +- name: profileConformance +- Nature: ObjectProperty +- Range: ProfileIdentifierType diff --git a/model/Core/Vocabularies/ProfileIdentifierType.md b/model/Core/Vocabularies/ProfileIdentifierType.md index fe8b400aa..a380cd77e 100644 --- a/model/Core/Vocabularies/ProfileIdentifierType.md +++ b/model/Core/Vocabularies/ProfileIdentifierType.md @@ -4,11 +4,14 @@ SPDX-License-Identifier: Community-Spec-1.0 ## Summary -Enumeration of the valid profiles that an element can be specified to be part of. +Enumeration of the valid profiles. ## Description -There are a set of profiles that have been defined to be valid for a specific release This file enumerates the values that have been agreed on, and may be applied to the creation information for an an element. +There are a set of profiles that have been defined by a profile team. +A profile consists of a namespace that may add properties and classes to the core profile unique to the domain covered by the profile. +The profile may also contain additional restrictions on existing properties and classes defined in other profiles. +If the creator of an SPDX collection of elements includes a profile in the list of conformanceProfiles, they are claiming that all contained elements conform to all restrictions defined for that profile. ## Metadata