Skip to content

Commit 1adc078

Browse files
committed
Updates for XPATH Queries
1 parent 78a290f commit 1adc078

6 files changed

Lines changed: 24 additions & 6 deletions

File tree

ted_sws/core/model/manifestation.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class SPARQLQueryRefinedResultType(Enum):
3535
INVALID = "invalid"
3636
ERROR = "error"
3737
WARNING = "warning"
38+
UNKNOWN = "unknown"
3839

3940

4041
class Manifestation(PropertyBaseModel):
@@ -224,6 +225,7 @@ class SPARQLQueryResult(PropertyBaseModel):
224225
fields_covered: Optional[bool] = True
225226
missing_fields: Optional[List[str]] = []
226227
error: Optional[str]
228+
message: Optional[str]
227229
identifier: Optional[str]
228230

229231
class Config:

ted_sws/core/model/validation_report.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class SPARQLValidationSummaryCountReport(PropertyBaseModel):
3030
warning: Optional[QueryValidationSummaryCountReportStatus] = QueryValidationSummaryCountReportStatus()
3131
invalid: Optional[QueryValidationSummaryCountReportStatus] = QueryValidationSummaryCountReportStatus()
3232
error: Optional[QueryValidationSummaryCountReportStatus] = QueryValidationSummaryCountReportStatus()
33+
unknown: Optional[QueryValidationSummaryCountReportStatus] = QueryValidationSummaryCountReportStatus()
3334

3435

3536
class SPARQLSummaryQuery(PropertyBaseModel):

ted_sws/mapping_suite_processor/services/conceptual_mapping_generate_sparql_queries.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,15 @@
2626
SPARQL_PREFIX_LINE = 'PREFIX {prefix}: <{value}>'
2727
SPARQL_LOGGER_NAME = "SPARQL"
2828

29+
SPARQL_XPATH_SEPARATOR = " ;; "
30+
2931

3032
def get_sparql_prefixes(sparql_q: str) -> list:
3133
finds: list = re.findall(SPARQL_PREFIX_PATTERN, sparql_q)
3234
return sorted(set(finds))
3335

3436

35-
def concat_field_xpath(base_xpath: str, field_xpath: str, separator: str = ", ") -> str:
37+
def concat_field_xpath(base_xpath: str, field_xpath: str, separator: str = SPARQL_XPATH_SEPARATOR) -> str:
3638
base_xpath = base_xpath if not pd.isna(base_xpath) else ''
3739
field_xpath = field_xpath if not pd.isna(field_xpath) else ''
3840
return separator.join(
@@ -137,7 +139,7 @@ def sparql_validation_generator(data: pd.DataFrame, base_xpath: str, controlled_
137139
f"{e_form_bt_name}” in eForms. The corresponding XML element is " \
138140
f"{concat_field_xpath(base_xpath, field_xpath)}. " \
139141
f"The expected ontology instances are epo: {class_path} .\n" \
140-
f"#xpath: {concat_field_xpath(base_xpath, field_xpath, separator=',')}" \
142+
f"#xpath: {concat_field_xpath(base_xpath, field_xpath, separator=SPARQL_XPATH_SEPARATOR)}" \
141143
"\n" + "\n" + "\n".join(prefixes) + "\n\n" \
142144
f"ASK WHERE {{ " \
143145
f"{subject_type_display}" \

ted_sws/notice_validator/resources/templates/sparql_query_results_report.jinja2

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@
124124
</tr>
125125
</thead>
126126
<tbody>
127-
{% for _value in ['valid', 'unverifiable', 'warning', 'invalid', 'error'] %}
127+
{% for _value in ['valid', 'unverifiable', 'warning', 'invalid', 'error', 'unknown'] %}
128128
<tr>
129129
{% set _results = validation_results | selectattr("result", "equalto", _value) | list | count %}
130130
<td class="strong {{ _value }}">{{ _value }}</td>
@@ -187,8 +187,16 @@
187187
</ol>
188188
</li>
189189
{% endif %}
190+
{% if result.message and (result.message|length > 0) %}
191+
<li>
192+
<hr>
193+
<h4 class="info strong">MESSAGE:</h4>
194+
{{ result.message }}
195+
</li>
196+
{% endif %}
190197
{% if result.error and (result.error|length > 0) %}
191198
<li>
199+
<hr>
192200
<h4 class="danger strong">ERROR:</h4>
193201
{{ result.error }}
194202
</li>

ted_sws/notice_validator/resources/templates/sparql_summary_report.jinja2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% set result_values = ['valid', 'unverifiable', 'warning', 'invalid', 'error'] %}
1+
{% set result_values = ['valid', 'unverifiable', 'warning', 'invalid', 'error', 'unknown'] %}
22

33
<!DOCTYPE html>
44
<html lang="en">

ted_sws/notice_validator/services/sparql_test_suite_runner.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
ReportNotice
1313
from ted_sws.core.model.validation_report_data import ReportPackageNoticeData
1414
from ted_sws.data_manager.adapters.repository_abc import NoticeRepositoryABC, MappingSuiteRepositoryABC
15+
from ted_sws.mapping_suite_processor.services.conceptual_mapping_generate_sparql_queries import SPARQL_XPATH_SEPARATOR
1516
from ted_sws.notice_transformer.adapters.notice_transformer import NoticeTransformer
1617
from ted_sws.notice_validator.adapters.sparql_runner import SPARQLRunner
1718
from ted_sws.notice_validator.resources.templates import TEMPLATE_METADATA_KEY
@@ -58,8 +59,9 @@ def _sparql_query_from_file_resource(cls, file_resource: FileResource) -> SPARQL
5859
if QUERY_METADATA_TITLE in metadata else DEFAULT_QUERY_TITLE
5960
description = metadata[QUERY_METADATA_DESCRIPTION] \
6061
if QUERY_METADATA_DESCRIPTION in metadata else DEFAULT_QUERY_DESCRIPTION
61-
xpath = metadata[QUERY_METADATA_XPATH].split(",") if QUERY_METADATA_XPATH in metadata and metadata[
62-
QUERY_METADATA_XPATH] else DEFAULT_QUERY_XPATH
62+
xpath = metadata[QUERY_METADATA_XPATH].split(
63+
SPARQL_XPATH_SEPARATOR
64+
) if QUERY_METADATA_XPATH in metadata and metadata[QUERY_METADATA_XPATH] else DEFAULT_QUERY_XPATH
6365
query = cls._sanitize_query(file_resource.file_content)
6466
return SPARQLQuery(title=title, description=description, xpath=xpath, query=query)
6567

@@ -223,6 +225,9 @@ def generate_sparql_validation_summary_report(report_notices: List[ReportNotice]
223225
elif validation.result == SPARQLQueryRefinedResultType.ERROR.value:
224226
validation_query_result.aggregate.error.count += 1
225227
validation_query_result.aggregate.error.notices.append(notice_data)
228+
elif validation.result == SPARQLQueryRefinedResultType.UNKNOWN.value:
229+
validation_query_result.aggregate.unknown.count += 1
230+
validation_query_result.aggregate.unknown.notices.append(notice_data)
226231

227232
if not found_validation_query_result:
228233
report.validation_results.append(validation_query_result)

0 commit comments

Comments
 (0)