diff --git a/src/main/kotlin/no/digdir/informasjonsforvaltning/fdk_dataservice_harvester/service/UpdateService.kt b/src/main/kotlin/no/digdir/informasjonsforvaltning/fdk_dataservice_harvester/service/UpdateService.kt index d924305..7379e43 100644 --- a/src/main/kotlin/no/digdir/informasjonsforvaltning/fdk_dataservice_harvester/service/UpdateService.kt +++ b/src/main/kotlin/no/digdir/informasjonsforvaltning/fdk_dataservice_harvester/service/UpdateService.kt @@ -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 @@ -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 ) diff --git a/src/test/resources/dataservice_0.ttl b/src/test/resources/dataservice_0.ttl index 3b5717a..7a22315 100644 --- a/src/test/resources/dataservice_0.ttl +++ b/src/test/resources/dataservice_0.ttl @@ -12,6 +12,19 @@ dct:isPartOf ; foaf:primaryTopic . + + 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 . + + + a dcat:Catalog; + dct:publisher ; + dct:title "Dataservicekatalog for Testdirektoratet"@nb; + dcat:service . + a dcat:DataService ; dct:description "Description of service 0"@nb ; diff --git a/src/test/resources/dataservice_1.ttl b/src/test/resources/dataservice_1.ttl index 8bc8ceb..d28b905 100644 --- a/src/test/resources/dataservice_1.ttl +++ b/src/test/resources/dataservice_1.ttl @@ -23,3 +23,16 @@ dct:modified "2020-03-12T11:52:16.122Z"^^xsd:dateTime ; dct:isPartOf ; foaf:primaryTopic . + + + 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 . + + + a dcat:Catalog ; + dct:publisher ; + dct:title "Dataservicekatalog 1 for Testdirektoratet"@nb ; + dcat:service .