Different Linked Data interfaces to expose data with various fragmentation strategies exist. SPARQL [[sparql11-update]] endpoints, for example, offer highly selective access to data, while a datadump offers no fragmentation. This document specifies a Multidimensional Linked Data interface, through which ordinal data can be consumed that is fragmented in a certain way. Clients can consume this by navigating through an interface-level index to select their desired data.

Introduction

Aim, scope, and intended audience

The goal of a Multidimensional Interface is to provide efficient selective access to ordinal Linked Data.

This document defines the Multidimensional Interface, which is a collection of interfaces that clients can use to navigate through multidimensional ordinal Linked Data.

This document is intented for people who want to implement a Multidimensional Interface on a server, who want to implement a client that is able to consume such an interface, or for those who want to understand how these servers and clients work.

Document conventions

We write triples in this document in the Turtle RDF syntax [[!TURTLE]] using the following namespace prefixes:

PREFIX rdf:   <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX mdi:   <http://w3id.org/multidimensional-interface/ontology#>

Document type

Overview

Linked Data [[LINKED-DATA]] can be exposed on the Web through different kinds of interfaces. Some of these interfaces are more expressive than others. A SPARQL interface for example is more expressive than a Linked Data dump because a client can be more selective in its queries.

Linked Data Fragments [[!HYDRA-LDF]] is a framework that provides a uniform view on all possible interfaces to publish Linked Data. This framework defines the concept of a Linked Data Fragment of a Linked Data dataset, which is a set of triples that consists of the following parts:

data
all triples of this dataset that match a specific selector;
metadata
triples that describe the dataset and/or the Linked Data Fragment;
controls
hypermedia links and/or forms that lead to other Linked Data Fragments.

When we are publishing n-dimensional ordinal data that contains numbers, dates, geospatial locations or even genomic ranges, we may want to enable clients to select data by an n-dimensional range, in order to make their queries more selective.

A Multidimensional Interface is a collection of structured interfaces through which clients can navigate to find certain subsets of ordinal data based on certain multidimensional ranges.

Definition

A Multidimensional Interface can be defined over n-dimensional resources, which are RDF resources with n properties whose ranges are strict linearly ordered sets.

A Multidimensional Interface on a given dataset is a collection of interfaces containing the following elements:

Range Fragment
A Linked Data Fragment that has an interval as selector, which apply to dimensional resources at one of its n dimensions.
Range Gate
A Linked Data interface on which a client can find out how to select a certain Range Fragment by interval.
Range Interval
The selected interval has a lower (incl) and an upper bound (excl)
[X,Y[
which describe a Range Fragment
hypermedia controls
A Range Gate MUST contain hypermedia controls that allow to retrieve Range Fragments of the given dataset. This MUST either be provided as a form that allows to choose the initial and final elements of the selector's interval.
A Range Gate MAY contain additional hypermedia controls. The IRIs of data, metadata, and control triples entities SHOULD be dereferenceable.
A Range Fragment MAY contain hypermedia links to more selective Range Gates on that fragmented subset of the original dataset.

A Range Fragment of a dataset is fully determined and identified by its triple pattern selector and interval selector. This interval selector consists of two components initial and final which form a interval. The initial MUST either be a variable, an ordinal literal or an ordinal IRI; the final MUST either be a variable, an ordinal literal or an ordinal IRI; These components MUST NOT be blank nodes.

The above constraints define the document type of a Multidimensional Interface. The following sections and explain this in more detail.

Multidimensional Interfaces are not bound to a specific syntax because different methods can be used to represent its data, metadata, and controls. The server MUST, however, support at least one RDF-based representation that MUST allow for triples to be represented. For allowing clients to correctly parse requests Multidimensional Interfaces, servers MUST indicate the correct MIME type when sending responses.

Range Fragment

A Range Fragment is a Linked Data Fragment of a dataset. This fragment is defined by a certain interval and a dimensional resource over which the interval is defined. This fragmentation is done for exactly one dimension of the dimensional resource over which the Range Fragment is defined.

The dimensional resource type GPS position could be fragmented by longitude and can therefore have several Range Fragments which consist of all dimensional resources that are within a certain longitudal range.

A Range Fragment MAY define a link to a more selective Range Gate as given in the following example:

<http://example.org/range-fragment-0-100>
        mdi:hasRangeGate <http://example.org/range-fragment-0-100/range-gate>.

Such a more selective Range Gate starts from the given Range Fragment as the datasource, and allows further fragmentation of that datasource.

Range Gate

A Range Gate is a Linked Data Fragment that exposes Range Fragments.

Each Range Fragment described in this Range Gate MUST define the following metadata:

As given in this example:

<http://example.org/range-fragment-0-100>
        a mdi:RangeFragment;
        mdi:initial "0"^^xsd:integer;
        mdi:final "100"^^xsd:integer.

The Range Gate MAY provide a control to select Range Fragments by providing an interval. This Range Gate control, if provided, MUST be expressed as a form in the Hydra Core Vocabulary [[!HYDRA-CORE]] using triples in the controls graph.

<http://example.org/range-gate>
        a mdi:RangeGate;
        hydra:search [
            hydra:template "http://example.org/range-gate{?initial,final}";
            hydra:mapping  [ hydra:variable "initial"; hydra:property mdi:initial ],
                           [ hydra:variable "final"  ; hydra:property mdi:final ]
        ].

The interval selector is used to lookup all Range Fragments that overlap or are within with the selected interval. The selected interval must be interpreted as starting from initial, including initial up until final, excluding final.

Not providing the initial or final parameter, means that search interval has no limit for that element. If we for example only provide initial and omit final, the Range Gate MUST provide all elements starting from initial. If we only provide final and omit initial, the Range Gate MUST provide all elements until initial.