zazuko/barnard59

load from more than one ttl file

tpluscode opened this issue · 0 comments

I propose to implement the facility for loading graphs from remote locations as a library and a CLI. The crucial part is defining how to define the "imports". SHACL loaned owl:imports used as a property of the shape itself but it is a little awkward TBH. For the lack other alternatives I thought to go a slightly different route and separate the imports from the actual contents of the graph itself. A blank node found in that graph would define what to load and from where

# namespace TBD
[ :import <https://example.org/shared-pipeline-steps> ] .

<pipeline> a p:Pipeline .

# pipeline steps

Here, the contents of https://example.org/shared-pipeline-steps could be simply fetched from the web and merged with the local contents.

The library would need to be configurable to allow changing how and where from these graphs would be loaded, including:

  1. node_modules (needed for #85)
  2. explicit file: paths
  3. http links directly from the web
  4. http links from SPARQL endpoint (graph store?)
  5. local files by relative resource paths

Implemented as a stream transform could easily be incorporated in many scenarios and would recursively follow :import. Bottom line the transform would replace any occurrence of a :import triple with the loaded graph.