@comunica/actor-query-source-identify-hypermedia-qpf 3.3.0 → 4.0.1-alpha.48.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/components/ActorQuerySourceIdentifyHypermediaQpf.jsonld +44 -12
- package/components/QuerySourceQpf.jsonld +38 -13
- package/components/components.jsonld +1 -1
- package/components/context.jsonld +34 -1
- package/lib/ActorQuerySourceIdentifyHypermediaQpf.d.ts +3 -2
- package/lib/ActorQuerySourceIdentifyHypermediaQpf.js +13 -5
- package/lib/ActorQuerySourceIdentifyHypermediaQpf.js.map +1 -1
- package/lib/QuerySourceQpf.d.ts +7 -6
- package/lib/QuerySourceQpf.js +46 -52
- package/lib/QuerySourceQpf.js.map +1 -1
- package/package.json +19 -15
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@context": [
|
|
3
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-source-identify-hypermedia-qpf/^
|
|
4
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^
|
|
5
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify-hypermedia/^
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-source-identify-hypermedia-qpf/^4.0.0/components/context.jsonld",
|
|
4
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^4.0.0/components/context.jsonld",
|
|
5
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/bus-query-source-identify-hypermedia/^4.0.0/components/context.jsonld"
|
|
6
6
|
],
|
|
7
7
|
"@id": "npmd:@comunica/actor-query-source-identify-hypermedia-qpf",
|
|
8
8
|
"components": [
|
|
@@ -88,29 +88,37 @@
|
|
|
88
88
|
"genericTypeInstances": [
|
|
89
89
|
{
|
|
90
90
|
"@type": "ParameterRangeGenericTypeReference",
|
|
91
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
91
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
"@type": "ParameterRangeGenericTypeReference",
|
|
95
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
95
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
|
|
96
96
|
},
|
|
97
97
|
{
|
|
98
98
|
"@type": "ParameterRangeGenericTypeReference",
|
|
99
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
99
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"@type": "ParameterRangeGenericTypeReference",
|
|
103
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
|
|
100
104
|
}
|
|
101
105
|
]
|
|
102
106
|
},
|
|
103
107
|
{
|
|
104
108
|
"@type": "ParameterRangeGenericTypeReference",
|
|
105
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
109
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"@type": "ParameterRangeGenericTypeReference",
|
|
113
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
|
|
106
114
|
},
|
|
107
115
|
{
|
|
108
116
|
"@type": "ParameterRangeGenericTypeReference",
|
|
109
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
117
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
|
|
110
118
|
},
|
|
111
119
|
{
|
|
112
120
|
"@type": "ParameterRangeGenericTypeReference",
|
|
113
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
121
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
|
|
114
122
|
}
|
|
115
123
|
]
|
|
116
124
|
},
|
|
@@ -120,6 +128,20 @@
|
|
|
120
128
|
},
|
|
121
129
|
"comment": "The bus this actor subscribes to."
|
|
122
130
|
},
|
|
131
|
+
{
|
|
132
|
+
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_busFailMessage",
|
|
133
|
+
"range": {
|
|
134
|
+
"@type": "ParameterRangeUnion",
|
|
135
|
+
"parameterRangeElements": [
|
|
136
|
+
"xsd:string",
|
|
137
|
+
{
|
|
138
|
+
"@type": "ParameterRangeUndefined"
|
|
139
|
+
}
|
|
140
|
+
]
|
|
141
|
+
},
|
|
142
|
+
"default": "Query source hypermedia identification failed: none of the configured actors were able to identify ${action.url}",
|
|
143
|
+
"comment": "The message that will be configured in the bus for reporting failures. This message may be a template string that contains references to the executed `action`. For example, the following templated string is allowed: \"RDF dereferencing failed: no actors could handle ${action.handle.mediaType}\""
|
|
144
|
+
},
|
|
123
145
|
{
|
|
124
146
|
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_beforeActors",
|
|
125
147
|
"range": {
|
|
@@ -133,15 +155,19 @@
|
|
|
133
155
|
"genericTypeInstances": [
|
|
134
156
|
{
|
|
135
157
|
"@type": "ParameterRangeGenericTypeReference",
|
|
136
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
158
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_I"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"@type": "ParameterRangeGenericTypeReference",
|
|
162
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_T"
|
|
137
163
|
},
|
|
138
164
|
{
|
|
139
165
|
"@type": "ParameterRangeGenericTypeReference",
|
|
140
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
166
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_O"
|
|
141
167
|
},
|
|
142
168
|
{
|
|
143
169
|
"@type": "ParameterRangeGenericTypeReference",
|
|
144
|
-
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^
|
|
170
|
+
"parameterRangeGenericType": "npmd:@comunica/actor-abstract-mediatyped/^4.0.0/components/ActorAbstractMediaTyped.jsonld#ActorAbstractMediaTyped__generic_TS"
|
|
145
171
|
}
|
|
146
172
|
]
|
|
147
173
|
}
|
|
@@ -280,6 +306,12 @@
|
|
|
280
306
|
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_bus"
|
|
281
307
|
}
|
|
282
308
|
},
|
|
309
|
+
{
|
|
310
|
+
"keyRaw": "busFailMessage",
|
|
311
|
+
"value": {
|
|
312
|
+
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_busFailMessage"
|
|
313
|
+
}
|
|
314
|
+
},
|
|
283
315
|
{
|
|
284
316
|
"keyRaw": "beforeActors",
|
|
285
317
|
"value": {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@context": [
|
|
3
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-source-identify-hypermedia-qpf/^
|
|
4
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^
|
|
5
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-metadata-extract-hydra-controls/^
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-source-identify-hypermedia-qpf/^4.0.0/components/context.jsonld",
|
|
4
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/core/^4.0.0/components/context.jsonld",
|
|
5
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-rdf-metadata-extract-hydra-controls/^4.0.0/components/context.jsonld"
|
|
6
6
|
],
|
|
7
7
|
"@id": "npmd:@comunica/actor-query-source-identify-hypermedia-qpf",
|
|
8
8
|
"components": [
|
|
@@ -11,6 +11,12 @@
|
|
|
11
11
|
"@type": "Class",
|
|
12
12
|
"requireElement": "QuerySourceQpf",
|
|
13
13
|
"parameters": [
|
|
14
|
+
{
|
|
15
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_algebraFactory",
|
|
16
|
+
"range": {
|
|
17
|
+
"@type": "ParameterRangeWildcard"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
14
20
|
{
|
|
15
21
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_subjectUri",
|
|
16
22
|
"range": "xsd:string"
|
|
@@ -33,7 +39,7 @@
|
|
|
33
39
|
},
|
|
34
40
|
{
|
|
35
41
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_bindingsFactory",
|
|
36
|
-
"range": "urn:npm:@comunica/bindings-factory:BindingsFactory"
|
|
42
|
+
"range": "urn:npm:@comunica/utils-bindings-factory:BindingsFactory"
|
|
37
43
|
},
|
|
38
44
|
{
|
|
39
45
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_metadata",
|
|
@@ -89,19 +95,24 @@
|
|
|
89
95
|
}
|
|
90
96
|
]
|
|
91
97
|
}
|
|
92
|
-
}
|
|
93
|
-
],
|
|
94
|
-
"memberFields": [
|
|
98
|
+
},
|
|
95
99
|
{
|
|
96
|
-
"@id": "caqsihq:components/QuerySourceQpf.jsonld#
|
|
97
|
-
"memberFieldName": "SELECTOR_SHAPE",
|
|
100
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_dataFactory",
|
|
98
101
|
"range": {
|
|
99
|
-
"@type": "
|
|
102
|
+
"@type": "ParameterRangeIntersection",
|
|
103
|
+
"parameterRangeElements": [
|
|
104
|
+
"urn:npm:@rdfjs/types:DataFactory",
|
|
105
|
+
{
|
|
106
|
+
"@type": "ParameterRangeWildcard"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
100
109
|
}
|
|
101
|
-
}
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"memberFields": [
|
|
102
113
|
{
|
|
103
|
-
"@id": "caqsihq:components/QuerySourceQpf.jsonld#
|
|
104
|
-
"memberFieldName": "
|
|
114
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf__member_selectorShape",
|
|
115
|
+
"memberFieldName": "selectorShape",
|
|
105
116
|
"range": {
|
|
106
117
|
"@type": "ParameterRangeWildcard"
|
|
107
118
|
}
|
|
@@ -123,6 +134,14 @@
|
|
|
123
134
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf__member_mediatorDereferenceRdf",
|
|
124
135
|
"memberFieldName": "mediatorDereferenceRdf"
|
|
125
136
|
},
|
|
137
|
+
{
|
|
138
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf__member_dataFactory",
|
|
139
|
+
"memberFieldName": "dataFactory"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf__member_algebraFactory",
|
|
143
|
+
"memberFieldName": "algebraFactory"
|
|
144
|
+
},
|
|
126
145
|
{
|
|
127
146
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf__member_bindingsFactory",
|
|
128
147
|
"memberFieldName": "bindingsFactory"
|
|
@@ -231,6 +250,12 @@
|
|
|
231
250
|
{
|
|
232
251
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_mediatorDereferenceRdf"
|
|
233
252
|
},
|
|
253
|
+
{
|
|
254
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_dataFactory"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_algebraFactory"
|
|
258
|
+
},
|
|
234
259
|
{
|
|
235
260
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_bindingsFactory"
|
|
236
261
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"@context": [
|
|
3
|
-
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-source-identify-hypermedia-qpf/^
|
|
3
|
+
"https://linkedsoftwaredependencies.org/bundles/npm/@comunica/actor-query-source-identify-hypermedia-qpf/^4.0.0/components/context.jsonld"
|
|
4
4
|
],
|
|
5
5
|
"@id": "npmd:@comunica/actor-query-source-identify-hypermedia-qpf",
|
|
6
6
|
"@type": "Module",
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"https://linkedsoftwaredependencies.org/bundles/npm/componentsjs/^6.0.0/components/context.jsonld",
|
|
4
4
|
{
|
|
5
5
|
"npmd": "https://linkedsoftwaredependencies.org/bundles/npm/",
|
|
6
|
-
"caqsihq": "npmd:@comunica/actor-query-source-identify-hypermedia-qpf/^
|
|
6
|
+
"caqsihq": "npmd:@comunica/actor-query-source-identify-hypermedia-qpf/^4.0.0/",
|
|
7
7
|
"ActorQuerySourceIdentifyHypermediaQpf": {
|
|
8
8
|
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf",
|
|
9
9
|
"@prefix": true,
|
|
@@ -38,6 +38,9 @@
|
|
|
38
38
|
"args_bus": {
|
|
39
39
|
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_bus"
|
|
40
40
|
},
|
|
41
|
+
"args_busFailMessage": {
|
|
42
|
+
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_busFailMessage"
|
|
43
|
+
},
|
|
41
44
|
"args_beforeActors": {
|
|
42
45
|
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_beforeActors",
|
|
43
46
|
"@container": "@list"
|
|
@@ -72,6 +75,9 @@
|
|
|
72
75
|
"bus": {
|
|
73
76
|
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_bus"
|
|
74
77
|
},
|
|
78
|
+
"busFailMessage": {
|
|
79
|
+
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_busFailMessage"
|
|
80
|
+
},
|
|
75
81
|
"beforeActors": {
|
|
76
82
|
"@id": "caqsihq:components/ActorQuerySourceIdentifyHypermediaQpf.jsonld#ActorQuerySourceIdentifyHypermediaQpf_args_beforeActors",
|
|
77
83
|
"@container": "@list"
|
|
@@ -87,6 +93,9 @@
|
|
|
87
93
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf",
|
|
88
94
|
"@prefix": true,
|
|
89
95
|
"@context": {
|
|
96
|
+
"algebraFactory": {
|
|
97
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_algebraFactory"
|
|
98
|
+
},
|
|
90
99
|
"subjectUri": {
|
|
91
100
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_subjectUri"
|
|
92
101
|
},
|
|
@@ -123,6 +132,30 @@
|
|
|
123
132
|
},
|
|
124
133
|
"initialQuads": {
|
|
125
134
|
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_initialQuads"
|
|
135
|
+
},
|
|
136
|
+
"dataFactory": {
|
|
137
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_dataFactory"
|
|
138
|
+
},
|
|
139
|
+
"ry": {
|
|
140
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_algebraFactory"
|
|
141
|
+
},
|
|
142
|
+
"": {
|
|
143
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_initialQuads"
|
|
144
|
+
},
|
|
145
|
+
"ricted": {
|
|
146
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_bindingsRestricted"
|
|
147
|
+
},
|
|
148
|
+
"ory": {
|
|
149
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_bindingsFactory"
|
|
150
|
+
},
|
|
151
|
+
"data": {
|
|
152
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_mediatorMetadata"
|
|
153
|
+
},
|
|
154
|
+
"dataExtract": {
|
|
155
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_mediatorMetadataExtract"
|
|
156
|
+
},
|
|
157
|
+
"ferenceRdf": {
|
|
158
|
+
"@id": "caqsihq:components/QuerySourceQpf.jsonld#QuerySourceQpf_mediatorDereferenceRdf"
|
|
126
159
|
}
|
|
127
160
|
}
|
|
128
161
|
}
|
|
@@ -4,6 +4,7 @@ import type { IActionQuerySourceIdentifyHypermedia, IActorQuerySourceIdentifyHyp
|
|
|
4
4
|
import { ActorQuerySourceIdentifyHypermedia } from '@comunica/bus-query-source-identify-hypermedia';
|
|
5
5
|
import type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';
|
|
6
6
|
import type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';
|
|
7
|
+
import type { TestResult } from '@comunica/core';
|
|
7
8
|
import type { IActionContext } from '@comunica/types';
|
|
8
9
|
import type * as RDF from '@rdfjs/types';
|
|
9
10
|
import { QuerySourceQpf } from './QuerySourceQpf';
|
|
@@ -20,8 +21,8 @@ export declare class ActorQuerySourceIdentifyHypermediaQpf extends ActorQuerySou
|
|
|
20
21
|
readonly objectUri: string;
|
|
21
22
|
readonly graphUri?: string;
|
|
22
23
|
constructor(args: IActorQuerySourceIdentifyHypermediaQpfArgs);
|
|
23
|
-
test(action: IActionQuerySourceIdentifyHypermedia): Promise<IActorQuerySourceIdentifyHypermediaTest
|
|
24
|
-
testMetadata(action: IActionQuerySourceIdentifyHypermedia): Promise<IActorQuerySourceIdentifyHypermediaTest
|
|
24
|
+
test(action: IActionQuerySourceIdentifyHypermedia): Promise<TestResult<IActorQuerySourceIdentifyHypermediaTest>>;
|
|
25
|
+
testMetadata(action: IActionQuerySourceIdentifyHypermedia): Promise<TestResult<IActorQuerySourceIdentifyHypermediaTest>>;
|
|
25
26
|
/**
|
|
26
27
|
* Look for the search form
|
|
27
28
|
* @param {IActionRdfResolveHypermedia} action the metadata to look for the form.
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ActorQuerySourceIdentifyHypermediaQpf = void 0;
|
|
4
|
-
const bindings_factory_1 = require("@comunica/bindings-factory");
|
|
5
4
|
const bus_query_source_identify_hypermedia_1 = require("@comunica/bus-query-source-identify-hypermedia");
|
|
5
|
+
const context_entries_1 = require("@comunica/context-entries");
|
|
6
|
+
const core_1 = require("@comunica/core");
|
|
7
|
+
const utils_bindings_factory_1 = require("@comunica/utils-bindings-factory");
|
|
8
|
+
const sparqlalgebrajs_1 = require("sparqlalgebrajs");
|
|
6
9
|
const QuerySourceQpf_1 = require("./QuerySourceQpf");
|
|
7
10
|
/**
|
|
8
11
|
* A comunica QPF Query Source Identify Hypermedia Actor.
|
|
@@ -13,16 +16,19 @@ class ActorQuerySourceIdentifyHypermediaQpf extends bus_query_source_identify_hy
|
|
|
13
16
|
}
|
|
14
17
|
async test(action) {
|
|
15
18
|
if (action.forceSourceType && (action.forceSourceType !== 'qpf' && action.forceSourceType !== 'brtpf')) {
|
|
16
|
-
|
|
19
|
+
return (0, core_1.failTest)(`Actor ${this.name} is not able to handle source type ${action.forceSourceType}.`);
|
|
17
20
|
}
|
|
18
21
|
return this.testMetadata(action);
|
|
19
22
|
}
|
|
20
23
|
async testMetadata(action) {
|
|
21
24
|
const { searchForm } = await this.createSource(action.url, action.metadata, action.context, action.forceSourceType === 'brtpf');
|
|
25
|
+
if (!searchForm) {
|
|
26
|
+
return (0, core_1.failTest)('Illegal state: found no TPF/QPF search form anymore in metadata.');
|
|
27
|
+
}
|
|
22
28
|
if (action.handledDatasets && action.handledDatasets[searchForm.dataset]) {
|
|
23
|
-
|
|
29
|
+
return (0, core_1.failTest)(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);
|
|
24
30
|
}
|
|
25
|
-
return { filterFactor: 1 };
|
|
31
|
+
return (0, core_1.passTest)({ filterFactor: 1 });
|
|
26
32
|
}
|
|
27
33
|
/**
|
|
28
34
|
* Look for the search form
|
|
@@ -35,7 +41,9 @@ class ActorQuerySourceIdentifyHypermediaQpf extends bus_query_source_identify_hy
|
|
|
35
41
|
return { source, dataset: source.searchForm.dataset };
|
|
36
42
|
}
|
|
37
43
|
async createSource(url, metadata, context, bindingsRestricted, quads) {
|
|
38
|
-
|
|
44
|
+
const dataFactory = context.getSafe(context_entries_1.KeysInitQuery.dataFactory);
|
|
45
|
+
const algebraFactory = new sparqlalgebrajs_1.Factory(dataFactory);
|
|
46
|
+
return new QuerySourceQpf_1.QuerySourceQpf(this.mediatorMetadata, this.mediatorMetadataExtract, this.mediatorDereferenceRdf, dataFactory, algebraFactory, await utils_bindings_factory_1.BindingsFactory.create(this.mediatorMergeBindingsContext, context, dataFactory), this.subjectUri, this.predicateUri, this.objectUri, this.graphUri, url, metadata, bindingsRestricted, quads);
|
|
39
47
|
}
|
|
40
48
|
}
|
|
41
49
|
exports.ActorQuerySourceIdentifyHypermediaQpf = ActorQuerySourceIdentifyHypermediaQpf;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActorQuerySourceIdentifyHypermediaQpf.js","sourceRoot":"","sources":["ActorQuerySourceIdentifyHypermediaQpf.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ActorQuerySourceIdentifyHypermediaQpf.js","sourceRoot":"","sources":["ActorQuerySourceIdentifyHypermediaQpf.ts"],"names":[],"mappings":";;;AAQA,yGAEwD;AAGxD,+DAA0D;AAE1D,yCAAoD;AAEpD,6EAAmE;AAEnE,qDAA0C;AAC1C,qDAAkD;AAElD;;GAEG;AACH,MAAa,qCAAsC,SAAQ,yEAAkC;IAU3F,YAAmB,IAAgD;QACjE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrB,CAAC;IAEe,KAAK,CAAC,IAAI,CACxB,MAA4C;QAE5C,IAAI,MAAM,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,eAAe,KAAK,KAAK,IAAI,MAAM,CAAC,eAAe,KAAK,OAAO,CAAC,EAAE,CAAC;YACvG,OAAO,IAAA,eAAQ,EAAC,SAAS,IAAI,CAAC,IAAI,sCAAsC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;QACrG,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,MAA4C;QAE5C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAC5C,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,eAAe,KAAK,OAAO,CACnC,CAAC;QACF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAA,eAAQ,EAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzE,OAAO,IAAA,eAAQ,EAAC,SAAS,IAAI,CAAC,IAAI,2DAA2D,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,IAAA,eAAQ,EAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,GAAG,CAAC,MAA4C;QAC3D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,6BAA6B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CACpC,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,eAAe,KAAK,OAAO,EAClC,MAAM,CAAC,KAAK,CACb,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC;IAES,KAAK,CAAC,YAAY,CAC1B,GAAW,EACX,QAA6B,EAC7B,OAAuB,EACvB,kBAA2B,EAC3B,KAAkB;QAElB,MAAM,WAAW,GAAwB,OAAO,CAAC,OAAO,CAAC,+BAAa,CAAC,WAAW,CAAC,CAAC;QACpF,MAAM,cAAc,GAAG,IAAI,yBAAO,CAAC,WAAW,CAAC,CAAC;QAChD,OAAO,IAAI,+BAAc,CACvB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,sBAAsB,EAC3B,WAAW,EACX,cAAc,EACd,MAAM,wCAAe,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,OAAO,EAAE,WAAW,CAAC,EACrF,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,GAAG,EACH,QAAQ,EACR,kBAAkB,EAClB,KAAK,CACN,CAAC;IACJ,CAAC;CACF;AApFD,sFAoFC","sourcesContent":["import type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport type { MediatorMergeBindingsContext } from '@comunica/bus-merge-bindings-context';\nimport type {\n IActionQuerySourceIdentifyHypermedia,\n IActorQuerySourceIdentifyHypermediaOutput,\n IActorQuerySourceIdentifyHypermediaArgs,\n IActorQuerySourceIdentifyHypermediaTest,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport {\n ActorQuerySourceIdentifyHypermedia,\n} from '@comunica/bus-query-source-identify-hypermedia';\nimport type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport { KeysInitQuery } from '@comunica/context-entries';\nimport type { TestResult } from '@comunica/core';\nimport { failTest, passTest } from '@comunica/core';\nimport type { ComunicaDataFactory, IActionContext } from '@comunica/types';\nimport { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport type * as RDF from '@rdfjs/types';\nimport { Factory } from 'sparqlalgebrajs';\nimport { QuerySourceQpf } from './QuerySourceQpf';\n\n/**\n * A comunica QPF Query Source Identify Hypermedia Actor.\n */\nexport class ActorQuerySourceIdentifyHypermediaQpf extends ActorQuerySourceIdentifyHypermedia\n implements IActorQuerySourceIdentifyHypermediaQpfArgs {\n public readonly mediatorMetadata: MediatorRdfMetadata;\n public readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n public readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n public readonly mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n public readonly subjectUri: string;\n public readonly predicateUri: string;\n public readonly objectUri: string;\n public readonly graphUri?: string;\n public constructor(args: IActorQuerySourceIdentifyHypermediaQpfArgs) {\n super(args, 'qpf');\n }\n\n public override async test(\n action: IActionQuerySourceIdentifyHypermedia,\n ): Promise<TestResult<IActorQuerySourceIdentifyHypermediaTest>> {\n if (action.forceSourceType && (action.forceSourceType !== 'qpf' && action.forceSourceType !== 'brtpf')) {\n return failTest(`Actor ${this.name} is not able to handle source type ${action.forceSourceType}.`);\n }\n return this.testMetadata(action);\n }\n\n public async testMetadata(\n action: IActionQuerySourceIdentifyHypermedia,\n ): Promise<TestResult<IActorQuerySourceIdentifyHypermediaTest>> {\n const { searchForm } = await this.createSource(\n action.url,\n action.metadata,\n action.context,\n action.forceSourceType === 'brtpf',\n );\n if (!searchForm) {\n return failTest('Illegal state: found no TPF/QPF search form anymore in metadata.');\n }\n if (action.handledDatasets && action.handledDatasets[searchForm.dataset]) {\n return failTest(`Actor ${this.name} can only be applied for the first page of a QPF dataset.`);\n }\n return passTest({ filterFactor: 1 });\n }\n\n /**\n * Look for the search form\n * @param {IActionRdfResolveHypermedia} action the metadata to look for the form.\n * @return {Promise<IActorRdfResolveHypermediaOutput>} A promise resolving to a hypermedia form.\n */\n public async run(action: IActionQuerySourceIdentifyHypermedia): Promise<IActorQuerySourceIdentifyHypermediaOutput> {\n this.logInfo(action.context, `Identified as qpf source: ${action.url}`);\n const source = await this.createSource(\n action.url,\n action.metadata,\n action.context,\n action.forceSourceType === 'brtpf',\n action.quads,\n );\n return { source, dataset: source.searchForm.dataset };\n }\n\n protected async createSource(\n url: string,\n metadata: Record<string, any>,\n context: IActionContext,\n bindingsRestricted: boolean,\n quads?: RDF.Stream,\n ): Promise<QuerySourceQpf> {\n const dataFactory: ComunicaDataFactory = context.getSafe(KeysInitQuery.dataFactory);\n const algebraFactory = new Factory(dataFactory);\n return new QuerySourceQpf(\n this.mediatorMetadata,\n this.mediatorMetadataExtract,\n this.mediatorDereferenceRdf,\n dataFactory,\n algebraFactory,\n await BindingsFactory.create(this.mediatorMergeBindingsContext, context, dataFactory),\n this.subjectUri,\n this.predicateUri,\n this.objectUri,\n this.graphUri,\n url,\n metadata,\n bindingsRestricted,\n quads,\n );\n }\n}\n\nexport interface IActorQuerySourceIdentifyHypermediaQpfArgs extends IActorQuerySourceIdentifyHypermediaArgs {\n /**\n * The metadata mediator\n */\n mediatorMetadata: MediatorRdfMetadata;\n /**\n * The metadata extract mediator\n */\n mediatorMetadataExtract: MediatorRdfMetadataExtract;\n /**\n * The RDF dereference mediator\n */\n mediatorDereferenceRdf: MediatorDereferenceRdf;\n /**\n * A mediator for creating binding context merge handlers\n */\n mediatorMergeBindingsContext: MediatorMergeBindingsContext;\n /**\n * The URI that should be interpreted as subject URI\n * @default {http://www.w3.org/1999/02/22-rdf-syntax-ns#subject}\n */\n subjectUri: string;\n /**\n * The URI that should be interpreted as predicate URI\n * @default {http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate}\n */\n predicateUri: string;\n /**\n * The URI that should be interpreted as object URI\n * @default {http://www.w3.org/1999/02/22-rdf-syntax-ns#object}\n */\n objectUri: string;\n /**\n * The URI that should be interpreted as graph URI\n * @default {http://www.w3.org/ns/sparql-service-description#graph}\n */\n graphUri?: string;\n}\n"]}
|
package/lib/QuerySourceQpf.d.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import type { ISearchForm } from '@comunica/actor-rdf-metadata-extract-hydra-controls';
|
|
2
|
-
import type { BindingsFactory } from '@comunica/bindings-factory';
|
|
3
2
|
import type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';
|
|
4
3
|
import type { MediatorRdfMetadata } from '@comunica/bus-rdf-metadata';
|
|
5
4
|
import type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';
|
|
6
|
-
import type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape, IQueryBindingsOptions, MetadataBindings } from '@comunica/types';
|
|
5
|
+
import type { IQuerySource, BindingsStream, IActionContext, FragmentSelectorShape, IQueryBindingsOptions, MetadataBindings, ComunicaDataFactory } from '@comunica/types';
|
|
6
|
+
import type { BindingsFactory } from '@comunica/utils-bindings-factory';
|
|
7
7
|
import type * as RDF from '@rdfjs/types';
|
|
8
8
|
import type { AsyncIterator } from 'asynciterator';
|
|
9
|
-
import type { Algebra } from 'sparqlalgebrajs';
|
|
9
|
+
import type { Algebra, Factory } from 'sparqlalgebrajs';
|
|
10
10
|
export declare class QuerySourceQpf implements IQuerySource {
|
|
11
|
-
protected
|
|
12
|
-
protected static readonly SELECTOR_SHAPE_BR: FragmentSelectorShape;
|
|
11
|
+
protected readonly selectorShape: FragmentSelectorShape;
|
|
13
12
|
readonly searchForm: ISearchForm;
|
|
14
13
|
private readonly mediatorMetadata;
|
|
15
14
|
private readonly mediatorMetadataExtract;
|
|
16
15
|
private readonly mediatorDereferenceRdf;
|
|
16
|
+
private readonly dataFactory;
|
|
17
|
+
private readonly algebraFactory;
|
|
17
18
|
private readonly bindingsFactory;
|
|
18
19
|
readonly referenceValue: string;
|
|
19
20
|
private readonly subjectUri;
|
|
@@ -24,7 +25,7 @@ export declare class QuerySourceQpf implements IQuerySource {
|
|
|
24
25
|
private readonly defaultGraph?;
|
|
25
26
|
private readonly bindingsRestricted;
|
|
26
27
|
private readonly cachedQuads;
|
|
27
|
-
constructor(mediatorMetadata: MediatorRdfMetadata, mediatorMetadataExtract: MediatorRdfMetadataExtract, mediatorDereferenceRdf: MediatorDereferenceRdf, bindingsFactory: BindingsFactory, subjectUri: string, predicateUri: string, objectUri: string, graphUri: string | undefined, url: string, metadata: Record<string, any>, bindingsRestricted: boolean, initialQuads?: RDF.Stream);
|
|
28
|
+
constructor(mediatorMetadata: MediatorRdfMetadata, mediatorMetadataExtract: MediatorRdfMetadataExtract, mediatorDereferenceRdf: MediatorDereferenceRdf, dataFactory: ComunicaDataFactory, algebraFactory: Factory, bindingsFactory: BindingsFactory, subjectUri: string, predicateUri: string, objectUri: string, graphUri: string | undefined, url: string, metadata: Record<string, any>, bindingsRestricted: boolean, initialQuads?: RDF.Stream);
|
|
28
29
|
getSelectorShape(): Promise<FragmentSelectorShape>;
|
|
29
30
|
queryBindings(operation: Algebra.Operation, context: IActionContext, options?: IQueryBindingsOptions): BindingsStream;
|
|
30
31
|
/**
|
package/lib/QuerySourceQpf.js
CHANGED
|
@@ -3,21 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.QuerySourceQpf = void 0;
|
|
4
4
|
const bus_query_source_identify_1 = require("@comunica/bus-query-source-identify");
|
|
5
5
|
const context_entries_1 = require("@comunica/context-entries");
|
|
6
|
-
const
|
|
6
|
+
const utils_metadata_1 = require("@comunica/utils-metadata");
|
|
7
7
|
const asynciterator_1 = require("asynciterator");
|
|
8
|
-
const rdf_data_factory_1 = require("rdf-data-factory");
|
|
9
8
|
const rdf_string_1 = require("rdf-string");
|
|
10
9
|
const rdf_string_ttl_1 = require("rdf-string-ttl");
|
|
11
10
|
const rdf_terms_1 = require("rdf-terms");
|
|
12
|
-
const sparqlalgebrajs_1 = require("sparqlalgebrajs");
|
|
13
|
-
const AF = new sparqlalgebrajs_1.Factory();
|
|
14
|
-
const DF = new rdf_data_factory_1.DataFactory();
|
|
15
11
|
class QuerySourceQpf {
|
|
16
|
-
constructor(mediatorMetadata, mediatorMetadataExtract, mediatorDereferenceRdf, bindingsFactory, subjectUri, predicateUri, objectUri, graphUri, url, metadata, bindingsRestricted, initialQuads) {
|
|
12
|
+
constructor(mediatorMetadata, mediatorMetadataExtract, mediatorDereferenceRdf, dataFactory, algebraFactory, bindingsFactory, subjectUri, predicateUri, objectUri, graphUri, url, metadata, bindingsRestricted, initialQuads) {
|
|
17
13
|
this.referenceValue = url;
|
|
18
14
|
this.mediatorMetadata = mediatorMetadata;
|
|
19
15
|
this.mediatorMetadataExtract = mediatorMetadataExtract;
|
|
20
16
|
this.mediatorDereferenceRdf = mediatorDereferenceRdf;
|
|
17
|
+
this.dataFactory = dataFactory;
|
|
18
|
+
this.algebraFactory = algebraFactory;
|
|
21
19
|
this.bindingsFactory = bindingsFactory;
|
|
22
20
|
this.subjectUri = subjectUri;
|
|
23
21
|
this.predicateUri = predicateUri;
|
|
@@ -26,24 +24,48 @@ class QuerySourceQpf {
|
|
|
26
24
|
this.url = url;
|
|
27
25
|
this.bindingsRestricted = bindingsRestricted;
|
|
28
26
|
this.cachedQuads = {};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
throw new Error('Illegal state: found no TPF/QPF search form anymore in metadata.');
|
|
32
|
-
}
|
|
33
|
-
this.searchForm = searchForm;
|
|
34
|
-
this.defaultGraph = metadata.defaultGraph ? DF.namedNode(metadata.defaultGraph) : undefined;
|
|
27
|
+
this.searchForm = this.getSearchForm(metadata);
|
|
28
|
+
this.defaultGraph = metadata.defaultGraph ? this.dataFactory.namedNode(metadata.defaultGraph) : undefined;
|
|
35
29
|
if (initialQuads) {
|
|
36
30
|
let wrappedQuads = (0, asynciterator_1.wrap)(initialQuads);
|
|
37
31
|
if (this.defaultGraph) {
|
|
38
32
|
wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);
|
|
39
33
|
}
|
|
40
|
-
metadata = { ...metadata, state: new
|
|
34
|
+
metadata = { ...metadata, state: new utils_metadata_1.MetadataValidationState() };
|
|
41
35
|
wrappedQuads.setProperty('metadata', metadata);
|
|
42
|
-
this.cacheQuads(wrappedQuads,
|
|
36
|
+
this.cacheQuads(wrappedQuads, this.dataFactory.variable(''), this.dataFactory.variable(''), this.dataFactory.variable(''), this.dataFactory.variable(''));
|
|
43
37
|
}
|
|
38
|
+
this.selectorShape = this.bindingsRestricted ?
|
|
39
|
+
{
|
|
40
|
+
type: 'operation',
|
|
41
|
+
operation: {
|
|
42
|
+
operationType: 'pattern',
|
|
43
|
+
pattern: this.algebraFactory.createPattern(this.dataFactory.variable('s'), this.dataFactory.variable('p'), this.dataFactory.variable('o'), this.dataFactory.variable('g')),
|
|
44
|
+
},
|
|
45
|
+
variablesOptional: [
|
|
46
|
+
this.dataFactory.variable('s'),
|
|
47
|
+
this.dataFactory.variable('p'),
|
|
48
|
+
this.dataFactory.variable('o'),
|
|
49
|
+
this.dataFactory.variable('g'),
|
|
50
|
+
],
|
|
51
|
+
filterBindings: true,
|
|
52
|
+
} :
|
|
53
|
+
{
|
|
54
|
+
type: 'operation',
|
|
55
|
+
operation: {
|
|
56
|
+
operationType: 'pattern',
|
|
57
|
+
pattern: this.algebraFactory.createPattern(this.dataFactory.variable('s'), this.dataFactory.variable('p'), this.dataFactory.variable('o'), this.dataFactory.variable('g')),
|
|
58
|
+
},
|
|
59
|
+
variablesOptional: [
|
|
60
|
+
this.dataFactory.variable('s'),
|
|
61
|
+
this.dataFactory.variable('p'),
|
|
62
|
+
this.dataFactory.variable('o'),
|
|
63
|
+
this.dataFactory.variable('g'),
|
|
64
|
+
],
|
|
65
|
+
};
|
|
44
66
|
}
|
|
45
67
|
async getSelectorShape() {
|
|
46
|
-
return this.
|
|
68
|
+
return this.selectorShape;
|
|
47
69
|
}
|
|
48
70
|
queryBindings(operation, context, options) {
|
|
49
71
|
if (operation.type !== 'pattern') {
|
|
@@ -53,7 +75,7 @@ class QuerySourceQpf {
|
|
|
53
75
|
// Create an async iterator from the matched quad stream
|
|
54
76
|
let it = this.match(operation.subject, operation.predicate, operation.object, operation.graph, unionDefaultGraph, context, options);
|
|
55
77
|
it = (0, bus_query_source_identify_1.filterMatchingQuotedQuads)(operation, it);
|
|
56
|
-
return (0, bus_query_source_identify_1.quadsToBindings)(it, operation, this.bindingsFactory, unionDefaultGraph);
|
|
78
|
+
return (0, bus_query_source_identify_1.quadsToBindings)(it, operation, this.dataFactory, this.bindingsFactory, unionDefaultGraph);
|
|
57
79
|
}
|
|
58
80
|
/**
|
|
59
81
|
* Get a first QPF search form.
|
|
@@ -123,26 +145,25 @@ class QuerySourceQpf {
|
|
|
123
145
|
// If the sd:defaultGraph is not declared on a QPF endpoint
|
|
124
146
|
if (unionDefaultGraph) {
|
|
125
147
|
// With union-default-graph, take union of graphs.
|
|
126
|
-
graph =
|
|
148
|
+
graph = this.dataFactory.variable('g');
|
|
127
149
|
}
|
|
128
150
|
else {
|
|
129
151
|
// Without union-default-graph, the default graph must be empty.
|
|
130
152
|
const quads = new asynciterator_1.ArrayIterator([], { autoStart: false });
|
|
131
153
|
quads.setProperty('metadata', {
|
|
132
|
-
state: new
|
|
154
|
+
state: new utils_metadata_1.MetadataValidationState(),
|
|
133
155
|
requestTime: 0,
|
|
134
156
|
cardinality: { type: 'exact', value: 0 },
|
|
135
157
|
first: null,
|
|
136
158
|
next: null,
|
|
137
159
|
last: null,
|
|
138
|
-
canContainUndefs: false,
|
|
139
160
|
});
|
|
140
161
|
return quads;
|
|
141
162
|
}
|
|
142
163
|
}
|
|
143
164
|
else if (Object.keys(this.searchForm.mappings).length === 3) {
|
|
144
165
|
// If have a TPF endpoint, set graph to variable so we could get the cached triples
|
|
145
|
-
graph =
|
|
166
|
+
graph = this.dataFactory.variable('g');
|
|
146
167
|
}
|
|
147
168
|
}
|
|
148
169
|
// Try to emit from cache (skip if filtering bindings)
|
|
@@ -174,7 +195,7 @@ class QuerySourceQpf {
|
|
|
174
195
|
metadata: rdfMetadataOuput.metadata,
|
|
175
196
|
requestTime: dereferenceRdfOutput.requestTime,
|
|
176
197
|
});
|
|
177
|
-
quads.setProperty('metadata', { ...metadata, state: new
|
|
198
|
+
quads.setProperty('metadata', { ...metadata, state: new utils_metadata_1.MetadataValidationState(), subsetOf: self.url });
|
|
178
199
|
// While we could resolve this before metadata extraction, we do it afterwards to ensure metadata emission
|
|
179
200
|
// before the end event is emitted.
|
|
180
201
|
return rdfMetadataOuput.data;
|
|
@@ -184,7 +205,7 @@ class QuerySourceQpf {
|
|
|
184
205
|
// The server is free to send any data in its response (such as metadata),
|
|
185
206
|
// including quads that do not match the given matter.
|
|
186
207
|
// Therefore, we have to filter away all non-matching quads here.
|
|
187
|
-
const actualDefaultGraph =
|
|
208
|
+
const actualDefaultGraph = this.dataFactory.defaultGraph();
|
|
188
209
|
let filteredOutput = (0, asynciterator_1.wrap)(dataStream)
|
|
189
210
|
.transform({
|
|
190
211
|
filter(quad) {
|
|
@@ -228,7 +249,7 @@ class QuerySourceQpf {
|
|
|
228
249
|
for (const binding of await filterBindings.bindings.toArray()) {
|
|
229
250
|
const value = ['('];
|
|
230
251
|
for (const variable of filterBindings.metadata.variables) {
|
|
231
|
-
const term = binding.get(variable);
|
|
252
|
+
const term = binding.get(variable.variable);
|
|
232
253
|
value.push(term ? (0, rdf_string_ttl_1.termToString)(term) : 'UNDEF');
|
|
233
254
|
value.push(' ');
|
|
234
255
|
}
|
|
@@ -241,11 +262,11 @@ class QuerySourceQpf {
|
|
|
241
262
|
values.push('(<ex:comunica:unknown>)');
|
|
242
263
|
}
|
|
243
264
|
// Append to URL (brTPF uses the SPARQL VALUES syntax, without the VALUES prefix)
|
|
244
|
-
const valuesUrl = encodeURIComponent(`(${filterBindings.metadata.variables.map(variable => `?${variable.value}`).join(' ')}) { ${values.join(' ')} }`);
|
|
265
|
+
const valuesUrl = encodeURIComponent(`(${filterBindings.metadata.variables.map(variable => `?${variable.variable.value}`).join(' ')}) { ${values.join(' ')} }`);
|
|
245
266
|
return `${url}&values=${valuesUrl}`;
|
|
246
267
|
}
|
|
247
268
|
reverseMapQuadsToDefaultGraph(quads) {
|
|
248
|
-
const actualDefaultGraph =
|
|
269
|
+
const actualDefaultGraph = this.dataFactory.defaultGraph();
|
|
249
270
|
return quads.map(quad => (0, rdf_terms_1.mapTerms)(quad, (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term));
|
|
250
271
|
}
|
|
251
272
|
getPatternId(subject, predicate, object, graph) {
|
|
@@ -278,33 +299,6 @@ class QuerySourceQpf {
|
|
|
278
299
|
}
|
|
279
300
|
}
|
|
280
301
|
exports.QuerySourceQpf = QuerySourceQpf;
|
|
281
|
-
QuerySourceQpf.SELECTOR_SHAPE = {
|
|
282
|
-
type: 'operation',
|
|
283
|
-
operation: {
|
|
284
|
-
operationType: 'pattern',
|
|
285
|
-
pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), DF.variable('g')),
|
|
286
|
-
},
|
|
287
|
-
variablesOptional: [
|
|
288
|
-
DF.variable('s'),
|
|
289
|
-
DF.variable('p'),
|
|
290
|
-
DF.variable('o'),
|
|
291
|
-
DF.variable('g'),
|
|
292
|
-
],
|
|
293
|
-
};
|
|
294
|
-
QuerySourceQpf.SELECTOR_SHAPE_BR = {
|
|
295
|
-
type: 'operation',
|
|
296
|
-
operation: {
|
|
297
|
-
operationType: 'pattern',
|
|
298
|
-
pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), DF.variable('g')),
|
|
299
|
-
},
|
|
300
|
-
variablesOptional: [
|
|
301
|
-
DF.variable('s'),
|
|
302
|
-
DF.variable('p'),
|
|
303
|
-
DF.variable('o'),
|
|
304
|
-
DF.variable('g'),
|
|
305
|
-
],
|
|
306
|
-
filterBindings: true,
|
|
307
|
-
};
|
|
308
302
|
function _termToString(term) {
|
|
309
303
|
return term.termType === 'DefaultGraph' ?
|
|
310
304
|
// Any character that cannot be present in a URL will do
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuerySourceQpf.js","sourceRoot":"","sources":["QuerySourceQpf.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ISearchForm } from '@comunica/actor-rdf-metadata-extract-hydra-controls';\nimport type { BindingsFactory } from '@comunica/bindings-factory';\nimport type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfMetadata, IActorRdfMetadataOutput } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport { MetadataValidationState } from '@comunica/metadata';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n IQueryBindingsOptions,\n MetadataBindings,\n} from '@comunica/types';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, TransformIterator, wrap } from 'asynciterator';\nimport { DataFactory } from 'rdf-data-factory';\nimport { termToString } from 'rdf-string';\nimport { termToString as termToStringTtl } from 'rdf-string-ttl';\nimport {\n everyTermsNested,\n mapTerms,\n matchPattern,\n} from 'rdf-terms';\nimport type { Algebra } from 'sparqlalgebrajs';\nimport { Factory } from 'sparqlalgebrajs';\n\nconst AF = new Factory();\nconst DF = new DataFactory<RDF.BaseQuad>();\n\nexport class QuerySourceQpf implements IQuerySource {\n protected static readonly SELECTOR_SHAPE: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), DF.variable('g')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n DF.variable('g'),\n ],\n };\n\n protected static readonly SELECTOR_SHAPE_BR: FragmentSelectorShape = {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: AF.createPattern(DF.variable('s'), DF.variable('p'), DF.variable('o'), DF.variable('g')),\n },\n variablesOptional: [\n DF.variable('s'),\n DF.variable('p'),\n DF.variable('o'),\n DF.variable('g'),\n ],\n filterBindings: true,\n };\n\n public readonly searchForm: ISearchForm;\n\n private readonly mediatorMetadata: MediatorRdfMetadata;\n private readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n private readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n private readonly bindingsFactory: BindingsFactory;\n\n public readonly referenceValue: string;\n private readonly subjectUri: string;\n private readonly predicateUri: string;\n private readonly objectUri: string;\n private readonly graphUri?: string;\n private readonly url: string;\n private readonly defaultGraph?: RDF.NamedNode;\n private readonly bindingsRestricted: boolean;\n private readonly cachedQuads: Record<string, AsyncIterator<RDF.Quad>>;\n\n public constructor(\n mediatorMetadata: MediatorRdfMetadata,\n mediatorMetadataExtract: MediatorRdfMetadataExtract,\n mediatorDereferenceRdf: MediatorDereferenceRdf,\n bindingsFactory: BindingsFactory,\n subjectUri: string,\n predicateUri: string,\n objectUri: string,\n graphUri: string | undefined,\n url: string,\n metadata: Record<string, any>,\n bindingsRestricted: boolean,\n initialQuads?: RDF.Stream,\n ) {\n this.referenceValue = url;\n this.mediatorMetadata = mediatorMetadata;\n this.mediatorMetadataExtract = mediatorMetadataExtract;\n this.mediatorDereferenceRdf = mediatorDereferenceRdf;\n this.bindingsFactory = bindingsFactory;\n this.subjectUri = subjectUri;\n this.predicateUri = predicateUri;\n this.objectUri = objectUri;\n this.graphUri = graphUri;\n this.url = url;\n this.bindingsRestricted = bindingsRestricted;\n this.cachedQuads = {};\n const searchForm = this.getSearchForm(metadata);\n if (!searchForm) {\n throw new Error('Illegal state: found no TPF/QPF search form anymore in metadata.');\n }\n this.searchForm = searchForm;\n this.defaultGraph = metadata.defaultGraph ? DF.namedNode(metadata.defaultGraph) : undefined;\n if (initialQuads) {\n let wrappedQuads: AsyncIterator<RDF.Quad> = wrap<RDF.Quad>(initialQuads);\n if (this.defaultGraph) {\n wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);\n }\n metadata = { ...metadata, state: new MetadataValidationState() };\n wrappedQuads.setProperty('metadata', metadata);\n this.cacheQuads(wrappedQuads, DF.variable(''), DF.variable(''), DF.variable(''), DF.variable(''));\n }\n }\n\n public async getSelectorShape(): Promise<FragmentSelectorShape> {\n return this.bindingsRestricted ? QuerySourceQpf.SELECTOR_SHAPE_BR : QuerySourceQpf.SELECTOR_SHAPE;\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceQpf`);\n }\n\n const unionDefaultGraph = Boolean(context.get(KeysQueryOperation.unionDefaultGraph));\n\n // Create an async iterator from the matched quad stream\n let it = this.match(\n operation.subject,\n operation.predicate,\n operation.object,\n operation.graph,\n unionDefaultGraph,\n context,\n options,\n );\n\n it = filterMatchingQuotedQuads(operation, it);\n return quadsToBindings(it, operation, this.bindingsFactory, unionDefaultGraph);\n }\n\n /**\n * Get a first QPF search form.\n * @param {{[p: string]: any}} metadata A metadata object.\n * @return {ISearchForm} A search form, or null if none could be found.\n */\n public getSearchForm(metadata: Record<string, any>): ISearchForm | undefined {\n if (!metadata.searchForms || !metadata.searchForms.values) {\n return;\n }\n\n // Find a quad pattern or triple pattern search form\n const { searchForms } = metadata;\n for (const searchForm of searchForms.values) {\n if (this.graphUri &&\n this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n this.graphUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 4) {\n return searchForm;\n }\n if (this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 3) {\n return searchForm;\n }\n }\n }\n\n /**\n * Create a QPF fragment IRI for the given quad pattern.\n * @param {ISearchForm} searchForm A search form.\n * @param {Term} subject A term.\n * @param {Term} predicate A term.\n * @param {Term} object A term.\n * @param {Term} graph A term.\n * @return {string} A URI.\n */\n public createFragmentUri(\n searchForm: ISearchForm,\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n ): string {\n const entries: Record<string, string> = {};\n const input = [\n { uri: this.subjectUri, term: subject },\n { uri: this.predicateUri, term: predicate },\n { uri: this.objectUri, term: object },\n { uri: this.graphUri, term: graph },\n ];\n for (const entry of input) {\n // If bindingsRestricted, also pass variables, so the server knows how to bind values.\n if (entry.uri && (this.bindingsRestricted || (entry.term.termType !== 'Variable' &&\n (entry.term.termType !== 'Quad' || everyTermsNested(entry.term, value => value.termType !== 'Variable'))))) {\n entries[entry.uri] = termToString(entry.term);\n }\n }\n return searchForm.getUri(entries);\n }\n\n protected match(\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n unionDefaultGraph: boolean,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): AsyncIterator<RDF.Quad> {\n // If we are querying the default graph,\n // and the source has an overridden value for the default graph (such as QPF can provide),\n // we override the graph parameter with that value.\n let modifiedGraph = false;\n if (graph.termType === 'DefaultGraph') {\n if (this.defaultGraph) {\n modifiedGraph = true;\n graph = this.defaultGraph;\n } else if (Object.keys(this.searchForm.mappings).length === 4 && !this.defaultGraph) {\n // If the sd:defaultGraph is not declared on a QPF endpoint\n if (unionDefaultGraph) {\n // With union-default-graph, take union of graphs.\n graph = DF.variable('g');\n } else {\n // Without union-default-graph, the default graph must be empty.\n const quads = new ArrayIterator<RDF.Quad>([], { autoStart: false });\n quads.setProperty('metadata', {\n state: new MetadataValidationState(),\n requestTime: 0,\n cardinality: { type: 'exact', value: 0 },\n first: null,\n next: null,\n last: null,\n canContainUndefs: false,\n });\n return quads;\n }\n } else if (Object.keys(this.searchForm.mappings).length === 3) {\n // If have a TPF endpoint, set graph to variable so we could get the cached triples\n graph = DF.variable('g');\n }\n }\n\n // Try to emit from cache (skip if filtering bindings)\n if (!options?.filterBindings) {\n const cached = this.getCachedQuads(subject, predicate, object, graph);\n if (cached) {\n return cached;\n }\n }\n\n // Kickstart metadata collection, because the quads iterator is lazy\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n let quads: AsyncIterator<RDF.Quad>;\n const dataStreamPromise = (async function() {\n let url: string = self.createFragmentUri(self.searchForm, subject, predicate, object, graph);\n\n // Handle bindings-restricted interfaces\n if (options?.filterBindings) {\n url = await self.getBindingsRestrictedLink(\n subject,\n predicate,\n object,\n graph,\n url,\n options.filterBindings,\n );\n }\n\n const dereferenceRdfOutput = await self.mediatorDereferenceRdf.mediate({ context, url });\n url = dereferenceRdfOutput.url;\n\n // Determine the metadata\n const rdfMetadataOuput: IActorRdfMetadataOutput = await self.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n // Extract the metadata\n const { metadata } = await self.mediatorMetadataExtract\n .mediate({\n context,\n url,\n metadata: rdfMetadataOuput.metadata,\n requestTime: dereferenceRdfOutput.requestTime,\n });\n quads!.setProperty(\n 'metadata',\n { ...metadata, state: new MetadataValidationState(), canContainUndefs: false, subsetOf: self.url },\n );\n\n // While we could resolve this before metadata extraction, we do it afterwards to ensure metadata emission\n // before the end event is emitted.\n return rdfMetadataOuput.data;\n })();\n\n quads = new TransformIterator(async() => {\n const dataStream = await dataStreamPromise;\n\n // The server is free to send any data in its response (such as metadata),\n // including quads that do not match the given matter.\n // Therefore, we have to filter away all non-matching quads here.\n const actualDefaultGraph = DF.defaultGraph();\n let filteredOutput: AsyncIterator<RDF.Quad> = wrap<RDF.Quad>(dataStream)\n .transform({\n filter(quad: RDF.Quad) {\n if (matchPattern(quad, subject, predicate, object, graph)) {\n return true;\n }\n // Special case: if we are querying in the default graph, and we had an overridden default graph,\n // also accept that incoming triples may be defined in the actual default graph\n return modifiedGraph && matchPattern(quad, subject, predicate, object, actualDefaultGraph);\n },\n });\n if (modifiedGraph || graph.termType === 'Variable') {\n // Reverse-map the overridden default graph back to the actual default graph\n filteredOutput = this.reverseMapQuadsToDefaultGraph(filteredOutput);\n }\n\n return filteredOutput;\n }, { autoStart: false });\n\n // Skip cache if filtering bindings\n if (options?.filterBindings) {\n return quads;\n }\n\n this.cacheQuads(quads, subject, predicate, object, graph);\n return this.getCachedQuads(subject, predicate, object, graph)!;\n }\n\n /**\n * If we add bindings for brTPF, append it to the URL.\n * We have to hardcode this because brTPF doesn't expose a URL template for passing bindings.\n * @param subject The subject.\n * @param predicate The predicate.\n * @param object The object.\n * @param graph The graph.\n * @param url The original QPF URL.\n * @param filterBindings The bindings to restrict with.\n * @param filterBindings.bindings The bindings stream.\n * @param filterBindings.metadata The bindings metadata.\n * @protected\n */\n public async getBindingsRestrictedLink(\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n url: string,\n filterBindings: { bindings: BindingsStream; metadata: MetadataBindings },\n ): Promise<string> {\n // Determine values\n const values: string[] = [];\n for (const binding of await filterBindings.bindings.toArray()) {\n const value: string[] = [ '(' ];\n for (const variable of filterBindings.metadata.variables) {\n const term = binding.get(variable);\n value.push(term ? termToStringTtl(term) : 'UNDEF');\n value.push(' ');\n }\n value.push(')');\n values.push(value.join(''));\n }\n\n if (values.length === 0) {\n // This is a hack to force an empty result page,\n // because the brTPF server returns a server error when passing 0 bindings.\n values.push('(<ex:comunica:unknown>)');\n }\n\n // Append to URL (brTPF uses the SPARQL VALUES syntax, without the VALUES prefix)\n const valuesUrl = encodeURIComponent(`(${filterBindings.metadata.variables.map(variable => `?${variable.value}`).join(' ')}) { ${values.join(' ')} }`);\n return `${url}&values=${valuesUrl}`;\n }\n\n protected reverseMapQuadsToDefaultGraph(quads: AsyncIterator<RDF.Quad>): AsyncIterator<RDF.Quad> {\n const actualDefaultGraph = DF.defaultGraph();\n return quads.map(\n quad => mapTerms(\n quad,\n (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term,\n ),\n );\n }\n\n public getPatternId(subject: RDF.Term, predicate: RDF.Term, object: RDF.Term, graph: RDF.Term): string {\n return JSON.stringify({\n s: subject.termType === 'Variable' ? '' : _termToString(subject),\n p: predicate.termType === 'Variable' ? '' : _termToString(predicate),\n o: object.termType === 'Variable' ? '' : _termToString(object),\n g: graph.termType === 'Variable' ? '' : _termToString(graph),\n });\n }\n\n protected cacheQuads(\n quads: AsyncIterator<RDF.Quad>,\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n ): void {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n this.cachedQuads[patternId] = quads.clone();\n }\n\n protected getCachedQuads(subject: RDF.Term, predicate: RDF.Term, object: RDF.Term, graph: RDF.Term):\n AsyncIterator<RDF.Quad> | undefined {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n const quads = this.cachedQuads[patternId];\n if (quads) {\n return quads.clone();\n }\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator<RDF.Quad> {\n throw new Error('queryQuads is not implemented in QuerySourceQpf');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise<boolean> {\n throw new Error('queryBoolean is not implemented in QuerySourceQpf');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise<void> {\n throw new Error('queryVoid is not implemented in QuerySourceQpf');\n }\n}\n\nfunction _termToString(term: RDF.Term): string {\n return term.termType === 'DefaultGraph' ?\n // Any character that cannot be present in a URL will do\n '|' :\n termToString(term);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"QuerySourceQpf.js","sourceRoot":"","sources":["QuerySourceQpf.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ISearchForm } from '@comunica/actor-rdf-metadata-extract-hydra-controls';\nimport type { MediatorDereferenceRdf } from '@comunica/bus-dereference-rdf';\nimport { filterMatchingQuotedQuads, quadsToBindings } from '@comunica/bus-query-source-identify';\nimport type { MediatorRdfMetadata, IActorRdfMetadataOutput } from '@comunica/bus-rdf-metadata';\nimport type { MediatorRdfMetadataExtract } from '@comunica/bus-rdf-metadata-extract';\nimport { KeysQueryOperation } from '@comunica/context-entries';\nimport type {\n IQuerySource,\n BindingsStream,\n IActionContext,\n FragmentSelectorShape,\n IQueryBindingsOptions,\n MetadataBindings,\n ComunicaDataFactory,\n} from '@comunica/types';\nimport type { BindingsFactory } from '@comunica/utils-bindings-factory';\nimport { MetadataValidationState } from '@comunica/utils-metadata';\nimport type * as RDF from '@rdfjs/types';\nimport type { AsyncIterator } from 'asynciterator';\nimport { ArrayIterator, TransformIterator, wrap } from 'asynciterator';\nimport { termToString } from 'rdf-string';\nimport { termToString as termToStringTtl } from 'rdf-string-ttl';\nimport {\n everyTermsNested,\n mapTerms,\n matchPattern,\n} from 'rdf-terms';\nimport type { Algebra, Factory } from 'sparqlalgebrajs';\n\nexport class QuerySourceQpf implements IQuerySource {\n protected readonly selectorShape: FragmentSelectorShape;\n\n public readonly searchForm: ISearchForm;\n\n private readonly mediatorMetadata: MediatorRdfMetadata;\n private readonly mediatorMetadataExtract: MediatorRdfMetadataExtract;\n private readonly mediatorDereferenceRdf: MediatorDereferenceRdf;\n private readonly dataFactory: ComunicaDataFactory;\n private readonly algebraFactory: Factory;\n private readonly bindingsFactory: BindingsFactory;\n\n public readonly referenceValue: string;\n private readonly subjectUri: string;\n private readonly predicateUri: string;\n private readonly objectUri: string;\n private readonly graphUri?: string;\n private readonly url: string;\n private readonly defaultGraph?: RDF.NamedNode;\n private readonly bindingsRestricted: boolean;\n private readonly cachedQuads: Record<string, AsyncIterator<RDF.Quad>>;\n\n public constructor(\n mediatorMetadata: MediatorRdfMetadata,\n mediatorMetadataExtract: MediatorRdfMetadataExtract,\n mediatorDereferenceRdf: MediatorDereferenceRdf,\n dataFactory: ComunicaDataFactory,\n algebraFactory: Factory,\n bindingsFactory: BindingsFactory,\n subjectUri: string,\n predicateUri: string,\n objectUri: string,\n graphUri: string | undefined,\n url: string,\n metadata: Record<string, any>,\n bindingsRestricted: boolean,\n initialQuads?: RDF.Stream,\n ) {\n this.referenceValue = url;\n this.mediatorMetadata = mediatorMetadata;\n this.mediatorMetadataExtract = mediatorMetadataExtract;\n this.mediatorDereferenceRdf = mediatorDereferenceRdf;\n this.dataFactory = dataFactory;\n this.algebraFactory = algebraFactory;\n this.bindingsFactory = bindingsFactory;\n this.subjectUri = subjectUri;\n this.predicateUri = predicateUri;\n this.objectUri = objectUri;\n this.graphUri = graphUri;\n this.url = url;\n this.bindingsRestricted = bindingsRestricted;\n this.cachedQuads = {};\n this.searchForm = this.getSearchForm(metadata)!;\n this.defaultGraph = metadata.defaultGraph ? this.dataFactory.namedNode(metadata.defaultGraph) : undefined;\n if (initialQuads) {\n let wrappedQuads: AsyncIterator<RDF.Quad> = wrap<RDF.Quad>(initialQuads);\n if (this.defaultGraph) {\n wrappedQuads = this.reverseMapQuadsToDefaultGraph(wrappedQuads);\n }\n metadata = { ...metadata, state: new MetadataValidationState() };\n wrappedQuads.setProperty('metadata', metadata);\n this.cacheQuads(\n wrappedQuads,\n this.dataFactory.variable(''),\n this.dataFactory.variable(''),\n this.dataFactory.variable(''),\n this.dataFactory.variable(''),\n );\n }\n\n this.selectorShape = this.bindingsRestricted ?\n {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: this.algebraFactory.createPattern(\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n this.dataFactory.variable('g'),\n ),\n },\n variablesOptional: [\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n this.dataFactory.variable('g'),\n ],\n filterBindings: true,\n } :\n {\n type: 'operation',\n operation: {\n operationType: 'pattern',\n pattern: this.algebraFactory.createPattern(\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n this.dataFactory.variable('g'),\n ),\n },\n variablesOptional: [\n this.dataFactory.variable('s'),\n this.dataFactory.variable('p'),\n this.dataFactory.variable('o'),\n this.dataFactory.variable('g'),\n ],\n };\n }\n\n public async getSelectorShape(): Promise<FragmentSelectorShape> {\n return this.selectorShape;\n }\n\n public queryBindings(\n operation: Algebra.Operation,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): BindingsStream {\n if (operation.type !== 'pattern') {\n throw new Error(`Attempted to pass non-pattern operation '${operation.type}' to QuerySourceQpf`);\n }\n\n const unionDefaultGraph = Boolean(context.get(KeysQueryOperation.unionDefaultGraph));\n\n // Create an async iterator from the matched quad stream\n let it = this.match(\n operation.subject,\n operation.predicate,\n operation.object,\n operation.graph,\n unionDefaultGraph,\n context,\n options,\n );\n\n it = filterMatchingQuotedQuads(operation, it);\n return quadsToBindings(it, operation, this.dataFactory, this.bindingsFactory, unionDefaultGraph);\n }\n\n /**\n * Get a first QPF search form.\n * @param {{[p: string]: any}} metadata A metadata object.\n * @return {ISearchForm} A search form, or null if none could be found.\n */\n public getSearchForm(metadata: Record<string, any>): ISearchForm | undefined {\n if (!metadata.searchForms || !metadata.searchForms.values) {\n return;\n }\n\n // Find a quad pattern or triple pattern search form\n const { searchForms } = metadata;\n for (const searchForm of searchForms.values) {\n if (this.graphUri &&\n this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n this.graphUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 4) {\n return searchForm;\n }\n if (this.subjectUri in searchForm.mappings &&\n this.predicateUri in searchForm.mappings &&\n this.objectUri in searchForm.mappings &&\n Object.keys(searchForm.mappings).length === 3) {\n return searchForm;\n }\n }\n }\n\n /**\n * Create a QPF fragment IRI for the given quad pattern.\n * @param {ISearchForm} searchForm A search form.\n * @param {Term} subject A term.\n * @param {Term} predicate A term.\n * @param {Term} object A term.\n * @param {Term} graph A term.\n * @return {string} A URI.\n */\n public createFragmentUri(\n searchForm: ISearchForm,\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n ): string {\n const entries: Record<string, string> = {};\n const input = [\n { uri: this.subjectUri, term: subject },\n { uri: this.predicateUri, term: predicate },\n { uri: this.objectUri, term: object },\n { uri: this.graphUri, term: graph },\n ];\n for (const entry of input) {\n // If bindingsRestricted, also pass variables, so the server knows how to bind values.\n if (entry.uri && (this.bindingsRestricted || (entry.term.termType !== 'Variable' &&\n (entry.term.termType !== 'Quad' || everyTermsNested(entry.term, value => value.termType !== 'Variable'))))) {\n entries[entry.uri] = termToString(entry.term);\n }\n }\n return searchForm.getUri(entries);\n }\n\n protected match(\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n unionDefaultGraph: boolean,\n context: IActionContext,\n options?: IQueryBindingsOptions,\n ): AsyncIterator<RDF.Quad> {\n // If we are querying the default graph,\n // and the source has an overridden value for the default graph (such as QPF can provide),\n // we override the graph parameter with that value.\n let modifiedGraph = false;\n if (graph.termType === 'DefaultGraph') {\n if (this.defaultGraph) {\n modifiedGraph = true;\n graph = this.defaultGraph;\n } else if (Object.keys(this.searchForm.mappings).length === 4 && !this.defaultGraph) {\n // If the sd:defaultGraph is not declared on a QPF endpoint\n if (unionDefaultGraph) {\n // With union-default-graph, take union of graphs.\n graph = this.dataFactory.variable('g');\n } else {\n // Without union-default-graph, the default graph must be empty.\n const quads = new ArrayIterator<RDF.Quad>([], { autoStart: false });\n quads.setProperty('metadata', {\n state: new MetadataValidationState(),\n requestTime: 0,\n cardinality: { type: 'exact', value: 0 },\n first: null,\n next: null,\n last: null,\n });\n return quads;\n }\n } else if (Object.keys(this.searchForm.mappings).length === 3) {\n // If have a TPF endpoint, set graph to variable so we could get the cached triples\n graph = this.dataFactory.variable('g');\n }\n }\n\n // Try to emit from cache (skip if filtering bindings)\n if (!options?.filterBindings) {\n const cached = this.getCachedQuads(subject, predicate, object, graph);\n if (cached) {\n return cached;\n }\n }\n\n // Kickstart metadata collection, because the quads iterator is lazy\n // eslint-disable-next-line ts/no-this-alias\n const self = this;\n let quads: AsyncIterator<RDF.Quad>;\n const dataStreamPromise = (async function() {\n let url: string = self.createFragmentUri(self.searchForm, subject, predicate, object, graph);\n\n // Handle bindings-restricted interfaces\n if (options?.filterBindings) {\n url = await self.getBindingsRestrictedLink(\n subject,\n predicate,\n object,\n graph,\n url,\n options.filterBindings,\n );\n }\n\n const dereferenceRdfOutput = await self.mediatorDereferenceRdf.mediate({ context, url });\n url = dereferenceRdfOutput.url;\n\n // Determine the metadata\n const rdfMetadataOuput: IActorRdfMetadataOutput = await self.mediatorMetadata.mediate(\n { context, url, quads: dereferenceRdfOutput.data, triples: dereferenceRdfOutput.metadata?.triples },\n );\n\n // Extract the metadata\n const { metadata } = await self.mediatorMetadataExtract\n .mediate({\n context,\n url,\n metadata: rdfMetadataOuput.metadata,\n requestTime: dereferenceRdfOutput.requestTime,\n });\n quads!.setProperty(\n 'metadata',\n { ...metadata, state: new MetadataValidationState(), subsetOf: self.url },\n );\n\n // While we could resolve this before metadata extraction, we do it afterwards to ensure metadata emission\n // before the end event is emitted.\n return rdfMetadataOuput.data;\n })();\n\n quads = new TransformIterator(async() => {\n const dataStream = await dataStreamPromise;\n\n // The server is free to send any data in its response (such as metadata),\n // including quads that do not match the given matter.\n // Therefore, we have to filter away all non-matching quads here.\n const actualDefaultGraph = this.dataFactory.defaultGraph();\n let filteredOutput: AsyncIterator<RDF.Quad> = wrap<RDF.Quad>(dataStream)\n .transform({\n filter(quad: RDF.Quad) {\n if (matchPattern(quad, subject, predicate, object, graph)) {\n return true;\n }\n // Special case: if we are querying in the default graph, and we had an overridden default graph,\n // also accept that incoming triples may be defined in the actual default graph\n return modifiedGraph && matchPattern(quad, subject, predicate, object, actualDefaultGraph);\n },\n });\n if (modifiedGraph || graph.termType === 'Variable') {\n // Reverse-map the overridden default graph back to the actual default graph\n filteredOutput = this.reverseMapQuadsToDefaultGraph(filteredOutput);\n }\n\n return filteredOutput;\n }, { autoStart: false });\n\n // Skip cache if filtering bindings\n if (options?.filterBindings) {\n return quads;\n }\n\n this.cacheQuads(quads, subject, predicate, object, graph);\n return this.getCachedQuads(subject, predicate, object, graph)!;\n }\n\n /**\n * If we add bindings for brTPF, append it to the URL.\n * We have to hardcode this because brTPF doesn't expose a URL template for passing bindings.\n * @param subject The subject.\n * @param predicate The predicate.\n * @param object The object.\n * @param graph The graph.\n * @param url The original QPF URL.\n * @param filterBindings The bindings to restrict with.\n * @param filterBindings.bindings The bindings stream.\n * @param filterBindings.metadata The bindings metadata.\n * @protected\n */\n public async getBindingsRestrictedLink(\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n url: string,\n filterBindings: { bindings: BindingsStream; metadata: MetadataBindings },\n ): Promise<string> {\n // Determine values\n const values: string[] = [];\n for (const binding of await filterBindings.bindings.toArray()) {\n const value: string[] = [ '(' ];\n for (const variable of filterBindings.metadata.variables) {\n const term = binding.get(variable.variable);\n value.push(term ? termToStringTtl(term) : 'UNDEF');\n value.push(' ');\n }\n value.push(')');\n values.push(value.join(''));\n }\n\n if (values.length === 0) {\n // This is a hack to force an empty result page,\n // because the brTPF server returns a server error when passing 0 bindings.\n values.push('(<ex:comunica:unknown>)');\n }\n\n // Append to URL (brTPF uses the SPARQL VALUES syntax, without the VALUES prefix)\n const valuesUrl = encodeURIComponent(`(${filterBindings.metadata.variables.map(variable => `?${variable.variable.value}`).join(' ')}) { ${values.join(' ')} }`);\n return `${url}&values=${valuesUrl}`;\n }\n\n protected reverseMapQuadsToDefaultGraph(quads: AsyncIterator<RDF.Quad>): AsyncIterator<RDF.Quad> {\n const actualDefaultGraph = this.dataFactory.defaultGraph();\n return quads.map(\n quad => mapTerms(\n quad,\n (term, key) => key === 'graph' && term.equals(this.defaultGraph) ? actualDefaultGraph : term,\n ),\n );\n }\n\n public getPatternId(subject: RDF.Term, predicate: RDF.Term, object: RDF.Term, graph: RDF.Term): string {\n return JSON.stringify({\n s: subject.termType === 'Variable' ? '' : _termToString(subject),\n p: predicate.termType === 'Variable' ? '' : _termToString(predicate),\n o: object.termType === 'Variable' ? '' : _termToString(object),\n g: graph.termType === 'Variable' ? '' : _termToString(graph),\n });\n }\n\n protected cacheQuads(\n quads: AsyncIterator<RDF.Quad>,\n subject: RDF.Term,\n predicate: RDF.Term,\n object: RDF.Term,\n graph: RDF.Term,\n ): void {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n this.cachedQuads[patternId] = quads.clone();\n }\n\n protected getCachedQuads(subject: RDF.Term, predicate: RDF.Term, object: RDF.Term, graph: RDF.Term):\n AsyncIterator<RDF.Quad> | undefined {\n const patternId = this.getPatternId(subject, predicate, object, graph);\n const quads = this.cachedQuads[patternId];\n if (quads) {\n return quads.clone();\n }\n }\n\n public queryQuads(\n _operation: Algebra.Operation,\n _context: IActionContext,\n ): AsyncIterator<RDF.Quad> {\n throw new Error('queryQuads is not implemented in QuerySourceQpf');\n }\n\n public queryBoolean(\n _operation: Algebra.Ask,\n _context: IActionContext,\n ): Promise<boolean> {\n throw new Error('queryBoolean is not implemented in QuerySourceQpf');\n }\n\n public queryVoid(\n _operation: Algebra.Update,\n _context: IActionContext,\n ): Promise<void> {\n throw new Error('queryVoid is not implemented in QuerySourceQpf');\n }\n}\n\nfunction _termToString(term: RDF.Term): string {\n return term.termType === 'DefaultGraph' ?\n // Any character that cannot be present in a URL will do\n '|' :\n termToString(term);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@comunica/actor-query-source-identify-hypermedia-qpf",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1-alpha.48.0",
|
|
4
4
|
"description": "A qpf query-source-identify-hypermedia actor",
|
|
5
5
|
"lsd:module": true,
|
|
6
6
|
"license": "MIT",
|
|
7
|
+
"funding": {
|
|
8
|
+
"type": "opencollective",
|
|
9
|
+
"url": "https://opencollective.com/comunica-association"
|
|
10
|
+
},
|
|
7
11
|
"homepage": "https://comunica.dev/",
|
|
8
12
|
"repository": {
|
|
9
13
|
"type": "git",
|
|
@@ -37,24 +41,24 @@
|
|
|
37
41
|
"build:components": "componentsjs-generator"
|
|
38
42
|
},
|
|
39
43
|
"dependencies": {
|
|
40
|
-
"@comunica/actor-rdf-metadata-extract-hydra-controls": "
|
|
41
|
-
"@comunica/
|
|
42
|
-
"@comunica/bus-
|
|
43
|
-
"@comunica/bus-
|
|
44
|
-
"@comunica/bus-query-source-identify": "
|
|
45
|
-
"@comunica/bus-
|
|
46
|
-
"@comunica/bus-rdf-metadata": "
|
|
47
|
-
"@comunica/
|
|
48
|
-
"@comunica/
|
|
49
|
-
"@comunica/
|
|
50
|
-
"@comunica/
|
|
44
|
+
"@comunica/actor-rdf-metadata-extract-hydra-controls": "4.0.1-alpha.48.0",
|
|
45
|
+
"@comunica/bus-dereference-rdf": "4.0.1-alpha.48.0",
|
|
46
|
+
"@comunica/bus-merge-bindings-context": "4.0.1-alpha.48.0",
|
|
47
|
+
"@comunica/bus-query-source-identify": "4.0.1-alpha.48.0",
|
|
48
|
+
"@comunica/bus-query-source-identify-hypermedia": "4.0.1-alpha.48.0",
|
|
49
|
+
"@comunica/bus-rdf-metadata": "4.0.1-alpha.48.0",
|
|
50
|
+
"@comunica/bus-rdf-metadata-extract": "4.0.1-alpha.48.0",
|
|
51
|
+
"@comunica/context-entries": "4.0.1-alpha.48.0",
|
|
52
|
+
"@comunica/core": "4.0.1-alpha.48.0",
|
|
53
|
+
"@comunica/types": "4.0.1-alpha.48.0",
|
|
54
|
+
"@comunica/utils-bindings-factory": "4.0.1-alpha.48.0",
|
|
55
|
+
"@comunica/utils-metadata": "4.0.1-alpha.48.0",
|
|
51
56
|
"@rdfjs/types": "*",
|
|
52
57
|
"asynciterator": "^3.9.0",
|
|
53
|
-
"rdf-data-factory": "^1.1.1",
|
|
54
58
|
"rdf-string": "^1.6.1",
|
|
55
59
|
"rdf-string-ttl": "^1.3.2",
|
|
56
60
|
"rdf-terms": "^1.11.0",
|
|
57
|
-
"sparqlalgebrajs": "^4.3.
|
|
61
|
+
"sparqlalgebrajs": "^4.3.8"
|
|
58
62
|
},
|
|
59
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "4cc37905eab2c94a2e1d9cee0f51c53604f07da1"
|
|
60
64
|
}
|