Skip to content

Commit ed3d4ee

Browse files
committed
feat: change URI scheme for external references and their identifiers
References to external entities are not limited to the notice. It can be to a procedure, a review-related entity, or even something else entirely. In some cases, a reference is given without sufficient context. For e.g. in the case of an external FrameworkAgreement only the external notice ID may be given, but nothing about the contract itself. This therefore violates our chosen scheme, because we cannot populate an external ID in the trailing section of the URI: ``` {current-notice}/Notice/{external-notice}/{external-entity}/{external-id} ``` Even among notices, nested entities of the referred notice do not play well with this URI scheme we have decided on. That is because, given only two positions in the URI for entity/class names, it raises chances for collisions for IDs in the trailer.
1 parent 3023aec commit ed3d4ee

47 files changed

Lines changed: 844 additions & 824 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/mappings-can/Contract-can.rml.ttl

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ tedm:MG-Identifier-identifier-Notice_ND-SettledContract a rr:TriplesMap ;
466466
rr:subjectMap
467467
[
468468
rdfs:label "ND-SettledContract" ;
469-
rml:reference "if (exists(cac:NoticeDocumentReference/cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cac:NoticeDocumentReference/cbc:ID, ' ', '-' ), '/' , '-') || '/FrameworkAgreementNoticeIdentifier/' || encode-for-uri(cac:NoticeDocumentReference/cbc:ID) else null" ;
469+
rml:reference "if (exists(cac:NoticeDocumentReference/cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cac:NoticeDocumentReference/cbc:ID) || '/Identifier/' || encode-for-uri(cac:NoticeDocumentReference/cbc:ID) else null" ;
470470
rr:class adms:Identifier
471471
] ;
472472
rr:predicateObjectMap
@@ -542,17 +542,19 @@ tedm:MG-FrameworkAgreement-announcesContract-Notice_ND-SettledContract a rr:Trip
542542
rml:logicalSource
543543
[
544544
rml:source "data/source.xml" ;
545+
# TODO: shouldn't this be at the NoticeDocumentReference level?
545546
rml:iterator "/*/ext:UBLExtensions/ext:UBLExtension/ext:ExtensionContent/efext:EformsExtension/efac:NoticeResult/efac:SettledContract" ;
546547
rml:referenceFormulation ql:XPath
547548
] ;
548549
rr:subjectMap
549550
[
550551
rdfs:label "ND-SettledContract" ;
551-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(cac:NoticeDocumentReference/cbc:ID, ' ', '-' ), '/' , '-')}_ProxyFrameworkAgreement" ;
552+
rml:reference "if (exists(cac:NoticeDocumentReference/cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cac:NoticeDocumentReference/cbc:ID) || '/FrameworkAgreement' else null" ;
552553
rr:class epo:FrameworkAgreement
553554
] ;
554555
.
555556

557+
# this is a proxy for a cited resource that does not have information (an epo:FrameworkAgreement instance that is defined in a different notice)
556558
tedm:MG-FrameworkAgreement-followsRulesSetBy-PurchaseContract_ND-SettledContract a rr:TriplesMap ;
557559
rdfs:label "MG-FrameworkAgreement" ;
558560
rml:logicalSource
@@ -564,7 +566,8 @@ tedm:MG-FrameworkAgreement-followsRulesSetBy-PurchaseContract_ND-SettledContract
564566
rr:subjectMap
565567
[
566568
rdfs:label "ND-SettledContract" ;
567-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(cac:NoticeDocumentReference/cbc:ID, ' ', '-' ), '/' , '-')}_ProxyFrameworkAgreement" ;
569+
# TODO: if it is a PurchaseContract, then can we even rely on the NoticeDocumentReference being present? that is, do both announcesContract and followsRulesSetBy require an external notice context?
570+
rml:reference "if (exists(cac:NoticeDocumentReference/cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cac:NoticeDocumentReference/cbc:ID) || '/FrameworkAgreement' else null" ;
568571
rr:class epo:FrameworkAgreement
569572
] ;
570573
.

src/mappings-can/Procedure-can.rml.ttl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ tedm:MG-Procedure-refersToPreviousProcedure-DirectAwardTerm-isSubjectToProcedure
132132
rr:subjectMap
133133
[
134134
rdfs:label "ND-DirectAward";
135-
rml:reference "if (exists(cbc:Description)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Procedure$' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
135+
rml:reference "if (exists(cbc:Description)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Procedure/' || encode-for-uri(cbc:Description) else null" ;
136136
rr:class epo:Procedure
137137
] ;
138138

