From 19ab51a4e18ed7eae4bfa4207abbd682f171d0f2 Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Sat, 29 Jul 2023 10:54:28 -0700 Subject: [PATCH 1/5] Proposal to define profiles as conformance points Fixes #365 Signed-off-by: Gary O'Neall --- model/Core/Properties/profile.md | 6 ++++-- model/Core/Vocabularies/ProfileIdentifierType.md | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/model/Core/Properties/profile.md b/model/Core/Properties/profile.md index 3aa4f2c63..6f62347f0 100644 --- a/model/Core/Properties/profile.md +++ b/model/Core/Properties/profile.md @@ -4,11 +4,13 @@ SPDX-License-Identifier: Community-Spec-1.0 ## Summary -Provides information about which profiles the Element belongs to. +Describes one or more profiles which the creator of this Element intends to conform to. ## Description -This field provides information about which profiles the Element belongs to. +Describes one or more profiles to which the creator of this Element intends to conform. +If the element represents a collection of elements, then the profile will apply to all Elements contained within the collection in addition to any profiles for the included element itself. +Conformance to a profile is defined by the additional restrictions documented in the profile specific documentation and schema files. ## Metadata diff --git a/model/Core/Vocabularies/ProfileIdentifierType.md b/model/Core/Vocabularies/ProfileIdentifierType.md index fe8b400aa..6272f3434 100644 --- a/model/Core/Vocabularies/ProfileIdentifierType.md +++ b/model/Core/Vocabularies/ProfileIdentifierType.md @@ -4,11 +4,15 @@ 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 a creator of an SPDX element includes a profile in the list of CreationInfo profiles, they are claiming that the element conforms to all restrictions defined for that profile. +If the creator of an SPDX collection of elements includes a profile in the list of CreationInfo profiles, they are claiming that all contained elements conform to all restrictions defined for that profile. ## Metadata From 9fc883fc57b013d6f873d89379cc25618fcf2398 Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Tue, 5 Sep 2023 11:36:14 -0700 Subject: [PATCH 2/5] Update profile definition based on 5 Sept Tech Call Signed-off-by: Gary O'Neall --- model/Core/Classes/CreationInfo.md | 3 --- model/Core/Classes/ElementCollection.md | 7 ++++++- model/Core/Properties/profile.md | 20 ------------------- model/Core/Properties/profileConformance.md | 20 +++++++++++++++++++ model/Core/Properties/profileNamespace.md | 22 +++++++++++++++++++++ 5 files changed, 48 insertions(+), 24 deletions(-) delete mode 100644 model/Core/Properties/profile.md create mode 100644 model/Core/Properties/profileConformance.md create mode 100644 model/Core/Properties/profileNamespace.md 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..6c0dc166a 100644 --- a/model/Core/Classes/ElementCollection.md +++ b/model/Core/Classes/ElementCollection.md @@ -26,4 +26,9 @@ An SpdxCollection is a collection of Elements, not necessarily with unifying con - minCount: 1 - imports - type: ExternalMap - +- profileConformance + - type: ProfileIdentifierType + - minCount: 1 +- profileNamespace + - type: ProfileIdentifierType + - minCount: 1 diff --git a/model/Core/Properties/profile.md b/model/Core/Properties/profile.md deleted file mode 100644 index 6f62347f0..000000000 --- a/model/Core/Properties/profile.md +++ /dev/null @@ -1,20 +0,0 @@ -SPDX-License-Identifier: Community-Spec-1.0 - -# profile - -## Summary - -Describes one or more profiles which the creator of this Element intends to conform to. - -## Description - -Describes one or more profiles to which the creator of this Element intends to conform. -If the element represents a collection of elements, then the profile will apply to all Elements contained within the collection in addition to any profiles for the included element itself. -Conformance to a profile is defined by the additional restrictions documented in the profile specific documentation and schema files. - -## 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..42ea5860c --- /dev/null +++ b/model/Core/Properties/profileConformance.md @@ -0,0 +1,20 @@ +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. + +## Metadata + +- name: profileConformance +- Nature: ObjectProperty +- Range: ProfileIdentifierType diff --git a/model/Core/Properties/profileNamespace.md b/model/Core/Properties/profileNamespace.md new file mode 100644 index 000000000..5d5c3952b --- /dev/null +++ b/model/Core/Properties/profileNamespace.md @@ -0,0 +1,22 @@ +SPDX-License-Identifier: Community-Spec-1.0 + +# profileNamespace + +## Summary + +Describes a profile namespace which the creator of the ElementCollection intends to support. + +## Description + +Describes a profile namespace to which the creator of this Element intends to support. +A profile namespace is a way of organizing the specification by profile. +The specification consists of type definitions (e.g., classes and properties). +Each type definition belongs to a namespace. +Use of this property allows the producer of SPDX data to communicate to consumers what kind of data to expect in the Element Collection. + +## Metadata + +- name: profile +- Nature: ObjectProperty +- Range: ProfileIdentifierType + From 837116df37e853ab6b9ebbe1dd07e96d6b975d8f Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Thu, 7 Sep 2023 17:17:25 -0700 Subject: [PATCH 3/5] Update Glossary with proposed profile definition Signed-off-by: Gary O'Neall --- Glossary.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 From 786caac2dd57cf26219d50145567ee469e541d9a Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Tue, 12 Sep 2023 11:59:50 -0700 Subject: [PATCH 4/5] Change cardinality of profile properties Signed-off-by: Gary O'Neall --- model/Core/Classes/ElementCollection.md | 7 ++++--- model/Core/Properties/profileConformance.md | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/model/Core/Classes/ElementCollection.md b/model/Core/Classes/ElementCollection.md index 6c0dc166a..347d35131 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 @@ -28,7 +31,5 @@ An SpdxCollection is a collection of Elements, not necessarily with unifying con - type: ExternalMap - profileConformance - type: ProfileIdentifierType - - minCount: 1 - profileNamespace - type: ProfileIdentifierType - - minCount: 1 diff --git a/model/Core/Properties/profileConformance.md b/model/Core/Properties/profileConformance.md index 42ea5860c..e6b9e5a70 100644 --- a/model/Core/Properties/profileConformance.md +++ b/model/Core/Properties/profileConformance.md @@ -12,6 +12,7 @@ Describes a profile to which the creator of this ElementCollection intends to co 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 From e72241c31957237f378eb551fddb42d8cf612d00 Mon Sep 17 00:00:00 2001 From: Gary O'Neall Date: Tue, 12 Sep 2023 12:03:57 -0700 Subject: [PATCH 5/5] Remove profileNamespace Signed-off-by: Gary O'Neall --- model/Core/Classes/ElementCollection.md | 2 -- model/Core/Properties/profileNamespace.md | 22 ------------------- .../Vocabularies/ProfileIdentifierType.md | 3 +-- 3 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 model/Core/Properties/profileNamespace.md diff --git a/model/Core/Classes/ElementCollection.md b/model/Core/Classes/ElementCollection.md index 347d35131..4e986349b 100644 --- a/model/Core/Classes/ElementCollection.md +++ b/model/Core/Classes/ElementCollection.md @@ -31,5 +31,3 @@ If the profileConformance property is not provided, core is to be assumed as the - type: ExternalMap - profileConformance - type: ProfileIdentifierType -- profileNamespace - - type: ProfileIdentifierType diff --git a/model/Core/Properties/profileNamespace.md b/model/Core/Properties/profileNamespace.md deleted file mode 100644 index 5d5c3952b..000000000 --- a/model/Core/Properties/profileNamespace.md +++ /dev/null @@ -1,22 +0,0 @@ -SPDX-License-Identifier: Community-Spec-1.0 - -# profileNamespace - -## Summary - -Describes a profile namespace which the creator of the ElementCollection intends to support. - -## Description - -Describes a profile namespace to which the creator of this Element intends to support. -A profile namespace is a way of organizing the specification by profile. -The specification consists of type definitions (e.g., classes and properties). -Each type definition belongs to a namespace. -Use of this property allows the producer of SPDX data to communicate to consumers what kind of data to expect in the Element Collection. - -## Metadata - -- name: profile -- Nature: ObjectProperty -- Range: ProfileIdentifierType - diff --git a/model/Core/Vocabularies/ProfileIdentifierType.md b/model/Core/Vocabularies/ProfileIdentifierType.md index 6272f3434..a380cd77e 100644 --- a/model/Core/Vocabularies/ProfileIdentifierType.md +++ b/model/Core/Vocabularies/ProfileIdentifierType.md @@ -11,8 +11,7 @@ Enumeration of the valid profiles. 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 a creator of an SPDX element includes a profile in the list of CreationInfo profiles, they are claiming that the element conforms to all restrictions defined for that profile. -If the creator of an SPDX collection of elements includes a profile in the list of CreationInfo profiles, they are claiming that all contained elements conform to all restrictions defined for that profile. +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