Backlinks
Browse, query and write to external Linked Data and other dataspaces
Linked Data proxy
LinkedDataHub works as a Linked Data proxy (from the end-user perspective, as a Linked Data browser) when a URL is provided using the uri query parameter.
All HTTP methods are supported.
If the URL dereferences successfully as RDF, LinkedDataHub forwards its response body (re-serializing it to enable content negotiation). During a write request, the request body is forwarded to the provided URL.
If the URL returns an HTML document, LinkedDataHub extracts every embedded JSON-LD script
(<script type="application/ld+json">) and parses it as RDF using JSON-LD 1.1. Pages annotated with schema.org markup
can therefore be browsed as Linked Data. The schema.org JSON-LD context is bundled
with LinkedDataHub and served locally, so no external network request is made to resolve
it. A supplier's homepage carrying this markup:
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Corporation",
"@id": "#this",
"legalName": "Exotic Liquids",
"telephone": "(171) 555-2222"
}
</script>browses as these triples:
<https://supplier.example/#this> a schema:Corporation ;
schema:legalName "Exotic Liquids" ;
schema:telephone "(171) 555-2222" .An HTML page with no JSON-LD has no RDF representation, so the proxy answers 406 Not Acceptable. The user interface then opens the
page in a new browser tab, as an ordinary external link would.
The proxy only accepts external (non-relative to the current dataspace's base URI) URLs; local URLs have to be dereferenced directly.
The proxy forwards the origin's ETag and Last-Modified validators and passes conditional request headers
(If-Match, If-None-Match, If-Modified-Since, If-Unmodified-Since) through. Preconditioned
writes against proxied documents are therefore evaluated at the origin. Error statuses
from the origin reach the client unchanged.
Federation
The Linked Data proxy makes dataspaces interoperable across origins: one dataspace's client can browse, query, and write to another origin's dataspace, whether on the same LinkedDataHub instance or a different one.
Browsing a UNESCO Thesaurus concept from the Northwind dataspace, for example, the proxy forwards the remote dataspace's hypermedia along with the RDF:
GET /?uri=https%3A%2F%2Funesco-thesaurus.demo.linkeddatahub.com%2Fconcepts%2Fconcept3683%2F HTTP/1.1 Host: northwind-traders.demo.linkeddatahub.com Accept: application/rdf+xml HTTP/1.1 200 OK Content-Type: application/rdf+xml Link: <https://unesco-thesaurus.demo.linkeddatahub.com/sparql>; rel="http://www.w3.org/ns/sparql-service-description#endpoint"
- The remote dataspace's SPARQL endpoint is discovered from the
Linkheaders the proxy forwards, so views and charts over remote documents query the remote endpoint - Writes are graph-scoped SPARQL updates (
PATCH) or appends (POST) sent through the proxy under the origin'sIf-Matchprecondition - Requests carry the delegated identity of the requesting agent, so the remote dataspace's access control arbitrates every operation
In the user interface this means you can browse a remote dataspace and add data to its documents the same way as to local ones, provided the remote access control allows it.
The example above uses the public demo hosts because they are reachable without any setup, but nothing about federation requires a second instance: two dataspaces on one LinkedDataHub are distinct origins, so the same exchange happens between northwind-traders.demo.localhost:4443 and unesco-thesaurus.demo.localhost:4443 once both are declared.