A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.w3.org/TR/2019/WD-dx-prof-conneg-20190430/ below:

Content Negotiation by Profile

Abstract

This document describes how Internet clients may negotiate for content provided by servers according to profiles. This is distinct from negotiating by Media Type or Language: the profile is expected to specify the content of information returned, which may be a subset of the information the responding server has about the requested resource, and may be structured in a specific way to meet interoperability requirements of a community of practice.

Status of This Document

This section describes the status of this document at the time of its publication. Other documents may supersede this document. A list of current W3C publications and the latest revision of this technical report can be found in the W3C technical reports index at https://www.w3.org/TR/.

This document was published by the Dataset Exchange Working Group as a Working Draft. This document is intended to become a W3C Recommendation.

GitHub Issues are preferred for discussion of this specification. Alternatively, you can send comments to our mailing list. Please send them to public-dxwg-comments@w3.org (archives).

Please see the Working Group's implementation report.

Publication as a Working Draft does not imply endorsement by the W3C Membership. This is a draft document and may be updated, replaced or obsoleted by other documents at any time. It is inappropriate to cite this document as other than work in progress.

This document was produced by a group operating under the W3C Patent Policy. W3C maintains a public list of any patent disclosures made in connection with the deliverables of the group; that page also includes instructions for disclosing a patent. An individual who has actual knowledge of a patent which the individual believes contains Essential Claim(s) must disclose the information in accordance with section 6 of the W3C Patent Policy.

This document is governed by the 1 March 2019 W3C Process Document.

Overview of DXWG documents on profiles

This document is one within a set of documents on profiles, edited by the W3C Dataset Exchange Working Group (DXWG). Some of the documents are general whereas others are technology-specific:

