-
Notifications
You must be signed in to change notification settings - Fork 55
/
index.html
249 lines (249 loc) · 11.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset='utf-8'>
<title>Content Negotiation by Profile Implementation Report</title>
<script src="https://www.w3.org/Tools/respec/respec-w3c-common" async class="remove"></script>
<script class="remove" src="config.js"></script>
<style>
table{width:100%;}
.nr{text-align:center;}
.small{font-size:.8em}
</style>
<!--<link rel="stylesheet" type="text/css" href="extra.css">-->
</head>
<body class="informative">
<section id='abstract'>
<p>
This document reports implementations of the Content Negotiation by Profile Candidate Recommendation [[DX-PROF-CONNEG]].
</p>
</section>
<section id='sotd'>
</section>
<section id="introduction">
<h2>Introduction</h2>
<p>
Content Negotiation by Profile describes how Internet clients may negotiate for content provided by servers based on data profiles to which the content conforms.
</p>
<section id="namespace-prefixes">
<h3>Namespace prefixes</h3>
<p>
In this document we will employ the following namespace prefixes:
</p>
<dl>
<dt><code>cnpr</code></dt>
<dd>
<code>http://www.w3.org/ns/dx/conneg/profile/</code><br />
Instances of Functional Profiles of Content Negotiation by Profile
</dd>
<dt><code>earl</code></dt>
<dd>
<code><a href="http://www.w3.org/ns/earl#">http://www.w3.org/ns/earl#</a></code><br />
Evaluation and Report Language
</dd>
</dl>
</section>
<section id="methodology">
<h3>Methodology</h3>
<p>We followed the steps described below to collect evidence for the revisions proposed in [[DX-PROF-CONNEG]]:</p>
<ol>
<li>
Identified the Functional Profiles of [[DX-PROF-CONNEG]] that describe how to implement the specification in specific environments
<ul>
<li>As originally published, the specification has four Functional Profiles however new ones created by users can be added at any time</li>
<li>New Functional Profiles will be listed here with implementations as they become known</li>
</ul>
</li>
<li>
Listed the individual normative instructions per Functional Profile, per function or data model
</li>
<li>
Identified implementations
</li>
<li>
Tabulated the implementations' claims per Functional Profile, per function or data model
</li>
<li>
Tabulated the implementations' claims per individual normative instructions implemented
</li>
</ol>
<p>
We verified the claims made by the various implementations using a test suite which is detailed in
</p>
</section>
<!--
<section id="exit-criteria">
<h3>Meeting the exit criteria</h3>
<p>As described in the <abbr title="Dataset Exchange Working Group">DXWG</abbr> <a href="https://www.w3.org/2017/dxwg/charter">charter</a>, to advance to Proposed Recommendation, evidence will be adduced in order to demonstrate that each of the changes made to the original DCAT Recommendation [[VOCAB-DCAT]] has been published and consumed independently in catalogs and related systems at least once, although a higher number is expected for the majority of terms.</p>
<p>Evidence of implementation was gathered from existing data catalogs, data services, and datasets, which already implement the proposed changes, as well as from existing application profiles of [[VOCAB-DCAT]].</p>
</section>
-->
</section>
<section id="testsuite">
<h3>Test Suite</h3>
<p>
To verify the claims of implementations, test suite software was created. The software used the
<a href="https://jmeter.apache.org/">Apache jMeter</a> application to run a series of external tests against
implementations, testing for each aspect of the normative instructions per functional profile.
</p>
<p>
The code for the test suite is stored in the following code repository:
</p>
<ul>
<li><a href="https://github.com/w3c/prof-conneg-testing">https://github.com/w3c/prof-conneg-testing</a></li>
</ul>
<p>
That repository contains notes on how to apply the test suite.
</p>
<h4>Test Suite Results</h4>
<p>
The results from applying this test suite to implementations are given in the tables in <a href="#evidence"></a>.
</p>
</section>
<section id="evidence">
<h2>Implementation Evidence</h2>
<section id="functionalprofiles">
<h3>Functional Profiles Identified</h3>
<p>The namespace prefixes for the functional profiles used in <a href="#table-functionalprofiles">Table 1</a> below, are: </p>
<ul>
<li><code>cnpr</code> → <code>http://www.w3.org/ns/dx/conneg/profile/</code>
</code></li>
</ul>
<table id="table-functionalprofiles" class="simple">
<caption><strong>Table 1:</strong> Known Functional Profiles of Content Negotiation by Profile Identified</caption>
<thead>
<tr>
<th>URI</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code><a href="http://www.w3.org/ns/dx/conneg/profile/http">cnpr:http</a></code></td>
<td>HTTP Headers Functional Profile</td>
<td>For systems operating with the HTTP [[RFC7230]] protocols</td>
</tr>
<tr>
<td><code><span style="white-space: nowrap"><a href="http://www.w3.org/ns/dx/conneg/profile/qsa">cnpr:qsa</a></span></code></td>
<td>URL QSA Functional Profile</td>
<td>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 <code>_profile</code> argument key and <code>_profile=all</code> key/value pair</td>
</tr>
<tr>
<td><code><span style="white-space: nowrap"><a href="http://www.w3.org/ns/dx/conneg/profile/qsa-alt">cnpr:qsa-alt</a></span></code></td>
<td>URL QSA Alternate Keywords Functional Profile</td>
<td>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</td>
</tr>
<tr>
<td><code><span style="white-space: nowrap"><a href="http://www.w3.org/ns/dx/conneg/profile/rrd">cnpr:rrd</a></span></code></td>
<td>Resource Representation Description</td>
<td>For systems wanting to indicate that they are able to indicate which profile(s) responses returned conform to</td>
</tr>
</tbody>
</table>
</section>
<section id="instructions-per-fp">
<h3>Normative Instructions per Functional Profile</h3>
</section>
<section id="implementations">
<h3>Implementations</h3>
</section>
<table id="table-implementations" class="simple">
<caption><strong>Table 3:</strong> Known implementations</caption>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Description</th>
<th>Implementer(s)</th>
<th>Location online</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>I1</strong></td>
<td>pyLDAPI</td>
<td>A Python module that adds Linked Data API functionality to a Python Flask (a web framework) installation.</td>
<td><a href="https://orcid.org/0000-0002-8742-7730">Nicholas J. Car</a></td>
<td>
<ul>
<li><a href="https://github.com/rdflib/pyLDAPI">Source code on GitHub</a></li>
<li><a href="https://pypi.org/project/pyldapi/">Python Package Index (PyPI) module listing</a></li>
<li>
Demonstrations:
<ul>
<li>
<a href="https://conneg.info/mediatypes-service/">Media Type Service</a>,<br />
see <a href="https://conneg.info/mediatypes-service/connegp">this demonstration's write-up</a>
</li>
</ul>
</ul>
</td>
</tr>
<tr>
<td><strong>I2</strong></td>
<td>PHP ConnegP</td>
<td>A library of PHP functions for HTTP Content Negotiation by Profile</td>
<td><a href="https://orcid.org/0000-0002-8742-7730">Nicholas J. Car</a></td>
<td>
<ul>
<li><a href="https://github.com/nicholascar/php-connegp">Source code on GitHub</a></li>
<li><a href="https://packagist.org/packages/nicholascar/connegp">PHP Composer packagist module listing</a></li>
<li>
Demonstrations:
<ul>
<li>
<a href="http://www.linked.data.gov.au/org/">Australian Government Linked Data Working Group's Linked Data Registers</a>,<br />
see <a href="http://www.linked.data.gov.au/org/connegp.html">this demonstration's write-up</a>
</li>
</ul>
</li>
</ul>
</td>
</tr>
<tr>
<td><strong>I3</strong></td>
<td>OGC Definitions Server</td>
<td></td>
<td><a href="https://orcid.org/0000-0002-7878-2693">Rob Atkinson</a></td>
<td></td>
<td><a href="https://docs.google.com/spreadsheets/d/10CLXudrMow0QGfo1X_Dzg3SNwIPuXBvMnOORwerxKKI/edit#gid=0">write-up</a></td>
</tr>
<tr>
<td><strong>I4</strong></td>
<td>CKAN DCAT Plugin</td>
<td>A existing extension module for the <a href="https://ckan.org/">CKAN</a> – 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</td>
<td>
<ul>
<li>Original ckan-dcat plugin authors (original plugin code)</li>
<li><a href="https://orcid.org/0000-0002-8742-7730">Nicholas J. Car</a> (extension of plugin to meet ConnegP specifications)</li>
</ul>
</td>
<td>
<ul>
<li><a href="https://github.com/ckan/ckanext-dcat">Source code on GitHub</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<section id="claims-per-fp">
<h3>Implementation claims per Functional Profile</h3>
</section>
<section id="claims-per-instruction">
<h3>Implementation claims per Normative Instruction</h3>
</section>
</section>
<section id="analysis">
<h3>General analysis</h3>
</section>
<section id="acknowledgements">
<h2>Acknowledgements</h2>
<p>
The editors gratefully acknowledge the contributions made to gathering evidence for [[DX-PROF-CONNEG]] and reviewing
this report by <a href="https://www.w3.org/2000/09/dbwg/details?group=99375&public=1">all members of the
working group</a>, especially Annette Greiner.
</p>
</section>
</body>
</html>