Project Description

HYDRUS (temporary name): A Python server-client application to demonstrate the functionality and implementation of the HYDRA standard. Develop a Python server/middleware to automate Web APIs navigation using intelligent clients.

HYDRA is a W3C draft for a framework aiming for turning resources provided by REST endpoints into machine-readable content that intelligent clients can navigate automatically; you can read the latest version of the specifications here. The proposed standard is a metadata framework for Web APIs that relies on the rock-solid W3C's Resource Description Framework.

You can find the HYDRA official website here. Hydra was created to enhance Web APIs and make smart-client applications to rely on a solid and common metadata standard.

As Linked Data technologies are involved, it is something quite complex both on the server-side because of the use of graph databases and the on the client-side as the client needs to be "smart" (it needs machine-learning to be able to read and use the metadata defined by the specifications). Python is great both in Web development and data handling. There are well-established libraries in the Python ecosystem to be used for Web serving and scientific computation. This conditions make the project highly interesting for Python developers with interests in Web and data. Some mathematical modeling will be involved as well, using linear algebra.

It is up to this project and to the HYDRA community to design a Python server that can demonstrate the specifications. The result will be a client that can be queried at some high level and can reply consistently leveraging the HYDRA-powered metadata. It is a great opportunity to be part of a design process involving different professionals in different fields, a great opportunity to learn and find new subjects for your future in Computer Science.


Objectives

This project aims to:
  • create a metadata-powered REST API leveraging HYDRA framework,
  • define a design for future development of client/server interactions using smart clients,
  • use graphs and machine-learning to solve complex queries using HYDRA framework,
  • define a middleware (low-level client) to collect requests from external clients and provide the requested data using reasoning and machine-learning algorithms.

Skills required

Required: strong knowledge of Python Web developing tools, some starting knowledge about Linked Data technologies (RDF).

Good to have: knowledge of RDF and Graph databases, machine-learning algorithms. Or interested in learning fast from our mentors.

Difficulty level

Seen the tools involved: from Intermediate to Advanced, but with full support in the different subjects involved if you are willing to learn. Mentors' skills are variegated enough to make students at ease with the needed tools.

Related Readings/Links

Everything you would like to know at HYDRA official website.

HYDRA implemented with Python

HYDRA implemented with Clojure

Some initial annotations for a possible design: check the issues labeled "wiki" here

Potential mentors

Mentors are professional developers and engineers that collaborate to the draft. You can join the list and be invited in the list's Slack.