Skip to content

Commit cb5aff7

Browse files
committed
METS package updates + tests
1 parent d7d03a6 commit cb5aff7

16 files changed

Lines changed: 180 additions & 159 deletions

ted_sws/notice_packager/model/metadata.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
METS_DMD_MDTYPE = "OTHER"
2525
METS_DMD_OTHERMDTYPE = "INSTANCE"
2626
METS_DMD_HREF = "{work_identifier}_{revision}.mets.xml.dmd.rdf"
27-
METS_DMD_ID = "{work_identifier}_{revision}_dmd_{dmd_idx}"
28-
METS_TMD_ID = "{work_identifier}_{revision}_tmd_{tmd_idx}"
27+
METS_DMD_ID = "dmd_{work_identifier}_{revision}_{dmd_idx}"
28+
METS_TMD_ID = "tmd_{work_identifier}_{revision}_{tmd_idx}"
2929
METS_TMD_HREF = "{work_identifier}_{revision}.tmd.rdf"
3030
METS_TMD_MDTYPE = "OTHER"
3131
METS_TMD_OTHERMDTYPE = "INSTANCE"
32-
METS_FILE_ID = "{work_identifier}_{revision}_file_{file_idx}"
33-
METS_NOTICE_FILE_HREF = "{work_identifier}_{revision}.notice.ttl"
34-
METS_NOTICE_FILE_MIMETYPE = "text/turtle"
32+
METS_FILE_ID = "file_{work_identifier}_{revision}_{file_idx}"
33+
METS_NOTICE_FILE_HREF = "{work_identifier}_{revision}.notice.rdf"
34+
METS_NOTICE_FILE_MIMETYPE = "application/rdf+xml"
3535
METS_NOTICE_FILE_CHECKSUM_TYPE = "SHA-256"
3636

