# Protocols specifications

The overall strategy is to implement the prototype in roughly two phases:

* Esential: implementing an MVP of the prototype (DFC), to showcase the potential of the project and help raise additional funds.
* Target : the full implementation of the prototype (DFC). It will complete phase 1 to enable industrialization and professionalization of the standard through improvement of the tools, of the technical architecture, and of the possibilities of integration with external actors.

|                                       | Essential Platorm                                                                                                                                                   | Essential DFC                                                          | Target Platform                                                                                                                                         | Target DFC                                                                                                                                                              |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Protocole**                         | <p>Data must be expressed in a semantic way in the API and must respect the OWL DFC model</p><p>User-friendly and easy to implement</p><p><strong>DONE</strong></p> | <p><em>Essential</em></p><p><em>Platorm</em> <strong>DONE</strong></p> | <p><em>Essential</em></p><p><em>Platorm</em> + LDP</p><p><strong>IN PROGRESS</strong></p>                                                               | <p><em>Essential</em></p><p><em>DFC +</em> Full Semantic protocol (LDP + SPARQL)</p><p><strong>DONE</strong></p>                                                        |
| **Stateless or stateful**             | <p>Stateless</p><p><strong>DONE</strong></p>                                                                                                                        | <p><em>Essential Platorm</em><br><strong>DONE</strong></p>             | <p>Stateless<br><strong>DONE</strong></p>                                                                                                               | <p><em>Target Platform</em><br><strong>DONE</strong></p>                                                                                                                |
| **Granularity**                       | <p>low granularity service (get all data of an authentified user)</p><p><strong>DONE</strong></p>                                                                   | <p><em>Essential Platorm</em></p><p><strong>ABANDONED</strong></p>     | <p><em>optional : Essential platorm to read</em> + mandatory : high granularity (atomic) via LDP to write & read</p><p><strong>IN PROGRESS</strong></p> | <p>NO DIRECT WRITE</p><p>read :high granularity (atomic) via</p><p><strong>DONE</strong></p>                                                                            |
| **URL**                               | <p>REST resource driven sémantic, without parameter</p><p><strong>DONE</strong></p>                                                                                 | <p><em>Essential Platform</em><br><strong>DONE</strong></p>            | <p><em>Essential</em></p><p><em>Platform</em><br><strong>DONE</strong></p>                                                                              | <p><em>Target DFC</em> +</p><p>parameters enabling queries (SPARQL or HyperGraphQL)</p><p>SPARQL : <strong>DONE</strong><br>HyperGraphQL : <strong>OUTLOOK</strong></p> |
| **Service specifications**            | <p>OpenAPI except for the input/output data structure, for which use OWL. LDP specification compliant.</p><p><strong>OUTLOOK</strong></p>                           | <p><em>Essential Platform</em><br><strong>OUTLOOK</strong></p>         | <p>Complete OpenAPI specifications for standard services. LDP specification compliant.</p><p><strong>OUTLOOK</strong></p>                               | <p>SPARQL spec for high granularity service by Query</p><p><strong>OUTLOOK</strong></p>                                                                                 |
| **Serialization**                     | <p>JSON-LD</p><p>LDP specification compliant.<br><strong>DONE</strong></p>                                                                                          | <p><em>Essential Platform</em><br><strong>DONE</strong></p>            | <p><em>Essential</em></p><p><em>Platform</em><br><strong>DONE</strong></p>                                                                              | <p><em>Essential DFC</em> + JSON-LD in the data attribute if HyperGraphQL</p><p><strong>OUTLOOK</strong></p>                                                            |
| **Transport layer**                   | <p>HTTP</p><p><strong>DONE</strong></p>                                                                                                                             | <p><em>Essential Platform</em><br><strong>DONE</strong></p>            | <p><em>Essential Platform</em><br><strong>DONE</strong></p>                                                                                             | <p><em>Essential DFC</em><br><strong>DONE</strong></p>                                                                                                                  |
| **Single or multi-source**            | <p>Simple access to one logical source</p><p><strong>DONE</strong></p>                                                                                              | <p><em>Essential Platorm</em><br><strong>DONE</strong></p>             | <p><em>Essential Platform</em><br><strong>DONE</strong></p>                                                                                             | <p>Query on multiple sources</p><p><strong>OUTLOOK</strong></p>                                                                                                         |
| **Right delegation**                  | <p>Standardized<br>OIDC authentification + platform manage acces to data using authentification : authentified user data or more</p><p><strong>DONE</strong></p>    | <p><em>Essential Platorm</em><br><strong>IN PROGRESS</strong></p>      | <p>Yes (web ACL Compliance)</p><p><strong>OUTLOOK</strong></p>                                                                                          | <p>Yes (web ACL implementation)</p><p><strong>OUTLOOK</strong></p>                                                                                                      |
| **Identification and authentication** | <p>OIDC (hosted by lescommuns.org)</p><p><strong>DONE</strong></p>                                                                                                  | <p><em>Essential Platorm</em><br><strong>DONE</strong></p>             | <p>webId-OIDC (decentralised authentification serveur : need platform implémentation)<br><strong>OUTLOOK</strong></p>                                   | <p><em>Target Platform</em><br><strong>OUTLOOK</strong></p>                                                                                                             |
| **Data storage**                      | <p>Distributed data on each platform</p><p><strong>DONE</strong></p>                                                                                                | <p>linked uri directory</p><p><strong>DONE</strong></p>                | <p><em>Essential Platform</em></p><p><strong>DONE</strong></p>                                                                                          | <p><em>Essential DFC</em> +semantic cache</p><p><strong>IN PROGRESS</strong></p>                                                                                        |
| **User data**                         | <p>ID centralized by lescommuns.org</p><p><strong>DONE</strong></p>                                                                                                 | <p><em>Essential Platform</em><br><strong>DONE</strong></p>            | <p>webId-OIDC (decentralised authentification serveur : need platform implémentation)<br><strong>OUTLOOK</strong></p>                                   | <p><em>Target Platform</em><br><strong>OUTLOOK</strong></p>                                                                                                             |
| **Product data**                      | <p>Decentralized ID management reconcile thanks to linked uri directory</p><p><strong>DONE</strong></p>                                                             | <p><em>Essential Platform</em><br><strong>DONE</strong></p>            | <p><em>Essential Platform</em></p><p><strong>DONE</strong></p>                                                                                          | <p><em>Essential DFC</em></p><p><strong>DONE</strong></p>                                                                                                               |
| **Interface & server of prototype**   | NA                                                                                                                                                                  | <p>Native web components & NodeJs</p><p><strong>DONE</strong></p>      | NA                                                                                                                                                      | <p>Semantic Serveur (Semapps)</p><p>Interface could be React OR Startin’blox</p><p>server : <strong>DONE</strong><br>interface : <strong>OUTLOOK</strong></p>           |

## Federation vs Syndication Summary

Federation: all entities follow the same protocol

Syndication: entities may have different protocols

Ontology: Federation

Taxonomy: Federation

Storage: Syndication

Identification and authentication : Federation

Validation: ?

Synchronisation / caching: Federation

Notification: ?

Serialisation : Federation

Others aspects of the protocol: Federation


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dfc-standard.org/dfc-standard-documentation/dfc-use-cases/technical-specifications/protocols-specifications.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
