Skip to content

Commit e6db60c

Browse files
committed
rml to html
1 parent 1ff9375 commit e6db60c

3 files changed

Lines changed: 62 additions & 18 deletions

File tree

ted_sws/rml_to_html/services/rml_to_html.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,25 @@ def query_uri_substitution(query: str, triple_map_uri: str) -> str:
2121

2222

2323
def get_query_results(query: str, sparql_runner: SPARQLRunner) -> dict:
24+
"""
25+
Method to get query results
26+
:param query:
27+
:param sparql_runner:
28+
:return:
29+
"""
2430
return json.loads(
2531
sparql_runner.query(query_object=query).serialize(
2632
format="json").decode("utf-8"))["results"]["bindings"]
2733

2834

2935
def run_queries_for_triple_map(triple_map_uri: str, query_registry: QueryRegistry, sparql_runner: SPARQLRunner) -> dict:
36+
"""
37+
Running all queries against a triple map URI
38+
:param triple_map_uri:
39+
:param query_registry:
40+
:param sparql_runner:
41+
:return:
42+
"""
3043
return {
3144
"triple_map_uri": triple_map_uri,
3245
"details": get_query_results(
@@ -46,27 +59,27 @@ def run_queries_for_triple_map(triple_map_uri: str, query_registry: QueryRegistr
4659

4760

4861
def rml_files_to_html_report(mapping_suite_identifier: str, mapping_suite_repository: MappingSuiteRepositoryABC):
62+
"""
63+
Creating an html report from loaded rml files
64+
:param mapping_suite_identifier:
65+
:param mapping_suite_repository:
66+
:return:
67+
"""
4968
mapping_suite_package = mapping_suite_repository.get(reference=mapping_suite_identifier)
5069
if mapping_suite_package is None:
5170
raise ValueError(f'Mapping suite package, with {mapping_suite_identifier} id, was not found')
5271
rml_files = mapping_suite_package.transformation_rule_set.rml_mapping_rules
5372
query_registry = QueryRegistry()
54-
5573
sparql_runner = SPARQLRunner(files=rml_files)
56-
triple_maps = json.loads(sparql_runner.query(query_object=query_registry.TRIPLE_MAP).serialize(
57-
format="json").decode("utf-8"))
58-
triple_maps_uris = [triple_map['tripleMap']["value"] for triple_map in triple_maps["results"]["bindings"]]
59-
print(triple_maps_uris)
74+
75+
triple_maps = get_query_results(query=query_registry.TRIPLE_MAP, sparql_runner=sparql_runner)
76+
triple_maps_uris = [triple_map["tripleMap"]["value"] for triple_map in triple_maps]
6077
triple_maps_details = {}
6178
for triple_map_uri in triple_maps_uris:
6279
triple_maps_details[triple_map_uri] = run_queries_for_triple_map(triple_map_uri=triple_map_uri,
6380
query_registry=query_registry,
6481
sparql_runner=sparql_runner)
6582

6683
html_report = TEMPLATES.get_template(RML_TO_HTML_REPORT_TEMPLATE).render(triple_maps_details=triple_maps_details)
67-
with open("rml-report.html", "w") as file:
68-
file.write(html_report)
69-
70-
return triple_maps_details
71-
7284

85+
return html_report

tests/unit/rml_to_html/conftest.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
import pytest
22

3+
from ted_sws.core.model.transform import FileResource
34
from tests import TEST_DATA_PATH
45

56

67
@pytest.fixture
78
def file_system_repository_path():
8-
return TEST_DATA_PATH / "notice_transformer" / "test_repository"
9+
return TEST_DATA_PATH / "notice_transformer" / "test_repository"
10+
11+
12+
@pytest.fixture
13+
def rml_file():
14+
path = TEST_DATA_PATH / "notice_transformer" / "test_repository" / "test_package" / "transformation" / "mappings" / "award_of_contract.rml.ttl"
15+
return FileResource(file_name="file_name", file_content=path.read_text())
Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,38 @@
1-
import json
1+
import pytest
22

33
from ted_sws.data_manager.adapters.mapping_suite_repository import MappingSuiteRepositoryInFileSystem
4-
from ted_sws.rml_to_html.services.rml_to_html import rml_files_to_html_report
4+
from ted_sws.notice_validator.adapters.sparql_runner import SPARQLRunner
5+
from ted_sws.rml_to_html.resources.query_registry import QueryRegistry
6+
from ted_sws.rml_to_html.services.rml_to_html import rml_files_to_html_report, query_uri_substitution, get_query_results
7+
8+
9+
def test_query_uri_substitution():
10+
query = QueryRegistry().SUBJECT_MAP
11+
uri = "http://data.europa.eu/a4g/mapping/sf-rml/ResultNotice"
12+
substituted_query = query_uri_substitution(query=query,
13+
triple_map_uri=uri)
14+
assert uri in substituted_query
15+
16+
17+
def test_get_query_results(rml_file):
18+
query = QueryRegistry().TRIPLE_MAP
19+
results = get_query_results(query=query, sparql_runner=SPARQLRunner(files=[rml_file]))
20+
assert isinstance(results, list)
21+
for result in results:
22+
assert isinstance(result, dict)
23+
assert "type", "value" in result.keys()
524

625

726
def test_rml_files_to_html_report(file_system_repository_path):
827
mapping_suite_repository = MappingSuiteRepositoryInFileSystem(repository_path=file_system_repository_path)
9-
triple_maps=rml_files_to_html_report(mapping_suite_identifier="test_package",mapping_suite_repository=mapping_suite_repository)
28+
html_report = rml_files_to_html_report(mapping_suite_identifier="test_package",
29+
mapping_suite_repository=mapping_suite_repository)
30+
31+
assert isinstance(html_report, str)
32+
assert "Logical Source" in html_report
33+
assert "Subject map" in html_report
34+
assert "Predicate object maps" in html_report
1035

11-
# triple_maps_uris = [triple_map['tripleMap']["value"] for triple_map in triple_maps["results"]["bindings"]]
12-
# #
13-
# with open("triple-maps.json", "w") as file:
14-
# file.write(json.dumps(triple_maps))
36+
with pytest.raises(ValueError):
37+
rml_files_to_html_report(mapping_suite_identifier="no_package",
38+
mapping_suite_repository=mapping_suite_repository)

0 commit comments

Comments
 (0)