AbstractPackage

Summary

Refers to an abstract, conceptual software entity.

Description

An AbstractPackage represents an abstract, conceptual software entity, independent of any specific version, supplier, or packaging format. It serves as a high-level identifier for a piece of software, such as "Linux kernel", "OpenSSL," or "Log4j".

The primary purpose of a AbstractPackage is to group multiple related software Packages and to be able to act as a central point for storing metadata that is common across all those packages. This might include information like the project's primary license, its official homepage, or its originating author or organization.

Since there might be relationships between AbstractPackages and between AbstractPackages and Packages, values of different properties might be different. The precedence rule is that every attribute of a more specific entity overwrites attribute values of a more general entity. This way, property values of a Package are always valid; if they do not exist and the package is an instanceOf an AbstractPackage, then the properties of this AbstractPackage are taken. The chain may continue further to more AbstractPackages, as long as there are "parent" AbstractPackage and no values have been specified.

A Package shall have no more than one hasInstance relationship from AbstractPackage Elements.

It should be noted that this class will rarely appear in SBOMs, where exact Packages should be listed.

Metadata

https://spdx.org/rdf/3/terms/Software/AbstractPackage

Name AbstractPackage
Instantiability Concrete
SubclassOf /Core/Element

Class hierarchy

/Core/Element
       /Software/AbstractPackage

Properties

Property Type minCount maxCount
attributionText xsd:string 0 *
copyrightText xsd:string 0 *
homePage xsd:anyURI 0 *
packageVersion xsd:string 0 1
sourceInfo xsd:string 0 1

External properties cardinality updates

Property minCount maxCount
name from /Core/Element 1

All properties

Property Type minCount maxCount
attributionText xsd:string 0 *
comment xsd:string 0 1
copyrightText xsd:string 0 *
creationInfo CreationInfo 1 1
description xsd:string 0 1
extension Extension 0 *
externalIdentifier ExternalIdentifier 0 *
externalRef ExternalRef 0 *
homePage xsd:anyURI 0 *
name xsd:string 1 1
packageVersion xsd:string 0 1
sourceInfo xsd:string 0 1
spdxId xsd:anyURI 1 1
summary xsd:string 0 1
verifiedUsing IntegrityMethod 0 *