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.
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.
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#>
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:
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.
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:
[X,Y[which describe a Range Fragment
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.
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.
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.