@@ -161,7 +161,7 @@ tedm:MG-Identifier-identifier-Procedure-refersToPreviousProcedure-DirectAwardTer
161161
rr:subjectMap
162162
[
163163
rdfs:label "ND-DirectAward" ;
164-
rml:reference "if (exists(cbc:Description)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/PreviousProcedureIdentifier$' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
164+
rml:reference "if (exists(cbc:Description)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Identifier/' || encode-for-uri(cbc:Description) else null" ;
165165
rr:class adms:Identifier
166166
] ;
167167
rr:predicateObjectMap

src/mappings-can/ReviewObject-can.rml.ttl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -619,7 +619,7 @@ tedm:MG-Identifier-identifier-ReviewObject-refersToPreviousReview-ReviewDecision
619619
[
620620
tedm:minSDKVersion "1.13" ;
621621
rdfs:label "ND-ReviewStatus" ;
622-
rml:reference "if (efbc:AppealStageCode='dec') then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/ReviewDecisionPreviousIdentifier/' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
622+
rml:reference "if (efbc:AppealStageCode='dec') then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Identifier/' || encode-for-uri(efbc:PreviousAppealID) else null" ;
623623
rr:class adms:Identifier
624624
] ;
625625
rr:predicateObjectMap
@@ -685,7 +685,7 @@ tedm:MG-Identifier-identifier-ReviewObject-refersToPreviousReview-ReviewRequest_
685685
[
686686
tedm:minSDKVersion "1.13" ;
687687
rdfs:label "ND-ReviewStatus" ;
688-
rml:reference "if ((efbc:AppealStageCode='req')and exists(efbc:PreviousAppealID)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/ReviewRequestPreviousIdentifier/' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
688+
rml:reference "if ((efbc:AppealStageCode='req')and exists(efbc:PreviousAppealID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Identifier/' || encode-for-uri(efbc:PreviousAppealID) else null" ;
689689
rr:class adms:Identifier
690690
] ;
691691
rr:predicateObjectMap

src/mappings-can/root-can-modif.rml.ttl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ tedm:MG-Notice-refersToPrevious-ContractModificationNotice_ND-ContractModificati
129129
rr:subjectMap
130130
[
131131
rdfs:label "ND-ContractModification" ;
132-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(efbc:ChangedNoticeIdentifier, ' ', '-' ), '/' , '-')}/Notice" ;
132+
rr:template "http://data.europa.eu/a4g/resource/{/*/cbc:ID[@schemeName='notice-id']}-{/*/cbc:VersionID}/Notice/{encode-for-uri(efbc:ChangedNoticeIdentifier)}" ;
133133
rr:class epo:Notice
134134
] ;
135135
rr:predicateObjectMap
@@ -159,7 +159,7 @@ tedm:MG-Identifier-identifier-Notice-refersToPrevious-ContractModificationNotice
159159
rr:subjectMap
160160
[
161161
rdfs:label "ND-ContractModification" ;
162-
rml:reference "if (exists(efbc:ChangedNoticeIdentifier)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(efbc:ChangedNoticeIdentifier, ' ', '-' ), '/' , '-') || '/NoticeIdentifier/' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
162+
rml:reference "if (exists(efbc:ChangedNoticeIdentifier)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(efbc:ChangedNoticeIdentifier) || '/Identifier/' || encode-for-uri(efbc:ChangedNoticeIdentifier) else null" ;
163163
rr:class adms:Identifier
164164
] ;
165165
rr:predicateObjectMap

