wiki:BluePrint/HXL

Version 7 (modified by Dominic König, 8 years ago) ( diff )

--

BluePrint: HXL

Introduction

HXL is a shared vocabulary for Linked Data for the humanitarian domain.

Linked data use URIs to identify data resources, and RDF statements (triples) to describe their relationships.

Example:

<?xml version="1.0"?>
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
           xmlns:hxl="http://hxl.humanitarianresponse.info/ns">
  <rdf:Description rdf:about="http://www.example.org/eden/dvr/population/823">
    <rdf:type>hxl:IDP</rdf:type>
    <hxl:personCount>127386</hxl:personCount>
    <hxl:source>http://www.example.org/eden/org/organisation/2</hxl:source>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.example.org/eden/org/organisation/2">
    <rdf:type>hxl:Organisation</rdf:Type>
    <hxl:orgName>Example Organisation</hxl:orgName>
  </rdf:Description>
</rdf:RDF> 

This example encodes the RDF statements:

  • The resource at http://www.example.org/eden/dvr/population/823 => is a rdf:type => Internally Displaced Population hxl:IDP
  • The resource at http://www.example.org/eden/dvr/population/823 => has a hxl:personCount => 127386
  • The resource at http://www.example.org/eden/dvr/population/823 => comes from hxl:source => http://www.example.org/eden/org/organisation/2

...where the latter refers to the resource described in the next RDF statements:

  • The resource at http://www.example.org/eden/org/organisation/2 => is a rdf:type => rdf:resource hxl:Organisation.
  • The resource at http://www.example.org/eden/org/organisation/2 => has orgName => "Example Organisation".

(Note that this RDF/XML example is only one possible notation)

Typically, data-producing EM applications would export such a RDF/XML description of their data resources to a common database (triple store), which can then be queried from consuming applications using standard APIs (e.g. RDF/SPARQL) and extract/export the data into standard formats, e.g. DOC, KML, or XLS.

The purpose of this BluePrint is to define the role of Eden as

  • HXL exporting application
  • as triple store with RDF/SPARQL API
  • as HXL consumer application

The most obvious role for Eden at this point is that of the HXL exporter.

Stakeholders

  • tbw

User Stories

Sigmah to Sahana 3W/4W data exportation

This scenario is given just to provide an insight on how the HXL implementation could be used between Sigmah and Sahana. The real features developed in the end may vary strongly from what is described here because: (i) HXL 3W/4W data standard is not yet fixed; (ii) Sigmah 3W/4W data collection feature does not exist; (iii) Sahana is not yet a reader of HXL data .

User Story:

  • An organisation O is using a Sigmah set up in order to be able to share HXL 4W data, depending on the will of project manager. (we can also imagine a mode in which HXL data is automatically published for all projects)
  • A user U of this organisation O has created a new project P, with a title and an implementation period
  • In the "Map" sub-tab of his project P, U can pin on a map a point representing the project, and can choose one or several activities type among the one defined in the HXL standard.
  • Once he had fill those 2 informations, a "Share 4W data" button is enabled.
  • U clicks on the "Share 4W data" button, and the button is renamed "4W data shared publicy" and remains pressed.
  • A Sahana Eden instance running for a crisis where this project is conducted detects the publication of this HXL data.
  • From the stream of information, Sahana takes the position of the project, the start and ending date, the type of activities implemented, the "Name of the organisation" and eventually its logo.
  • From those information extracted, Sahana updates the map of the situation.

Requirements

  • tbw

Functional

  • tbw

Non-functional

  • tbw

Interoperability

  • tbw

Standards

  • tbw

System Constraints

  • tbw

Architecture

Exporting HXL

Again the example from the introduction:

<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:hxl="http://hxl.humanitarianresponse.info/ns">
  <rdf:Description rdf:about="http://www.example.org/eden/dvr/population/823">
    <rdf:type>hxl:IDP</rdf:type>
    <hxl:personCount>127386</hxl:personCount>
    <hxl:source>http://www.example.org/eden/org/organisation/2</hxl:source>
  </rdf:Description>
  <rdf:Description rdf:about="http://www.example.org/eden/org/organisation/2">
    <rdf:type>hxl:Organisation</rdf:Type>
    <hxl:orgName>Example Organisation</hxl:orgName>
  </rdf:Description>
</rdf:RDF> 

Obviously, the structure of this example RDF/XML is very close to S3XML:

<?xml version="1.0"?>
<s3xml>
  <resource name="dvr_population"
            url="http://www.example.org/eden/dvr/population/823">
      <data field="person_count">127386</data>
      <reference field="source_organisation_id"
                 resource="org_organisation"
                 uuid="urn:uuid:40391e28-4e8a-4021-bf29-a5dddd2e38f3"/>
  </resource>
  <resource name="org_organisation"
            uuid="urn:uuid:40391e28-4e8a-4021-bf29-a5dddd2e38f3"
            url="http://www.example.org/eden/org/organisation/2">
    <data field="name">Example Organisation</data>
  </resource>
</s3xml>

...so that we should be able to use our in-line XSLT transformation capabilities to convert S3XML into HXL.

A proof-of-concept XSLT template has been implemented for the project_activity resource.

HXL Synchronization

We could use Eden Sync to synchronize HXL Data.

The interface to exchange data with the remote repository is exchangeable (S3SyncRepository class):

Implementing a SPARQL+HXL adapter would allow to query the HXL Data Cloud (triple store) and/or to update it.

This would of course also require XSLT transformation stylesheets for HXL to S3XML and S3XML to HXL.

Design

  • tbw

Data Model

  • tbw

Workflows

  • tbw

Technologies

  • tbw

Current Implementation

  • tbw

Planned Implementation

  • tbw

Future Extensions

  • tbw

Outstanding Questions

  • tbw

References

  • tbw

BluePrint

Note: See TracWiki for help on using the wiki.