@comunica/actor-query-source-dereference-link-hypermedia 5.1.3 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/components/ActorQuerySourceDereferenceLinkHypermedia.jsonld +33 -0
- package/components/context.jsonld +6 -0
- package/lib/ActorQuerySourceDereferenceLinkHypermedia.d.ts +9 -0
- package/lib/ActorQuerySourceDereferenceLinkHypermedia.js +20 -1
- package/lib/ActorQuerySourceDereferenceLinkHypermedia.js.map +1 -1
- package/package.json +12 -12
package/README.md
CHANGED
|
@@ -33,7 +33,8 @@ After installing, this package can be added to your engine's configuration as fo
|
|
|
33
33
|
"mediatorMetadata": { "@id": "urn:comunica:default:rdf-metadata/mediators#main" },
|
|
34
34
|
"mediatorMetadataExtract": { "@id": "urn:comunica:default:rdf-metadata-extract/mediators#main" },
|
|
35
35
|
"mediatorMetadataAccumulate": { "@id": "urn:comunica:default:rdf-metadata-accumulate/mediators#main" },
|
|
36
|
-
"mediatorQuerySourceIdentifyHypermedia": { "@id": "urn:comunica:default:query-source-identify-hypermedia/mediators#main" }
|
|
36
|
+
"mediatorQuerySourceIdentifyHypermedia": { "@id": "urn:comunica:default:query-source-identify-hypermedia/mediators#main" },
|
|
37
|
+
"sparqlServiceDescriptionTimeout": 3000
|
|
37
38
|
}
|
|
38
39
|
]
|
|
39
40
|
}
|
|
@@ -46,3 +47,4 @@ After installing, this package can be added to your engine's configuration as fo
|
|
|
46
47
|
* `mediatorMetadataExtract`: A mediator over the [Metadata Extract bus](https://github.com/comunica/comunica/tree/master/packages/bus-metadata-extract).
|
|
47
48
|
* `mediatorMetadataAccumulate`: A mediator over the [Metadata Accumulatebus](https://github.com/comunica/comunica/tree/master/packages/bus-metadata-accumulate).
|
|
48
49
|
* `mediatorQuerySourceIdentifyHypermedia`: A mediator over the [Query Source Identify Hypermedia bus](https://github.com/comunica/comunica/tree/master/packages/bus-query-source-identify-hypermedia).
|
|
50
|
+
* `sparqlServiceDescriptionTimeout`: Timeout in ms for dereferencing SPARQL service descriptions. Defaults to `3000`.
|
|
@@ -40,6 +40,20 @@
|
|
|
40
40
|
"range": "cc:components/Mediator.jsonld#Mediator",
|
|
41
41
|
"comment": "The hypermedia resolve mediator"
|
|
42
42
|
},
|
|
43
|
+
{
|
|
44
|
+
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_sparqlServiceDescriptionTimeout",
|
|
45
|
+
"range": {
|
|
46
|
+
"@type": "ParameterRangeUnion",
|
|
47
|
+
"parameterRangeElements": [
|
|
48
|
+
"xsd:integer",
|
|
49
|
+
{
|
|
50
|
+
"@type": "ParameterRangeUndefined"
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
"default": "3000",
|
|
55
|
+
"comment": "Timeout in ms for dereferencing SPARQL service descriptions."
|
|
56
|
+
},
|
|
43
57
|
{
|
|
44
58
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_name",
|
|
45
59
|
"range": "xsd:string",
|
|
@@ -178,6 +192,11 @@
|
|
|
178
192
|
"memberFieldName": "mediatorQuerySourceIdentifyHypermedia",
|
|
179
193
|
"range": "cc:components/Mediator.jsonld#Mediator"
|
|
180
194
|
},
|
|
195
|
+
{
|
|
196
|
+
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia__member_sparqlServiceDescriptionTimeout",
|
|
197
|
+
"memberFieldName": "sparqlServiceDescriptionTimeout",
|
|
198
|
+
"range": "xsd:number"
|
|
199
|
+
},
|
|
181
200
|
{
|
|
182
201
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia__member_constructor",
|
|
183
202
|
"memberFieldName": "constructor"
|
|
@@ -186,6 +205,10 @@
|
|
|
186
205
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia__member_test",
|
|
187
206
|
"memberFieldName": "test"
|
|
188
207
|
},
|
|
208
|
+
{
|
|
209
|
+
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia__member_getDereferenceRdfContext",
|
|
210
|
+
"memberFieldName": "getDereferenceRdfContext"
|
|
211
|
+
},
|
|
189
212
|
{
|
|
190
213
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia__member_run",
|
|
191
214
|
"memberFieldName": "run"
|
|
@@ -225,6 +248,12 @@
|
|
|
225
248
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_mediatorQuerySourceIdentifyHypermedia"
|
|
226
249
|
}
|
|
227
250
|
},
|
|
251
|
+
{
|
|
252
|
+
"keyRaw": "sparqlServiceDescriptionTimeout",
|
|
253
|
+
"value": {
|
|
254
|
+
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_sparqlServiceDescriptionTimeout"
|
|
255
|
+
}
|
|
256
|
+
},
|
|
228
257
|
{
|
|
229
258
|
"keyRaw": "name",
|
|
230
259
|
"value": {
|
|
@@ -278,6 +307,10 @@
|
|
|
278
307
|
{
|
|
279
308
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#IActorQuerySourceDereferenceLinkHypermediaArgs__member_mediatorQuerySourceIdentifyHypermedia",
|
|
280
309
|
"memberFieldName": "mediatorQuerySourceIdentifyHypermedia"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#IActorQuerySourceDereferenceLinkHypermediaArgs__member_sparqlServiceDescriptionTimeout",
|
|
313
|
+
"memberFieldName": "sparqlServiceDescriptionTimeout"
|
|
281
314
|
}
|
|
282
315
|
],
|
|
283
316
|
"constructorArguments": []
|
|
@@ -23,6 +23,9 @@
|
|
|
23
23
|
"args_mediatorQuerySourceIdentifyHypermedia": {
|
|
24
24
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_mediatorQuerySourceIdentifyHypermedia"
|
|
25
25
|
},
|
|
26
|
+
"args_sparqlServiceDescriptionTimeout": {
|
|
27
|
+
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_sparqlServiceDescriptionTimeout"
|
|
28
|
+
},
|
|
26
29
|
"args_name": {
|
|
27
30
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_name"
|
|
28
31
|
},
|
|
@@ -51,6 +54,9 @@
|
|
|
51
54
|
"mediatorQuerySourceIdentifyHypermedia": {
|
|
52
55
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_mediatorQuerySourceIdentifyHypermedia"
|
|
53
56
|
},
|
|
57
|
+
"sparqlServiceDescriptionTimeout": {
|
|
58
|
+
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_sparqlServiceDescriptionTimeout"
|
|
59
|
+
},
|
|
54
60
|
"name": {
|
|
55
61
|
"@id": "caqsdlh:components/ActorQuerySourceDereferenceLinkHypermedia.jsonld#ActorQuerySourceDereferenceLinkHypermedia_args_name"
|
|
56
62
|
},
|
|
@@ -6,6 +6,7 @@ import type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';
|
|
|
6
6
|
import type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';
|
|
7
7
|
import type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';
|
|
8
8
|
import type { TestResult, IActorTest } from '@comunica/core';
|
|
9
|
+
import type { IActionContext } from '@comunica/types';
|
|
9
10
|
/**
|
|
10
11
|
* A comunica Dereference Query Source Hypermedia Resolve Actor.
|
|
11
12
|
*/
|
|
@@ -15,8 +16,10 @@ export declare class ActorQuerySourceDereferenceLinkHypermedia extends ActorQuer
|
|
|
15
16
|
readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;
|
|
16
17
|
readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;
|
|
17
18
|
readonly mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;
|
|
19
|
+
readonly sparqlServiceDescriptionTimeout: number;
|
|
18
20
|
constructor(args: IActorQuerySourceDereferenceLinkHypermediaArgs);
|
|
19
21
|
test(_action: IActionQuerySourceDereferenceLink): Promise<TestResult<IActorTest>>;
|
|
22
|
+
protected getDereferenceRdfContext(context: IActionContext, url: string, forceSourceType?: string): IActionContext;
|
|
20
23
|
run(action: IActionQuerySourceDereferenceLink): Promise<IActorQuerySourceDereferenceLinkOutput>;
|
|
21
24
|
}
|
|
22
25
|
export interface IActorQuerySourceDereferenceLinkHypermediaArgs extends IActorQuerySourceDereferenceLinkArgs {
|
|
@@ -40,4 +43,10 @@ export interface IActorQuerySourceDereferenceLinkHypermediaArgs extends IActorQu
|
|
|
40
43
|
* The hypermedia resolve mediator
|
|
41
44
|
*/
|
|
42
45
|
mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;
|
|
46
|
+
/**
|
|
47
|
+
* Timeout in ms for dereferencing SPARQL service descriptions.
|
|
48
|
+
* @range {integer}
|
|
49
|
+
* @default {3000}
|
|
50
|
+
*/
|
|
51
|
+
sparqlServiceDescriptionTimeout?: number;
|
|
43
52
|
}
|
|
@@ -15,6 +15,7 @@ class ActorQuerySourceDereferenceLinkHypermedia extends bus_query_source_derefer
|
|
|
15
15
|
mediatorMetadataExtract;
|
|
16
16
|
mediatorMetadataAccumulate;
|
|
17
17
|
mediatorQuerySourceIdentifyHypermedia;
|
|
18
|
+
sparqlServiceDescriptionTimeout;
|
|
18
19
|
constructor(args) {
|
|
19
20
|
super(args);
|
|
20
21
|
this.mediatorDereferenceRdf = args.mediatorDereferenceRdf;
|
|
@@ -22,10 +23,27 @@ class ActorQuerySourceDereferenceLinkHypermedia extends bus_query_source_derefer
|
|
|
22
23
|
this.mediatorMetadataExtract = args.mediatorMetadataExtract;
|
|
23
24
|
this.mediatorMetadataAccumulate = args.mediatorMetadataAccumulate;
|
|
24
25
|
this.mediatorQuerySourceIdentifyHypermedia = args.mediatorQuerySourceIdentifyHypermedia;
|
|
26
|
+
this.sparqlServiceDescriptionTimeout = args.sparqlServiceDescriptionTimeout ?? 3000;
|
|
25
27
|
}
|
|
26
28
|
async test(_action) {
|
|
27
29
|
return (0, core_1.passTestVoid)();
|
|
28
30
|
}
|
|
31
|
+
getDereferenceRdfContext(context, url, forceSourceType) {
|
|
32
|
+
const isSparqlServiceDescriptionDereference = forceSourceType === 'sparql' ||
|
|
33
|
+
(!forceSourceType && (url.endsWith('/sparql') || url.endsWith('/sparql/')));
|
|
34
|
+
if (this.sparqlServiceDescriptionTimeout > 0 &&
|
|
35
|
+
isSparqlServiceDescriptionDereference) {
|
|
36
|
+
const existingTimeout = context.get(context_entries_1.KeysHttp.httpTimeout);
|
|
37
|
+
const effectiveTimeout = existingTimeout !== undefined && existingTimeout > 0 ?
|
|
38
|
+
Math.min(existingTimeout, this.sparqlServiceDescriptionTimeout) :
|
|
39
|
+
this.sparqlServiceDescriptionTimeout;
|
|
40
|
+
if (effectiveTimeout === existingTimeout) {
|
|
41
|
+
return context;
|
|
42
|
+
}
|
|
43
|
+
return context.set(context_entries_1.KeysHttp.httpTimeout, effectiveTimeout);
|
|
44
|
+
}
|
|
45
|
+
return context;
|
|
46
|
+
}
|
|
29
47
|
async run(action) {
|
|
30
48
|
const context = action.link.context ? action.context.merge(action.link.context) : action.context;
|
|
31
49
|
let url = action.link.url;
|
|
@@ -33,8 +51,9 @@ class ActorQuerySourceDereferenceLinkHypermedia extends bus_query_source_derefer
|
|
|
33
51
|
let metadata;
|
|
34
52
|
let cachePolicy;
|
|
35
53
|
try {
|
|
54
|
+
const dereferenceRdfContext = this.getDereferenceRdfContext(context, url, action.link.forceSourceType);
|
|
36
55
|
const dereferenceRdfOutput = await this.mediatorDereferenceRdf
|
|
37
|
-
.mediate({ context, url });
|
|
56
|
+
.mediate({ context: dereferenceRdfContext, url });
|
|
38
57
|
url = dereferenceRdfOutput.url;
|
|
39
58
|
if (dereferenceRdfOutput.cachePolicy) {
|
|
40
59
|
cachePolicy = new QuerySourceCachePolicyDereferenceWrapper_1.QuerySourceCachePolicyDereferenceWrapper(dereferenceRdfOutput.cachePolicy);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorQuerySourceDereferenceLinkHypermedia.js","sourceRoot":"","sources":["ActorQuerySourceDereferenceLinkHypermedia.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActorDereferenceRdfOutput, MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport {\n ActorQuerySourceDereferenceLink,\n} from '@comunica/bus-query-source-dereference-link';\nimport type {\n IActionQuerySourceDereferenceLink,\n IActorQuerySourceDereferenceLinkOutput,\n IActorQuerySourceDereferenceLinkArgs,\n} from '@comunica/bus-query-source-dereference-link';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { IActorRdfMetadataOutput, MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport { KeysStatistics } from '@comunica/context-entries';\nimport type { TestResult, IActorTest } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type { ICachePolicy, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\nimport { QuerySourceCachePolicyDereferenceWrapper } from './QuerySourceCachePolicyDereferenceWrapper';\n\n/**\n * A comunica Dereference Query Source Hypermedia Resolve Actor.\n */\nexport class ActorQuerySourceDereferenceLinkHypermedia extends ActorQuerySourceDereferenceLink {\n public readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n public readonly mediatorMetadata: MediatorRdfMetadata;\n public readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n public readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n public readonly mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n\n public constructor(args: IActorQuerySourceDereferenceLinkHypermediaArgs) {\n super(args);\n this.mediatorDereferenceRdf = args.mediatorDereferenceRdf;\n this.mediatorMetadata = args.mediatorMetadata;\n this.mediatorMetadataExtract = args.mediatorMetadataExtract;\n this.mediatorMetadataAccumulate = args.mediatorMetadataAccumulate;\n this.mediatorQuerySourceIdentifyHypermedia = args.mediatorQuerySourceIdentifyHypermedia;\n }\n\n public async test(_action: IActionQuerySourceDereferenceLink): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n public async run(action: IActionQuerySourceDereferenceLink): Promise<IActorQuerySourceDereferenceLinkOutput> {\n const context = action.link.context ? action.context.merge(action.link.context) : action.context;\n let url = action.link.url;\n let quads: RDF.Stream;\n let metadata: Record<string, any>;\n let cachePolicy: ICachePolicy<IActionQuerySourceDereferenceLink> | undefined;\n try {\n const dereferenceRdfOutput: IActorDereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context, url });\n url = dereferenceRdfOutput.url;\n if (dereferenceRdfOutput.cachePolicy) {\n cachePolicy = new QuerySourceCachePolicyDereferenceWrapper(dereferenceRdfOutput.cachePolicy);\n }\n\n // Determine the metadata\n const rdfMetadataOutput: IActorRdfMetadataOutput = await this.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n\n // Transform quads if needed.\n if (action.link.transform) {\n quads = await action.link.transform(quads);\n }\n } catch (error: unknown) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new Readable();\n quads.read = () => {\n setTimeout(() => quads.emit('error', error));\n return null;\n };\n ({ metadata } = await this.mediatorMetadataAccumulate.mediate({ context, mode: 'initialize' }));\n\n // Log as warning, because the quads above may not always be consumed (e.g. for SPARQL endpoints),\n // so the user would not be notified of something going wrong otherwise.\n this.logWarn(context, `Metadata extraction for ${action.link.url} failed: ${(<Error>error).message}`);\n }\n\n // Determine the source\n const { source, dataset } = await this.mediatorQuerySourceIdentifyHypermedia.mediate({\n context,\n forceSourceType: action.link.forceSourceType,\n handledDatasets: action.handledDatasets,\n metadata,\n quads,\n url,\n });\n\n if (dataset && action.handledDatasets) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n action.handledDatasets[dataset] = true;\n }\n\n // Track dereference event\n context.get(KeysStatistics.dereferencedLinks)?.updateStatistic({ url: action.link.url, metadata }, source);\n\n return { source, metadata: <MetadataBindings> metadata, dataset, cachePolicy };\n }\n}\n\nexport interface IActorQuerySourceDereferenceLinkHypermediaArgs extends IActorQuerySourceDereferenceLinkArgs {\n /**\n * The RDF dereference mediator\n */\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n /**\n * The metadata mediator\n */\n mediatorMetadata: MediatorRdfMetadata;\n /**\n * The metadata extract mediator\n */\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n /**\n * The metadata accumulate mediator\n */\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n /**\n * The hypermedia resolve mediator\n */\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ActorQuerySourceDereferenceLinkHypermedia.js","sourceRoot":"","sources":["ActorQuerySourceDereferenceLinkHypermedia.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IActorDereferenceRdfOutput, MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport {\n ActorQuerySourceDereferenceLink,\n} from '@comunica/bus-query-source-dereference-link';\nimport type {\n IActionQuerySourceDereferenceLink,\n IActorQuerySourceDereferenceLinkOutput,\n IActorQuerySourceDereferenceLinkArgs,\n} from '@comunica/bus-query-source-dereference-link';\nimport type { MediatorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';\nimport type { IActorRdfMetadataOutput, MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataAccumulate } from '@comunica/bus-rdf-metadata-accumulate';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport { KeysHttp, KeysStatistics } from '@comunica/context-entries';\nimport type { TestResult, IActorTest } from '@comunica/core';\nimport { passTestVoid } from '@comunica/core';\nimport type { IActionContext, ICachePolicy, MetadataBindings } from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport { Readable } from 'readable-stream';\nimport { QuerySourceCachePolicyDereferenceWrapper } from './QuerySourceCachePolicyDereferenceWrapper';\n\n/**\n * A comunica Dereference Query Source Hypermedia Resolve Actor.\n */\nexport class ActorQuerySourceDereferenceLinkHypermedia extends ActorQuerySourceDereferenceLink {\n public readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n public readonly mediatorMetadata: MediatorRdfMetadata;\n public readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n public readonly mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n public readonly mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n public readonly sparqlServiceDescriptionTimeout: number;\n\n public constructor(args: IActorQuerySourceDereferenceLinkHypermediaArgs) {\n super(args);\n this.mediatorDereferenceRdf = args.mediatorDereferenceRdf;\n this.mediatorMetadata = args.mediatorMetadata;\n this.mediatorMetadataExtract = args.mediatorMetadataExtract;\n this.mediatorMetadataAccumulate = args.mediatorMetadataAccumulate;\n this.mediatorQuerySourceIdentifyHypermedia = args.mediatorQuerySourceIdentifyHypermedia;\n this.sparqlServiceDescriptionTimeout = args.sparqlServiceDescriptionTimeout ?? 3000;\n }\n\n public async test(_action: IActionQuerySourceDereferenceLink): Promise<TestResult<IActorTest>> {\n return passTestVoid();\n }\n\n protected getDereferenceRdfContext(\n context: IActionContext,\n url: string,\n forceSourceType?: string,\n ): IActionContext {\n const isSparqlServiceDescriptionDereference = forceSourceType === 'sparql' ||\n (!forceSourceType && (url.endsWith('/sparql') || url.endsWith('/sparql/')));\n if (\n this.sparqlServiceDescriptionTimeout > 0 &&\n isSparqlServiceDescriptionDereference\n ) {\n const existingTimeout = context.get(KeysHttp.httpTimeout);\n const effectiveTimeout = existingTimeout !== undefined && existingTimeout > 0 ?\n Math.min(existingTimeout, this.sparqlServiceDescriptionTimeout) :\n this.sparqlServiceDescriptionTimeout;\n if (effectiveTimeout === existingTimeout) {\n return context;\n }\n return context.set(KeysHttp.httpTimeout, effectiveTimeout);\n }\n return context;\n }\n\n public async run(action: IActionQuerySourceDereferenceLink): Promise<IActorQuerySourceDereferenceLinkOutput> {\n const context = action.link.context ? action.context.merge(action.link.context) : action.context;\n let url = action.link.url;\n let quads: RDF.Stream;\n let metadata: Record<string, any>;\n let cachePolicy: ICachePolicy<IActionQuerySourceDereferenceLink> | undefined;\n try {\n const dereferenceRdfContext = this.getDereferenceRdfContext(context, url, action.link.forceSourceType);\n const dereferenceRdfOutput: IActorDereferenceRdfOutput = await this.mediatorDereferenceRdf\n .mediate({ context: dereferenceRdfContext, url });\n url = dereferenceRdfOutput.url;\n if (dereferenceRdfOutput.cachePolicy) {\n cachePolicy = new QuerySourceCachePolicyDereferenceWrapper(dereferenceRdfOutput.cachePolicy);\n }\n\n // Determine the metadata\n const rdfMetadataOutput: IActorRdfMetadataOutput = await this.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n rdfMetadataOutput.data.on('error', () => {\n // Silence errors in the data stream,\n // as they will be emitted again in the metadata stream,\n // and will result in a promise rejection anyways.\n // If we don't do this, we end up with an unhandled error message\n });\n\n metadata = (await this.mediatorMetadataExtract.mediate({\n context,\n url,\n // The problem appears to be conflicting metadata keys here\n metadata: rdfMetadataOutput.metadata,\n headers: dereferenceRdfOutput.headers,\n requestTime: dereferenceRdfOutput.requestTime,\n })).metadata;\n quads = rdfMetadataOutput.data;\n\n // Transform quads if needed.\n if (action.link.transform) {\n quads = await action.link.transform(quads);\n }\n } catch (error: unknown) {\n // Make sure that dereference errors are only emitted once an actor really needs the read quads\n // This allows SPARQL endpoints that error on service description fetching to still be source-forcible\n quads = new Readable();\n quads.read = () => {\n setTimeout(() => quads.emit('error', error));\n return null;\n };\n ({ metadata } = await this.mediatorMetadataAccumulate.mediate({ context, mode: 'initialize' }));\n\n // Log as warning, because the quads above may not always be consumed (e.g. for SPARQL endpoints),\n // so the user would not be notified of something going wrong otherwise.\n this.logWarn(context, `Metadata extraction for ${action.link.url} failed: ${(<Error>error).message}`);\n }\n\n // Determine the source\n const { source, dataset } = await this.mediatorQuerySourceIdentifyHypermedia.mediate({\n context,\n forceSourceType: action.link.forceSourceType,\n handledDatasets: action.handledDatasets,\n metadata,\n quads,\n url,\n });\n\n if (dataset && action.handledDatasets) {\n // Mark the dataset as applied\n // This is needed to make sure that things like QPF search forms are only applied once,\n // and next page links are followed after that.\n action.handledDatasets[dataset] = true;\n }\n\n // Track dereference event\n context.get(KeysStatistics.dereferencedLinks)?.updateStatistic({ url: action.link.url, metadata }, source);\n\n return { source, metadata: <MetadataBindings> metadata, dataset, cachePolicy };\n }\n}\n\nexport interface IActorQuerySourceDereferenceLinkHypermediaArgs extends IActorQuerySourceDereferenceLinkArgs {\n /**\n * The RDF dereference mediator\n */\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n /**\n * The metadata mediator\n */\n mediatorMetadata: MediatorRdfMetadata;\n /**\n * The metadata extract mediator\n */\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n /**\n * The metadata accumulate mediator\n */\n mediatorMetadataAccumulate: MediatorRdfMetadataAccumulate;\n /**\n * The hypermedia resolve mediator\n */\n mediatorQuerySourceIdentifyHypermedia: MediatorQuerySourceIdentifyHypermedia;\n /**\n * Timeout in ms for dereferencing SPARQL service descriptions.\n * @range {integer}\n * @default {3000}\n */\n sparqlServiceDescriptionTimeout?: number;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/actor-query-source-dereference-link-hypermedia",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.2.0",
|
|
4
4
|
"description": "A dereference query-source-dereference-link actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -41,17 +41,17 @@
|
|
|
41
41
|
"build:components": "componentsjs-generator"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@comunica/bus-dereference": "^5.
|
|
45
|
-
"@comunica/bus-dereference-rdf": "^5.
|
|
46
|
-
"@comunica/bus-query-source-dereference-link": "^5.
|
|
47
|
-
"@comunica/bus-query-source-identify-hypermedia": "^5.
|
|
48
|
-
"@comunica/bus-rdf-metadata": "^5.
|
|
49
|
-
"@comunica/bus-rdf-metadata-accumulate": "^5.
|
|
50
|
-
"@comunica/bus-rdf-metadata-extract": "^5.
|
|
51
|
-
"@comunica/context-entries": "^5.
|
|
52
|
-
"@comunica/core": "^5.
|
|
53
|
-
"@comunica/types": "^5.
|
|
44
|
+
"@comunica/bus-dereference": "^5.2.0",
|
|
45
|
+
"@comunica/bus-dereference-rdf": "^5.2.0",
|
|
46
|
+
"@comunica/bus-query-source-dereference-link": "^5.2.0",
|
|
47
|
+
"@comunica/bus-query-source-identify-hypermedia": "^5.2.0",
|
|
48
|
+
"@comunica/bus-rdf-metadata": "^5.2.0",
|
|
49
|
+
"@comunica/bus-rdf-metadata-accumulate": "^5.2.0",
|
|
50
|
+
"@comunica/bus-rdf-metadata-extract": "^5.2.0",
|
|
51
|
+
"@comunica/context-entries": "^5.2.0",
|
|
52
|
+
"@comunica/core": "^5.2.0",
|
|
53
|
+
"@comunica/types": "^5.2.0",
|
|
54
54
|
"readable-stream": "^4.7.0"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "ebb0e79bddcd850fcb8d0fb5b422af88e67fa283"
|
|
57
57
|
}
|