Towards an Architecture for Data Altruism in Solid

An architecture to implement data altruism as a service using the Solid protocol and ODRL policies to grant access to personal data for altruistic purposes in a privacy-friendly manner.

Author: Beatriz Esteves, Ontology Engineering Group, Universidad Politécnica de Madrid

Get the Code



Abstract

This demo showcases an architecture to implement data altruism as a service using the Solid protocol and ODRL policies to grant access to personal data for altruistic purposes in a privacy-friendly manner.

Policies are represented using OAC, the ODRL profile for Access Control, and DGAterms, a vocabulary with terms modelled from the European Union's Data Governance Act (DGA), including data altruism concepts.

In addition, we present a Solid Data Altruism application, SoDA, where

  • a data subject can generate a policy to share their personal data for an altruistic purpose
  • a data user can request to access a dataset from another user for an altruistic purpose
  • data altruism organisations can use to maintain metadata regarding available datasets

What is data altruism?

The Data Governance Act (DGA) introduced the concept of data altruism as the voluntary sharing of data for the general interest of the public, such as improving healthcare systems or combating climate change, managed by data altruism organisations, non-profits whom make personal (and non-personal) data available to data users who wish to use such data for altruistic purposes.

In this demo, we use OAC and DGAterms to specify data access policies to use the Solid ecosystem as a solution to implement data altruism as a service.

Solid

Protocol for decentralised datastores, which decouples data from applications, based on interoperable data formats and protocols.

Solid Protocol

OAC

ODRL profile to express policies determining the Access Control to personal data stored in Solid Pods, which permits invoking data protection-specific terms.

OAC spec

DGAterms

Vocabulary to describe data reuse policies, data altruism consent terms and registers of data altruism and intermediation service providers.

DGAterms repo

Demo Walkthrough of SoDA

As a data subject looking to create policies to share their personal data for altruistic purposes:

  • Specify your identity provider and Login with your WebID.
  • In the "POLICY EDITOR" tab, you can generate a policy and share it with the data altruism organisation.
  • Indicate the URL of the resource to share in the first input box.
  • Select the type of data present in the resource.
  • Select the altruistic purpose for which your data may be used.
  • In the final input, specify a name for your policy (if you already have a policy in your Pod with the same name, you will be prompted to choose a different name).
  • Click the GENERATE & STORE IN THE POD button to create the policy and store it in your Pod.
  • If you check your Pod, under a container named "altruism", you can see the policies you generate with SoDA.
  • After generating the policy, a new button, SEND TO DATA ALTRUISM ORGANISATION, will appear for you to share you altruistic policy with the data altruism organisation.

As a data user looking for datasets:

  • Specify your identity provider and Login with your WebID.
  • In the "DATASETS" tab, you can look for datasets that were shared with the data altruism organisation.
  • Click the SEARCH AVAILABLE DATASETS button to look for available datasets in the Pod of the data altruism organisation.
  • A list of available datasets will be shown.
  • Click in the REQUEST ACCESS buttons of the datasets you want to have access.
  • A message will be sent to the inbox of the data subject requesting access to the dataset.
  • Data subjects can use their usual Pod management tool to give access to the data user that made the request.

Data Modelling

In this demo, OAC is used to define legally-aligned policies to grant access to personal data stored in Solid Pods. OAC uses

to extend Solid's access control list mechanism, Web Access Control (WAC), to have richer access control policies where specific purposes for access can be defined. In addition, the DGAterms vocabulary is used to represent the altruistic purposes defined in the DGA, such as scientific research or combating climate change.


An example is shown below of a policy set by User A, which allows data users to read the dataset stored at https://solidweb.me/userA/energyconsumption/june2023, which contains EnergyConsumption data as it is indicated by the dpv:hasPersonalData predicate, for the altruistic purpose of combating climate change.


    PREFIX dct: <http://purl.org/dc/terms/>
    PREFIX odrl: <http://www.w3.org/ns/odrl/2/>
    PREFIX dpv: <https://w3id.org/dpv#>
    PREFIX oac: <https://w3id.org/oac#>
    PREFIX dga: <https://w3id.org/dgaterms#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    PREFIX ex: <http://example.com/>

    ex:policy-123456 a odrl:Offer ;
        odrl:uid ex:policy-123456 ;
        odrl:profile oac: ;
        dct:creator <https://solidweb.me/userA/profile/card#me> ;
        dct:issued "2023-07-19T17:26:35"^^xsd:dateTime ;
        odrl:permission [
            odrl:assigner <https://solidweb.me/userA/profile/card#me> ;
            odrl:action oac:Read ;
            dpv:hasPersonalData ex:EnergyConsumption ;
            odrl:target <https://solidweb.me/userA/energyconsumption/june2023> ;
            odrl:constraint [
                odrl:leftOperand oac:Purpose ;
                odrl:operator odrl:isA ;
                odrl:rightOperand dga:CombatClimateChange ] ] .
              

In addition, W3C's Data Catalog Vocabulary (DCAT) is used to maintain a catalog of the available datasets, which allows the data altruism organisation to show available datasets to data users and send data requests in their name in a privacy-friendly manner as data users only get access to the dataset if the data subject authorises it.


An example is shown below of a catalog of datasets maintained by SoDACompany, a fictional data altruism organisation. Metadata regarding the dataset storage location, the publisher of the dataset and the policy that determines access to it is also recorded in these catalogs.


    PREFIX dct: <http://purl.org/dc/terms/>
    PREFIX dcat: <http://www.w3.org/ns/dcat#>
    PREFIX odrl: <http://www.w3.org/ns/odrl/2/>
    PREFIX dpv: <https://w3id.org/dpv#>
    PREFIX dga: <https://w3id.org/dgaterms#>
    PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
    PREFIX ex: <http://example.com/>

    ex:datasets a dcat:Catalog ; 
        dct:created "2023-06-10"^^xsd:date ;
        dct:description "Catalog of datasets maintained by SoDACompany" ;
        dct:publisher ex:SoDACompany ; 
        dcat:dataset ex:dataset_001 .

    ex:SoDACompany a dga:DataAltruismOrganisation .

    ex:dataset_001 a dcat:Dataset ; 
        odrl:hasPolicy ex:policy-123456 ;
        dpv:hasLocation <https://solidweb.me/userA/energyconsumption/june2023> ;
        dct:publisher <https://solidweb.me/userA/profile/card#me> ;
        dct:description "Dataset with energy consumption data of June 2023" ;
        dcat:mediaType <https://www.iana.org/assignments/media-types/text/csv> .
              

Video

Recording of the demonstration of SoDA's functionalities

Contact

Please feel free to reach out to talk about SoDA or any other related topics!