src/mappings-pin/root-pin.rml.ttl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ tedm:MG-Notice-refersToPrevious-PlanningNotice_ND-PartPreviousPlanning a rr:Trip
261261
rr:subjectMap
262262
[
263263
rdfs:label "ND-PartPreviousPlanning" ;
264-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(cbc:ID, ' ', '-' ), '/' , '-')}/Notice" ;
264+
rr:template "http://data.europa.eu/a4g/resource/{/*/cbc:ID[@schemeName='notice-id']}-{/*/cbc:VersionID}/Notice/{encode-for-uri(cbc:ID)}" ;
265265
rr:class epo:Notice
266266
] ;
267267
rr:predicateObjectMap
@@ -291,7 +291,7 @@ tedm:MG-PlanningNotice-refersToPrevious-PlanningNotice_ND-PartPreviousPlanning a
291291
rr:subjectMap
292292
[
293293
rdfs:label "ND-PartPreviousPlanning" ;
294-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(cbc:ID, ' ', '-' ), '/' , '-')}/Notice" ;
294+
rr:template "http://data.europa.eu/a4g/resource/{/*/cbc:ID[@schemeName='notice-id']}-{/*/cbc:VersionID}/Notice/{encode-for-uri(cbc:ID)}" ;
295295
rr:class epo-not:PlanningNotice
296296
] ;
297297
rr:predicateObjectMap
@@ -321,7 +321,7 @@ tedm:MG-Identifier-identifier-Notice-refersToPrevious-PlanningNotice_ND-PartPrev
321321
rr:subjectMap
322322
[
323323
rdfs:label "ND-PartPreviousPlanning" ;
324-
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/NoticeIdentifier/' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
324+
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cbc:ID) || '/Identifier/' || encode-for-uri(cbc:ID) else null" ;
325325
rr:class adms:Identifier
326326
] ;
327327
rr:predicateObjectMap
@@ -357,7 +357,7 @@ tedm:MG-PlannedProcurementPart-announcesPlannedProcurementPart-PlanningNotice-re
357357
rr:subjectMap
358358
[
359359
rdfs:label "ND-PartPreviousPlanning" ;
360-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(cbc:ID, ' ', '-' ), '/' , '-')}/PlannedProcurementPart/{cbc:ReferencedDocumentInternalAddress}" ;
360+
rr:template "http://data.europa.eu/a4g/resource/{/*/cbc:ID[@schemeName='notice-id']}-{/*/cbc:VersionID}/Notice/{encode-for-uri(cbc:ID)}/PlannedProcurementPart/{cbc:ReferencedDocumentInternalAddress}" ;
361361
rr:class epo:PlannedProcurementPart
362362
] ;
363363
rr:predicateObjectMap
@@ -387,7 +387,7 @@ tedm:MG-Identifier-identifier-PlannedProcurementPart-announcesPlannedProcurement
387387
rr:subjectMap
388388
[
389389
rdfs:label "ND-PartPreviousPlanning" ;
390-
rml:reference "if (exists(cbc:ReferencedDocumentInternalAddress)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/PreviousPlanningPartIdentifier$' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
390+
rml:reference "if (exists(cbc:ReferencedDocumentInternalAddress)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cbc:ID) || '/Identifier/' || encode-for-uri(cbc:ReferencedDocumentInternalAddress) else null" ;
391391
rr:class adms:Identifier
392392
] ;
393393
rr:predicateObjectMap

src/mappings-versioned/ChangeInformation_v1.3-1.6.rml.ttl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ tedm:MG-Identifier-relatesToEFormSectionIdentifier-ChangeInformation_ND-ChangedS
5252
rr:subjectMap
5353
[
5454
rdfs:label "ND-Changes";
55-
rml:reference "if (exists(efbc:ChangedSectionIdentifier)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(../efbc:ChangedNoticeIdentifier, ' ', '-' ), '/' , '-') || '/ChangedSectionIdentifier/' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
55+
rml:reference "if (exists(efbc:ChangedSectionIdentifier)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(../efbc:ChangedNoticeIdentifier) || '/Identifier/' || encode-for-uri(efbc:ChangedSectionIdentifier) else null" ;
5656
rr:class adms:Identifier
5757
] ;
5858
rr:predicateObjectMap

src/mappings-versioned/ChangeInformation_v1.7+.rml.ttl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ tedm:MG-Identifier-relatesToEFormSectionIdentifier-ChangeInformation_ND-ChangedS
5050
rr:subjectMap
5151
[
5252
rdfs:label "ND-Changes";
53-
rml:reference "if (exists(efbc:ChangedSectionIdentifier)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(../../efbc:ChangedNoticeIdentifier, ' ', '-' ), '/' , '-') || '/ChangedSectionIdentifier/' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
53+
rml:reference "if (exists(efbc:ChangedSectionIdentifier)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(../../efbc:ChangedNoticeIdentifier) || '/Identifier/' || encode-for-uri(efbc:ChangedSectionIdentifier) else null" ;
5454
rr:class adms:Identifier
5555
] ;
5656
rr:predicateObjectMap

src/mappings/ChangeInformation.rml.ttl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ tedm:MG-Identifier-identifier-Notice-refersToPreviousNotice-ChangeInformation_ND
154154
rr:subjectMap
155155
[
156156
rdfs:label "ND-Changes";
157-
rml:reference "if (exists(efbc:ChangedNoticeIdentifier)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/NoticeIdentifier$' || replace(replace(replace(path(), 'Q\\{[^}]+\\}', ''), '\\[([0-9]+)\\]', '$1'), '/', '_') else null" ;
157+
rml:reference "if (exists(efbc:ChangedNoticeIdentifier)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(efbc:ChangedNoticeIdentifier) || '/Identifier/' || encode-for-uri(efbc:ChangedNoticeIdentifier) else null" ;
158158
rr:class adms:Identifier
159159
] ;
160160
rr:predicateObjectMap
@@ -228,7 +228,7 @@ tedm:MG-Notice-refersToPreviousNotice-ChangeInformation_ND-Changes a rr:TriplesM
228228
rr:subjectMap
229229
[
230230
rdfs:label "ND-Changes";
231-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(efbc:ChangedNoticeIdentifier, ' ', '-' ), '/' , '-')}/Notice" ;
231+
rr:template "http://data.europa.eu/a4g/resource/{/*/cbc:ID[@schemeName='notice-id']}-{/*/cbc:VersionID}/Notice/{encode-for-uri(efbc:ChangedNoticeIdentifier)}" ;
232232
rr:class epo:Notice
233233
] ;
234234
rr:predicateObjectMap

