This document reports implementations of the Content Negotiation by Profile Candidate Recommendation [[DX-PROF-CONNEG]].

Introduction

Content Negotiation by Profile describes how Internet clients may negotiate for content provided by servers based on data profiles to which the content conforms.

Namespace prefixes

In this document we will employ the following namespace prefixes:

cnpr
http://www.w3.org/ns/dx/connegp/profile/
Instances of Functional Profiles of Content Negotiation by Profile
earl
http://www.w3.org/ns/earl#
Evaluation and Report Language

Methodology

We followed the steps described below to collect evidence for the revisions proposed in [[DX-PROF-CONNEG]]:

  1. Identified the Functional Profiles of [[DX-PROF-CONNEG]] that describe how to implement the specification in specific environments
    • As originally published, the specification has four Functional Profiles however new ones created by users can be added at any time
    • New Functional Profiles will be listed here with implementations as they become known
  2. Listed the individual normative instructions per Functional Profile, per function or data model
  3. Identified implementations
  4. Tabulated the implementations' claims per Functional Profile, per function or data model
  5. Tabulated the implementations' claims per individual normative instructions implemented

We verified the claims made by the various implementations using a test suite which is detailed in [[PROF-CNEG-TESTING]]

Test Suite

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.

Test Suite Results

The results from applying this test suite to implementations are given in the tables in .

Implementation Evidence

Functional Profiles Identified

The namespace prefixes for the functional profiles used in Table 1 below, are:

Table 1: Known Functional Profiles of Content Negotiation by Profile Identified
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

Normative Instructions per Functional Profile

Implementations

Table 3: Known implementations
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
  • Original ckan-dcat plugin authors (original plugin code)
  • Nicholas J. Car (extension of plugin to meet ConnegP specifications)
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

Implementation claims per Functional Profile

Key:

Implementation claims per Normative Instruction

General analysis

Acknowledgements

The editors gratefully acknowledge the contributions made to gathering evidence for [[DX-PROF-CONNEG]] and reviewing this report by