Skip to content

Commit 173569d

Browse files
flatten observation query
1 parent e2545d6 commit 173569d

File tree

1 file changed

+38
-51
lines changed

1 file changed

+38
-51
lines changed

app/rdf/query-dimension-values.ts

Lines changed: 38 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ export async function loadDimensionsValuesWithMetadata(
105105
throw Error(`Dimension not found: ${dimensionIri}`);
106106
}
107107

108-
return `${
109-
queryFilters
108+
return `${queryFilters
110109
? ""
111110
: `{ #pragma evaluate on
112111
SELECT ?dimensionIri ?versionedValue ?unversionedValue WHERE {
@@ -127,66 +126,58 @@ export async function loadDimensionsValuesWithMetadata(
127126
BIND(?versionedValue as ?unversionedValue)
128127
}
129128
} UNION`
130-
} {
129+
} {
131130
{
132131
SELECT DISTINCT ?dimensionIri ?versionedValue ?unversionedValue WHERE {
133-
{ #pragma evaluate on
134-
SELECT ?observation WHERE {
135-
${
136-
queryFilters
137-
? `VALUES ?dimensionIri { <${dimensionIri}> }
132+
133+
${queryFilters
134+
? `VALUES ?dimensionIri { <${dimensionIri}> }
138135
<${cubeIri}> cube:observationConstraint/sh:property ?dimension .
139136
?dimension sh:path ?dimensionIri .
140137
?dimension schema:version ?version .`
141-
: `VALUES ?dimensionIri { <${dimensionIri}> }
138+
: `VALUES ?dimensionIri { <${dimensionIri}> }
142139
<${cubeIri}> cube:observationConstraint/sh:property ?dimension .
143140
?dimension sh:path ?dimensionIri .
144141
?dimension schema:version ?version .
145142
FILTER NOT EXISTS { ?dimension sh:in ?in . }`
146-
}
143+
}
147144
<${cubeIri}> cube:observationSet/cube:observation ?observation .
148145
${queryFilters}
149-
}
150-
}
151-
${
152-
queryFilters
153-
? `VALUES ?dimensionIri { <${dimensionIri}> }
146+
147+
${queryFilters
148+
? `VALUES ?dimensionIri { <${dimensionIri}> }
154149
<${cubeIri}> cube:observationConstraint/sh:property ?dimension .
155150
?dimension sh:path ?dimensionIri .`
156-
: `VALUES ?dimensionIri { <${dimensionIri}> }`
157-
}
151+
: `VALUES ?dimensionIri { <${dimensionIri}> }`
152+
}
158153
?observation ?dimensionIri ?versionedValue .
159154
?versionedValue schema:sameAs ?unversionedValue .
160155
}
161156
}
162157
} UNION {
163158
{
164159
SELECT DISTINCT ?dimensionIri ?versionedValue ?unversionedValue WHERE {
165-
{ #pragma evaluate on
166-
SELECT ?observation WHERE {
167-
${
168-
queryFilters
169-
? `VALUES ?dimensionIri { <${dimensionIri}> }
160+
#pragma evaluate on
161+
${queryFilters
162+
? `VALUES ?dimensionIri { <${dimensionIri}> }
170163
<${cubeIri}> cube:observationConstraint/sh:property ?dimension .
171164
?dimension sh:path ?dimensionIri .
172165
FILTER NOT EXISTS { ?dimension schema:version ?version . }`
173-
: `VALUES ?dimensionIri { <${dimensionIri}> }
166+
: `VALUES ?dimensionIri { <${dimensionIri}> }
174167
<${cubeIri}> cube:observationConstraint/sh:property ?dimension .
175168
?dimension sh:path ?dimensionIri .
176169
FILTER NOT EXISTS { ?dimension schema:version ?version . }
177170
FILTER NOT EXISTS { ?dimension sh:in ?in . }`
178-
}
171+
}
179172
<${cubeIri}> cube:observationSet/cube:observation ?observation .
180173
${queryFilters}
181-
}
182-
}
183-
${
184-
queryFilters
185-
? `VALUES ?dimensionIri { <${dimensionIri}> }
174+
175+
${queryFilters
176+
? `VALUES ?dimensionIri { <${dimensionIri}> }
186177
<${cubeIri}> cube:observationConstraint/sh:property ?dimension .
187178
?dimension sh:path ?dimensionIri .`
188-
: `VALUES ?dimensionIri { <${dimensionIri}> }`
189-
}
179+
: `VALUES ?dimensionIri { <${dimensionIri}> }`
180+
}
190181
?observation ?dimensionIri ?versionedValue .
191182
BIND(?versionedValue as ?unversionedValue)
192183
}
@@ -319,8 +310,7 @@ CONSTRUCT {
319310
schema:latitude ?latitude ;
320311
schema:longitude ?longitude .
321312
} WHERE {
322-
${
323-
queryFilters
313+
${queryFilters
324314
? ""
325315
: `{ #pragma evaluate on
326316
SELECT ?dimensionIri ?value WHERE {
@@ -330,18 +320,17 @@ CONSTRUCT {
330320
?dimension sh:in/rdf:rest*/rdf:first ?value .
331321
}
332322
} UNION`
333-
} {
323+
} {
334324
{ #pragma evaluate on
335325
SELECT DISTINCT ?dimensionIri ?value WHERE {
336-
${
337-
queryFilters
338-
? ""
339-
: `
326+
${queryFilters
327+
? ""
328+
: `
340329
VALUES ?dimensionIri { <${dimensionIri}> }
341330
<${cubeIri}> cube:observationConstraint/sh:property ?dimension .
342331
?dimension sh:path ?dimensionIri .
343332
FILTER(NOT EXISTS{ ?dimension sh:in ?in . })`
344-
}
333+
}
345334
${queryFilters ? `VALUES ?dimensionIri { <${dimensionIri}> }` : ""}
346335
<${cubeIri}> cube:observationSet/cube:observation ?observation .
347336
?observation ?dimensionIri ?value .
@@ -351,25 +340,24 @@ CONSTRUCT {
351340
}
352341
# Metadata is only attached to versioned values
353342
${buildLocalizedSubQuery("value", "schema:name", "name", {
354-
locale,
355-
})}
343+
locale,
344+
})}
356345
${buildLocalizedSubQuery("value", "schema:description", "description", {
357-
locale,
358-
})}
346+
locale,
347+
})}
359348
${buildLocalizedSubQuery("value", "schema:alternateName", "alternateName", {
360-
locale,
361-
})}
349+
locale,
350+
})}
362351
OPTIONAL { ?value schema:identifier ?identifier . }
363352
OPTIONAL { ?value schema:position ?position . }
364353
OPTIONAL { ?value schema:color ?color . }
365354
OPTIONAL { ?value geo:hasGeometry ?geometry . }
366355
OPTIONAL { ?value schema:latitude ?latitude . }
367356
OPTIONAL { ?value schema:longitude ?longitude . }
368-
${
369-
isDimensionVersioned
357+
${isDimensionVersioned
370358
? `OPTIONAL { ?value schema:sameAs ?unversioned_value . }`
371359
: ""
372-
}
360+
}
373361
BIND(COALESCE(?unversioned_value, ?value) AS ?maybe_unversioned_value)
374362
}`;
375363

@@ -517,11 +505,10 @@ export const getQueryFilters = (
517505

518506
const versioned = dimension ? dimensionIsVersioned(dimension) : false;
519507

520-
return `${
521-
versioned
508+
return `${versioned
522509
? `?dimension${i} <${ns.schema.sameAs.value}> ?dimension_unversioned${i} .`
523510
: ""
524-
}
511+
}
525512
?observation <${iri}> ?dimension${i} .
526513
${formatFilterIntoSparqlFilter(value, dimension, versioned, i)}`;
527514
})

0 commit comments

Comments
 (0)