rfc9517.original | rfc9517.txt | |||
---|---|---|---|---|
Network Working Group Joachim Wackerow | ||||
Internet Draft DDI Alliance | ||||
Intended status: Informational August 13, 2023 | ||||
Expires: February 2024 | ||||
A Uniform Resource Name (URN) Namespace for the | Independent Submission J. Wackerow | |||
Data Documentation Initiative (DDI) | Request for Comments: 9517 DDI Alliance | |||
draft-urn-ddi-06.txt | Category: Informational January 2024 | |||
ISSN: 2070-1721 | ||||
A URN Namespace for the Data Documentation Initiative (DDI) | ||||
Abstract | Abstract | |||
This document describes the Namespace Identifier (NID) "ddi" for | This document describes the Namespace Identifier (NID) "ddi" for | |||
Uniform Resource Names (URNs) used to identify resources that | Uniform Resource Names (URNs) used to identify resources that conform | |||
conform to the standards published by the Data Documentation | to the standards published by the Data Documentation Initiative (DDI) | |||
Initiative (DDI) Alliance (https://ddialliance.org/). | Alliance. | |||
The DDI Alliance is not affiliated with the Internet Engineering | ||||
Task Force (IETF) or Internet Society (ISOC); and as an | ||||
independent submission, it does not have IETF community consensus. | ||||
Status of this Memo | The DDI Alliance is not affiliated with the Internet Engineering Task | |||
Force (IETF) or Internet Society (ISOC). This Independent Submission | ||||
is not a standard nor does it have IETF community consensus. | ||||
This Internet-Draft is submitted in full conformance with the | Status of This Memo | |||
provisions of BCP 78 and BCP 79. Internet-Drafts are working | ||||
documents of the Internet Engineering Task Force (IETF). Note that | ||||
other groups may also distribute working documents as Internet- | ||||
Drafts. The list of current Internet-Drafts is at | ||||
http://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six | This document is not an Internet Standards Track specification; it is | |||
months and may be updated, replaced, or obsoleted by other | published for informational purposes. | |||
documents at any time. It is inappropriate to use Internet-Drafts | ||||
as reference material or to cite them other than as "work in | ||||
progress." | ||||
This document is published for informational purposes. It is an | This is a contribution to the RFC Series, independently of any other | |||
independent submission. It is not an Internet Standard and does | RFC stream. The RFC Editor has chosen to publish this document at | |||
not have rough consensus of the IETF community. | its discretion and makes no statement about its value for | |||
implementation or deployment. Documents approved for publication by | ||||
the RFC Editor are not candidates for any level of Internet Standard; | ||||
see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire in February 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9517. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with | carefully, as they describe your rights and restrictions with respect | |||
respect to this document. | to this document. | |||
Code Components extracted from this document must include | ||||
Simplified BSD License text as described in Section 4.e of the | ||||
Trust Legal Provisions and are provided without warranty as | ||||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction...................................................3 | 1. Introduction | |||
2. Conventions used in this document..............................4 | 2. Conventions Used in This Document | |||
3. Specification..................................................5 | 3. Specification | |||
3.1. Declaration of Syntactic Structure...........................5 | 3.1. Declaration of Syntactic Structure | |||
3.1.1. Description................................................5 | 3.1.1. Description | |||
3.1.2. ABNF Grammar...............................................6 | 3.1.2. ABNF Grammar | |||
3.1.3. Regular Expression.........................................8 | 3.1.3. Regular Expression | |||
3.1.4. Examples of DDI URNs.......................................9 | 3.1.4. Examples of DDI URNs | |||
3.2. Relevant Ancillary Documentation.............................9 | 3.2. Relevant Ancillary Documentation | |||
3.3. Identifier Uniqueness Considerations........................10 | 3.3. Identifier Uniqueness Considerations | |||
3.4. Identifier Persistence Considerations.......................10 | 3.4. Identifier Persistence Considerations | |||
3.5. Process of Identifier Assignment............................10 | 3.5. Process of Identifier Assignment | |||
3.6. Process for Identifier Resolution...........................10 | 3.6. Process for Identifier Resolution | |||
3.7. Rules for Lexical Equivalence...............................11 | 3.7. Rules for Lexical Equivalence | |||
3.8. Conformance with URN Syntax.................................12 | 3.8. Conformance with URN Syntax | |||
3.9. Validation Mechanism........................................12 | 3.9. Validation Mechanism | |||
3.10. Scope......................................................12 | 3.10. Scope | |||
4. Namespace Considerations......................................12 | 4. Namespace Considerations | |||
4.1. URN Assignment Procedures...................................12 | 4.1. URN Assignment Procedures | |||
4.2. URN Resolution/Delegation...................................12 | 4.2. URN Resolution/Delegation | |||
4.3. Type of Resources to be Identified..........................12 | 4.3. Type of Resources To Be Identified | |||
4.4. Type of Services............................................12 | 4.4. Type of Services | |||
5. Community Considerations......................................13 | 5. Community Considerations | |||
5.1. Open Assignment and Use of Identifiers......................13 | 5.1. Open Assignment and Use of Identifiers | |||
5.2. Open Operation of Resolution Servers........................13 | 5.2. Open Operation of Resolution Servers | |||
5.3. Creation of Software for Service Discovery..................13 | 5.3. Creation of Software for Service Discovery | |||
6. IANA Considerations...........................................14 | 6. IANA Considerations | |||
7. Security Considerations.......................................14 | 7. Security Considerations | |||
8. References....................................................14 | 8. References | |||
8.1. Normative References........................................14 | 8.1. Normative References | |||
8.2. Informative References......................................16 | 8.2. Informative References | |||
9. Acknowledgments...............................................19 | Appendix A. Example DNS Records | |||
Appendix A. Example DNS Records..................................20 | A.1. Delegation of the URN Namespace "ddi" | |||
A.1. Delegation of the URN Namespace "ddi".......................20 | A.2. Delegation of DDI Agencies | |||
A.2. Delegation of DDI Agencies..................................20 | A.3. DDI Services | |||
A.3. DDI Services................................................20 | Appendix B. Algorithm for DDI Service Discovery | |||
Appendix B. Algorithm for DDI Service Discovery..................22 | B.1. Application Unique String | |||
B.1. Application Unique String...................................22 | B.2. First Well Known Rule | |||
B.2. First Well Known Rule.......................................22 | B.3. Valid Databases | |||
B.3. Valid Databases.............................................22 | B.4. Expected Output | |||
B.4. Expected Output.............................................22 | Acknowledgments | |||
Author's Address | ||||
1. Introduction | 1. Introduction | |||
This document registers a formal namespace identifier (NID) for | This document registers a formal Namespace Identifier (NID) for URNs | |||
Uniform Resource Names [RFC8141] associated with DDI resources in | associated with DDI resources in accordance with the process defined | |||
accordance with the process defined in [RFC8141]. | in [RFC8141]. | |||
The DDI Alliance is an international collaboration dedicated to | The DDI Alliance is an international collaboration dedicated to | |||
establishing metadata standards and semantic products for | establishing metadata standards and semantic products for describing | |||
describing social science data, data covering human activity, and | social science data, data covering human activity, and other data | |||
other data based on observational methods. DDI specifications are | based on observational methods. DDI specifications are free | |||
free standards that can document and manage different stages in | standards that document and manage different stages in the research | |||
the research data lifecycle, such as conceptualization, | data lifecycle, such as conceptualization, collection, processing, | |||
collection, processing, distribution, discovery, and archiving. | distribution, discovery, and archiving. Documenting data with DDI | |||
Documenting data with DDI facilitates understanding, | facilitates understanding, interpretation, and use -- by people, | |||
interpretation, and use -- by people, software systems, and | software systems, and computer networks. | |||
computer networks. | ||||
The specifications DDI Codebook [DDIC] and DDI Lifecycle [DDIL] | The specifications DDI Codebook [DDI-C] and DDI Lifecycle [DDI-L] are | |||
are expressed in XML Schema, DDI XKOS - Extended Knowledge | expressed in XML Schema; DDI Extended Knowledge Organization System | |||
Organization System [DDIXKOS] in OWL/RDF, SDTL - Structured Data | (XKOS) [DDI-XKOS] in OWL/RDF; Structured Data Transformation Language | |||
Transformation Language [SDTL] in JSON Schema, and the upcoming | (SDTL) [DDI-SDTL] in JSON Schema; and the upcoming DDI Cross Domain | |||
DDI - Cross Domain Integration (DDI-CDI) in UML. DDI is aligned | Integration (DDI-CDI) in UML. DDI is aligned with other metadata | |||
with other metadata standards like Dublin Core Metadata Initiative | standards like Dublin Core Metadata Initiative [DUBLINC]; Statistical | |||
[DUBLINC], Statistical Data and Metadata Exchange [SDMX] for | Data and Metadata Exchange [SDMX] for exchanging aggregate data; ISO/ | |||
exchanging aggregate data, ISO/IEC 11179 [IS11179] for building | IEC 11179 [IS11179] for building metadata registries, such as | |||
metadata registries such as question, variable, and concept banks, | question, variable, and concept banks; and ISO 19115 [ISO.19115.2003] | |||
and ISO 19115 [IS19115] for supporting geographic information | for supporting geographic information systems. | |||
systems. | ||||
DDI URNs support reusability of DDI resources inside a single DDI | DDI URNs support reusability of DDI resources inside a single DDI | |||
instance and in a distributed network of DDI instances. | instance and in a distributed network of DDI instances. | |||
The DDI specification is developed and maintained by the DDI | The DDI specification is developed and maintained by the DDI Alliance | |||
Alliance [DDIALL]. The DDI Alliance is a self-sustaining | [DDI-ALL]. The DDI Alliance is a self-sustaining membership | |||
membership organization whose over 40 member institutions have a | organization whose over 40-member institutions have a voice in the | |||
voice in the development of the DDI specifications. This memo | development of the DDI specifications. This memo describing the ddi | |||
describing the ddi URN is an informational specification. It is | URN is an informational specification. It is not a standard and is | |||
not a standard and is not the product of the IETF. | not the product of the IETF. | |||
2. Conventions used in this document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | "OPTIONAL" in this document are to be interpreted as described in | |||
described in BCP 14 [RFC2119] [RFC8174] when, and only when, they | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
appear in all capitals, as shown here. | capitals, as shown here. | |||
In this document, these words will appear with that interpretation | In this document, these words will appear with that interpretation | |||
only when in ALL CAPS. Lower case uses of these words are not to | only when in ALL CAPS. Lowercase uses of these words are not to be | |||
be interpreted as carrying RFC 2119 significance. | interpreted as carrying [RFC2119] significance. | |||
"DDI": Data Documentation Initiative. The single term is often | ||||
used as a synonym for the DDI specification. | ||||
"DDI agency": An organization which maintains DDI resources. | DDI: Data Documentation Initiative. The single term is often used | |||
as a synonym for the DDI specification. | ||||
"DDI Alliance": Alliance for the Data Documentation Initiative | DDI agency: An organization that maintains DDI resources. | |||
(DDI). | ||||
3. Specification | 3. Specification | |||
This section provides the information required to register a | This section provides the information required to register a formal | |||
formal namespace according to the registration procedure defined | namespace according to the registration procedure defined in | |||
in [RFC8141]. The URNs conform to the syntax defined in [RFC8141]. | [RFC8141]. The URNs conform to the syntax defined in [RFC8141]. | |||
3.1. Declaration of Syntactic Structure | 3.1. Declaration of Syntactic Structure | |||
3.1.1. Description | 3.1.1. Description | |||
The Namespace Specific String (NSS) of all URNs using the "ddi" | The Namespace Specific String (NSS) of all URNs using the "ddi" NID | |||
NID is a globally unique identifier consisting of the DDI agency | is a globally unique identifier consisting of the DDI agency- | |||
identifier (registration authority identifier), the identifier of | identifier (registration authority identifier), the identifier of the | |||
the DDI resource (data identifier), and the version of the | DDI resource (data identifier), and the version of the resource | |||
resource (version identifier) [DDIID]. This structure is according | (version-identifier) [DDI-ID]. This structure is according to the | |||
to the International Registration Data Identifier (IRDI) defined | International Registration Data Identifier (IRDI) defined in | |||
in ISO/IEC 11179 Information technology - Metadata registries | "Information technology - Metadata registries (MDR) - Part 6: | |||
(MDR) - Part 6: Registration, Annex A [IS11179]. | Registration", Annex A [IS11179]. | |||
A description of the DDI resource identification is available in | A description of the DDI resource identification is available in the | |||
the DDI Lifecycle (3.3) Technical Guide, section Identification | Identification section of the "DDI Lifecycle 3.3 Technical Guide" | |||
[DDIID]. | [DDI-ID]. | |||
The DDI NSS has the following structure: | The DDI NSS has the following structure: | |||
<agency-identifier>:<resource-identifier>:<version-identifier> | <agency-identifier>:<resource-identifier>:<version-identifier> | |||
agency-identifier is the identifier of a DDI agency that maintains | agency-identifier is the identifier of a DDI agency that maintains | |||
DDI resources. This identifier basically follows the rules of | DDI resources. This identifier basically follows the rules of | |||
reversed domain names and is case-insensitive. This way, the DNS | reversed domain names and is case insensitive. This way, the DNS | |||
resolution of DDI agency identifiers is supported. The hierarchy | resolution of DDI agency-identifiers is supported. The hierarchy of | |||
of domains descends from the left to the right label in the name; | domains descends from the left to the right label in the name; each | |||
each label to the right specifies a subdivision, or subdomain of | label to the right specifies a subdivision, or subdomain, of the | |||
the domain to the left. The left-most label of agency-identifier | domain to the left. The left-most label of agency-identifier conveys | |||
conveys the top-level domain. It SHALL be a country code | the top-level domain. It SHALL be a country code corresponding to | |||
corresponding to ISO 3166 alpa-2 codes [ISO3166] or another top- | ISO 3166 alpa-2 codes [ISO3166] or another top-level domain | |||
level domain maintained by IANA [TLD]. All two-letter top-level | maintained by IANA [TLD]. All two-letter top-level domains are | |||
domains are reserved for current and future ISO 3166 codes. | reserved for current and future ISO 3166 codes. Assignment of | |||
Assignment of identifiers for DDI agencies in the requested | identifiers for DDI agencies in the requested namespace is managed by | |||
namespace is managed by the DDI Alliance (see section 3.8. on | the DDI Alliance (see Section 3.5 on "Process of Identifier | |||
"Process of Identifier Assignment"). The next subdomain identifies | Assignment"). The next subdomain identifies the agency within that | |||
the agency within that top-level domain. Further optional | top-level domain. Further optional subdomains can follow. The top- | |||
subdomains can follow. The top-level domain and possible | level domain and possible subdomains are separated by the full stop | |||
subdomains are separated by the full stop character. The full stop | character. The full stop character is not allowed within top-level | |||
character is not allowed within top-level domain names or | domain names or subdomain names. The top-level domain and subdomains | |||
subdomain names. The top-level domain and subdomains are composed | are composed from the limited set of characters for the preferred | |||
from the limited set of characters for the preferred form of a DNS | form of a DNS label ([RFC1035], Section 2.3.1). The length of the | |||
label ([RFC1035] section 2.3.1). The length of the label and the | label and the full name are restricted by DNS rules ([RFC2181], | |||
full name are restricted by DNS rules ([RFC2181] section 11). The | Section 11). The agency identifier is case insensitive ([RFC4343], | |||
agency identifier is case insensitive ([RFC4343] section 2). | Section 2). | |||
resource-identifier is the identifier of a DDI resource of a DDI | resource-identifier is the identifier of a DDI resource of a DDI | |||
agency. The value MUST be unique in the scope of this DDI agency. | agency. The value MUST be unique in the scope of this DDI agency. | |||
The resource identifier is case sensitive. | The resource-identifier is case sensitive. | |||
version-identifier is the version of a DDI resource of a DDI | version-identifier is the version of a DDI resource of a DDI agency. | |||
agency. The value MUST be unique in the scope of this resource. | The value MUST be unique in the scope of this resource. The resource | |||
The resource version is case sensitive. | version is case sensitive. | |||
3.1.2. ABNF Grammar | 3.1.2. ABNF Grammar | |||
The following syntax specification for the complete URN uses the | The following syntax specification for the complete URN uses the | |||
augmented Backus-Naur Form (ABNF) as described in [RFC5234]. | Augmented Backus-Naur form (ABNF) as described in [RFC5234]. | |||
ABNF Grammar | ; Rules are case sensitive, if not stated otherwise. | |||
ddi-urn = urn separator ddi separator ddi-irdi | ||||
; urn is case insensitive, see [RFC8141]. | ||||
urn = "urn" | ||||
; ddi is the URN namespace identifier. | ||||
; ddi is case insensitive, see [RFC8141], Section 2.1. | ||||
ddi = "ddi" | ||||
; ddi-irdi is the namespace specific string (NSS). | ||||
; ddi-irdi - international registration data identifier, | ||||
; see [IS11179] Annex A.2. | ||||
ddi-irdi = agency-identifier separator | ||||
resource-identifier separator | ||||
version-identifier | ||||
; agency-identifier is case insensitive, see [RFC4343], Section 2. | ||||
; For allowed characters, see [RFC1035], Section 2.3.1. | ||||
; For length restrictions, see [RFC2181], Section 11. | ||||
agency-identifier = top-level-domain | ||||
sub-separator ddi-authority-id | ||||
*(sub-separator ddi-sub-authority-id) | ||||
; length limit is 255 characters | ||||
; see Section 11 of [RFC2181] | ||||
top-level-domain = dns-label | ||||
ddi-authority-id = dns-label | ||||
ddi-sub-authority-id = dns-label | ||||
dns-label = (ALPHA / DIGIT) | ||||
[ *(ALPHA / DIGIT / "-") | ||||
(ALPHA / DIGIT) ] | ||||
; length limit is 63 characters | ||||
; see Section 11 of [RFC2181] | ||||
resource-identifier = restricted-string | ||||
*("/" restricted-string) | ||||
version-identifier = restricted-string | ||||
*("/" restricted-string) | ||||
restricted-string = 1*(unreserved / sub-delims / "@") | ||||
; Definitions for unreserved and sub-delims from | ||||
; [RFC3986], Section 2.2. | ||||
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" | ||||
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / | ||||
"*" / "+" / "," / ";" / "=" | ||||
separator = ":" | ||||
sub-separator = "." | ||||
; ALPHA and DIGIT are actually defined in the ABNF | ||||
; specification. They are declared here for convenience | ||||
; purposes. | ||||
ALPHA = %x41-5A / ; uppercase letters | ||||
%x61-7A ; lowercase letters | ||||
DIGIT = %x30-39 ; digits | ||||
; Rules are case-sensitive, if not stated otherwise. | Figure 1: ABNF Grammar | |||
ddi-urn = urn separator ddi separator ddi-irdi | ||||
; urn is case-insensitive, see [RFC8141]. | ||||
urn = "urn" | ||||
; ddi is the URN namespace identifier. | ||||
; ddi is case-insensitive, see [RFC8141] section 2.1. | ||||
ddi = "ddi" | ||||
; ddi-irdi is the namespace specific string (NSS). | ||||
; ddi-irdi - international registration data identifier, | ||||
; see [IS11179] Annex A.2. | ||||
ddi-irdi = agency-identifier separator | ||||
resource-identifier separator | ||||
version-identifier | ||||
; agency-identifier is case-insensitive. See [RFC4343] section | ||||
2. | ||||
; For allowed characters see [RFC1035] section 2.3.1. | ||||
; For length restrictions see [RFC2181] section 11. | ||||
agency-identifier = top-level-domain | ||||
sub-separator ddi-authority-id | ||||
*(sub-separator ddi-sub-authority-id) | ||||
; length limit is 255 characters | ||||
; see section 11 of [RFC2181] | ||||
top-level-domain = dns-label | ||||
ddi-authority-id = dns-label | ||||
ddi-sub-authority-id = dns-label | ||||
dns-label = (ALPHA / DIGIT) | ||||
[ *(ALPHA / DIGIT / "-") | ||||
(ALPHA / DIGIT) ] | ||||
; length limit is 63 characters | ||||
; see section 11 of [RFC2181] | ||||
resource-identifier = restricted-string | ||||
*("/" restricted-string) | ||||
version-identifier = restricted-string | ||||
*("/" restricted-string) | ||||
restricted-string = 1*(unreserved / sub-delims / "@") | ||||
; Definitions for unreserved and sub-delims from [RFC3986] 2.2. | ||||
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" | ||||
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / | ||||
"*" / "+" / "," / ";" / "=" | ||||
separator = ":" | ||||
sub-separator = "." | ||||
; ALPHA and DIGIT are actually defined in the ABNF | ||||
specification. | ||||
; They are declared here for convenience purposes. | ||||
ALPHA = %x41-5A / ; uppercase letters | ||||
%x61-7A ; lowercase letters | ||||
DIGIT = %x30-39 ; digits | ||||
3.1.3. Regular Expression | 3.1.3. Regular Expression | |||
The used syntax is the XML Schema flavor which can be easily used | The used syntax is the XML Schema flavor, which can be easily used in | |||
in other flavors. These regular expressions implicitly anchor at | other flavors. These regular expressions implicitly anchor at the | |||
the head and tail. The following regular expression syntax uses | head and tail. The following regular expression syntax uses | |||
components (component names indicated by angle brackets, i.e. | components (component names indicated by angle brackets, i.e. | |||
<component>) and is written in free-spacing mode for easier | <component>) and is written in free-spacing mode for easier reading | |||
reading (the XML Schema flavor does not support that). Please note | (the XML Schema flavor does not support that). Please note that use | |||
that use of multiple quantifiers in regular expressions can result | of multiple quantifiers in regular expressions can result in false | |||
in false outcomes due to so-called greediness. Therefore, there | outcomes due to so-called greediness. Therefore, there are separate | |||
are separate regular expressions for the length restriction and | regular expressions for the length restriction and other purposes for | |||
other purposes for the components agency-identifier and dns-label. | the components agency-identifier and dns-label. | |||
ddi-urn := [Uu][Rr][Nn] : [Dd][Dd][Ii] : | ||||
<agency-identifier> : | ||||
<resource-identifier> : | ||||
<version-identifier> | ||||
agency-identifier := <top-level-domain> \. | ||||
<ddi-authority-id> | ||||
(\. <ddi-sub-authority-id>)* | ||||
agency-identifier := .{1,255} | ||||
top-level-domain := <dns-label> | ||||
ddi-authority-id := <dns-label> | ddi-urn := [Uu][Rr][Nn] : [Dd][Dd][Ii] : | |||
<agency-identifier> : | ||||
<resource-identifier> : | ||||
<version-identifier> | ||||
agency-identifier := <top-level-domain> \. | ||||
<ddi-authority-id> | ||||
(\. <ddi-sub-authority-id>)* | ||||
agency-identifier := .{1,255} | ||||
ddi-sub-authority-id := <dns-label> | top-level-domain := <dns-label> | |||
ddi-authority-id := <dns-label> | ||||
dns-label := [A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])? | ddi-sub-authority-id := <dns-label> | |||
dns-label := [A-Za-z0-9]([-A-Za-z0-9]*[A-Za-z0-9])? | ||||
dns-label := .{1,63} | dns-label := .{1,63} | |||
resource-identifier := <restricted-string> | resource-identifier := <restricted-string> | |||
(/ <restricted-string>)* | (/ <restricted-string>)* | |||
version-identifier := <restricted-string> | version-identifier := <restricted-string> | |||
(/ <restricted-string>)* | (/ <restricted-string>)* | |||
restricted-string := [A-Za-z0-9-._~!$&'()*+,;=@]+ | restricted-string := [A-Za-z0-9-._~!$&'()*+,;=@]+ | |||
3.1.4. Examples of DDI URNs | 3.1.4. Examples of DDI URNs | |||
The examples are taken from the DDI Lifecycle 3.3. documentation. | The examples are taken from the DDI Lifecycle 3.3 documentation | |||
Please note that the resource identifiers are simplified. In real | [DDI-ID]. Please note that the resource-identifiers are simplified. | |||
applications, they are much longer for unique identification | In real applications, they are much longer for unique identification | |||
purposes. They don't relate to DDI types like the examples might | purposes. They don't relate to DDI types like the examples might | |||
suggest. | suggest. | |||
URN of a Represented Variable | ||||
urn:ddi:us.ddia1:R-V1:1 | urn:ddi:us.ddia1:R-V1:1 | |||
The DDI represented variable identified by "R-V1" with the version | Figure 2: URN of a Represented Variable | |||
"1" of the DDI agency "ddia1" located in the domain "us" | ||||
[DDIEXRV]. | ||||
URN of a Question Item | The DDI represented variable identified by "R-V1" with the version | |||
"1" of the DDI agency "ddia1" located in the domain "us" [DDI-EXRV]. | ||||
urn:ddi:us.ddia1:PISA-QS.QI-2:1 | urn:ddi:us.ddia1:PISA-QS.QI-2:1 | |||
The DDI question item identified by "PISA-QS.QI-2" with the | Figure 3: URN of a Question Item | |||
version "1" of the DDI agency "ddia1" in the domain "us" | ||||
[DDIEXQU]. | ||||
URN as Reference to a Controlled Vocabulary | The DDI question item identified by "PISA-QS.QI-2" with the version | |||
"1" of the DDI agency "ddia1" located in the domain "us" [DDI-EXQU]. | ||||
urn:ddi:int.ddi.cv:AggregationMethod:1.0 | urn:ddi:int.ddi.cv:AggregationMethod:1.0 | |||
The DDI controlled vocabulary identified by "AggregationMethod" | Figure 4: URN as Reference to a Controlled Vocabulary | |||
with the version "1.0" in the scope of the DDI agency "ddi" and | ||||
sub-agency "cv" in the domain "int" [DDICVAG]. | ||||
3.2. Relevant Ancillary Documentation | The DDI controlled vocabulary identified by "AggregationMethod" with | |||
the version "1.0" in the scope of the DDI agency "ddi" and sub-agency | ||||
"cv" in the domain "int" [DDI-CVAG]. | ||||
An introductory article on DDI can be found at [DDIINTR]. | 3.2. Relevant Ancillary Documentation | |||
Information on the DDI specifications (DDI-C, DDI-L, XKOS, | An introductory article on DDI can be found at [DDI-INTR]. | |||
Controlled Vocabularies, and SDTL) can be found in the standards | ||||
section of the DDI Alliance website [DDIALL]. | Information on the DDI specifications (DDI-C, DDI-L, XKOS, Controlled | |||
Vocabularies, and SDTL) can be found in the standards section of the | ||||
DDI Alliance website [DDI-ALL]. | ||||
Information on domain names can be found in the relevant RFCs. | Information on domain names can be found in the relevant RFCs. | |||
o For an overview, see [RFC1034]. | * For an overview, see [RFC1034]. | |||
o Regarding case insensitivity, see [RFC1035] section 2.3.3. | * Regarding case insensitivity, see Section 2.3.3 of [RFC1035]. | |||
o Regarding syntax, see [RFC952] section "Grammatical Host Table | * Regarding syntax, see the "Lexical grammar" in the "Grammatical | |||
Specification" B. and [RFC1123] section 2.1. | Host Table Specification" section of [RFC0952] and Section 2.1 of | |||
[RFC1123]. | ||||
o Regarding size limits, see [RFC1123] section 2.1 and [RFC1035] | * Regarding size limits, see Section 2.1 of [RFC1123] and | |||
section 2.3.4. | Section 2.3.4 of [RFC1035]. | |||
3.3. Identifier Uniqueness Considerations | 3.3. Identifier Uniqueness Considerations | |||
Assignment of identifiers for DDI agencies in the requested | Assignment of identifiers for DDI agencies in the requested namespace | |||
namespace will be managed by the DDI Alliance, which will ensure | will be managed by the DDI Alliance, which will ensure that the | |||
that the assigned DDI agency identifiers are consistent with the | assigned DDI agency-identifiers are consistent with the directives | |||
directives for unique identification of DDI agencies. | for unique identification of DDI agencies. | |||
Assignment of URNs for resources of a DDI agency in the requested | Assignment of URNs for resources of a DDI agency in the requested | |||
namespace will be managed by the respective DDI agency, which | namespace will be managed by the respective DDI agency, which ensures | |||
ensures that the assigned URNs are unique for the scope of the | that the assigned URNs are unique for the scope of the agency. | |||
agency. | ||||
3.4. Identifier Persistence Considerations | 3.4. Identifier Persistence Considerations | |||
Persistence of identifiers is dependent upon suitable delegation | Persistence of identifiers is dependent upon the suitable delegation | |||
of resolution at the level of the DDI agencies, and persistence of | of resolution at the level of the DDI agencies and the persistence of | |||
DDI agency assignment. The persistence of the referenced resource | DDI agency assignment. The persistence of the referenced resource is | |||
is also the responsibility of the DDI agency. | also the responsibility of the DDI agency. | |||
3.5. Process of Identifier Assignment | 3.5. Process of Identifier Assignment | |||
Assignment of identifiers for DDI agencies in the requested | Assignment of identifiers for DDI agencies in the requested namespace | |||
namespaceis managed by the DDI Alliance. A registry for DDI agency | is managed by the DDI Alliance. A registry for DDI agency | |||
identifiers ensures through an approval process that the syntax of | identifiers ensures through an approval process that the syntax of | |||
agency identifiers complies with the associated rules [DDIREGI]. | agency-identifiers complies with the associated rules [DDI-REGI]. | |||
Assignment of URNs for resources of a DDI agency and sub-agencies | Assignment of URNs for resources of a DDI agency and sub-agencies of | |||
of a DDI agency in the requested namespace will be managed by the | a DDI agency in the requested namespace will be managed by the | |||
respective DDI agency. | respective DDI agency. | |||
3.6. Process for Identifier Resolution | 3.6. Process for Identifier Resolution | |||
The DDI Alliance will promote a service discovery system for | The DDI Alliance promotes a service discovery system for identifying | |||
identifying available services connected to DDI agencies using the | available services connected to DDI agencies using the Domain Name | |||
Domain Name System (DNS). A DNS request for a DDI agency within | System (DNS). A DNS request for a DDI agency within the domain | |||
the domain ddi.urn.arpa is delegated by the DNS servers of the DDI | ddi.urn.arpa is delegated by the DNS servers of the DDI Alliance to | |||
Alliance to the DNS servers of the relevant DDI agency. The | the DNS servers of the relevant DDI agency. The response is a list | |||
response is a list of available DDI services for the agency | of available DDI services for the agency identifier under which the | |||
identifier under which the agency has assigned URNs. The approach | agency has assigned URNs. The approach is based on the Dynamic | |||
is based on the Dynamic Delegation Discovery System (DDDS) | Delegation Discovery System (DDDS) [RFC3401] and especially the | |||
[RFC3401] and especially the straightforward URI-enabled NAPTR (U- | straightforward URI-enabled NAPTR (U-NAPTR) [RFC4848]. | |||
NAPTR) [RFC4848]. | ||||
The DDI Alliance is responsible for operating or delegating | The DDI Alliance is responsible for operating or delegating | |||
resolution requests to the resolution servers of the relevant DDI | resolution requests to the resolution servers of the relevant DDI | |||
agencies. DDI agencies are responsible for operating or delegating | agencies. DDI agencies are responsible for operating or delegating | |||
resolution servers for the agency identifier under which they have | resolution servers for the agency-identifier under which they have | |||
assigned URNs. | assigned URNs. | |||
Sample Sequence Diagram for receiving a list of DDI services from | Client NS for NS for NS for DDI services | |||
the example DDI agency "ddia1". | urn.arpa ddialliance.org example1.edu for us.ddia1 | |||
| | | | | | ||||
1 |------>| | | | | ||||
2 | |----------->| | | | ||||
3 | |-------------->| | | ||||
4 |<-----------------------------------| | | ||||
5 |-------------------------------------------------->| | ||||
6 |<--------------------------------------------------| | ||||
Client NS for NS for NS for DDI | Figure 5: Sample Sequence Diagram for Receiving a List of DDI | |||
services | Services from the Example DDI agency "ddia1" | |||
urn.arpa ddialliance.org example1.edu for | ||||
us.ddia1 | ||||
| | | | | | ||||
1 |------>| | | | | ||||
2 |<------| | | | | ||||
3 |---------------------->| | | | ||||
4 |<----------------------| | | | ||||
5 |-------------------------------------->| | | ||||
6 |<--------------------------------------| | | ||||
7 |------------------------------------------------------>| | ||||
8 |<------------------------------------------------------| | ||||
1. The name server (NS) of IANA for the domain "urn.arpa." | 1. The name server (NS) of IANA for the domain "urn.arpa." is | |||
is reached with the request "ddia1.us.ddi.urn.arpa." for | reached with the request "ddia1.us.ddi.urn.arpa." for the DDI | |||
the DDI agency "us.ddia1". | agency "us.ddia1". | |||
2./3. The request is delegated to the name server for | 2. The request is delegated to the name server for | |||
"ddialliance.org". | "ddialliance.org". | |||
4./5. The request is delegated to the name server for | 3. The request is delegated to the name server for "example1.edu" | |||
"example1.edu" (domain of the DDI agency "us.ddia1"). | (domain of the DDI agency "us.ddia1"). | |||
6. The server responds with a list of NAPTR records | 4. The server responds with a list of NAPTR records [RFC3403] | |||
[RFC3403] pointing to available DDI services for the DDI | pointing to available DDI services for the DDI agency "us.ddia1". | |||
agency "us.ddia1". | ||||
7. The client selects an appropriate DDI service and sends a | 5. The client selects an appropriate DDI service and sends a request | |||
request for a DDI URN to this service. | for a DDI URN to this service. | |||
8. The DDI service responds for example with a DDI object | 6. The DDI service responds, for example, with a DDI object | |||
identified by the requested DDI URN. | identified by the requested DDI URN. | |||
See Appendix A for examples of name server records. | See Appendix A for examples of name server records. | |||
3.7. Rules for Lexical Equivalence | 3.7. Rules for Lexical Equivalence | |||
The DDI agency identifier basically follows the rules of domain | The DDI agency-identifier basically follows the rules of domain | |||
names. Domain names are case-insensitive. Thus, the portion of the | names. Domain names are case insensitive. Thus, the following | |||
URN | portion of the URN is case insensitive for matches: | |||
urn:ddi:<agency-id>: | urn:ddi:<agency-id>: | |||
is case-insensitive for matches. The remainder of the identifier | The remainder of the identifier MUST be considered case sensitive. | |||
MUST be considered case-sensitive. | ||||
3.8. Conformance with URN Syntax | 3.8. Conformance with URN Syntax | |||
The Namespace Specific String conforms to the related section in | The NSS conforms to the related section in [RFC8141]. It is composed | |||
[RFC8141]. It is composed from the limited set of characters for | from the limited set of characters for a URN NSS [RFC8141]. Percent- | |||
an URN NSS [RFC8141]. Percent encoding is not used. | encoding is not used. | |||
3.9. Validation Mechanism | 3.9. Validation Mechanism | |||
The DDI Alliance will promote development of software for | The DDI Alliance will promote development of software for validation | |||
validation purposes. | purposes. | |||
3.10. Scope | 3.10. Scope | |||
The scope is global. | The scope is global. | |||
4. Namespace Considerations | 4. Namespace Considerations | |||
There is no available namespace that will allow one to uniquely | There is no available namespace that will allow one to uniquely | |||
identify and access DDI resources. | identify and access DDI resources. | |||
4.1. URN Assignment Procedures | 4.1. URN Assignment Procedures | |||
See section 3.5, 'Process of Identifier Assignment'. | See Section 3.5, "Process of Identifier Assignment". | |||
4.2. URN Resolution/Delegation | 4.2. URN Resolution/Delegation | |||
See section 3.6, 'Process for Identifier Resolution'. | See Section 3.6, "Process for Identifier Resolution". | |||
It is RECOMMENDED to use sub-agencies for flexible administration. | It is RECOMMENDED that sub-agencies for flexible administration be | |||
For example, delegation of URNs of a sub-agency to different | used. For example, delegation of URNs of a sub-agency to different | |||
servers would be easily possible. | servers would be easily possible. | |||
4.3. Type of Resources to be Identified | 4.3. Type of Resources To Be Identified | |||
The DDI specifications define resources at a granular level, many | The DDI specifications define resources at a granular level, many of | |||
of which can be identified by a DDI URN. | which can be identified by a DDI URN. | |||
4.4. Type of Services | 4.4. Type of Services | |||
Examples of potential services are listed below. The services and | Examples of potential services are listed below. The services and | |||
appropriate service tags need to be defined in future. The | appropriate service tags need to be defined in the future. The | |||
mentioned service tags are from [RFC2483]. | mentioned service tags are from [RFC2483]. | |||
o DDI repository | * DDI repository | |||
o I2R (URI to Resource): given a DDI URN return one instance | I2R (URI to Resource): given a DDI URN return, one instance of | |||
of the resource identified by that URN. | the resource identified by that URN. | |||
o DDI registry | * DDI registry | |||
o I2C (URI to URC, Uniform Resource Characteristics are | I2C (URI to URC, Uniform Resource Characteristics are | |||
descriptions of resources): given a DDI URN return a | descriptions of resources): given a DDI URN return, a description | |||
description or a summary of that resource. | or a summary of that resource. | |||
o DDI URN resolution | * DDI URN resolution | |||
o I2L (URI to URL): given a DDI URN return one URL that | I2L (URI to URL): given a DDI URN return, one URL that identifies | |||
identifies a location where the identified DDI resource can | a location where the identified DDI resource can be found. | |||
be found. | ||||
o I2Ls (URI to URLs): given a DDI URN return one or more URLs | I2Ls (URI to URLs): given a DDI URN return, one or more URLs that | |||
that identify multiple locations of the identified DDI | identify multiple locations of the identified DDI resource. | |||
resource. | ||||
5. Community Considerations | 5. Community Considerations | |||
5.1. Open Assignment and Use of Identifiers | 5.1. Open Assignment and Use of Identifiers | |||
DDI agency identifiers can be registered at the DDI Alliance. The | DDI agency-identifiers can be registered at the DDI Alliance. The | |||
DDI Alliance will maintain a registry of the assigned values for | DDI Alliance maintains a registry of the assigned values for the DDI | |||
the DDI agency identifier used in the NSS. Information may be | agency-identifier used in the NSS. Information may be obtained from | |||
obtained from the following address: secretariat@ddialliance.org. | the following address: secretariat@ddialliance.org. | |||
DDI agencies assign URNs and potential sub-agencies within the | DDI agencies assign URNs and potential sub-agencies within the scope | |||
scope of the assigned DDI agency identifiers. | of the assigned DDI agency-identifiers. | |||
See also above section on Identifier Uniqueness Considerations. | See also Section 3.3 on "Identifier Uniqueness Considerations". | |||
5.2. Open Operation of Resolution Servers | 5.2. Open Operation of Resolution Servers | |||
The DDI Alliance operates publicly accessible name servers for the | The DDI Alliance operates publicly accessible name servers for the | |||
delegation of DNS requests within the domain ddi.urn.arpa to DNS | delegation of DNS requests within the domain ddi.urn.arpa to DNS | |||
servers of DDI agencies. | servers of DDI agencies. | |||
5.3. Creation of Software for Service Discovery | 5.3. Creation of Software for Service Discovery | |||
The DDI Alliance will promote software for the resolution of DDI | The DDI Alliance promotes software for service discovery for | |||
agency identifiers and service discovery. See also Appendix B for | identifying available services connected to DDI agencies using the | |||
the resolution algorithm. A basic resolver library is available | Domain Name System (DNS). See also Section 3.6 on "Process for | |||
[DDIRESO]. | Identifier Resolution". A basic resolver library is available | |||
[DDI-RESO]. | ||||
6. IANA Considerations | 6. IANA Considerations | |||
IANA is requested to update the "ddi" entry in the Universal | IANA has updated the "ddi" entry in the "Formal URN Namespaces" | |||
Resource Names registry to reference this specification. | registry to reference this specification. | |||
The registration for "ddi" in the "URN.ARPA" zone is approved. | The following NAPTR record for the key "ddi" has been registered in | |||
Requests for the domain ddi.urn.arpa will be delegated to the name | the urn.arpa zone: | |||
ddi IN NAPTR 100 10 "" "" "" registry.ddialliance.org. | ||||
Requests for the domain ddi.urn.arpa are delegated to the name | ||||
servers of the DDI Alliance. | servers of the DDI Alliance. | |||
7. Security Considerations | 7. Security Considerations | |||
URN:DDI identifiers are assigned to resources that are public | URN:DDI identifiers are assigned to resources that are public | |||
information, and therefore resolving these identifiers has low | information; therefore, resolving these identifiers has low security | |||
security profile. | profile. | |||
Registration of DDI agencies is approved by the DDI Alliance. | Registration of DDI agencies is approved by the DDI Alliance. | |||
Assignment and resolution of URN:DDI identifiers are controlled by | Assignment and resolution of URN:DDI identifiers are controlled by | |||
the DDI Alliance and approved DDI agencies. The DDI Alliance SHALL | the DDI Alliance and approved DDI agencies. The DDI Alliance SHALL | |||
have in place control mechanisms in order to make sure that DDI | have in place control mechanisms in order to make sure that DDI | |||
Agency applications from malicious 3rd parties will not be | Agency applications from malicious third parties will not be | |||
accepted. URN:DDI resolvers will be protected against | accepted. URN:DDI resolvers will be protected against eavesdropping | |||
eavesdropping and attacks with appropriate tools. | and attacks with appropriate tools. | |||
This document introduces no additional technical security | This document introduces no additional technical security | |||
considerations beyond those associated with the use and resolution | considerations beyond those associated with the use and resolution of | |||
of URNs in general. | URNs in general. | |||
The security of the DNS-based resolution of DDI agency identifiers | The security of the DNS-based resolution of DDI agency-identifiers is | |||
is only as good as the security of DNS queries in general. A full | only as good as the security of DNS queries in general. A full | |||
discussion of the security threats pertaining to DNS and possible | discussion of the security threats pertaining to DNS and possible | |||
solutions can be found in [RFC3833]. Further information on | solutions can be found in [RFC3833]. Further information on security | |||
security considerations regarding U-NAPTR can be found in | considerations regarding U-NAPTR can be found in [RFC4848], | |||
[RFC4848] section 6. DNS over HTTPS (DoH) [RFC8484] could be used | Section 6. "DNS Queries over HTTPS (DoH)" [RFC8484] could be used to | |||
to increase security by preventing eavesdropping and manipulation | increase security by preventing eavesdropping and manipulation of DNS | |||
of DNS data by man-in-the-middle attacks. The HTTPS protocol | data by machine-in-the-middle attacks. The HTTPS protocol encrypts | |||
encrypts the data between the DoH client and the DoH-based DNS | the data between the DoH client and the DoH-based DNS resolver. | |||
resolver. | ||||
8. References | ||||
8.1. Normative References | ||||
[DDIC] DDI Codebook, DDI Alliance 2000-2014, | ||||
<https://ddialliance.org/Specification/DDI-Codebook/>. | ||||
[DDIL] DDI Lifecycle, DDI Alliance 2009-2020, | ||||
<https://ddialliance.org/Specification/DDI-Lifecycle/>. | ||||
[DDIXKOS] DDI XKOS - Extended Knowledge Organization System, DDI | ||||
Alliance 2020, | ||||
<https://ddialliance.org/Specification/RDF/XKOS>. | ||||
[DDIID] DDI Lifecycle (3.3) Technical Guide, Identification, | ||||
<https://ddi-lifecycle-technical- | ||||
guide.readthedocs.io/en/latest/General%20Structures/Iden | ||||
tification.html>. | ||||
[RFC952] Harrenstien, K., Stahl, M., and E. Feinler "DoD Internet | ||||
Host Table Specification", RFC 952, October 1985, | ||||
<https://www.rfc-editor.org/info/rfc952>. | ||||
[RFC1034] Mockapetris, P., "Domain Names - Concepts and | ||||
Facilities", RFC 1034, November 1987, | ||||
<https://www.rfc-editor.org/info/rfc1034>. | ||||
[RFC1035] Mockapetris, P., "Domain Names - Implementation and | 8. References | |||
Specification", RFC 1035, November 1987, | ||||
<https://www.rfc-editor.org/info/rfc1035>. | ||||
[RFC1123] Braden, R., Ed. "Requirements for Internet Hosts -- | 8.1. Normative References | |||
Application and Support", RFC 1123, October 1989, | ||||
<https://www.rfc-editor.org/info/rfc1123>. | ||||
[RFC2026] Bradner, S., "The Internet Standards Process -- Revision | [DDI-C] DDI Alliance, "DDI-Codebook 2.5", 2014, | |||
3", BCP 9, RFC 2026, October 1996, | <https://ddialliance.org/Specification/DDI-Codebook/2.5/>. | |||
<https://www.rfc-editor.org/info/rfc2026>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [DDI-ID] DDI Alliance, "Identification", DDI Lifecycle (3.3) | |||
Requirement Levels", BCP 14, RFC 2119, March 1997, | Technical Guide: General Structures, <https://ddi- | |||
<https://www.rfc-editor.org/info/rfc2119>. | lifecycle-technical- | |||
guide.readthedocs.io/en/latest/General%20Structures/ | ||||
Identification.html>. | ||||
[RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS | [DDI-L] DDI Alliance, "DDI-Lifecycle", | |||
Specification", RFC 2181, July 1997, | <https://ddialliance.org/Specification/DDI-Lifecycle/>. | |||
<https://www.rfc-editor.org/info/rfc2181>. | ||||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [DDI-SDTL] DDI Alliance, "SDTL - Structured Data Transformation | |||
Resource Identifier (URI): Generic Syntax", RFC 3986, | Language - Version 1.0", December 2020, | |||
<https://www.rfc-editor.org/info/rfc3986>. | <https://ddialliance.org/products/sdtl/1.0/>. | |||
[RFC4343] Eastlake, D. 3rd, "Domain Name System (DNS) Case | [DDI-XKOS] DDI Alliance, "XKOS - Extended Knowledge Organization | |||
Insensitivity Clarification", RFC 4343, January 2006, | System", <https://ddialliance.org/Specification/RDF/XKOS>. | |||
<https://www.rfc-editor.org/info/rfc4343>. | ||||
[RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for | [RFC0952] Harrenstien, K., Stahl, M., and E. Feinler, "DoD Internet | |||
Syntax Specifications: ABNF", STD 68, RFC 5234, January | host table specification", RFC 952, DOI 10.17487/RFC0952, | |||
2008, <https://www.rfc-editor.org/info/rfc5234>. | October 1985, <https://www.rfc-editor.org/info/rfc952>. | |||
[RFC5378] Bradner, S. and J. Contreras, "Rights Contributors | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
Provide to the IETF Trust", BCP 78, RFC 5378, November | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
2008, <https://www.rfc-editor.org/info/rfc5378>. | <https://www.rfc-editor.org/info/rfc1034>. | |||
[RFC8141] Saint-Andre, P. and J. Klensin, "Uniform Resource Names | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
(URNs)", RFC 8141, April 2017, | specification", STD 13, RFC 1035, DOI 10.17487/RFC1035, | |||
<https://www.rfc-editor.org/info/rfc8141>. | November 1987, <https://www.rfc-editor.org/info/rfc1035>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC1123] Braden, R., Ed., "Requirements for Internet Hosts - | |||
2119 Key Words", RFC 8174, May 2017, <https://www.rfc- | Application and Support", STD 3, RFC 1123, | |||
editor.org/info/rfc8174>. | DOI 10.17487/RFC1123, October 1989, | |||
<https://www.rfc-editor.org/info/rfc1123>. | ||||
[RFC8179] Bradner, S. and J. Contreras, "Intellectual Property | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Rights in IETF Technology", BCP 79, RFC 8179, May 2017, | Requirement Levels", BCP 14, RFC 2119, | |||
<https://www.rfc-editor.org/info/rfc8179>. | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | ||||
[SDTL] SDTL - Structured Data Transformation Language - Version | [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS | |||
1.0, <https://ddialliance.org/products/sdtl/1.0/>. | Specification", RFC 2181, DOI 10.17487/RFC2181, July 1997, | |||
<https://www.rfc-editor.org/info/rfc2181>. | ||||
[TLD] IANA Database of Top Level Domains, | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
<https://www.iana.org/domains/root/db>. | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, DOI 10.17487/RFC3986, January 2005, | ||||
<https://www.rfc-editor.org/info/rfc3986>. | ||||
8.2. Informative References | [RFC4343] Eastlake 3rd, D., "Domain Name System (DNS) Case | |||
Insensitivity Clarification", RFC 4343, | ||||
DOI 10.17487/RFC4343, January 2006, | ||||
<https://www.rfc-editor.org/info/rfc4343>. | ||||
[ABNF2RS] ABNF to REGEX Regular Expression Generator, Michael R. | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
Sweet, <https://www.msweet.org/abnf/>. | Specifications: ABNF", STD 68, RFC 5234, | |||
DOI 10.17487/RFC5234, January 2008, | ||||
<https://www.rfc-editor.org/info/rfc5234>. | ||||
[ABNFGEN] abnfgen, Jutta Degener, <http://www.quut.com/abnfgen/>. | [RFC8141] Saint-Andre, P. and J. Klensin, "Uniform Resource Names | |||
(URNs)", RFC 8141, DOI 10.17487/RFC8141, April 2017, | ||||
<https://www.rfc-editor.org/info/rfc8141>. | ||||
[ABNFPFE] ABNF Parser, Bill Fenner, | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
<http://tools.ietf.org/tools/bap/abnf.cgi>. | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | ||||
[DDIALL] DDI Alliance, <https://ddialliance.org/>. | [TLD] IANA, "Root Zone Database", | |||
<https://www.iana.org/domains/root/db>. | ||||
[DDICVAG] DDI Controlled Vocabulary for Aggregation Method, | 8.2. Informative References | |||
<https://ddialliance.org/Specification/DDI- | ||||
CV/AggregationMethod_1.0.html>. | ||||
[DDIEXQU] DDI Lifecycle 3.3 Technical Guide, Examples, Questions, | [ABNF2RS] "ABNF to REGEX: Regular Expression Generator", October | |||
<https://ddi-lifecycle-technical- | 2019, <https://www.msweet.org/abnf/>. | |||
guide.readthedocs.io/en/latest/Examples/Questions.html>. | ||||
[DDIEXRV] DDI Lifecycle 3.3 Technical Guide, Examples, Represented | [ABNFGEN] Degener, J., "abnfgen", <http://www.quut.com/abnfgen/>. | |||
Variable, <https://ddi-lifecycle-technical- | ||||
guide.readthedocs.io/en/latest/Examples/RepresentedVaria | ||||
ble.html>. | ||||
[DDIINTR] Vardigan, M., Heus, P., and W. Thomas. "Data | [ABNFPFE] IETF, "IETF Author Tools - ABNF Tools", | |||
Documentation Initiative: Toward a Standard for the | <https://author-tools.ietf.org/abnf>. | |||
Social Sciences." The International Journal of Digital | ||||
Curation 3, 1 (2008), | ||||
<http://www.ijdc.net/article/view/66>. | ||||
[DDIREGI] DDI Agency Registry, | [DDI-ALL] DDI Alliance, "Document, Discover and Interoperate", | |||
<https://registry.ddialliance.org/>. | <https://ddialliance.org/>. | |||
[DDIRESO] DDI Agency Registry Tools, | [DDI-CVAG] DDI Alliance, "DDI Controlled Vocabulary for Aggregation | |||
<https://registry.ddialliance.org/Home/Tools>. | Method", <https://ddialliance.org/Specification/DDI-CV/ | |||
AggregationMethod_1.0.html>. | ||||
[DUBLINC] Dublin Core Metadata Initiative, | [DDI-EXQU] DDI Alliance, "Questions", DDI Lifecycle 3.3 Technical | |||
<https://www.dublincore.org/>. | Guide: Examples, <https://ddi-lifecycle-technical- | |||
guide.readthedocs.io/en/latest/Examples/Questions.html>. | ||||
[ISO3166] ISO 3166 Country Codes, | [DDI-EXRV] DDI Alliance, "Represented Variable", DDI Lifecycle 3.3 | |||
<https://www.iso.org/iso-3166-country-codes.html>. | Technical Guide: Examples, <https://ddi-lifecycle- | |||
technical-guide.readthedocs.io/en/latest/Examples/ | ||||
RepresentedVariable.html>. | ||||
[IS11179] ISO/IEC 11179 Information technology - Metadata | [DDI-INTR] Vardigan, M., Heus, P., and W. Thomas, "Data Documentation | |||
registries (MDR) - Part 6: Registration, | Initiative: Toward a Standard for the Social Sciences", | |||
<http://metadata-standards.org/11179/>. | The International Journal of Digital Curation, Issue 1, | |||
Volume 3, DOI 10.2218/ijdc.v3i1.45, December 2008, | ||||
<http://www.ijdc.net/article/view/66>. | ||||
[IS19115] ISO 19115, Geographic information -- Metadata, | [DDI-REGI] DDI Alliance, "Welcome to the DDI Registry", | |||
<https://www.iso.org/standard/26020.html>. | <https://registry.ddialliance.org/>. | |||
[RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for | [DDI-RESO] DDI Alliance, "Tools", | |||
specifying the location of services (DNS SRV)", RFC | <https://registry.ddialliance.org/Home/Tools>. | |||
2782, February 2000, <https://www.rfc- | ||||
editor.org/info/rfc2782>. | ||||
[RFC2843] Mealling, M., Daniel, R., "URI Resolution Services | [DUBLINC] Dublin Core Metadata Initiative, "Dublin Core", | |||
Necessary for URN Resolution", RFC 2483, January 1999, | <https://www.dublincore.org/>. | |||
<https://www.rfc-editor.org/info/rfc2483>. | ||||
[RFC3401] Mealling, M., "Dynamic Delegation Discovery System | [IS11179] ISO, "Information technology - Metadata registries (MDR) - | |||
(DDDS) - Part Two: The Algorithm", RFC 3401, October | Part 6: Registration", ISO/IEC 11179-6:2023, January 2023, | |||
2002, <https://www.rfc-editor.org/info/rfc3401>. | <https://www.iso.org/standard/78916.html>. | |||
[RFC3402] Mealling, M., "Dynamic Delegation Discovery System | [ISO.19115.2003] | |||
(DDDS) - Part Two: The Algorithm", RFC 3402, October | ISO, "Geographic information - Metadata", ISO 19115:2003, | |||
2002, <https://www.rfc-editor.org/info/rfc3402>. | <https://www.iso.org/standard/26020.html>. | |||
[RFC3403] Mealling, M., "Dynamic Delegation Discovery System | [ISO3166] ISO, "ISO 3166 Country Codes", | |||
(DDDS) - Part Three: The Domain Name System (DNS) | <https://www.iso.org/iso-3166-country-codes.html>. | |||
Database", RFC 3403, October 2002, | ||||
<https://www.rfc-editor.org/info/rfc3403>. | ||||
[RFC3833] Atkins, D. and R. Austein, "Threat Analysis Of The | [RFC2483] Mealling, M. and R. Daniel, "URI Resolution Services | |||
Domain Name System", RFC 3833, August 2004, | Necessary for URN Resolution", RFC 2483, | |||
<https://www.rfc-editor.org/info/rfc3833>. | DOI 10.17487/RFC2483, January 1999, | |||
<https://www.rfc-editor.org/info/rfc2483>. | ||||
[RFC3958] Daigle, L., Newton, A., "Domain-Based Application | [RFC2782] Gulbrandsen, A., Vixie, P., and L. Esibov, "A DNS RR for | |||
Service Location Using SRV RRs and the Dynamic | specifying the location of services (DNS SRV)", RFC 2782, | |||
Delegation Discovery Service (DDDS)", RFC 3958, January | DOI 10.17487/RFC2782, February 2000, | |||
2005, | <https://www.rfc-editor.org/info/rfc2782>. | |||
<https://www.rfc-editor.org/info/rfc3958>. | ||||
[RFC4848] Daigle, L., "Domain-Based Application Service Location | [RFC3401] Mealling, M., "Dynamic Delegation Discovery System (DDDS) | |||
Using URIs and the Dynamic Delegation Discovery Service | Part One: The Comprehensive DDDS", RFC 3401, | |||
(DDDS)", RFC 4848, April 2007, | DOI 10.17487/RFC3401, October 2002, | |||
<https://www.rfc-editor.org/info/rfc4848>. | <https://www.rfc-editor.org/info/rfc3401>. | |||
[RFC5385] Touch, J, "Version 2.0 Microsoft Word Template for | [RFC3402] Mealling, M., "Dynamic Delegation Discovery System (DDDS) | |||
Creating Internet Drafts and RFCs", RFC 5385, February | Part Two: The Algorithm", RFC 3402, DOI 10.17487/RFC3402, | |||
2010, <https://www.rfc-editor.org/info/rfc5385>. | October 2002, <https://www.rfc-editor.org/info/rfc3402>. | |||
[RFC8484] Hoffman, P., McManus, P., "DNS Queries over HTTPS | [RFC3403] Mealling, M., "Dynamic Delegation Discovery System (DDDS) | |||
(DoH)", RFC 8484, October 2018, <https://www.rfc- | Part Three: The Domain Name System (DNS) Database", | |||
editor.org/rfc/rfc8484>. | RFC 3403, DOI 10.17487/RFC3403, October 2002, | |||
<https://www.rfc-editor.org/info/rfc3403>. | ||||
[SDMX] SDMX -- Statistical Data and Metadata Exchange, | [RFC3833] Atkins, D. and R. Austein, "Threat Analysis of the Domain | |||
<https://sdmx.org/>. | Name System (DNS)", RFC 3833, DOI 10.17487/RFC3833, August | |||
2004, <https://www.rfc-editor.org/info/rfc3833>. | ||||
9. Acknowledgments | [RFC3958] Daigle, L. and A. Newton, "Domain-Based Application | |||
Service Location Using SRV RRs and the Dynamic Delegation | ||||
Discovery Service (DDDS)", RFC 3958, DOI 10.17487/RFC3958, | ||||
January 2005, <https://www.rfc-editor.org/info/rfc3958>. | ||||
Many thanks to Arofan Gregory, Dan Smith, and Wendy Thomas from | [RFC4848] Daigle, L., "Domain-Based Application Service Location | |||
the DDI Alliance Technical Committee, and Peter Koch from DENIC | Using URIs and the Dynamic Delegation Discovery Service | |||
(German Network Information Center) for discussion and input that | (DDDS)", RFC 4848, DOI 10.17487/RFC4848, April 2007, | |||
led to this document. | <https://www.rfc-editor.org/info/rfc4848>. | |||
The following software tools have been helpful in evaluating the | [RFC8484] Hoffman, P. and P. McManus, "DNS Queries over HTTPS | |||
ABNF grammar and the regular expressions: an ABNF parser | (DoH)", RFC 8484, DOI 10.17487/RFC8484, October 2018, | |||
[ABNFPFE], a tool that creates regular expressions from an ABNF | <https://www.rfc-editor.org/info/rfc8484>. | |||
grammar [ABNF2RS], and a tool that generates random strings that | ||||
match an ABNF grammar [ABNFGEN]. | ||||
This document was prepared using the Word template | [SDMX] Statistical Data and Metadata eXchange, "SDMX", | |||
2-Word-v2.0.template.dot [RFC5385]. | <https://sdmx.org/>. | |||
Appendix A. Example DNS Records | Appendix A. Example DNS Records | |||
The examples use NAPTR [RFC3403] and SRV [RFC2782][RFC3958] | The examples use NAPTR [RFC3403] and SRV [RFC2782] [RFC3958] records. | |||
records. The values for the services and flags fields of the NAPTR | The values for the services and flags fields of the NAPTR records | |||
records will be determined by the DDI application ([RFC3403] | will be determined by the DDI application ([RFC3403], Section 9). | |||
section 9.). | ||||
For a description of the packet format of NAPTR, see [RFC3403] | For a description of the packet format of NAPTR, see [RFC3403], | |||
section 4.1. | Section 4.1. | |||
A.1. Delegation of the URN Namespace "ddi" | A.1. Delegation of the URN Namespace "ddi" | |||
Example records below are defined at a.iana-servers.net and other | Example records below are defined at a.iana-servers.net and other | |||
authoritative name servers for the domain urn.arpa. | authoritative name servers for the domain urn.arpa. | |||
The empty flag indicates that the lookup is not terminal and the | The empty flag indicates that the lookup is not terminal and the next | |||
next probe to DNS is for more NAPTR records where the new domain | probe to DNS is for more NAPTR records where the new domain is | |||
is "dns.ddialliance.org". | "dns.ddialliance.org". | |||
; Delegation to name servers of ddialliance.org | ; Delegation to name servers of ddialliance.org | |||
; order pref flag service regexp replacement | ; order pref flag service regexp replacement | |||
ddi.urn.arpa. | ddi.urn.arpa. | |||
IN NAPTR 100 10 "" "" "" dns.ddialliance.org. | IN NAPTR 100 10 "" "" "" dns.ddialliance.org. | |||
A.2. Delegation of DDI Agencies | A.2. Delegation of DDI Agencies | |||
Example records below are defined at dns.ddialliance.org for | Example records below are defined at dns.ddialliance.org for | |||
ddi.urn.arpa. | ddi.urn.arpa. | |||
The empty flag indicates that the lookup is not terminal and the | The empty flag indicates that the lookup is not terminal and the next | |||
next probe to DNS is for more NAPTR records where the new domain | probe to DNS is for more NAPTR records where the new domain is the | |||
is the DNS server of the relevant DDI agency. | DNS server of the relevant DDI agency. | |||
; Delegation to name servers of subdomains in ddi.urn.arpa, i.e. | ; Delegation to name servers of subdomains in ddi.urn.arpa, i.e. | |||
; DDI agencies. | ; DDI agencies. | |||
; order pref flag service regexp replacement | ; order pref flag service regexp replacement | |||
ddia1.us.ddi.urn.arpa. | ddia1.us.ddi.urn.arpa. | |||
IN NAPTR 100 10 "" "" "" dns.example1.edu. | IN NAPTR 100 10 "" "" "" dns.example1.edu. | |||
ddia2.de.ddi.urn.arpa. | ddia2.de.ddi.urn.arpa. | |||
IN NAPTR 100 10 "" "" "" dns.example2.org. | IN NAPTR 100 10 "" "" "" dns.example2.org. | |||
ddia3.gb.ddi.urn.arpa. | ddia3.gb.ddi.urn.arpa. | |||
IN NAPTR 100 10 "" "" "" dns.example3.ac.uk. | IN NAPTR 100 10 "" "" "" dns.example3.ac.uk. | |||
A.3. DDI Services | A.3. DDI Services | |||
Example records below are defined at dns.example2.org for | Example records below are defined at dns.example2.org for | |||
ddi.urn.arpa. | ddi.urn.arpa. | |||
The "u" flag states that the rule is terminal and that the output | The "u" flag states that the rule is terminal and that the output is | |||
is a URI which contains the information needed to contact that DDI | a URI that contains the information needed to contact that DDI | |||
service. The "s" flag states that the rule is terminal and that | service. The "s" flag states that the rule is terminal and that the | |||
the output of the rewrite will be a domain-name for which an SRV | output of the rewrite will be a domain name for which an SRV record | |||
record SHOULD be queried. See also [RFC4848] section 4.4. | SHOULD be queried. See also [RFC4848], Section 4.4. | |||
The service N2R returns one instance of the resource identified by | The service I2R returns one instance of the resource identified by | |||
the given URN. That service is a repository of DDI resources | the given URN. That service is a repository of DDI resources | |||
available at http://repos.example2.org/N2R/; possibly a REST-based | available at http://repos.example2.org/I2R/; possibly a REST-based | |||
service. The service N2C returns a description of the resource | service. The service I2C returns a description of the resource | |||
identified by the given URN. That service is a registry of DDI | identified by the given URN. That service is a registry of DDI | |||
resources available at registry-udp.example2.org port 10060. | resources available at registry-udp.example2.org port 10060. | |||
U-NAPTR permits regular expressions of a form that does a complete | U-NAPTR permits regular expressions of a form that does a complete | |||
replacement of the matched string with a URI, expressed as a | replacement of the matched string with a URI, expressed as a constant | |||
constant string. With this limited form of regular expression | string. With this limited form of regular expression ([RFC4848], | |||
([RFC4848] section 2.2.), applications using NAPTR need not | Section 2.2), applications using NAPTR need not implement full | |||
implement full regular expression parsers. | regular expression parsers. | |||
ddia2.de.ddi.urn.arpa. | ddia2.de.ddi.urn.arpa. | |||
; order pref flag | ; order pref flag | |||
IN NAPTR 100 10 "u" "N2R+http" ( ; service | IN NAPTR 100 10 "u" "I2R+http" ( ; service | |||
"!.*!http://repos.example2.org/N2R/!"; regex | "!.*!http://repos.example2.org/I2R/!"; regex | |||
. ; replacement | . ; replacement | |||
) | ) | |||
IN NAPTR 100 10 "s" "N2C+udp" ( ; service | IN NAPTR 100 10 "s" "I2C+udp" ( ; service | |||
"" ; regex | "" ; regex | |||
registry._udp.example2.org. ; replacement | registry._udp.example2.org. ; replacement | |||
) | ) | |||
; all subdomains in ddia2.de.ddi.urn.arpa. | ; all subdomains in ddia2.de.ddi.urn.arpa. | |||
*.ddia2.de.ddi.urn.arpa. | *.ddia2.de.ddi.urn.arpa. | |||
ddia2.de.ddi.urn.arpa. | ddia2.de.ddi.urn.arpa. | |||
; order pref flag | ; order pref flag | |||
IN NAPTR 100 10 "u" "N2R+http" ( ; service | IN NAPTR 100 10 "u" "I2R+http" ( ; service | |||
"!.*!http://repos.example2.org/N2R/!"; regex | "!.*!http://repos.example2.org/I2R/!"; regex | |||
. ; replacement | . ; replacement | |||
) | ) | |||
IN NAPTR 100 10 "s" "N2C+udp" ( ; service | IN NAPTR 100 10 "s" "I2C+udp" ( ; service | |||
"" ; regex | "" ; regex | |||
registry._udp.example2.org.; replacement | registry._udp.example2.org.; replacement | |||
) | ) | |||
;_service._protocol.name | ;_service._protocol.name | |||
; TTL class SRV priority weight port targetreplac | ; TTL class SRV priority weight port targetreplac | |||
_registry._udp.example2.org | _registry._udp.example2.org | |||
14400 IN SRV 0 0 10060 registry-udp.example2.org. | 14400 IN SRV 0 0 10060 registry-udp.example2.org. | |||
Appendix B. Algorithm for DDI Service Discovery | Appendix B. Algorithm for DDI Service Discovery | |||
The description is based on the Dynamic Delegation Discovery | The description is based on the Dynamic Delegation Discovery System | |||
System (DDDS) algorithm [RFC3402]. | (DDDS) algorithm [RFC3402]. | |||
The application selects the appropriate service from the output | The application selects the appropriate service from the output | |||
described below and contacts the service for the given URN. | described below and contacts the service for the given URN. | |||
The process can be optimized by an application cache for the NAPTR | The process can be optimized by an application cache for the NAPTR | |||
records of already requested DDI agencies. | records of already requested DDI agencies. | |||
B.1. Application Unique String | B.1. Application Unique String | |||
The Application Unique String is a DDI URN. | The Application Unique String is a DDI URN. | |||
B.2. First Well Known Rule | B.2. First Well Known Rule | |||
1. Extracting the characters between the second and third colon | 1. Extracting the characters between the second and third colon (the | |||
(the agency identifier). | agency-identifier). | |||
2. Normalizing case of that string. | 2. Normalizing case of that string. | |||
3. Reversing the order of the substrings separated by dots. | 3. Reversing the order of the substrings separated by dots. | |||
4. Appending the string ".ddi.urn.arpa" to the end to get a domain | 4. Appending the string ".ddi.urn.arpa" to the end to get a domain | |||
name. | name. | |||
B.3. Valid Databases | B.3. Valid Databases | |||
The DNS is specified as a DDDS Database for this application which | The DNS is specified as a DDDS Database for this application, which | |||
uses the NAPTR DNS resource records to contain the rewrite rules | uses the NAPTR DNS resource records to contain the rewrite rules for | |||
for service discovery. | service discovery. | |||
The DNS is queried for NAPTR records for the domain name which is | The DNS is queried for NAPTR records for the domain name, which is | |||
the output of the First Well Known Rule. | the output of the First Well Known Rule. | |||
B.4. Expected Output | B.4. Expected Output | |||
The expected output is the information necessary to connect to | The expected output is the information necessary to connect to one or | |||
authoritative server(s) (host, port, protocol, or URL) for an | more authoritative servers (host, port, protocol, or URL) for an | |||
application service within a given DDI agency. The result is a | application service within a given DDI agency. The result is a list | |||
list of terminal NAPTR records pointing to services available for | of terminal NAPTR records pointing to services available for the | |||
the relevant DDI agency. | relevant DDI agency. | |||
Acknowledgments | ||||
Many thanks to Arofan Gregory, Dan Smith, and Wendy Thomas from the | ||||
DDI Alliance Technical Committee and Peter Koch from DENIC (German | ||||
Network Information Center) for the discussion and input that led to | ||||
this document. | ||||
The following software tools have been helpful in evaluating the ABNF | ||||
grammar and the regular expressions: an ABNF parser [ABNFPFE], a tool | ||||
that creates regular expressions from an ABNF grammar [ABNF2RS], and | ||||
a tool that generates random strings that match an ABNF grammar | ||||
[ABNFGEN]. | ||||
Author's Address | Author's Address | |||
Joachim Wackerow | Joachim Wackerow | |||
c/o The Data Documentation Initiative Alliance (DDI Alliance) | c/o The Data Documentation Initiative Alliance (DDI Alliance) | |||
ICPSR, University of Michigan | ICPSR, University of Michigan | |||
PO Box 1248 | PO Box 1248 | |||
Ann Arbor, MI 48106-1248 | Ann Arbor, MI 48106-1248 | |||
USA | United States of America | |||
Email: joachim.wackerow@posteo.de, secretariat@ddialliance.org | Email: joachim.wackerow@posteo.de, secretariat@ddialliance.org | |||
Website: ddialliance.org | URI: ddialliance.org | |||
End of changes. 195 change blocks. | ||||
630 lines changed or deleted | 593 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |