THE SPDX WIKI IS NO LONGER ACTIVE. ALL CONTENT HAS BEEN MOVED TO https://github.com/spdx

Technical Team/Proposals/2010-12-07/Tag-value RDF mapping

From SPDX Wiki
< Technical Team‎ | Proposals
Revision as of 18:45, 7 December 2010 by Pezra (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Status

Draft

Issue

The mechanism and details of how the tag-value format relates to the rdf model are not clear. Also there are many special cases regarding now following lines are parsed based on the tag. These issues combined with the lack of an overview section on the tag-value format make it hard to understand how the tag-value files should be produced.

Proposal

The direct relationship between the tags and rdf properties will be stated explicitly. All simple tag names match rdf property name without the spdx vocabulary prefix. Arbitrary rdf properties will be allows to be tags when they are enclosed in angle brackets ("<", ">"). This will support forward compatibility and innovation by allowing vendor or communities to introduce new data into spdx files.

A uniform way declare new resources (entities) and link to them will be introduced. A new resource would be declared by enclosing the type of the resource and it's uri, or node-id if it is a blank node, in square brackets ("[", "]"). The resource type would either be a full uri and enclosed in angle brackets or a spdx class name without the spdx vocabulary prefix.

A uniform way to reference bank nodes would be introduced. A node id reference would be a string that starts with a "@". This would allow any tag to reference a blank node resource declared in the spdx files. Node ids would be scoped to the spdx file in which they occur.

A uniform way to handle multiline values will be introduced. Any tag value that started with double quote ('"') would extend until a second, unescaped, double quote was encountered. If the content of the value included a double quote it could be escaped by prefixing it with a back slash character ("\"). This will allow parsers to handle multiline values on unrecognized fields which dramatically improves forward compatibility.

Example 1: Simple SPDX file with non-standard license

<code>
SPDXVersion: SPDX-1.0
CreatedBy: Tool: spdx-gen 1.0

[Package <http://oss.net/foo-1.0.tar.gz>]
DeclaredLicense: @FullLicense-1
DeclaredLicense: <license:GPL2>
Description: "This
is along
multiline value"

[License FullLicnse-1]
LicenseText: "
Some terms and conditions
"

</code>

Example 2: Simple SPDX file with vendor specific tag

<code>
SPDXVersion: SPDX-1.0
CreatedBy: Tool: spdx-gen 1.0

[Package <http://oss.net/foo-1.0.tar.gz>]
DeclaredLicense: <license:GPL2>
Description: "This
is along
multiline value"
<http://example.org/sha256-signature>: "ac44f9eecaf832..."
</code>

Example 3: Simple SPDX file with files

<code>
SPDXVersion: SPDX-1.0
CreatedBy: Tool: spdx-gen 1.0

[Package <http://oss.net/foo-1.0.tar.gz>]
DeclaredLicense: <license:GPL2>
Description: "This
is along
multiline value"
Files: <http://oss.net/foo-1.0.tar.gz#foo.c>, <http://oss.net/foo-1.0.tar.gz#bar.c>

[File <http://oss.net/foo-1.0.tar.gz#foo.c>]
Type: source
DetectedLicense: <license:GPL2>

[File <http://oss.net/foo-1.0.tar.gz#bar.c>]
Type: source
DetectedLicense: <license:GPL2>

</code>

Example 4: Simple SPDX file with file and artifact info

<code>
SPDXVersion: SPDX-1.0
CreatedBy: Tool: spdx-gen 1.0

[Package <http://oss.net/foo-1.0.tar.gz>]
DeclaredLicense: <license:GPL2>
Description: "This
is along
multiline value"
Files: <http://oss.net/foo-1.0.tar.gz#foo.c>

[File <http://oss.net/foo-1.0.tar.gz#foo.c>]
Type: source
DetectedLicense: <license:GPL2>
ArtifactOf: @JRandomProject

[<doap:Project> JRandomProject]
<doap:name>: J Random Project
<doap:homepage>: http://oss.org/j-random-project

</code>