Table of Contents
  1. 1. Introduction
  2. 2. Conformance
  3. 3. Definitions
  4. 4. Motivation
  5. 5. Related Work
    1. 5.1 Existing standards for transporting profile information in HTTP headers
    2. 5.2 Archival Resource Key (ARK)
    3. 5.3 Linked Data APIs
    4. 5.4 OAI-PMH
    5. 5.5 Catalogue Service for the Web (CSW)
  6. 6. Abstract Model
    1. 6.1 Context
    2. 6.2 Requests and Responses
      1. 6.2.1 list profiles
      2. 6.2.2 get resource by profile
  7. 7. Realizations
    1. 7.1 Hypertext Transfer Protocol Headers
      1. 7.1.1 list profiles
        1. 7.1.2 get resource by profile
      2. 7.2 URL Query String Arguments
        1. 7.2.1 list profiles
        2. 7.2.2 get resource by profile
    2. 8. Test Suites
    3. 9. Implementations
    4. 10. Acknowledgements
    5. 11. Changes
    6. 12. Security and Privacy
    7. A. Appendices
      1. A.1 Requirements
      2. A.2 Issue Summary
      3. A.3 Additional Issues
    8. B. References
      1. B.1 Normative references
      2. B.2 Informative references
    1. Introduction

    This section is non-normative.

    Content delivered by dereferencing Internet identifiers can be negotiated for in different ways. When using the HTTP protocol [RFC7230], a client may set one or more headers:

    However, clients have not had a defined way to negotiate for content based on its adherence to an information model - a standard, a specification or a profile - and this document describes how this functionality can be delivered.

    When online information about a resource adheres to one or more profiles, methods described here allow clients to list those profiles and request content according to one or more of them in order of preference. For example, information about an online book might adhere to the Dublin Core Terms [DCTERMS] metadata specification with each field, such as title, description, author etc., being defined and formatted according to various Dublin Core elements (dct:title, dct:description & dct:creator, respectively). Then, a request for the information about this book may ask for the list of profiles according to which the metadata is available, or it may ask specifically for a response adhering to the Dublin Core Terms. When no profile or an unsupported profile is requested, a server returns default content, that is, content conforming to the default profile supported by the server.

    When selecting a content negotiation mechanism, an Internet client may use the HTTP protocol but it may also use other methods for providing instructions to a server, such as URI Query String Arguments (QSAs). QSAs are established as useful for humans and machines for situations where negotiation via HTTP is not practical, such as when manually entering requests into web browsers. This document also provides guidance for both HTTP and non-HTTP methods of content negotiation and ensures they all adhere to a single functional specification, ensuring their functional equivalency.

    Guidance for the creation of profiles is provided in the [PROF-GUIDANCE] document created by the Dataset Exchange Working Group (DXWG).

    Describing the parts of profiles and their relation to other profiles is the function of the Profiles Vocabulary [PROF], also produced by the DXWG.

    2. Conformance

    As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.

    The key words MAY, MUST, MUST NOT, RECOMMENDED, and SHOULD are to be interpreted as described in [RFC2119].

    Conformance

    For the purpose of compliance, the normative sections of this document are Section 3, Section 6, Section 7 and Section 8.

    3. Definitions
    specification

    An act of identifying something precisely or of stating a precise requirement. - Oxford English Dictionary

    One form of a specification is a standard which is a "basis for comparison; a reference point against which other things can be evaluated" - [DCTERMS]

    profile

    A named set of constraints on one or more identified base specifications, including the identification of any implementing subclasses of datatypes, semantic interpretations, vocabularies, options and parameters of those base specifications necessary to accomplish a particular function.

    This definition includes what are often called "application profiles", "metadata application profiles", or "metadata profiles".

    Source: deliberations of the DXWG. See ProfileContext wiki page.

    client
    A program that establishes a connection to a server for the purpose of sending one or more HTTP requests [RFC7230]
    server
    A program that accepts connections in order to service HTTP requests by sending HTTP responses. [RFC7230]
    resource
    The entity that is identified by a URI. Familiar examples include an electronic document, an image, a source of information with a consistent purpose. [RFC3986]
    metadata
    Information that is supplied about a resource [RFC3986]
    request
    A message sent over the Internet, from a client to a server, for a information about a resource [RFC7230]
    response
    A message sent over the Internet, from a server to a client answering a request for information about a resource [RFC7230]
    token
    A short name identifying something, in the context of this document a profile
    4. Motivation

    This section is non-normative.

    In many cases, there are several ways to describe a resource within the scope of a single Media Type. For instance, XML documents, while conforming to the text/xml Media Type, may adhere to one of several DTDs or XML Schemas. RDF documents, with a choice of Media Type serializations such as text/turtle, application/rdf+xml and others, have a large number of vocabularies (classes and properties) available to use for their content's information model. When a client initiates a request for an Internet resource, such as an HTTP GET to retrieve a resource or an HTTP PUT to create or replace a resource, the client and server must have a standardized way to exchange information on how the transmitted resource will be structured according to DTDs, XML Schema, vocabularies or other standards, specifications or profiles. When using non-HTTP content negotiation, various methods such as URIs with Query String Arguments have been implemented previously, such as the OAI-PMH [OAI-PMH] and OGC's CSW [CSW] protocols.

    This document describes an abstract, functions-based, model for content negotiation by profile and gives both the HTTP header realization and also a recommended query string argument-based realization too. The query string approach provides a "fall back" required by the Dataset Exchange Working Group's Charter (Section 2.3). Other query string or REST-based realizations are considered possible but are not given here. In general, existing APIs that support specification of alternative profiles for resource representations may support this model too by implementing its functions.

    6. Abstract Model

    This section describes a conceptual, abstract, model for content negotiation by profile, independent of any realizations of it within specific environments.

    Realizations of this abstract model MUST implement its functions, but how they do this will be environment-specific.

    6.1 Context

    All content negotiation takes place between a client and a server over the Internet with the former requesting a representation of a resource or a resource's metadata through a request and receiving it via a response. In some cases, a server may have to make a request of a client and receive a response.

    An Internet resource may have many aspects over which a client/server pair of agents might negotiate for content. These aspects are to be treated independently so content negotiation for a resource involving negotiation by profile and any other aspects of a resource will not affect each other. For this reason, other than a directive to maintain independence, no further discussion of negotiation by profile and the relations to other forms of negotiation are given. Specific realizations might require special handling of profile and other forms of negotiation.

    A client requesting the representation of a resource conforming to a profile MUST identify the resource by a Uniform Resource Identifier (URI) [RFC3986] and MUST identify a profile either by a URI or a token that unambiguously identifies the profile for the server within that request/response session.

    In this abstract model, we don't assume any specific details about client, server, resource, metadata, request or response.

    If a URI is used for profile identification, it is recommended that it be an HTTP URI that dereferences to a description of the profile. Other kinds or URIs, e. g. URNs MAY also be used however systems will need to provide means to describe such profiles for a given URN. When a token is used, the server is responsible for declaring the context within which the token may be mapped to a unique profile identifier, such as an HTTP namespace.

    6.2 Requests and Responses

    There are two main types of request that a client might make of a server regarding content negotiation by profile. A client wishing to negotiate for content via a profile adhering to this specification MUST be able to implement these two request types.

    1. list profiles
      a client requests the list of URIs of profiles for which a server is able to deliver conformant resources
    2. get resource by profile
      a client requests a representation of the requested resource represented conforming to a particular profile

    A server adhering to this specification MUST respond to each request with the following responses.

    1. list profiles
      a server responds to a client with the list of profile URIs for the profiles for which it is able to deliver conformant resource representations
    2. get resource by profile
      a server responds with either a specific profile for a resource conforming to a requested profile identified by the client or it responds with a default profile

    More detailed descriptions of these requests and their responses are given next.

    6.2.1 list profiles

    A client wishes to know for which profiles a server is able to deliver conformant representations of a resource. The content of the list can be known either before a request for a particular resource representation is made or it may only be known after an initial request for a resource representation is made.

    The list profiles request MUST be either an independent request or part of another realization's request.

    The list profiles request MAY result in a response in one of a number of formats provided that the profiles representations of resources conform to are unambiguously identified either by URI or a token which MUST be mappable to a URI within one particular client/server session.

    A server MUST NOT list profiles that resource representations conform to if it is unable to deliver those representations when presented with a get resource by profile request.

    Many existing systems that support use of alternative information profiles do not provide an explicit list. However, external catalogues or other sources of metadata may provide this list, and the server may perform negotiation over a specific request.

    Feedback is sought on whether this should be deemed mandatory.

    6.2.2 get resource by profile

    The most basic request of content negotiation by profile is for a client to request a representation of a resource that is claimed to conform to a profile.

    A client executing a get resource by profile request MUST identify the profile with either a URI or a token mapping unambiguously within a session to a URI.

    A client executing a get resource by profile MAY request a resource representation conforming to one of any number of profiles with its preference expressed in a some form of list ordering.

    The server should attempt to reply with a profile that best matches the client request. The order of preference a server MUST follow to determine a best matching profile is: an exact match, followed by anything that the profile profiles (a more general specification or profile), perhaps transitively.

    If a client requests a profile but gets a narrower profile, the Server should set its responses Content-Profile header to the profile identifier that the Client requested, not the identifier of the narrower profile as the client might not understand the narrower profile identifier.

    Example 4: Get resource by profile, narrower profile response (HTTP realization)
    # a request for Resource 1 according to Profile A is made
    
    GET http://example.org/resource/1 HTTP/1.1
    Accept-Profile: http://example.org/profile/A
    [more request headers]
    
    ---
    
    # the server IS NOT able to respond with a representation
    # of Resource 1 conforming to Profile A
    
    # the server IS able to respond with a representation of
    # Resource 1 according to Profile B which it knows is a
    # profile of Profile A
    
    # the server indicates the response conforms to Profile A,
    # not Profile B so the client is assured of conformance
    
    HTTP/1.1 200 OK
    [other response headers]
    Content-Profile: http://example.org/profile/A
    [more response headers]
    
    [content according to Profile B and thus Profile A which it profiles]

    From ShEx IG:

    We were unsure what to make of "inheritance", as we are not aware of any generalized notion of inheritance that would make sense across implementation technologies. It would be helpful to motivate this with a testable use case, e.g., a server implementation which responds to Accept-Profile by calculating the "best" response for processing a Profile Ontology description. A test of inheritance would include the notion that inheriting imposes further constraints, and that the entity being inherited from may in turn inherit from something else. ShEx shape inheritance has this behavior.

    7. Realizations

    This section describes realizations of the abstract model which are implementations of it in different environments.

    This document provides onw two realizations however it is expected that implementers of content negotiation by profile may implement further realizations in other environments.

    Note: Realization requirements

    Implementers of Content Negotiation by Profile need not implement multiple realizations of the Abstract Model. They need only implement the realizations relevant to them - either those defined in this document or new ones they define, however each realization MUST accord with the Abstract Model.

    A realization of the Abstract Model using Hypertext Transfer Protocol (HTTP) headers is presented here. This implementation is based on HTTP content negotiation and uses two new HTTP headers, Accept-Profile and Content-Profile that are to be defined in an upcoming Internet-Draft [PROF-IETF].

    It would appear that it will necessary to negotiate for profile before language or content-type. Memento specifies that time-based negotiation MUST take place before any other negotiation.

    7.1.1 list profiles

    The preferred way to retrieve a list of profiles the server supports for a specific resource is to issue a GET or HEAD request for that resource. In either case, a server implementing content negotiation by profile SHOULD return an HTTP Link header containing information about the default representation of that resource and information about any alternate representations of that resource that that conform to potentially other profiles. The returned representation will be identified by rel="self", other representations by rel="alternate".

    As an example, consider the resource http://example.org/a/resource available in the Media Types application/xml, text/html and text/turtle. The text/html representation has no profile, whereas the application/xml and text/turtle representations are both available in the profiles urn:example:profile:1 and urn:example:profile:2.

    All representations of /a/resource have Content-Location URLs. This results in the following matrix:

    Media Type / Profile urn:example:profile:1 urn:example:profile:2 text/html http://example.org/a/resource.html http://example.org/a/resource.html text/turtle http://example.org/a/resource.prof1.ttl http://example.org/a/resource.prof2.ttl application/xml http://example.org/a/resource.prof1.xml http://example.org/a/resource.prof2.xml

    Assuming that a request without an Accept-Profile header per default delivers content conforming to urn:example:profile:1, an HTTP request/response pair would look as follows:

    7.1.1.1 Token mappings

    If HTTP servers wish to allow clients to identify profiles via token, in addition to the the mandatory identification of profiles via via URI, the servers will need to provide a token / URI mapping via this list profiles function. In this HTTP realization, this may be implemented in a number of ways. The preferred way is to add "token" parameters to the HTTP Content-Profile and Link HTTP headers.

    Note: Multiple ways of conveying URI / token mappings

    There are several methods that many be used to convey URI / token mappings including the recommended method described and exemplified above.

    Option 1: token parameters (recommended)

    "token" parameters are added to Content-Profile & Link profile= HTT headers.
    Pros: self-contained,flexible, explicit.
    Cons: potential redundancy in URIs if many offered

    Option 2: registered tokens

    Tokens are registered in a global registry and servers may use them in place of a URI
    Content-profile: token1, URI2 Pros: compact
    Cons: a global registry for profiles not manageable when many systems define profiles and such a registry limits other capabilities of profile description by forcing generic profiles

    Option 3: allow namespace declarations

    As per the use of CURIEs [CURIE] whose specification "...defines a generic, abbreviated syntax for expressing URIs.", within JSON-LD [JSON-LD], a token may be indicated for use in place of a URI within a namespacing context. In this method, key/value pairs of tokens/URIs are defined within an HTTP header such as Content-Profile like this:

    Content-Profile: @:http://example.org/profiles/,@w3c:http://w3.org/knownprofiles#, :token1, w3c:token2

    Where the first key/value pair of token/URI is key: <nothing>, value: http://example.org/profiles/ and the second, is key: <w3c>, value:http://w3.org/knownprofiles#.

    Pros: compact, no registry requirement
    Cons: clients have more parsing to do
    Note: could easily be a JSON-LD payload
    (alternative syntax using parameter ns2;ns=http://example.org/profiles/)

    In this method, a new HTTP header could be introduced to specifically convey token/URI profile key/value pairs. If Content-Profile-Namespaces is to be the new HTTP header, then a server may respond to a request with the following pair of headers:

    Content-Profile-Namespaces: :http://example.org/profiles/,w3c:http://w3.org/knownprofiles#
    Content-Profile: :token1, w3c:token2

    In 7.1.3 (https://www.w3.org/TR/dx-prof-conneg/#listprofilestokenshttp), if the QSA approach is aimed at reducing the use of HTTP headers for humans, in what shape and form (e.g. media type) would a list of profiles be returned for a QSA based query instead of using HTTP headers? Should there be a convention?

    7.1.2 get resource by profile

    Getting a resource representation conforming to a specific profile is done by issuing an HTTP GET request against the resource and specifying the desired profile URI in an Accept-Profile header. It is possible to specify a range of acceptable profile URIs and also to indicate preferences by using quality indicators (q-values).

    Having performed content negotiation and returned a resource representation, it is RECOMMENDED that the server also include a Link header indicating the availability of alternate resources encoded in other media types and conforming to other profiles, as described above.

    7.2 URL Query String Arguments

    There is a question within the working group regarding the advisability of specifying an alternative method of content negotiation conducted via query strings rather than HTTP headers. We have a requirement to show how datasets with different profiles can be made discoverable by humans, but there is disagreement whether this requirement extends to implementing the same negotiation scheme used in HTTP headers.

    If the QSA realisation of the profile conneg Abstract Model (https://w3c.github.io/dxwg/conneg-by-ap/#abstractmodel) doesn't mandate the use of particular QSA keys (such as _profile & _mediatype) then it needs to provide a way for users to discover what QSA keys are used.

    While the HTTP-header approach to profiles enables fully automated retrieval of data conforming to a desired profile, it is also advisable to enable humans to select data by profile without requiring direct manipulation of request header content. This can be accomplished by existing web development methods where an API supports a graphical interface. The user can be presented with a list of available profiles and given the choice of which to retrieve for the dataset of interest. They can even be asked to indicate a ranked choice of possible profiles, which could then be used to retrieve multiple resources' data matching a query.

    As one example of how an API for such a service can be implemented, a Query String Argument (QSA) realization of the Abstract Model is presented here. Unlike the HTTP-header realization, which is also the subject of an independent IETF document [PROF-IETF], this realization is fully specified here but it is not normative. This realization does not preclude other URL schemes, or even other QSA schemes, for profile negotiation, the general requirement being that any scheme implements the functions of the Abstract Model. Whatever specific scheme is used, it should be fully documented and discoverable.

    A query string is a part of a URL which assigns values to specified parameters. QSAs are commonly used within web browsers by humans and in other client/server situations to deliver extra information to a server.

    Note: Maximum length of URLs

    Since Query String Arguments use URIs (or URLs) to convey important information, implementers should ensure that the total length of the URL does not exceed possible length restrictions. [RFC7230] §3.1.1 recommends that senders and recipients support request lines of at least 8,000 octets. Some client and server implementations, however, cannot accept URLs longer than 2,000 characters and e. g. the Sitemap protocol has a length limit of 2,048 characters in a URL. Cf. this question on stackoverflow for a longer discussion of issues related to URL length.

    Key naming

    Many systems use query string argument (QSA) to control profiles of representations to be returned - even when not using this terminology. whilst much of this is ad-hoc, standard API specifications may include canonical parameter names for these concepts. The specification proposed here is a recommendation in the absence of an alternative. The implication however is that a canonical means to discover mappings between other APIs and the Abstract Model is required.

    When content negotiation by profile is to take place using QSAs, the requests and responses of the Abstract Model can be implemented by using key/value pairs using key terms of the implementer's choosing. In this realization, _profile and _mediatype are used to indicate a single profile or a list of preference-ordered profiles, or one or more Media types, respectively, with profiles or Media Types indicated by either URI or token.

    Note: Current use of tokens for negotiation by Media Type

    Currently, the convention in HTTP content negotiation by media type uses tokens for Media Types, such as text/html or application/ld+json with the tokens registered at IANA's Media Types list.

    There is no proposal yet to create a central register of profiles, as this is thought by the authors to be unsustainable in the long term, given the likely numbers of profiles to be established.

    For this reason, this QSA realization allows either URIs or tokens for profiles to be used, and it is expected that other URL-based realizations will also allow URIs or tokens for Media Types and other content negotiation dimensions, such as language. There are already several initiatives that have created URIs for Media Types based on the IANA registry's tokens.

    Resource URL

    Resource URLs for which QSA-based profile negotiation is taking place should not themselves be QSA values of other resource URIs in any QSA-based realization. Such mechanics may be used internally but are best kept transparent to the realization's client applications.

    Example 8: Resource URLs must not, themselves, be parameters of other URLs
    For the representation of Resource X, according to Profile Y, in Media Type Z:
    
    Rather than:
    GET /single/endpoint?resource=http://example.org/resource=X&_profile=Y&_mediatype=Z HTTP/1.1
    
    Use:
    GET /resource/X?_profile=Y&_mediatype=Z HTTP/1.1
    7.2.1 list profiles

    A QSA with a fixed value such as _profile=list should be supported by the server to allow a client to make a list profiles request.

    a dedicated parameter may by used (_list), e.g. allowing for listing of profile (_list=profile) or media type (_list=media-type)

    Extracted from Jaroslav's edits: Issue #569

    Other QSA key/value pairs can be used, such as _view=alternates, as long as this is discoverable.

    The complete request for the profiles to which a resource's representations conform can thus be communicated in a single URL like thus:

    Example 9: Requesting a list of profiles for a resource by QSA
    GET /a/resource?_profile=list HTTP/1.1

    where /a/resource is the URL of the resource for which the list of available profiles is requested

    It's possible for a client making this request to negotiate for particular formats of the response by using a QSA equivalent to the HTTP Accept header to indicate a Media Type. The server would implement a _mediatype QSA for this but might offer an alternative, such as _format, as long as this is discoverable.

    An example profile listing for a resource in HTML would look like:

    Example 10: Requesting a list of profiles for a resource by QSA in HTML
    GET /a/resource?_profile=list&_mediatype=text/html HTTP/1.1
    7.2.2 get resource by profile

    Expressing profile preference

    A server implementing profile listing for resources could allow the requester to indicate preferences by allowing the QSA indicating the desired profile, e.g., _profile, to have a comma-separated list as its value so, for a client desiring representations of /a/resource according to profiles with tokens aaa, bbb & ccc we have:

    Example 11: Requesting a list of profiles for a resource by QSA in HTML
    GET /a/resource?_profile=aaa,bbb,ccc HTTP/1.1

    Servers can support any combination of profile URIs or tokens for this (e.g. aaa,http://example.org/profile-x,bbb). However, in this situation, profile URIs containing commas would need to be escaped.

    Similarly, a server implementing multiple Media Type return formats for its profile listing should allow a client to specify a preference order for Media Types and also for other dimensions of content negotiation, such as language. When using a QSA-only API, Media Type preferences (and language and others in a similar fashion) can be specified in a comma-separated list form, most preferred to least, such that a client requesting profiles as aaa,bbb,ccc will receive a resource that meets the requirements of profile aaa if it is available, else one that meets profile bbb if that is available, and so on.

    8. Test Suites

    This section includes links to software tools to be used for testing the adherence of implementations to the realizations given in this document.

    Apache JMeter

    An Apache JMeter implementation of a test suite is maintained at: https://github.com/CSIRO-enviro-informatics/prof-conneg-jmeter-test-suite

    This issue was created in the Conneg by Profile document and is listed in it. Once consensus on addressing it is reached here in comments below, the results will be added to the document and the issue closed.

    9. Implementations

    This section is non-normative.

    This section includes implementations of the realizations given in this document and their conformance test results. The tools used for conformance testing are listed in the section above.

    10. Acknowledgements

    This section is non-normative.

    The editors gratefully acknowledge the contributions made to this document by all members of the Dataset Exchange Working Group, especially Annette Greiner.

    The editors would also like to thank the following non-Working Group people for supplying comments which were used to improve this document: Erik Wilde, Gregg Kellogg & Irene Polikoff.

    Special thanks must be given to Kam Hay Fung for his most extensive comments and suggestions which found and fixed issues for us.

    Finally, the editors thank the chairs of the Dataset Exchange Working Group: Peter Winstanley & Karen Coyle.

    11. Changes

    This section is non-normative.

    Changes since the 18 December 2018 Working Draft are:

    12. Security and Privacy

    This section is non-normative.

    The use of HTTP to negotiate and transport implies that all privacy and security issues that are relevant for that protocol are also relevant for profile negotiation. E. g., information such as user agent, accept-headers, IP address etc. can potentially be used as identifying information, and particularly, the IP address adds information about geolocation and institutional membership. Further, offering a list of acceptable profiles at the beginning of a negotiation process can reveal information about the user's interests that could be used to add such information to a user profile.

    For a more complete view of those issues, cf. the Privacy and Security Questionnaire for this deliverable.

    A. Appendices A.1 Requirements

    This section lists, and then addresses, individual requirements that the Dataset Exchange Working Group considered important for content negotiation by profile.

    Note

    Responses to individual requirement Issues listed here are, at the time of the First Public Working Draft of this document, for demonstration only; to indicate the logic of answers to individual requirements.

    These requirement responses may not survive in their current form in later drafts of this document nor may individual listings of requirements; they may be subsumed into the flowing txt of the document.

    RESPONSE FOR Req. 73

    This requirement is addressed by suggesting how an Internet resource in general, rather than specifically a dcat:Dataset or dcat:Distribution should list profiles it implements. A DCAT- specific solution should not be any different from the general case.

    Note

    Profile definition and constraints on properties are not addressed here. See [

    PROF-GUIDANCE

    ].

    This requirement is taken to mean "create a way to list the profiles implemented by a Internet resource for humans and machines to use". For the former (humans), the options are:

    This issue was created in the Conneg by Profile document and is listed in it. Once consensus on addressing it is reached here in comments below, the results will be added to the document and the issue closed.

    The Use Case Web browser navigation of profile information is recorded but no DXWG method is yet proposed. In prior art, the so-called alternates view method is listed. This method is not yet aligned with the IETF proposal.

    For the latter (machines):

    Is DCAT expecting to implement a profile of ProfileDesc or a DCAT-aligned set of terminology or will it follow the vocabulary as-is?

    In the draft version of the conneg document, the Requirement #73 is answered by addressing the general case (profile listing of a resource) and then notes are given on the DCAT-specific answer given that the Requirement gives DCAT listing of profiles as the motivation.

    If DCAT is to adopt the general, ProfileDesc mechanics of profile listing, no special menthoin needs to be made.

    If DCAT is to adopt specialised terminology (profileing ProfileDesc) then what reference, if any from DCAT to ProfileDesc needs to be made?

    RESPONSE FOR Req. 74

    This requirement is the focus of the IETF RFC in the DXWG Family of Documents [PROF-IETF].

    In summary, a series of new HTTP headers are added to the HTTP specification allowing for HTTP negotiation via profile in a manner similar to negotiation via Media Type or Language.

    Some media types already have a profile parameter, such as JSON-LD. The profile negotiation deliverable should define how conflicts between it's syntax and profiles specified in the media type are handled.

    For example, a server would need to deterministically handle:

    GET /foo/bar HTTP/1.1
    
    Accept: application/ld+json;profile="http://example.org/profile/jsonld"
    Accept-Profile: http://baz.com/some/other/profile
    

    (edited to fix header name)

    RESPONSE FOR Req. 265

    This requirement is met by [PROF-IETF].

    Original wording: "Return http link headers using the following relationship types... [ID30] (5.30)"

    Entered from Google Doc

    Entered from Google Doc

    Suggested re-wording: a profile must have an identifier

    RESPONSE FOR Req. 284

    (assuming wording of "a profile must have an identifier")

    Profiles must be identified by an HTTP URI.

    Short codes (tokens) for profiles that map to HTTP URIs for them may be used in systems that ensure the tokens map deterministically. This allows for the use of simple strings in places where URIs are impractical yet preserves the guarantee that every profile has an HTTP URI.

    Entered from Google Doc

    What kinds of information? Can we clarify this?

    RESPONSE FOR Req. 288

    This requirement is met by [PROF].

    Issue 289: When requesting a representation, a client must be able to specify which profile it prefers the representation to adhere to. This information about the requested profile is not a replacement for content type (e. g. application/xml), language (e. g. zh-Hant) or any other negotiated dimension of the representation. [ID5] (5.5) ON HOLD profile-guidanceplenary-approvedrequirementrequires discussion

    Entered from Google Doc.

    Suggested re-wording: "When requesting a representation, a client must be able to specify which profile it prefers the representation to adhere to. This information about the requested profile is not a replacement for content type (e. g. application/xml), language (e. g. zh-Hant) or any other negotiated dimension of the representation."

    RESPONSE FOR Req. 289

    This requirement is met by [PROF-IETF].

    A.2 Issue Summary B. References B.1 Normative references
    [DCTERMS]
    DCMI Metadata Terms. DCMI Usage Board. DCMI. 14 June 2012. DCMI Recommendation. URL: http://dublincore.org/documents/dcmi-terms/
    [PROF]
    Profile Descriptions ontology. 2018-12-18. W3C First Public Working Draft. URL: https://www.w3.org/TR/2018/WD-dx-prof-20181218/
    [PROF-GUIDANCE]
    Profile Guidance. 2019-04-24. W3C Editor's Draft. URL: https://w3c.github.io/dxwg/profiles/
    [PROF-IETF]
    Negotiating Profiles in HTTP. L. Svensson; R. Verborgh. 2017-10-24. IETF Internet Draft. URL: https://profilenegotiation.github.io/I-D-Accept--Schema/I-D-accept-schema
    [RFC2119]
    Key words for use in RFCs to Indicate Requirement Levels. S. Bradner. IETF. March 1997. Best Current Practice. URL: https://tools.ietf.org/html/rfc2119
    [RFC3986]
    Uniform Resource Identifier (URI): Generic Syntax. T. Berners-Lee; R. Fielding; L. Masinter. IETF. January 2005. Internet Standard. URL: https://tools.ietf.org/html/rfc3986
    [RFC7230]
    Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing. R. Fielding, Ed.; J. Reschke, Ed.. IETF. June 2014. Proposed Standard. URL: https://tools.ietf.org/html/rfc7230
    B.2 Informative references
    [ARK]
    The ARK Identifier Scheme. 2008-05-22. Internet-Draft. URL: https://tools.ietf.org/id/draft-kunze-ark-15.txt
    [CSW]
    Catalogue Services 3.0 - General Model. Douglas Nebert; Uwe Voges; Lorenzo Bigagli. OGC. 10 June 2016. URL: http://www.opengeospatial.org/standards/cat
    [CURIE]
    CURIE Syntax 1.0. Mark Birbeck; Shane McCarron. W3C. 16 December 2010. W3C Note. URL: https://www.w3.org/TR/curie/
    [DC11]
    Dublin Core Metadata Element Set, Version 1.1. DCMI. 14 June 2012. DCMI Recommendation. URL: http://dublincore.org/documents/dces/
    [ISO-19115]
    Geographic information -- Metadata. ISO/TC 211. ISO. 2003. International Standard. URL: https://www.iso.org/standard/26020.html
    [JSON-LD]
    JSON-LD 1.0. Manu Sporny; Gregg Kellogg; Markus Lanthaler. W3C. 16 January 2014. W3C Recommendation. URL: https://www.w3.org/TR/json-ld/
    [OAI-PMH]
    The Open Archives Initiative Protocol for Metadata Harvesting. Carl Lagoze; Herbert Van de Sompel; Michael Nelson; Simeon Warner. OAI. 8 January 2015. URL: http://www.openarchives.org/OAI/openarchivesprotocol.html
    [RFC6906]
    The 'profile' Link Relation Type. E. Wilde. IETF. March 2013. Informational. URL: https://tools.ietf.org/html/rfc6906
    [RFC7231]
    Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content. R. Fielding, Ed.; J. Reschke, Ed.. IETF. June 2014. Proposed Standard. URL: https://tools.ietf.org/html/rfc7231
    [RFC7240]
    Prefer Header for HTTP. J. Snell. IETF. June 2014. Proposed Standard. URL: https://tools.ietf.org/html/rfc7240
    [RFC8288]
    Web Linking. M. Nottingham. IETF. October 2017. Proposed Standard. URL: https://tools.ietf.org/html/rfc8288
    [WFS]
    Web Feature Service 2.0 Interface Standard. Panagiotis (Peter) A. Vretanos. OGC. 10 July 2014. OGC Interface Standard. URL: http://www.opengeospatial.org/standards/wfs
    [WMS]
    Web Map Service Implementation Specification. Jeff de la Beaujardiere. OGC. 15 March 2006. OpenGIS Implementation Standard. URL: http://www.opengeospatial.org/standards/wms


    RetroSearch is an open source project built by @garambo | Open a GitHub Issue

    Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

    HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.5