Technology stack

Open Data Euskadi uses a combination of technologies to build and run Linked Open Data:

Linked Data

Linked Data is based on following four principles:

  1. Identify every data item (entity or relationship) with a URI.

  2. Make those URIs HTTP resolvable, that is, when the URI is requested a document containing information about the entity can be obtained.

  3. When an entity is requested by HTTP, provide its information using an open formatting standard. The format provided should be determined by HTTP content negotiation between the client and the server (e.g. RDF for an automatic agent, or HTML for a human user), so that the entity and its representations are decoupled. Importantly, the RDF format should always be available.

  4. Ensure, to the greatest extent possible, that the information provided by URI resolution contains typed relations to other entities, so that the agent can traverse those relations to discover new information, analogously to how humans browse the web.

Resource Description Framework (RDF)

RDF can be described as the "HTML for data": a shared language for representing data on the Web. RDF is based on representing data as subject-predicate-object triples ("Bob"-"is interested in"-"Mona Lisa"): by gluing these triples together, we obtain a graph. Each entity (subject, predicate, or object) is identified by a URI, except objects, since they can also be literals (Numeric data, Strings, etc. -- see XSD Datatypes -- ). RDF is stored in Triple Stores: GraphDB is the one we use, through the RDF Java Framework RDF4J.

SPARQL

SPARQL is a query language for RDF and standard API for accessing SPARQL endpoints. A Triple Store exposes a SPARQL endpoint.

Web Ontology Language (OWL)

OWL is a Knowledge Representation language to build ontologies. An ontology is a vocabulary we use to describe general properties about the data we publish, through axioms. All the entities in an OWL Ontology are identified by URIs, except literals.

Shapes Constraint Language (SHACL)

SHACL is a language for validating RDF data. With SHACL, constrains can be defined, and check whether an RDF graph complies with them..