Skip to content

Commit

Permalink
feat: add catalog triples to meta models
Browse files Browse the repository at this point in the history
  • Loading branch information
hegeaal committed Apr 15, 2024
1 parent 1f06232 commit 029b2f4
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package no.digdir.informasjonsforvaltning.fdk_dataservice_harvester.service

import no.digdir.informasjonsforvaltning.fdk_dataservice_harvester.configuration.ApplicationProperties
import no.digdir.informasjonsforvaltning.fdk_dataservice_harvester.harvester.extractCatalogModel
import no.digdir.informasjonsforvaltning.fdk_dataservice_harvester.model.CatalogMeta
import no.digdir.informasjonsforvaltning.fdk_dataservice_harvester.model.DataServiceMeta
import no.digdir.informasjonsforvaltning.fdk_dataservice_harvester.rdf.addMetaPrefixes
Expand Down Expand Up @@ -48,27 +49,36 @@ class UpdateService(
fun updateMetaData() {
catalogRepository.findAll()
.forEach { catalog ->
val catalogMeta = catalog.createMetaModel()
val completeMetaModel = ModelFactory.createDefaultModel()
completeMetaModel.add(catalogMeta)

val catalogNoRecords = turtleService.getCatalog(catalog.fdkId, withRecords = false)
?.let { parseRDFResponse(it, Lang.TURTLE, null) }

if (catalogNoRecords != null) {
val catalogURI = "${applicationProperties.catalogUri}/${catalog.fdkId}"
val catalogMeta = catalog.createMetaModel()
val catalogTriples = catalogNoRecords.getResource(catalog.uri)
?.extractCatalogModel()
catalogTriples?.add(catalogMeta)

dataServiceRepository.findAllByIsPartOf(catalogURI)
.filter { it.modelContainsDataService(catalogNoRecords) }
.forEach { dataService ->
val serviceMetaModel = dataService.createMetaModel()
catalogMeta.add(serviceMetaModel)
completeMetaModel.add(serviceMetaModel)

turtleService.getDataService(dataService.fdkId, withRecords = false)
?.let { conceptNoRecords -> parseRDFResponse(conceptNoRecords, Lang.TURTLE, null) }
?.let { conceptModelNoRecords -> serviceMetaModel.union(conceptModelNoRecords) }
?.let { conceptModelNoRecords -> serviceMetaModel
.union(conceptModelNoRecords)
.union(catalogTriples)
}
?.run { turtleService.saveAsDataService(this, fdkId = dataService.fdkId, withRecords = true) }
}

turtleService.saveAsCatalog(
catalogMeta.union(catalogNoRecords),
completeMetaModel.union(catalogNoRecords),
fdkId = catalog.fdkId,
withRecords = true
)
Expand Down
13 changes: 13 additions & 0 deletions src/test/resources/dataservice_0.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,19 @@
dct:isPartOf <http://localhost:5050/catalogs/e422e2a7-287f-349f-876a-dc3541676f21> ;
foaf:primaryTopic <https://testdirektoratet.no/model/dataservice/0> .

<http://localhost:5050/catalogs/e422e2a7-287f-349f-876a-dc3541676f21>
a dcat:CatalogRecord;
dct:identifier "e422e2a7-287f-349f-876a-dc3541676f21";
dct:issued "2020-03-12T11:52:16.122Z"^^xsd:dateTime;
dct:modified "2020-03-12T11:52:16.122Z"^^xsd:dateTime;
foaf:primaryTopic <https://testdirektoratet.no/model/dataservice-catalogs/0> .

<https://testdirektoratet.no/model/dataservice-catalogs/0>
a dcat:Catalog;
dct:publisher <https://organization-catalogue.fellesdatakatalog.brreg.no/organizations/123456789>;
dct:title "Dataservicekatalog for Testdirektoratet"@nb;
dcat:service <https://testdirektoratet.no/model/dataservice/0> .

<https://testdirektoratet.no/model/dataservice/0>
a dcat:DataService ;
dct:description "Description of service 0"@nb ;
Expand Down
13 changes: 13 additions & 0 deletions src/test/resources/dataservice_1.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,16 @@
dct:modified "2020-03-12T11:52:16.122Z"^^xsd:dateTime ;
dct:isPartOf <http://localhost:5050/catalogs/65555cdb-6809-3cc4-bff1-aaa6d9426311> ;
foaf:primaryTopic <https://testdirektoratet.no/model/dataservice/1> .

<http://localhost:5050/catalogs/65555cdb-6809-3cc4-bff1-aaa6d9426311>
a dcat:CatalogRecord ;
dct:identifier "65555cdb-6809-3cc4-bff1-aaa6d9426311" ;
dct:issued "2020-03-12T11:52:16.122Z"^^xsd:dateTime ;
dct:modified "2020-03-12T11:52:16.122Z"^^xsd:dateTime ;
foaf:primaryTopic <https://testdirektoratet.no/model/dataservice-catalogs/1> .

<https://testdirektoratet.no/model/dataservice-catalogs/1>
a dcat:Catalog ;
dct:publisher <https://organization-catalogue.fellesdatakatalog.brreg.no/organizations/123456789> ;
dct:title "Dataservicekatalog 1 for Testdirektoratet"@nb ;
dcat:service <https://testdirektoratet.no/model/dataservice/1> .

0 comments on commit 029b2f4

Please sign in to comment.