src/mappings/Lot.rml.ttl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,7 +1121,7 @@ tedm:MG-Identifier-identifier-PlanningNotice-refersToPrevious-Notice_ND-LotPrevi
11211121
[
11221122
rdfs:label "ND-LotPreviousPlanning";
11231123
# this is an example of an IRI component hashing on an explicit element to prevent unwanted instances (owing to an iterator that has repeating elements)
1124-
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/PlanningNoticeIdentifier/' || encode-for-uri(cbc:ID) else null" ;
1124+
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cbc:ID) || '/Identifier/' || encode-for-uri(cbc:ID) else null" ;
11251125
rr:class adms:Identifier
11261126
] ;
11271127
rr:predicateObjectMap
@@ -1159,7 +1159,7 @@ tedm:MG-PlanningNotice-refersToPrevious-Notice_ND-LotPreviousPlanning a rr:Tripl
11591159
[
11601160
rdfs:label "ND-LotPreviousPlanning";
11611161
# we use the ID at this level to create an IRI with the pattern of a Notice
1162-
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/Notice' else null" ;
1162+
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cbc:ID) else null" ;
11631163
rr:class epo-not:PlanningNotice
11641164
] ;
11651165
rr:predicateObjectMap
@@ -1234,7 +1234,7 @@ tedm:MG-Identifier-identifier-PlannedProcurementPart-announcesPlannedProcurement
12341234
rr:subjectMap
12351235
[
12361236
rdfs:label "ND-LotPreviousPlanning";
1237-
rml:reference "if (exists(cbc:ReferencedDocumentInternalAddress)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/PlannedProcurementPartIdentifier/' || encode-for-uri(cbc:ID) else null" ;
1237+
rml:reference "if (exists(cbc:ReferencedDocumentInternalAddress)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cbc:ID) || '/Identifier/' || encode-for-uri(cbc:ReferencedDocumentInternalAddress) else null" ;
12381238
rr:class adms:Identifier
12391239
] ;
12401240
rr:predicateObjectMap
@@ -1261,7 +1261,7 @@ tedm:MG-PlannedProcurementPart-announcesPlannedProcurementPart-PlanningNotice-re
12611261
rr:subjectMap
12621262
[
12631263
rdfs:label "ND-LotPreviousPlanning";
1264-
rml:reference "if (exists(cbc:ReferencedDocumentInternalAddress)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/PlannedProcurementPart/' || encode-for-uri(cbc:ID) else null" ;
1264+
rml:reference "if (exists(cbc:ReferencedDocumentInternalAddress)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cbc:ID) || '/PlannedProcurementPart/' || encode-for-uri(cbc:ReferencedDocumentInternalAddress) else null" ;
12651265
rr:class epo:PlannedProcurementPart
12661266
] ;
12671267
rr:predicateObjectMap

src/mappings/root.rml.ttl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -739,7 +739,7 @@ tedm:MG-Notice-refersToPrevious-Notice_ND-PreviousNoticeReference a rr:TriplesMa
739739
rr:subjectMap
740740
[
741741
rdfs:label "ND-PreviousNoticeReference" ;
742-
rr:template "http://data.europa.eu/a4g/resource/{replace(replace(cbc:ID, ' ', '-' ), '/' , '-')}/Notice" ;
742+
rr:template "http://data.europa.eu/a4g/resource/{/*/cbc:ID[@schemeName='notice-id']}-{/*/cbc:VersionID}/Notice/{encode-for-uri(cbc:ID)}" ;
743743
rr:class epo:Notice
744744
] ;
745745
rr:predicateObjectMap
@@ -770,7 +770,7 @@ tedm:MG-Identifier-identifier-Notice-refersToPrevious-Notice_ND-PreviousNoticeRe
770770
rr:subjectMap
771771
[
772772
rdfs:label "ND-PreviousNoticeReference" ;
773-
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || replace(replace(cbc:ID, ' ', '-' ), '/' , '-') || '/PreviousNoticeIdentifier/' || encode-for-uri(cbc:ID) else null" ;
773+
rml:reference "if (exists(cbc:ID)) then 'http://data.europa.eu/a4g/resource/' || /*/cbc:ID[@schemeName='notice-id'] || '-' || /*/cbc:VersionID || '/Notice/' || encode-for-uri(cbc:ID) || '/Identifier/' || encode-for-uri(cbc:ID) else null" ;
774774
rr:class adms:Identifier
775775
] ;
776776
rr:predicateObjectMap

0 commit comments

Comments
 (0)