This document reports implementations of the Content Negotiation by Profile Candidate Recommendation [[DX-PROF-CONNEG]].
Content Negotiation by Profile describes how Internet clients may negotiate for content provided by servers based on data profiles to which the content conforms.
In this document we will employ the following namespace prefixes:
cnpr
http://www.w3.org/ns/dx/connegp/profile/
earl
http://www.w3.org/ns/earl#
We followed the steps described below to collect evidence for the revisions proposed in [[DX-PROF-CONNEG]]:
We verified the claims made by the various implementations using a test suite which is detailed in [[PROF-CNEG-TESTING]]
To verify the claims of implementations, test suite software was created. The software used the Apache jMeter application to run a series of external tests against implementations, testing for each aspect of the normative instructions per functional profile.
The code for the test suite is stored in the following code repository:
That repository contains notes on how to apply the test suite.
The results from applying this test suite to implementations are given in the tables in .
The namespace prefixes for the functional profiles used in Table 1 below, are:
cnpr
→ http://www.w3.org/ns/dx/connegp/profile/
URI | Name | Description |
---|---|---|
cnpr:http |
HTTP Headers Functional Profile | For systems operating with the HTTP [[RFC9110]] protocols |
cnpr:qsa |
URL QSA Functional Profile | For systems negotiating for content with the use of URL Query String Arguments (cf. [[RFC3986]] for a definition of Query String Arguments in the context of URIs) and using the _profile argument key and _profile=all key/value pair |
cnpr:qsa-alt |
URL QSA Alternate Keywords Functional Profile | For systems negotiating for content with the use the use of URL Query String Arguments (cf. [[RFC3986]] for a definition of Query String Arguments in the context of URIs) and using key values of their choice |
cnpr:rrd |
Resource Representation Description | For systems wanting to indicate that they are able to indicate which profile(s) responses returned conform to |
ID | Name | Description | Implementer(s) | Location online |
---|---|---|---|---|
I1 | pyLDAPI | A Python module that adds Linked Data API functionality to a Python Flask (a web framework) installation. | Nicholas J. Car | |
I2 | PHP ConnegP | A library of PHP functions for HTTP Content Negotiation by Profile | Nicholas J. Car | |
I3 | OGC Definitions Server | Semantic publishing infrastructure for the OpenGeospatial Consortium a Standards Development Organisation | Rob Atkinson | Documentation |
I4 | CKAN DCAT Plugin | A existing extension module for the CKAN – the open source data portal – that already had a non-standard way of conducting Content Negotiation by Profile that has now been enhanced to meet the ConnegP specification |
|
|
I5 | Testing client | The test suite for this specification represents a separate implementation of a client that uses the List Profiles mechanism to check that resource access conforms to the specific behaviours. | Rob Atkinson | [[PROF-CNEG-TESTING]] |
I6 | Decentralised Content Negotiation | An implementation for the approach enabling decentralised content negotiation. | Yousouf Taghzouti |
|
Name | I1 | I2 | I3 | I4 | I5 | I6 |
---|---|---|---|---|---|---|
HTTP Headers Functional Profile | S | S | S | S | C | S |
URL QSA Functional Profile | S | S | S | S | C | |
URL QSA Alternate Keywords Functional Profile | ||||||
Resource Representation Description | S | S | S | S | C | S |
The editors gratefully acknowledge the contributions made to gathering evidence for [[DX-PROF-CONNEG]] and reviewing this report by