From f8542a2c0c0bbda69a7913d6d3076618ab075a10 Mon Sep 17 00:00:00 2001 From: Joachim Van Herwegen Date: Tue, 3 Nov 2020 12:04:05 +0100 Subject: [PATCH] feat: Create routing configs and partially clean up config structure --- config/config-default.json | 12 ++++- config/config-file.json | 12 ++++- config/config-path-routing.json | 49 +++++++++++++++++++ config/config-rdf-to-sparql-endpoint.json | 30 ++++++++++++ config/config-sparql-endpoint.json | 12 ++++- config/presets/storage-wrapper.json | 4 +- .../backend}/storage-filesystem.json | 6 +-- .../backend}/storage-memory.json | 6 +-- .../backend}/storage-sparql-endpoint.json | 6 +-- .../presets/storage/routing/no-routing.json | 12 +++++ .../storage/routing/quad-type-routing.json | 30 ++++++++++++ .../storage/routing/regex-routing.json | 19 +++++++ 12 files changed, 184 insertions(+), 14 deletions(-) create mode 100644 config/config-path-routing.json create mode 100644 config/config-rdf-to-sparql-endpoint.json rename config/presets/{storage-backend => storage/backend}/storage-filesystem.json (89%) rename config/presets/{storage-backend => storage/backend}/storage-memory.json (84%) rename config/presets/{storage-backend => storage/backend}/storage-sparql-endpoint.json (90%) create mode 100644 config/presets/storage/routing/no-routing.json create mode 100644 config/presets/storage/routing/quad-type-routing.json create mode 100644 config/presets/storage/routing/regex-routing.json diff --git a/config/config-default.json b/config/config-default.json index 4b4eade19..7c0c0f14a 100644 --- a/config/config-default.json +++ b/config/config-default.json @@ -12,8 +12,18 @@ "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", - "files-scs:config/presets/storage-backend/storage-memory.json", + "files-scs:config/presets/storage/backend/storage-memory.json", + "files-scs:config/presets/storage/routing/no-routing.json", "files-scs:config/presets/storage-wrapper.json", "files-scs:config/presets/cli-params.json" + ], + "@graph": [ + { + "comment": "Use a memory based store as backend with no additional routing.", + "@id": "urn:solid-server:default:RoutingResourceStore", + "PassthroughStore:_source": { + "@id": "urn:solid-server:default:MemoryResourceStore" + } + } ] } diff --git a/config/config-file.json b/config/config-file.json index 9015f9d23..3bf4e9372 100644 --- a/config/config-file.json +++ b/config/config-file.json @@ -12,8 +12,18 @@ "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", - "files-scs:config/presets/storage-backend/storage-filesystem.json", + "files-scs:config/presets/storage/backend/storage-filesystem.json", + "files-scs:config/presets/storage/routing/no-routing.json", "files-scs:config/presets/storage-wrapper.json", "files-scs:config/presets/cli-params.json" + ], + "@graph": [ + { + "comment": "Use a file based store as backend with no additional routing.", + "@id": "urn:solid-server:default:RoutingResourceStore", + "PassthroughStore:_source": { + "@id": "urn:solid-server:default:FileResourceStore" + } + } ] } diff --git a/config/config-path-routing.json b/config/config-path-routing.json new file mode 100644 index 000000000..3187a91d0 --- /dev/null +++ b/config/config-path-routing.json @@ -0,0 +1,49 @@ +{ + "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld", + "import": [ + "files-scs:config/presets/acl.json", + "files-scs:config/presets/http.json", + "files-scs:config/presets/ldp.json", + "files-scs:config/presets/ldp/credentials-extractor.json", + "files-scs:config/presets/ldp/metadata-handler.json", + "files-scs:config/presets/ldp/operation-handler.json", + "files-scs:config/presets/ldp/permissions-extractor.json", + "files-scs:config/presets/ldp/request-parser.json", + "files-scs:config/presets/logging.json", + "files-scs:config/presets/representation-conversion.json", + "files-scs:config/presets/setup.json", + "files-scs:config/presets/storage/backend/storage-filesystem.json", + "files-scs:config/presets/storage/backend/storage-memory.json", + "files-scs:config/presets/storage/backend/storage-sparql-endpoint.json", + "files-scs:config/presets/storage/routing/regex-routing.json", + "files-scs:config/presets/storage-wrapper.json", + "files-scs:config/presets/cli-params.json" + ], + "@graph": [ + { + "comment": [ + "Configure routing to send all requests containing /file/ to the file store, containing /memory/ to the memory store and /sparql/ to the sparql endpoint store.", + "The root .acl file will be stored in the sparql endpoint store." + ], + "@id": "urn:solid-server:default:RegexRouterRule", + "RegexRouterRule:_storeMap": [ + { + "RegexRouterRule:_storeMap_key": "^/\\.acl$", + "RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:SparqlResourceStore" } + }, + { + "RegexRouterRule:_storeMap_key": "/file/", + "RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:FileResourceStore" } + }, + { + "RegexRouterRule:_storeMap_key": "/memory/", + "RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:MemoryResourceStore" } + }, + { + "RegexRouterRule:_storeMap_key": "/sparql/", + "RegexRouterRule:_storeMap_value": { "@id": "urn:solid-server:default:SparqlResourceStore" } + } + ] + } + ] +} diff --git a/config/config-rdf-to-sparql-endpoint.json b/config/config-rdf-to-sparql-endpoint.json new file mode 100644 index 000000000..f262919d3 --- /dev/null +++ b/config/config-rdf-to-sparql-endpoint.json @@ -0,0 +1,30 @@ +{ + "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld", + "import": [ + "files-scs:config/presets/acl.json", + "files-scs:config/presets/http.json", + "files-scs:config/presets/ldp.json", + "files-scs:config/presets/ldp/credentials-extractor.json", + "files-scs:config/presets/ldp/metadata-handler.json", + "files-scs:config/presets/ldp/operation-handler.json", + "files-scs:config/presets/ldp/permissions-extractor.json", + "files-scs:config/presets/ldp/request-parser.json", + "files-scs:config/presets/logging.json", + "files-scs:config/presets/representation-conversion.json", + "files-scs:config/presets/setup.json", + "files-scs:config/presets/storage/backend/storage-filesystem.json", + "files-scs:config/presets/storage/backend/storage-sparql-endpoint.json", + "files-scs:config/presets/storage/routing/quad-type-routing.json", + "files-scs:config/presets/storage-wrapper.json", + "files-scs:config/presets/cli-params.json" + ], + "@graph": [ + { + "comment": "Sends all data that can be interpreted as RDF to the sparql endpoint store and all other data to the default store (file in this case).", + "@id": "urn:solid-server:default:ConvertingRouterRule", + "ConvertingRouterRule:_defaultStore": { + "@id": "urn:solid-server:default:FileResourceStore" + } + } + ] +} diff --git a/config/config-sparql-endpoint.json b/config/config-sparql-endpoint.json index b9542cb64..174d35c18 100644 --- a/config/config-sparql-endpoint.json +++ b/config/config-sparql-endpoint.json @@ -12,8 +12,18 @@ "files-scs:config/presets/logging.json", "files-scs:config/presets/representation-conversion.json", "files-scs:config/presets/setup.json", - "files-scs:config/presets/storage-backend/storage-sparql-endpoint.json", + "files-scs:config/presets/storage/backend/storage-sparql-endpoint.json", + "files-scs:config/presets/storage/routing/no-routing.json", "files-scs:config/presets/storage-wrapper.json", "files-scs:config/presets/cli-params.json" + ], + "@graph": [ + { + "comment": "Use a SPARQL based store as backend with no additional routing.", + "@id": "urn:solid-server:default:RoutingResourceStore", + "PassthroughStore:_source": { + "@id": "urn:solid-server:default:SparqlResourceStore" + } + } ] } diff --git a/config/presets/storage-wrapper.json b/config/presets/storage-wrapper.json index c4ced9d3f..64915b692 100644 --- a/config/presets/storage-wrapper.json +++ b/config/presets/storage-wrapper.json @@ -28,7 +28,7 @@ "@id": "urn:solid-server:default:ResourceStore_ToTurtle", "@type": "RepresentationConvertingStore", "RepresentationConvertingStore:_source": { - "@id": "urn:solid-server:default:ResourceStore" + "@id": "urn:solid-server:default:RoutingResourceStore" }, "RepresentationConvertingStore:_outConverter": { "@id": "urn:solid-server:default:RepresentationConverter" @@ -43,7 +43,7 @@ "@id": "urn:solid-server:default:ResourceStore_Converting", "@type": "RepresentationConvertingStore", "RepresentationConvertingStore:_source": { - "@id": "urn:solid-server:default:ResourceStore" + "@id": "urn:solid-server:default:RoutingResourceStore" }, "RepresentationConvertingStore:_outConverter": { "@id": "urn:solid-server:default:RepresentationConverter" diff --git a/config/presets/storage-backend/storage-filesystem.json b/config/presets/storage/backend/storage-filesystem.json similarity index 89% rename from config/presets/storage-backend/storage-filesystem.json rename to config/presets/storage/backend/storage-filesystem.json index d29b825e3..3b63e64d3 100644 --- a/config/presets/storage-backend/storage-filesystem.json +++ b/config/presets/storage/backend/storage-filesystem.json @@ -18,7 +18,7 @@ "ExtensionBasedMapper:_meta": "text/turtle" }, { - "@id": "urn:solid-server:default:DataAccessor", + "@id": "urn:solid-server:default:FileDataAccessor", "@type": "FileDataAccessor", "FileDataAccessor:_resourceMapper": { "@id": "urn:solid-server:default:FileIdentifierMapper" @@ -28,10 +28,10 @@ } }, { - "@id": "urn:solid-server:default:ResourceStore", + "@id": "urn:solid-server:default:FileResourceStore", "@type": "DataAccessorBasedStore", "DataAccessorBasedStore:_accessor": { - "@id": "urn:solid-server:default:DataAccessor" + "@id": "urn:solid-server:default:FileDataAccessor" }, "DataAccessorBasedStore:_base": { "@id": "urn:solid-server:default:variable:base" diff --git a/config/presets/storage-backend/storage-memory.json b/config/presets/storage/backend/storage-memory.json similarity index 84% rename from config/presets/storage-backend/storage-memory.json rename to config/presets/storage/backend/storage-memory.json index cd3f2475a..87a1f90e9 100644 --- a/config/presets/storage-backend/storage-memory.json +++ b/config/presets/storage/backend/storage-memory.json @@ -6,7 +6,7 @@ "@type": "MetadataController" }, { - "@id": "urn:solid-server:default:DataAccessor", + "@id": "urn:solid-server:default:MemoryDataAccessor", "@type": "InMemoryDataAccessor", "InMemoryDataAccessor:_base": { "@id": "urn:solid-server:default:variable:base" @@ -16,10 +16,10 @@ } }, { - "@id": "urn:solid-server:default:ResourceStore", + "@id": "urn:solid-server:default:MemoryResourceStore", "@type": "DataAccessorBasedStore", "DataAccessorBasedStore:_accessor": { - "@id": "urn:solid-server:default:DataAccessor" + "@id": "urn:solid-server:default:MemoryDataAccessor" }, "DataAccessorBasedStore:_base": { "@id": "urn:solid-server:default:variable:base" diff --git a/config/presets/storage-backend/storage-sparql-endpoint.json b/config/presets/storage/backend/storage-sparql-endpoint.json similarity index 90% rename from config/presets/storage-backend/storage-sparql-endpoint.json rename to config/presets/storage/backend/storage-sparql-endpoint.json index bd6ca5cca..aeb604bc3 100644 --- a/config/presets/storage-backend/storage-sparql-endpoint.json +++ b/config/presets/storage/backend/storage-sparql-endpoint.json @@ -7,7 +7,7 @@ }, { - "@id": "urn:solid-server:default:DataAccessor", + "@id": "urn:solid-server:default:SparqlDataAccessor", "@type": "SparqlDataAccessor", "SparqlDataAccessor:_endpoint": { "@id": "urn:solid-server:default:variable:sparqlEndpoint" @@ -27,7 +27,7 @@ "@id": "urn:solid-server:default:DataAccessorBasedStore", "@type": "DataAccessorBasedStore", "DataAccessorBasedStore:_accessor": { - "@id": "urn:solid-server:default:DataAccessor" + "@id": "urn:solid-server:default:SparqlDataAccessor" }, "DataAccessorBasedStore:_base": { "@id": "urn:solid-server:default:variable:base" @@ -41,7 +41,7 @@ }, { - "@id": "urn:solid-server:default:ResourceStore", + "@id": "urn:solid-server:default:SparqlResourceStore", "@type": "RepresentationConvertingStore", "RepresentationConvertingStore:_source": { "@id": "urn:solid-server:default:DataAccessorBasedStore" diff --git a/config/presets/storage/routing/no-routing.json b/config/presets/storage/routing/no-routing.json new file mode 100644 index 000000000..3c6c80fa9 --- /dev/null +++ b/config/presets/storage/routing/no-routing.json @@ -0,0 +1,12 @@ +{ + "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld", + "@graph": [ + { + "@id": "urn:solid-server:default:RoutingResourceStore", + "@type": "PassthroughStore", + "PassthroughStore:_source": { + "@id": "urn:solid-server:default:BackendResourceStore" + } + } + ] +} diff --git a/config/presets/storage/routing/quad-type-routing.json b/config/presets/storage/routing/quad-type-routing.json new file mode 100644 index 000000000..e7e4f01f9 --- /dev/null +++ b/config/presets/storage/routing/quad-type-routing.json @@ -0,0 +1,30 @@ +{ + "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld", + "@graph": [ + { + "@id": "urn:solid-server:default:PreferenceSupport", + "@type": "PreferenceSupport", + "PreferenceSupport:_type": "internal/quads", + "PreferenceSupport:_converter": { + "@id": "urn:solid-server:default:RepresentationConverter" + } + }, + { + "@id": "urn:solid-server:default:ConvertingRouterRule", + "@type": "ConvertingRouterRule", + "ConvertingRouterRule:_store": { + "@id": "urn:solid-server:default:SparqlResourceStore" + }, + "ConvertingRouterRule:_supportChecker": { + "@id": "urn:solid-server:default:PreferenceSupport" + } + }, + { + "@id": "urn:solid-server:default:RoutingResourceStore", + "@type": "RoutingResourceStore", + "RoutingResourceStore:_rule": { + "@id": "urn:solid-server:default:ConvertingRouterRule" + } + } + ] +} diff --git a/config/presets/storage/routing/regex-routing.json b/config/presets/storage/routing/regex-routing.json new file mode 100644 index 000000000..e5f5b9728 --- /dev/null +++ b/config/presets/storage/routing/regex-routing.json @@ -0,0 +1,19 @@ +{ + "@context": "https://linkedsoftwaredependencies.org/bundles/npm/@solid/community-server/^1.0.0/components/context.jsonld", + "@graph": [ + { + "@id": "urn:solid-server:default:RegexRouterRule", + "@type": "RegexRouterRule", + "RegexRouterRule:_base": { + "@id": "urn:solid-server:default:variable:base" + } + }, + { + "@id": "urn:solid-server:default:RoutingResourceStore", + "@type": "RoutingResourceStore", + "RoutingResourceStore:_rule": { + "@id": "urn:solid-server:default:RegexRouterRule" + } + } + ] +}