1- ## What is a ` purl ` ?
1+ ## What is a PURL
22
3- ` purl ` stands for ** package URL** .
3+ PURL stands for ** package URL** .
44
5- A ` purl ` is a URL composed of seven components:
5+ A PURL is a URL composed of seven components:
66
77 scheme:type/namespace/name@version?qualifiers#subpath
88
99Components are separated by a specific character for unambiguous parsing.
1010
11- The definition for each component is:
12-
13- - ** scheme** : this is the URL scheme with the constant value of "pkg". One of
14- the primary reason for this single scheme is to facilitate the future official
15- registration of the "pkg" scheme for package URLs. Required.
16- - ** type** : the package "type" or package "protocol" such as maven, npm, nuget,
17- gem, pypi, etc. Required.
18- - ** namespace** : some name prefix such as a Maven groupid, a Docker image owner,
19- a GitHub user or organization. Optional and type-specific.
20- - ** name** : the name of the package. Required.
21- - ** version** : the version of the package. Optional.
22- - ** qualifiers** : extra qualifying data for a package such as an OS,
23- architecture, a distro, etc. Optional and type-specific.
24- - ** subpath** : extra subpath within a package, relative to the package root.
25- Optional.
26-
27-
2811Table 1: Components of a PURL
2912
3013| Component | Requirement | Description|
@@ -42,12 +25,12 @@ Components are designed such that they form a hierarchy from the most significan
4225on the left to the least significant components on the right.
4326
4427
45- A ` purl ` must not contain a URL Authority, i.e. there is no support for
28+ A PURL must not contain a URL Authority, i.e. there is no support for
4629` username ` , ` password ` , ` host ` and ` port ` components. A ` namespace ` segment may
4730sometimes look like a ` host ` , but its interpretation is specific to a ` type ` .
4831
4932
50- ## Some ` purl ` examples
33+ ## Some PURL examples
5134
5235 pkg:bitbucket/birkenfeld/pygments-main@244fd47e07d1014f0aed9c
5336 pkg:deb/debian/curl@7.50.3-1?arch=i386&distro=jessie
@@ -61,9 +44,9 @@ sometimes look like a `host`, but its interpretation is specific to a `type`.
6144 pkg:rpm/fedora/curl@7.50.3-1.fc25?arch=i386&distro=fedora-25
6245
6346
64- ## A ` purl ` is a URL
47+ ## A PURL is a URL
6548
66- - A ` purl ` is a valid URL and URI that conforms to the URL definitions or
49+ - A PURL is a valid URL and URI that conforms to the URL definitions or
6750 specifications at:
6851
6952 - https://tools.ietf.org/html/rfc3986
@@ -74,25 +57,25 @@ sometimes look like a `host`, but its interpretation is specific to a `type`.
7457- This is a valid URL because it is a locator even though it has no Authority
7558 URL component: each ` type ` has a default repository location when defined.
7659
77- - The ` purl ` components are mapped to these URL components:
60+ - The PURL components are mapped to these URL components:
7861
79- - ` purl ` ` scheme ` : this is a URL ` scheme ` with a constant value: ` pkg `
80- - ` purl ` ` type ` , ` namespace ` , ` name ` and ` version ` components: these are
62+ - PURL ` scheme ` : this is a URL ` scheme ` with a constant value: ` pkg `
63+ - PURL ` type ` , ` namespace ` , ` name ` and ` version ` components: these are
8164 collectively mapped to a URL ` path `
82- - ` purl ` ` qualifiers ` : this maps to a URL ` query `
83- - ` purl ` ` subpath ` : this is a URL ` fragment `
84- - In a ` purl ` , there is no support for a URL Authority (e.g. no
65+ - PURL ` qualifiers ` : this maps to a URL ` query `
66+ - PURL ` subpath ` : this is a URL ` fragment `
67+ - In a PURL , there is no support for a URL Authority (e.g. no
8568 ` username ` , ` password ` , ` host ` and ` port ` components).
8669
8770- Special URL schemes as defined in https://url.spec.whatwg.org/ such as
88- ` file:// ` , ` https:// ` , ` http:// ` and ` ftp:// ` are not valid ` purl ` types.
89- They are valid URL or URI schemes but they are not ` purl ` .
90- They may be used to reference URLs in separate attributes outside of a ` purl `
91- or in a ` purl ` qualifier.
71+ ` file:// ` , ` https:// ` , ` http:// ` and ` ftp:// ` are not valid PURL types.
72+ They are valid URL or URI schemes but they are not PURL .
73+ They may be used to reference URLs in separate attributes outside of a PURL
74+ or in a PURL qualifier.
9275
9376- Version control system (VCS) URLs such ` git:// ` , ` svn:// ` , ` hg:// ` or as
94- defined in Python pip or SPDX download locations are not valid ` purl ` types.
95- They are valid URL or URI schemes but they are not ` purl ` .
77+ defined in Python pip or SPDX download locations are not valid PURL types.
78+ They are valid URL or URI schemes but they are not PURL .
9679 They are a closely related, compact and uniform way to reference VCS URLs.
97- They may be used as references in separate attributes outside of a ` purl ` or
98- in a ` purl ` qualifier.
80+ They may be used as references in separate attributes outside of a PURL or
81+ in a PURL qualifier.
0 commit comments