3737
WORK_AGENT = "EURUN"
@@ -66,7 +66,8 @@ class NoticeMetadata(Metadata):
6666
General notice metadata
6767
"""
6868
id: Optional[str]
69-
number: Optional[str]
69+
public_number_document: Optional[str]
70+
public_number_edition: Optional[str]
7071

7172

7273
class MetsMetadata(Metadata):

ted_sws/notice_packager/resources/templates/mets2action_mets_xml.jinja2

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,17 @@
2323
</file>
2424
</fileGrp>
2525
</fileSec>
26-
<structMap ID="{{ work.identifier }}_struct_map_001">
27-
<div TYPE="work" CONTENTIDS="ted:{{ work.identifier }}" DMDID="{{ mets.dmd_id }}" ID="{{ work.identifier }}_w_001">
28-
<div TYPE="expression" CONTENTIDS="ted:{{ expression.identifier }}" DMDID="{{ mets.dmd_id }}" ID="{{ work.identifier }}_e_001">
29-
<div TYPE="manifestation" CONTENTIDS="ted:{{ manifestation.identifier }}" DMDID="{{ mets.dmd_id }}" ADMID="{{ mets.tmd_id }}" ID="{{ work.identifier }}_m_001">
26+
<structMap ID="struct_map_{{ work.identifier }}_001">
27+
<div TYPE="work" CONTENTIDS="ted:{{ work.identifier }}" DMDID="{{ mets.dmd_id }}" ID="w_{{ work.identifier }}_001">
28+
<div TYPE="expression" CONTENTIDS="ted:{{ expression.identifier }}" DMDID="{{ mets.dmd_id }}" ID="e_{{ work.identifier }}_001">
29+
<div TYPE="manifestation" CONTENTIDS="ted:{{ manifestation.identifier }}" DMDID="{{ mets.dmd_id }}" ADMID="{{ mets.tmd_id }}" ID="m_{{ work.identifier }}_001">
3030
<fptr CONTENTIDS="distribution:{{ notice.id }}/{{ mets.notice_file_href }}" FILEID="{{ mets.file_id }}"/>
3131
</div>
3232
</div>
3333
</div>
3434
</structMap>
3535
<behaviorSec>
36-
<behavior BTYPE="sparql-load" STRUCTID="{{ work.identifier }}_m_001">
36+
<behavior BTYPE="sparql-load" STRUCTID="m_{{ work.identifier }}_001">
3737
<mechanism LOCTYPE="URL" LABEL="Sparql-load" xlink:href="cellar-mets:sparql-load-behavior?model={{ work.uri | urlencode | replace("/", "%2F") }}"/>
3838
</behavior>
3939
</behaviorSec>

ted_sws/notice_packager/resources/templates/mets_xml_dmd_rdf.jinja2

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@
1111

1212
<cdm:work rdf:about="&resource;ted/{{ work.identifier }}">
1313
<rdf:type rdf:resource="http://publications.europa.eu/ontology/cdm#work"/>
14-
<rdf:type rdf:resource="http://publications.europa.eu/ontology/cdm#procurement_public"/>
14+
{# <rdf:type rdf:resource="http://publications.europa.eu/ontology/cdm#procurement_public"/> #}
15+
<cdm:work_id_document rdf:datatype="http://www.w3.org/2001/XMLSchema#string">ted:{{ work.identifier }}</cdm:work_id_document>
1516
<cdm:work_has_resource-type rdf:resource="http://publications.europa.eu/resource/authority/resource-type/PROCUREMENT_NOTICE"/>
1617
<cdm:do_not_index rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">{{ work.do_not_index }}</cdm:do_not_index>
1718
<cdm:work_date_document rdf:datatype="http://www.w3.org/2001/XMLSchema#date">{{ work.date_document }}</cdm:work_date_document>
1819
<cdm:work_created_by_agent rdf:resource="&cellar-authority;corporate-body/{{ work.created_by_agent }}"/>
19-
{# <cdm:procurement_public_number_edition rdf:datatype="http://www.w3.org/2001/XMLSchema#positiveInteger">{{ notice.number_edition }}</cdm:procurement_public_number_edition> #}
20+
<cdm:procurement_public_number_edition rdf:datatype="http://www.w3.org/2001/XMLSchema#positiveInteger">{{ notice.public_number_edition }}</cdm:procurement_public_number_edition>
2021
{% for lang in mets.languages %}
2122
<cdm:work_title xml:lang="{{ lang }}">{{ work.title[lang] }}</cdm:work_title>
2223
{% endfor %}
23-
{# <cdm:procurement_public_number_document_in_official-journal rdf:datatype="http://www.w3.org/2001/XMLSchema#string">{{ notice.number }}</cdm:procurement_public_number_document_in_official-journal> #}
24+
<cdm:procurement_public_number_document_in_official-journal rdf:datatype="http://www.w3.org/2001/XMLSchema#string">{{ notice.public_number_document }}</cdm:procurement_public_number_document_in_official-journal>
2425
<cdm:datetime_transmission rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">{{ work.datetime_transmission }}</cdm:datetime_transmission>
2526
{# <cdm:procurement_public_issued_by_country>{{ work.procurement_public_issued_by_country }}</cdm:procurement_public_issued_by_country>
2627
{% for uri in work.procurement_public_url_etendering %}

ted_sws/notice_packager/services/metadata_transformer.py

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -34,36 +34,9 @@ def __init__(self, notice_metadata: ExtractedMetadata):
3434
def template_metadata(self, action: str = METS_TYPE_CREATE) -> PackagerMetadata:
3535
metadata = self.from_notice_metadata(self.notice_metadata)
3636

37-
# here are set custom and composed metadata properties
37+
# here the custom and composed metadata properties are set
3838
metadata.mets.type = action
3939
metadata.mets.document_id = f"{metadata.work.identifier}_{action}"
40-
metadata.mets.dmd_href = METS_DMD_HREF.format(
41-
work_identifier=metadata.work.identifier,
42-
revision=metadata.mets.revision
43-
)
44-
metadata.mets.dmd_id = METS_DMD_ID.format(
45-
work_identifier=metadata.work.identifier,
46-
revision=metadata.mets.revision,
47-
dmd_idx="001"
48-
)
49-
metadata.mets.tmd_id = METS_TMD_ID.format(
50-
work_identifier=metadata.work.identifier,
51-
revision=metadata.mets.revision,
52-
tmd_idx="001"
53-
)
54-
metadata.mets.tmd_href = METS_TMD_HREF.format(
55-
work_identifier=metadata.work.identifier,
56-
revision=metadata.mets.revision
57-
)
58-
metadata.mets.file_id = METS_FILE_ID.format(
59-
work_identifier=metadata.work.identifier,
60-
revision=metadata.mets.revision,
61-
file_idx="001"
62-
)
63-
metadata.mets.notice_file_href = METS_NOTICE_FILE_HREF.format(
64-
work_identifier=metadata.work.identifier,
65-
revision=metadata.mets.revision
66-
)
6740
return metadata
6841

6942
@classmethod
@@ -85,7 +58,9 @@ def from_notice_metadata(cls, notice_metadata: ExtractedMetadata) -> PackagerMet
8558

8659
# NOTICE
8760
metadata.notice.id = cls.normalize_value(notice_metadata.notice_publication_number)
88-
metadata.notice.number = publication_notice_number(metadata.notice.id)
61+
metadata.notice.public_number_document = publication_notice_number(metadata.notice.id)
62+
metadata.notice.public_number_edition = publication_notice_year(
63+
notice_metadata) + notice_metadata.ojs_issue_number.zfill(3)
8964

9065
# WORK
9166
publication_date = datetime.datetime.strptime(notice_metadata.publication_date, '%Y%m%d').strftime('%Y-%m-%d')
@@ -108,6 +83,36 @@ def from_notice_metadata(cls, notice_metadata: ExtractedMetadata) -> PackagerMet
10883
# MANIFESTATION
10984
metadata.manifestation.identifier = f"{metadata.expression.identifier}.rdf"
11085
metadata.manifestation.date_publication = publication_date
86+
87+
# METS
88+
metadata.mets.dmd_href = METS_DMD_HREF.format(
89+
work_identifier=metadata.work.identifier,
90+
revision=metadata.mets.revision
91+
)
92+
metadata.mets.dmd_id = METS_DMD_ID.format(
93+
work_identifier=metadata.work.identifier,
94+
revision=metadata.mets.revision,
95+
dmd_idx="001"
96+
)
97+
metadata.mets.tmd_id = METS_TMD_ID.format(
98+
work_identifier=metadata.work.identifier,
99+
revision=metadata.mets.revision,
100+
tmd_idx="001"
101+
)
102+
metadata.mets.tmd_href = METS_TMD_HREF.format(
103+
work_identifier=metadata.work.identifier,
104+
revision=metadata.mets.revision
105+
)
106+
metadata.mets.file_id = METS_FILE_ID.format(
107+
work_identifier=metadata.work.identifier,
108+
revision=metadata.mets.revision,
109+
file_idx="001"
110+
)
111+
metadata.mets.notice_file_href = METS_NOTICE_FILE_HREF.format(
112+
work_identifier=metadata.work.identifier,
113+
revision=metadata.mets.revision
114+
)
115+
111116
return metadata
112117

113118

@@ -126,4 +131,4 @@ def publication_notice_uri(notice_id, notice_metadata):
126131
def publication_work_identifier(notice_id, notice_metadata):
127132
year = publication_notice_year(notice_metadata)
128133
number = publication_notice_number(notice_id)
129-
return f"{year}_{notice_metadata.ojs_type}_{notice_metadata.ojs_issue_number}_{number}"
134+
return f"{year}_{notice_metadata.ojs_type}_{notice_metadata.ojs_issue_number.zfill(3)}_{number}"

ted_sws/notice_packager/services/notice_packager.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
from tempfile import TemporaryDirectory
1818
from typing import List
1919

20+
import rdflib
21+
from rdflib.parser import StringInputSource
22+
2023
from ted_sws.core.model.manifestation import METSManifestation
2124
from ted_sws.core.model.notice import Notice
2225
from ted_sws.notice_metadata_processor.model.metadata import ExtractedMetadata
@@ -30,6 +33,7 @@
3033

3134
ARCHIVE_NAME_FORMAT = "{work_identifier}_{action}" + DEFAULT_NOTICE_PACKAGE_EXTENSION
3235
FILE_METS_ACTION_FORMAT = "{work_identifier}_{action}.mets.xml"
36+
DEFAULT_RDF_FILE_FORMAT = "turtle"
3337

3438

3539
def package_notice(notice: Notice, action: str = METS_TYPE_CREATE) -> Notice:
@@ -90,12 +94,19 @@ def add_template_files(self):
9094
@staticmethod
9195
def get_rdf_content_from_notice(notice: Notice) -> bytes:
9296
rdf_content_bytes = None
93-
rdf_content = notice.distilled_rdf_manifestation.object_data.encode("utf-8")
97+
encoding = "utf-8"
98+
rdf_content = notice.distilled_rdf_manifestation.object_data.encode(encoding)
9499
if rdf_content is not None:
95100
try:
96101
rdf_content_bytes = base64.b64decode(rdf_content, validate=True)
97102
except binascii.Error:
98103
rdf_content_bytes = rdf_content
104+
105+
# transform n3 (turtle) to RDF/XML
106+
g = rdflib.Graph()
107+
g.parse(StringInputSource(rdf_content_bytes, encoding=encoding), format=DEFAULT_RDF_FILE_FORMAT)
108+
rdf_content_bytes = g.serialize(format='pretty-xml', encoding=encoding)
109+
99110
return rdf_content_bytes
100111

101112
def add_rdf_content(self):

tests/test_data/notice_packager/template_metadata.json

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"notice": {
33
"id": "003545_2021",
4-
"number": "003545"
4+
"public_number_document": "003545",
5+
"public_number_edition": "2021004"
56
},
67
"mets": {
78
"languages": [
@@ -10,38 +11,38 @@
1011
"revision": "0",
1112
"type": "create",
1213
"profile": "http://publications.europa.eu/resource/mets/op-sip-profile_002",
13-
"createdate": "2023-02-16T16:09:39.559881",
14+
"createdate": "2023-02-17T14:32:17.452160",
1415
"document_id": "",
15-
"dmd_id": "2021_S_4_003545_0_dmd_001",
16+
"dmd_id": "dmd_2021_S_004_003545_0_001",
1617
"dmd_mdtype": "OTHER",
1718
"dmd_othermdtype": "INSTANCE",
18-
"dmd_href": "2021_S_4_003545_0.mets.xml.dmd.rdf",
19-
"tmd_id": "2021_S_4_003545_0_tmd_001",
20-
"tmd_href": "2021_S_4_003545_0.tmd.rdf",
19+
"dmd_href": "2021_S_004_003545_0.mets.xml.dmd.rdf",
20+
"tmd_id": "tmd_2021_S_004_003545_0_001",
21+
"tmd_href": "2021_S_004_003545_0.tmd.rdf",
2122
"tmd_mdtype": "OTHER",
2223
"tmd_othermdtype": "INSTANCE",
23-
"file_id": "2021_S_4_003545_0_file_001",
24-
"notice_file_href": "2021_S_4_003545_0.notice.ttl",
25-
"notice_file_mimetype": "text/turtle",
26-
"notice_file_checksum": "9a345131455a8fa020bc8b45d4f6c24d3e6e6fe3bbb4d0606f5fd1578fe309c5",
24+
"file_id": "file_2021_S_004_003545_0_001",
25+
"notice_file_href": "2021_S_004_003545_0.notice.rdf",
26+
"notice_file_mimetype": "application/rdf+xml",
27+
"notice_file_checksum": "00e2c0570f2d9f00c71c3d8009b8bec5a530167a01ebb473e67be5e97383cdc5",
2728
"notice_file_checksum_type": "SHA-256"
2829
},
2930
"work": {
30-
"identifier": "2021_S_4_003545",
31+
"identifier": "2021_S_004_003545",
3132
"cdm_rdf_type": "procurement_public",
3233
"resource_type": "PROCUREMENT_NOTICE",
3334
"uri": "http://data.europa.eu/a4g/resource/2021/003545_2021",
3435
"do_not_index": "true",
3536
"date_document": "2021-01-07",
3637
"created_by_agent": "EURUN",
3738
"dataset_published_by_agent": "EURUN",
38-
"datetime_transmission": "2023-02-16T16:09:39.562225",
39+
"datetime_transmission": "2023-02-17T14:32:17.455085",
3940
"title": {
4041
"en": "Construction work"
4142
},
42-
"date_creation": "2023-02-16",
43+
"date_creation": "2023-02-17",
4344
"concept_type_dataset": "TEST_DATA",
44-
"dataset_version": "20230216-0",
45+
"dataset_version": "20230217-0",
4546
"dataset_keyword": [
4647
"eProcurement",
4748
"notice"
@@ -51,14 +52,14 @@
5152
"procurement_public_url_etendering": []
5253
},
5354
"expression": {
54-
"identifier": "2021_S_4_003545.MUL",
55+
"identifier": "2021_S_004_003545.MUL",
5556
"title": {
56-
"en": "eProcurement notice 2021_S_4_003545"
57+
"en": "eProcurement notice 2021_S_004_003545"
5758
},
5859
"uses_language": "MUL"
5960
},
6061
"manifestation": {
61-
"identifier": "2021_S_4_003545.MUL.rdf",
62+
"identifier": "2021_S_004_003545.MUL.rdf",
6263
"type": "rdf_epo",
6364
"date_publication": "2021-01-07",
6465
"distribution_has_status_distribution_status": "COMPLETED",

tests/test_data/notice_packager/templates/2021_S_4_003545_0.mets.xml.dmd.rdf renamed to tests/test_data/notice_packager/templates/2021_S_004_003545_0.mets.xml.dmd.rdf

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,27 @@
99
xmlns:dct="http://purl.org/dc/terms/"
1010
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
1111

12-
<cdm:work rdf:about="&resource;ted/2021_S_4_003545">
12+
<cdm:work rdf:about="&resource;ted/2021_S_004_003545">
1313
<rdf:type rdf:resource="http://publications.europa.eu/ontology/cdm#work"/>
14-
<rdf:type rdf:resource="http://publications.europa.eu/ontology/cdm#procurement_public"/>
14+
<cdm:work_id_document rdf:datatype="http://www.w3.org/2001/XMLSchema#string">ted:2021_S_004_003545</cdm:work_id_document>
1515
<cdm:work_has_resource-type rdf:resource="http://publications.europa.eu/resource/authority/resource-type/PROCUREMENT_NOTICE"/>
1616
<cdm:do_not_index rdf:datatype="http://www.w3.org/2001/XMLSchema#boolean">true</cdm:do_not_index>
1717
<cdm:work_date_document rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2021-01-07</cdm:work_date_document>
1818
<cdm:work_created_by_agent rdf:resource="&cellar-authority;corporate-body/EURUN"/>
19+
<cdm:procurement_public_number_edition rdf:datatype="http://www.w3.org/2001/XMLSchema#positiveInteger">2021004</cdm:procurement_public_number_edition>
1920
<cdm:work_title xml:lang="en">Construction work</cdm:work_title>
20-
<cdm:datetime_transmission rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-02-16T16:09:39.562225</cdm:datetime_transmission>
21+
<cdm:procurement_public_number_document_in_official-journal rdf:datatype="http://www.w3.org/2001/XMLSchema#string">003545</cdm:procurement_public_number_document_in_official-journal>
22+
<cdm:datetime_transmission rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2023-02-17T14:32:17.455085</cdm:datetime_transmission>
2123
</cdm:work>
2224

23-
<cdm:expression rdf:about="&resource;ted/2021_S_4_003545.MUL">
24-
<cdm:expression_belongs_to_work rdf:resource="&resource;ted/2021_S_4_003545"/>
25-
<cdm:expression_title xml:lang="en">eProcurement notice 2021_S_4_003545</cdm:expression_title>
25+
<cdm:expression rdf:about="&resource;ted/2021_S_004_003545.MUL">
26+
<cdm:expression_belongs_to_work rdf:resource="&resource;ted/2021_S_004_003545"/>
27+
<cdm:expression_title xml:lang="en">eProcurement notice 2021_S_004_003545</cdm:expression_title>
2628
<cdm:expression_uses_language rdf:resource="&cellar-authority;language/MUL"/>
2729
</cdm:expression>
2830

29-
<cdm:manifestation_distribution rdf:about="&resource;ted/2021_S_4_003545.MUL.rdf">
30-
<cdm:manifestation_manifests_expression rdf:resource="&resource;ted/2021_S_4_003545.MUL"/>
31+
<cdm:manifestation_distribution rdf:about="&resource;ted/2021_S_004_003545.MUL.rdf">
32+
<cdm:manifestation_manifests_expression rdf:resource="&resource;ted/2021_S_004_003545.MUL"/>
3133
<cdm:manifestation_type rdf:datatype="http://www.w3.org/2001/XMLSchema#string">rdf_epo</cdm:manifestation_type>
3234
<cdm:manifestation_date_publication rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2021-01-07</cdm:manifestation_date_publication>
3335
</cdm:manifestation_distribution>

tests/test_data/notice_packager/templates/2021_S_4_003545_0.notice.ttl renamed to tests/test_data/notice_packager/templates/2021_S_004_003545_0.notice.rdf

File renamed without changes.

tests/test_data/notice_packager/templates/2021_S_4_003545_0.tmd.rdf renamed to tests/test_data/notice_packager/templates/2021_S_004_003545_0.tmd.rdf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
%cellarEntities;
66
]>
77
<rdf:RDF xmlns:tdm="http://publications.europa.eu/ontology/tdm#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
8-
<tdm:stream rdf:about="&resource;distribution/003545_2021/2021_S_4_003545_0.notice.ttl">
9-
<tdm:stream_name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2021_S_4_003545_0.notice.ttl</tdm:stream_name>
8+
<tdm:stream rdf:about="&resource;distribution/003545_2021/2021_S_004_003545_0.notice.rdf">
9+
<tdm:stream_name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2021_S_004_003545_0.notice.rdf</tdm:stream_name>
1010
<tdm:stream_format>
1111
<tdm:format>
1212
<tdm:format_designated_by_format_designation>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<mets xmlns="http://www.loc.gov/METS/"
3+
xmlns:xlink="http://www.w3.org/1999/xlink"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://www.loc.gov/METS/cellar-mets.xsd"
6+
TYPE="create"
7+
PROFILE="http://publications.europa.eu/resource/mets/op-sip-profile_002">
8+
<metsHdr CREATEDATE="2023-02-17T14:32:17.452160">
9+
<metsDocumentID>2021_S_004_003545_create</metsDocumentID>
10+
</metsHdr>
11+
<dmdSec ID="dmd_2021_S_004_003545_0_001">
12+
<mdRef MDTYPE="OTHER" LOCTYPE="URL" MIMETYPE="application/rdf+xml" OTHERMDTYPE="INSTANCE" xlink:href="2021_S_004_003545_0.mets.xml.dmd.rdf"/>
13+
</dmdSec>
14+
<amdSec>
15+
<techMD ID="tmd_2021_S_004_003545_0_001">
16+
<mdRef MDTYPE="OTHER" LOCTYPE="URL" MIMETYPE="application/rdf+xml" OTHERMDTYPE="INSTANCE" xlink:href="2021_S_004_003545_0.tmd.rdf"/>
17+
</techMD>
18+
</amdSec>
19+
<fileSec>
20+
<fileGrp>
21+
<file ID="file_2021_S_004_003545_0_001" MIMETYPE="application/rdf+xml" CHECKSUM="00e2c0570f2d9f00c71c3d8009b8bec5a530167a01ebb473e67be5e97383cdc5" CHECKSUMTYPE="SHA-256">
22+
<FLocat LOCTYPE="URL" xlink:href="2021_S_004_003545_0.notice.rdf"/>
23+
</file>
24+
</fileGrp>
25+
</fileSec>
26+
<structMap ID="struct_map_2021_S_004_003545_001">
27+
<div TYPE="work" CONTENTIDS="ted:2021_S_004_003545" DMDID="dmd_2021_S_004_003545_0_001" ID="w_2021_S_004_003545_001">
28+
<div TYPE="expression" CONTENTIDS="ted:2021_S_004_003545.MUL" DMDID="dmd_2021_S_004_003545_0_001" ID="e_2021_S_004_003545_001">
29+
<div TYPE="manifestation" CONTENTIDS="ted:2021_S_004_003545.MUL.rdf" DMDID="dmd_2021_S_004_003545_0_001" ADMID="tmd_2021_S_004_003545_0_001" ID="m_2021_S_004_003545_001">
30+
<fptr CONTENTIDS="distribution:003545_2021/2021_S_004_003545_0.notice.rdf" FILEID="file_2021_S_004_003545_0_001"/>
31+
</div>
32+
</div>
33+
</div>
34+
</structMap>
35+
<behaviorSec>
36+
<behavior BTYPE="sparql-load" STRUCTID="m_2021_S_004_003545_001">
37+
<mechanism LOCTYPE="URL" LABEL="Sparql-load" xlink:href="cellar-mets:sparql-load-behavior?model=http%3A%2F%2Fdata.europa.eu%2Fa4g%2Fresource%2F2021%2F003545_2021"/>
38+
</behavior>
39+
</behaviorSec>
40+
</mets>

0 commit comments

Comments
 (0)