# Concept for a federated example

### Local:

- User client (Rosetta, Code, Terminal, ...)

### Remote_0:
 
- Fuseki instance (First and main SPARQL endpoint)

### Remote_1:

- Custom service SPARQL endpoint

### Remote_2:

- Heterogeneous data source vault (tabular)

### Remote_3:

- Heterogeneous data source (other)

## Example fuseki query

![Drag Racing](fuseki_federated_query.png)

Here we have the fuseki GUI as the client (**Local**).
The Fuseki server is running at localhost:3030 (**Remote_0**).
We then use a custom SPARQL endpoint to get outliers (**Remote_1**).
This data is gathered from an API (**Remote_2**).
We don't use the optional **Remote_3**.

## Visual

```mermaid
sequenceDiagram
    Local->>+Remote_0: SPARQL Query
    Note over Local,Remote_0: TODO INSERT Query
    opt Remote data
        Remote_0->>+Remote_1: SPARQL Data SubQuery
        opt API call
            Remote_1->>+Remote_2: Outlier service call
            Remote_2-->>-Remote_1: Outlier data
        end
        Remote_1-->>-Remote_0: SubQuery Data
    end
    opt Remote data
        Remote_0->>+Remote_3: SPARQL Data SubQuery
        Remote_3-->>-Remote_0: SubQuery Data
    end
    Remote_0-->>-Local: Query Data
    Note over Remote_0,Local: TODO INSERT Data
```
