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.