Exchanging interoperable representations via profiles

Ruben Verborgh, Ghent Universityimec

OSLO Werkgroep Datastandaarden, 17 September 2020

Exchanging interoperable representations via profiles

Ruben Verborgh

Ghent University – imec

The same dataset can be represented
in many different formats.

However, a content type is insufficient
to fully determine the representation.

Creating more specific content types
simply does not scale.

A profile is an independently combinable
set of structural and semantic constraints.

Our aim is to expose data
in a sustainable way.

Every exposed resource should have
a representation-independent URL.

Via HTTP content negotiation,
clients send representation preferences.

HTTP request

GET /decisions/3147 HTTP/1.1
Host: council.my
Accept: application/ld+json;q=1.0,text/turtle;q=0.8
Accept-Language: en

Via HTTP content negotiation,
servers send a matching representation.

HTTP response

HTTP/1.1 200 OK
Content-Type: application/ld+json
Content-Language: en

There are various negotiation dimensions,
but none existed yet for profiles.

We designed profile negotiation as part of
the W3C Data Exchange Working Group.

Clients indicate their support
or preference for certain profiles.

HTTP request

GET /decisions/3147 HTTP/1.1
Host: council.my
Accept: application/ld+json;q=1.0,text/turtle;q=0.8
Accept-Profile:
    "https://example.org/profiles/council-decision"; q=1.0,
    "https://example.org/profiles/person-foaf"; q=0.8,
    "https://example.org/profiles/person-schema-org"; q=0.6

Servers indicate the profiles
to which the representation conforms.

HTTP response

HTTP/1.1 200 OK
Content-Type: application/ld+json
Content-Language: en
Link: <https://example.org/profiles/council-decision>;
          rel="profile",
      <https://example.org/profiles/person-schema-org>;
          rel="profile"

Learn more about negotiation by profile
at the following places.

Exchanging interoperable representations via profiles

@RubenVerborgh

ruben.verborgh.org