8 File information section
8.1 File name field
8.1.1 Description
Identify the full path and filename that corresponds to the file information in this section. The metadata for the file name field is shown in Table 36.
Table 36 — Metadata for the file name field
Attribute | Value |
---|---|
Required | Yes |
Cardinality | 1..1 |
Format | A relative filename with the root of the package archive or directory. In general, every filename is preceded with a ./ , see http://www.ietf.org/rfc/rfc3986.txt for syntax. |
8.1.2 Intent
To aid finding the correct file which corresponds to the file information.
8.1.3 Examples
EXAMPLE 1 Tag: FileName:
FileName: ./package/foo.c
EXAMPLE 2 RDF: Property spdx:fileName
in class spdx:File
<File rdf:about="...">
<fileName>./package/foo.c</fileName>
...
</File>
8.2 File SPDX identifier field
8.2.1 Description
Uniquely identify any element in an SPDX document which might be referenced by other elements. These might be referenced internally and externally with the addition of the SPDX document identifier. The metadata for the file SPDX identifier field is shown in Table 37.
Table 37 — Metadata for the file SPDX identifier field
Attribute | Value |
---|---|
Required | Yes |
Cardinality | 1..1 |
Format | "SPDXRef-"[idstring] where [idstring] is a unique string containing letters, numbers, . and/or - . |
8.2.2 Intent
There may be several versions of the same file within an SPDX document. Each element needs to be able to be referred to uniquely so that relationships between elements can be clearly articulated.
8.2.3 Examples
EXAMPLE 1 Tag: SPDXID:
SPDXID: SPDXRef-1
EXAMPLE 2 RDF: The URI for the element will follow the form: [SpdxDocumentURI]#SPDXRef-[idstring] where [SpdxDocumentURI] is the URI for the SPDX document containing the element.
Using xml:base:
<rdf:RDF xml:base="http://acme.com/spdxdocs/acmeproj/v1.2/1BE2A4FF-5F1A-48D3-8483-28A9B0349A1B"
...
<File rdf:about="#SPDXRef-1">
...
</File>
Using document URI:
<File rdf:about="http://acme.com/spdxdocs/acmeproj/v1.2/1BE2A4FF-5F1A-48D3-8483-28A9B0349A1B#SPDXRef-1">
...
</File>
8.3 File type field
8.3.1 Description
This field provides information about the type of file identified. File Type is intrinsic to the file, independent of how the file is being used. A file may have more than one file type assigned to it, however the options to populate this field are limited to:
SOURCE
if the file is human readable source code (.c, .html, etc.);BINARY
if the file is a compiled object, target image or binary executable (.o, .a, etc.);ARCHIVE
if the file represents an archive (.tar, .jar, etc.);APPLICATION
if the file is associated with a specific application type (MIME type of application/*);AUDIO
if the file is associated with an audio file (MIME type of audio/* , e.g. .mp3);IMAGE
if the file is associated with a picture image file (MIME type of image/*, e.g., .jpg, .gif);TEXT
if the file is human readable text file (MIME type of text/*);VIDEO
if the file is associated with a video file type (MIME type of video/*);DOCUMENTATION
if the file serves as documentation;SPDX
if the file is an SPDX document;OTHER
if the file doesn't fit into the above categories (generated artifacts, data files, etc.)
The metadata for the file type field is shown in Table 38.
Table 38 — Metadata for the file type field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | SOURCE | BINARY | ARCHIVE | APPLICATION | AUDIO | IMAGE | TEXT | VIDEO | DOCUMENTATION | SPDX | OTHER |
8.3.2 Intent
Here, this field is a reasonable estimation of the file type, from a developer perspective.
8.3.3 Examples
EXAMPLE 1 Tag: FileType:
FileType: BINARY
For a README.TXT
FileType: TEXT
FileType: DOCUMENTATION
foo.exe
FileType: BINARY
FileType: APPLICATION
EXAMPLE 2 RDF: Property spdx:fileType
in class spdx:File
<File rdf:about="file1">
<fileType rdf:resource="fileType_binary" />
</File>
Where file2 is a README.TXT
<File rdf:about="file2">
<fileType rdf:resource
="http://spdx.org/rdf/terms#fileType_text" />
<fileType rdf:resource
="http://spdx.org/rdf/terms#fileType_documentation" />
</File>
8.4 File checksum field
8.4.1 Description
This field provides the result from some specific checksum algorithm. Checksum algorithms consume data from the file and produce a short, fix-sized summary that is sensitive to changes in the file's data. Any random change to the file's data will (with high likelihood) result in a different checksum value.
The metadata for the file checksum field is shown in Table 39.
Table 39 — Metadata for the file checksum field
Attribute | Value |
---|---|
Required | Yes |
Cardinality | 1..1 for the SHA1 algorithm, 0..* for all other algorithms |
Algorithm | SHA1 is to be used on the file. Other algorithms that can be provided optionally include SHA224 , SHA256 , SHA384 , SHA512 , SHA3-256 , SHA3-384 , SHA3-512 , BLAKE2b-256 , BLAKE2b-384 , BLAKE2b-512 , BLAKE3 , MD2 , MD4 , MD5 , MD6 , ADLER32 |
Format | In tag:value there are three components, an algorithm identifier (SHA1), a separator (“:”) and a checksum value. The RDF shall also contain an algorithm identifier and a checksum value. For example, when the algorithm identifier is SHA1, the checksum value should be a 160-bit value represented as 40 lowercase hexadecimal digits. For other algorithms, an appropriate number of hexadecimal digits is expected. |
8.4.2 Intent
Checksum values are used primarily to protect a file's data against accidental corruption during transmissions or storage. Cryptographically strong checksum algorithms may be used to detect deliberate corruption, but only if the authenticity of the checksum value may be verified.
Checksum values may also be used as an identifier for the file's data that is (with high likelihood) unique. Such an identifier may be used to establish the desired version of a file, if multiple versions are available.
8.4.3 Examples
EXAMPLE 1 Tag: FileChecksum:
FileChecksum: SHA1: d6a770ba38583ed4bb4525bd96e50461655d2758
FileChecksum: MD5: 624c1abb3664f4b35547e7c73864ad24
EXAMPLE 2 RDF: Property spdx:Checksum
in class spdx:File
<File rdf:about="...">
<checksum>
<Checksum>
<algorithm rdf:resource
="http://spdx.org/rdf/terms#checksumAlgorithm_sha1"/>
<checksumValue>d6a770ba38583ed4bb4525bd96e50461655d2758
</checksumValue>
</Checksum>
</checksum>
<checksum>
<Checksum>
<algorithm rdf:resource
="http://spdx.org/rdf/terms#checksumAlgorithm_md5"/>
<checksumValue> 624c1abb3664f4b35547e7c73864ad24
</checksumValue>
</Checksum>
</checksum>
</File>
8.5 Concluded license field
8.5.1 Description
This field contains the license the SPDX document creator has concluded as governing the file or alternative values if the governing license cannot be determined.
The options to populate this field are limited to:
- A valid SPDX License Expression as defined in Annex D;
NONE
, if the SPDX document creator concludes there is no license available for this file; or-
NOASSERTION
, if:- the SPDX document creator has attempted to, but cannot reach a reasonable objective determination;
- the SPDX document creator has made no attempt to determine this field; or
- the SPDX document creator has intentionally provided no information (no meaning should be implied by doing so).
If the Concluded License is not the same as the License Information in File, a written explanation should be provided in the Comments on License field (8.7). With respect to NOASSERTION
, a written explanation in the Comments on License field (8.7) is preferred. If the Concluded License field is not present for a file, it implies an equivalent meaning to NOASSERTION
. The metadata for the concluded license field is shown in Table 40.
Table 40 — Metadata for the concluded license field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..1 |
Format | <SPDX License Expression> | NONE | NOASSERTION where: <SPDX License Expression> is a valid SPDX License Expression as defined in Annex D. |
8.5.2 Intent
Here, the intent is for the SPDX document creator to analyze the License Information in File (8.6) and other objective information, e.g., “COPYING FILE,” along with the results from any scanning tools, to arrive at a reasonably objective conclusion as to what license governs the file.
8.5.3 Examples
EXAMPLE 1 Tag: LicenseConcluded:
LicenseConcluded: LGPL-2.0-only
LicenseConcluded: (LGPL-2.0-only OR LicenseRef-2)
EXAMPLE 2 RDF: Property spdx:licenseConcluded
in class spdx:File
<File rdf:about="file">
<licenseConcluded>LGPL-2.0-only</licenseConcluded>
</File>
<File rdf:about="...">
<licenseConcluded>
<DisjunctiveLicenseSet>
<member rdf:resource
="http://spdx.org/licenses/LGPL-2.0-only"/>
<member rdf:resource="#LicenseRef-2"/>
</DisjunctiveLicenseSet>
</licenseConcluded>
</File>
8.6 License information in file field
8.6.1 Description
This field contains the license information actually found in the file, if any. This information is most commonly found in the header of the file, although it might be in other areas of the actual file. Any license information not actually in the file, e.g., “COPYING.txt” file in a top-level directory, should not be reflected in this field.
The options to populate this field are limited to:
- A valid SPDX License Expression as defined in Annex D;
NONE
, if the file contains no license information whatsoever; or-
NOASSERTION
, if:- the SPDX document creator has made no attempt to determine this field; or
- the SPDX document creator has intentionally provided no information (no meaning should be implied by doing so).
If license information for more than one license is contained in the file or if the license information offers the package recipient a choice of licenses, then each of the choices should be listed as a separate entry. If the License Information in File field is not present for a file, it implies an equivalent meaning to NOASSERTION
. The metadata for the license information in file field is shown in Table 41.
Table 41 — Metadata for the license information in file field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | <SPDX License Expression> | NONE | NOASSERTION where: <SPDX License Expression> is a valid SPDX License Expression as defined in Annex D. |
8.6.2 Intent
Here, the intent is to provide the license information actually in the file, as compared to the Concluded License field.
8.6.3 Examples
EXAMPLE 1 Tag: LicenseInfoInFile:
LicenseInfoInFile: GPL-2.0-only
LicenseInfoInFile: LicenseRef-2
EXAMPLE 2 RDF: Property spdx:licenseInfoInFile
in class spdx:File
<File rdf:about="file1">
<licenseInfoInFile rdf:resource
="http://spdx.org/licenses/GPL-2.0-only" />
<licenseInfoInFile rdf:resource="#LicenseRef-2" />
</File>
8.7 Comments on license field
8.7.1 Description
This field provides a place for the SPDX document creator to record any relevant background references or analysis that went in to arriving at the Concluded License for a file. If the Concluded License does not match the License Information in File, this should be explained by the SPDX document creator. It is also preferable to include an explanation here when the Concluded License is NOASSERTION
. The metadata for the comments on license field is shown in Table 42.
Table 42 — Metadata for the comments on license field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..1 |
Format | Free form text that can span multiple lines |
8.7.2 Intent
Here, the intent is to provide the recipient of the SPDX document with a detailed explanation of how the Concluded License was determined if it does not match the License Information in File, is marked NOASSERTION
, or other helpful information relevant to determining the license of the file.
8.7.3 Examples
EXAMPLE 1 Tag: LicenseComments:
In tag:value
format multiple lines are delimited by <text> .. </text>
.
LicenseComments: <text>The concluded license was taken from the package
level that the file was included in. This information was found in the
COPYING.txt file in the xyz directory.</text>
EXAMPLE 2 RDF: Property spdx:licenseComments
in class spdx:File
<File rdf:about="...">
<licenseComments>
The concluded license was taken from the package level that
the file was included in. This information was found in the
COPYING.txt file in the xyz directory. This package has been
shipped in source and binary form.
</licenseComments>
</File>
8.8 Copyright text field
8.8.1 Description
Identify the copyright holder of the file, as well as any dates present. This shall be a free-form text field extracted from the actual file.
The options to populate this field are limited to:
Any text relating to a copyright notice, even if not complete;
NONE
, if the file contains no copyright information whatsoever; or
NOASSERTION
, if
-
the SPDX document creator has made no attempt to determine this field; or
-
the SPDX document creator has intentionally provided no information (no meaning should be implied from the absence of an assertion).
If the Copyright Text field is not present for a file, it implies an equivalent meaning to NOASSERTION
. The metadata for the copyright text field is shown in Table 43.
Table 43 — Metadata for the copyright text field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..1 |
Format | Free form text that can span multiple lines | NONE | NOASSERTION |
8.8.2 Intent
Record any copyright notice for the file.
8.8.3 Examples
EXAMPLE 1 Tag: FileCopyrightText:
In tag:value
format multiple lines are delimited by <text> .. </text>
.
FileCopyrightText: <text> Copyright 2008-2010 John Smith </text>
EXAMPLE 2 RDF: Property spdx:copyrightText
in class spdx:File
<File rdf:about="...">
<copyrightText>
Copyright 2008-2010 John Smith
</copyrightText>
</File>
8.9 Artifact of project name field (deprecated)
This field is deprecated since 1.8.4, as they can be replaced by a relationship to the more descriptive External Packages.
8.9.1 Description
To indicate that a file has been derived from a specific project. The metadata for the artifact of project name field is shown in Table 44.
Table 44 — Metadata for the artifact of project name field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | Single line of text. In tag:value format the ArtifactOfProjectName shall precede any optional ArtifactOf optional properties (e.g. ArtifactOfHomePage and ArtifactOfURI). |
8.9.2 Intent
To make it easier for recipients of the SPDX document to determine the original source of the identified file. If the project is not described in an SPDX document, then ArtifactOf
can be used.
If the project is described in another SPDX document, then Relationship should be used.
8.9.3 Examples
EXAMPLE 1 Tag: ArtifactOfProjectName:
ArtifactOfProjectName: Jena
EXAMPLE 2 RDF: Property doap:name
in class doap:Project
in property spdx:artifactOf
in class spdx:File
<File>
<artifactOf>
<doap:Project>
<doap:name>Jena</doap:name>
</doap:Project>
</artifactOf>
</File>
8.10 Artifact of project homepage field (deprecated)
This field is deprecated since 1.8.4, as they can be replaced by a relationship to the more descriptive External Packages.
8.10.1 Description
To indicate the location of the project from which the file has been derived. The metadata for the artifact of project homepage field is shown in Table 45.
Table 45 — Metadata for the artifact of project homepage field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | Uniform Resource Locator | UNKNOWN .In tag:value format all optional ArtifactOf fields shall follow immediately below the ArtifactOfProjectName. |
8.10.2 Intent
To make it easier for recipients of the SPDX document to determine the original source of the identified file. If the project is described in another SPDX document, then Relationship
should be used.
8.10.3 Examples
EXAMPLE 1 Tag: Property ArtifactOfProjectHomePage
in class spdx:File
ArtifactOfProjectHomePage: http://www.openjena.org/
EXAMPLE 2 RDF: Property doap:homepage
in class doap:Project
in property spdx:artifactOf
in class spdx:File
<File>
<artifactOf>
<doap:Project>
<doap:homepage >rttp://www.openjena.org/</doap:homepage>
</doap:Project>
</artifactOf>
</File>
8.11 Artifact of project uniform resource identifier field (deprecated)
This field is deprecated since 1.8.4, as they can be replaced by a relationship to the more descriptive External Packages.
8.11.1 Description
To provide a linkage to the project resource in the DOAP document and permit interoperability between the different formats supported. The metadata for the artifact of project uniform resource identifier field is shown in Table 46.
Table 46 — Metadata for the artifact of project uniform resource identifier field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | Uniform Resource Identifier. In tag:value format all optional ArtifactOf fields shall follow immediately below the ArtifactOfProjectName. |
In tag:value
format all optional ArtifactOf fields shall follow immediately below the ArtifactOfProjectName.
8.11.2 Intent
To make it easier for recipients of the SPDX document to determine the original source of the identified file. If the project is described in another SPDX document, then Relationship
should be used.
8.11.3 Examples
EXAMPLE 1 Tag: ArtifactOfProjectURI:
ArtifactOfProjectURI: http://subversion.apache.org/doap.rdf
EXAMPLE 2 RDF: Property spdx:artifactOf
in class spdx:File
<File>
<artifactOf rdf:resource="http://subversion.apache.org/" />
</File>
<!-- Note: within the DOAP file at http://subversion.apache.org/doap.rdf
the value "http://subversion.apache.org/" is the URI of the describes
resource of type doap:Project -->
8.12 File comment field
8.12.1 Description
This field provides a place for the SPDX document creator to record any general comments about the file. The metadata for the file comment field is shown in Table 47.
Table 47 — Metadata for the file comment field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..1 |
Format | Free form text that may span multiple lines |
8.12.2 Intent
Here, the intent is to provide the recipient of the SPDX document with more information determined after careful analysis of a file.
8.12.3 Examples
EXAMPLE 1 Tag: FileComment:
In tag:value
format multiple lines are delimited by <text> .. </text>
.
FileComment: <text>
This file appears in other packages, such as Foo and Ufoo.
</text>
EXAMPLE 2 RDF: Property rdfs:comments
in class spdx:File
<File rdf:about="...">
<rdfs:comment>
This file appears in other packages, such as Foo and Ufoo.
</rdfs:comment>
</File>
8.13 File notice field
8.13.1 Description
This field provides a place for the SPDX document creator to record license notices or other such related notices found in the file. This might or might not include copyright statements. The metadata for the file notice field is shown in Table 48.
Table 48 — Metadata for the file notice field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..1 |
Format | Free form text that can span multiple lines |
8.13.2 Intent
Here, the intent is to provide the recipient of the SPDX document with notices that may require additional review or otherwise contribute to the determination of the Concluded License.
8.13.3 Examples
EXAMPLE 1 Tag: FileNotice:
In tag:value
format multiple lines are delimited by <text> .. </text>
.
FileNotice: <text>This file is licensed under GPL.</text>
EXAMPLE 2 RDF: Property noticeText
in class spdx:File
<File rdf:about="...">
<noticeText>
This file is licensed under GPL.
</noticeText>
</File>
8.14 File contributor field
8.14.1 Description
This field provides a place for the SPDX document creator to record file contributors. Contributors could include names of copyright holders and/or authors who might not be copyright holders, yet contributed to the file content. The metadata for the file contributor field is shown in Table 49.
Table 49 — Metadata for the file contributor field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | Free form text on a single line. |
8.14.2 Intent
Here, the intent is to provide the recipient of the SPDX document with a list of one or more contributors (credits). This is one way of providing acknowledgement to the contributors of a file. This would be useful, for example, if a recipient company wanted to contact copyright holders to inquire about alternate licensing.
8.14.3 Examples
EXAMPLE 1 Tag: FileContributor:
In tag:value
format single line per contributor.
FileContributor: Modified by Paul Mundt lethal@linux-sh.org
FileContributor: The Regents of the University of California
FileContributor: IBM Corporation
EXAMPLE 2 RDF: Property spdx:fileContributor
in class spdx:File
<File rdf:about="...">
<fileContributor> Modified by Paul Mundt lethal@linux-sh.org
</fileContributor>
<fileContributor> The Regents of the University of California
</fileContributor>
<fileContributor> IBM Corporation </fileContributor>
</File>
8.15 File attribution text field
8.15.1 Description
This field provides a place for the SPDX document creator to record, at the file level, acknowledgements that might be required to be communicated in some contexts. This is not meant to include the file's actual complete license text (see LicenseConcluded
and LicenseInfoInFile
), and might or might not include copyright notices (see also FileCopyrightText
). The SPDX document creator might use this field to record other acknowledgements, such as particular clauses from license texts, which might be necessary or desirable to reproduce. The metadata for the file attribution text field is shown in Table 50.
Table 50 — Metadata for the file attribution text field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | Free form text that can span multiple lines. |
8.15.2 Intent
The intent is to provide the recipient of the SPDX document with acknowledgement content at a file level, to assist redistributors of the file with reproducing those acknowledgements. This field does not necessarily indicate where, or in which contexts, the acknowledgements need to be reproduced (such as end-user documentation, advertising materials, etc.) and the SPDX document creator might or might not explain elsewhere how they intend for this field to be used.
8.15.3 Examples
EXAMPLE 1 Tag: FileAttributionText:
In tag:value
format multiple lines are delimited by <text> .. </text>
.
FileAttributionText: <text>
All advertising materials mentioning features or use of this software
must display the following acknowledgement: This product includes
software developed by the AT&T.
</text>
EXAMPLE 2 RDF: Property spdx:attributionText
in class spdx:File
<File rdf:about="...">
<attributionText>
All advertising materials mentioning features or use of
this software must display the following acknowledgement:
This product includes software developed by the AT&T.
</attributionText>
</File>
8.16 File dependencies field (deprecated)
This field is deprecated since SPDX 2.0 in favor of using Clause 11 which provides more granularity about relationships.
8.16.1 Description
The field provides a place for the SPDX document creator to record a list of other files (referenceable within this SPDX document) which the file is a derivative of and/or depends on for the build (e.g., source file or build script for a binary program or library). The list of files might not necessarily represent the list of all file dependencies, but possibly the ones that impact the licensing and/or might be needed as part of the file distribution obligation. The metadata for the file dependencies field is shown in Table 51.
Table 51 — Metadata for the file dependencies field
Attribute | Value |
---|---|
Required | No |
Cardinality | 0..* |
Format | Reference to the file within the SPDX document. For the tag:value format, this will be the filename. For the RDF format, it shall be a reference to the actual file node. |
8.16.2 Intent
Here, the intent is to provide the recipient of the SPDX document with file dependency information based on the build system that created the file. These other files might impact the licensing of the file and/or might be required to satisfy the distribution obligation of the file (e.g., source files subject to a copyleft license).
8.16.3 Examples
EXAMPLE 1 Tag: FileDependency:
FileDependency: ./busybox-1.20.2/shell/match.h
FileDependency: ./busybox-1.20.2/shell/match.c
FileDependency: ./busybox-1.20.2/shell/ash.c
EXAMPLE 2 RDF: Property spdx:fileDependency
in class spdx:File
<File rdf:nodeID="A0">
<fileName>./package/source1.java</fileName>
</File>
<File rdf:nodeID="A1">
<fileName>./package/source2.java</fileName>
</File>
<File rdf:nodeID="A3">
<fileName>./package/source3.java</fileName>
</File>
<File rdf:about="...">
<fileName>./package/mylibrary.jar</fileName>
<fileDependency rdf:nodeID="A0"/>
<fileDependency rdf:nodeID="A1"/>
<fileDependency rdf:nodeID="A2"/>
</File>