Skip to content

Commit bbbe1a5

Browse files
authored
Merge pull request #378 from ckan/fix-dcat-ap-3-version
Fix: use DCAT.version on DCAT AP v3
2 parents b7b2b5f + fed85b0 commit bbbe1a5

3 files changed

Lines changed: 31 additions & 8 deletions

File tree

ckanext/dcat/profiles/euro_dcat_ap_3.py

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
SKOS,
77
ADMS,
88
RDF,
9+
OWL,
910
)
1011

1112
from .base import URIRefOrLiteral
@@ -31,6 +32,18 @@ def parse_dataset(self, dataset_dict, dataset_ref):
3132
dataset_dict = self._parse_dataset_v2_scheming(dataset_dict, dataset_ref)
3233

3334
# DCAT AP v3: hasVersion
35+
dataset_dict = self._parse_dataset_v3(dataset_dict, dataset_ref)
36+
37+
return dataset_dict
38+
39+
def _parse_dataset_v3(self, dataset_dict, dataset_ref):
40+
41+
# version
42+
value = self._object_value(dataset_ref, DCAT.version)
43+
if value:
44+
dataset_dict["version"] = value
45+
46+
# hasVersion
3447
values = self._object_value_list(dataset_ref, DCAT.hasVersion)
3548
if values:
3649
dataset_dict["has_version"] = values
@@ -51,12 +64,6 @@ def graph_from_dataset(self, dataset_dict, dataset_ref):
5164
# DCAT AP v3 properties also applied to higher versions
5265
self._graph_from_dataset_v3(dataset_dict, dataset_ref)
5366

54-
# DCAT AP v3: List triples
55-
items = [
56-
("has_version", DCAT.hasVersion, None, URIRefOrLiteral),
57-
]
58-
self._add_list_triples_from_dict(dataset_dict, dataset_ref, items)
59-
6067
def graph_from_catalog(self, catalog_dict, catalog_ref):
6168

6269
self._graph_from_catalog_base(catalog_dict, catalog_ref)
@@ -71,6 +78,22 @@ def _graph_from_dataset_v3(self, dataset_dict, dataset_ref):
7178
self.g.remove((dataset_ref, RDF.type, None))
7279
self.g.add((dataset_ref, RDF.type, DCAT.DatasetSeries))
7380

81+
# version own:versionInfo -> dcat:version
82+
self.g.remove((dataset_ref, OWL.versionInfo, None))
83+
self._add_triple_from_dict(
84+
dataset_dict,
85+
dataset_ref,
86+
DCAT.version,
87+
"version",
88+
_type=Literal,
89+
)
90+
91+
# hasVersion
92+
items = [
93+
("has_version", DCAT.hasVersion, None, URIRefOrLiteral),
94+
]
95+
self._add_list_triples_from_dict(dataset_dict, dataset_ref, items)
96+
7497
# byteSize decimal -> nonNegativeInteger
7598
for subject, predicate, object in self.g.triples((None, DCAT.byteSize, None)):
7699
if object and object.datatype == XSD.decimal:

ckanext/dcat/tests/profiles/dcat_ap_3/test_euro_dcatap_3_profile_serialize.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def test_e2e_ckan_to_dcat(self):
6868
assert self._triple(g, dataset_ref, RDF.type, DCAT.Dataset)
6969
assert self._triple(g, dataset_ref, DCT.title, dataset["title"])
7070
assert self._triple(g, dataset_ref, DCT.description, dataset["notes"])
71-
assert self._triple(g, dataset_ref, OWL.versionInfo, dataset["version"])
71+
assert self._triple(g, dataset_ref, DCAT.version, dataset["version"])
7272

7373
# Standard fields
7474
assert self._triple(g, dataset_ref, DCT.identifier, dataset["identifier"])

ckanext/dcat/tests/profiles/dcat_us_3/test_dcat_us_3_profile_serialize.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def test_e2e_ckan_to_dcat(self):
6969
assert self._triple(g, dataset_ref, RDF.type, DCAT.Dataset)
7070
assert self._triple(g, dataset_ref, DCT.title, dataset["title"])
7171
assert self._triple(g, dataset_ref, DCT.description, dataset["notes"])
72-
assert self._triple(g, dataset_ref, OWL.versionInfo, dataset["version"])
72+
assert self._triple(g, dataset_ref, DCAT.version, dataset["version"])
7373

7474
# Standard fields
7575
assert self._triple(g, dataset_ref, DCT.identifier, dataset["identifier"])

0 commit comments

Comments
 (0)