Skip to content

Commit

Permalink
fix: Add database migration which removes invalid triples from the da…
Browse files Browse the repository at this point in the history
…tabase
  • Loading branch information
seakayone committed Mar 13, 2024
1 parent 998e921 commit d7be347
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 2 deletions.
2 changes: 1 addition & 1 deletion webapi/src/main/resources/knora-ontologies/knora-base.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
rdf:type owl:Ontology ;
rdfs:label "The Knora base ontology"@en ;
:attachedToProject knora-admin:SystemProject ;
:ontologyVersion "knora-base v29" .
:ontologyVersion "knora-base v30" .


#################################################################
Expand Down
2 changes: 1 addition & 1 deletion webapi/src/main/scala/org/knora/webapi/package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ package object webapi {
* The version of `knora-base` and of the other built-in ontologies that this version of Knora requires.
* Must be the same as the object of `knora-base:ontologyVersion` in the `knora-base` ontology being used.
*/
val KnoraBaseVersion: String = "knora-base v29"
val KnoraBaseVersion: String = "knora-base v30"

/**
* `IRI` is a synonym for `String`, used to improve code readability.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ package org.knora.webapi.store.triplestore.upgrade
import com.typesafe.scalalogging.Logger

import org.knora.webapi.messages.store.triplestoremessages.RdfDataObject
import org.knora.webapi.store.triplestore.upgrade.plugins.UpgradePluginPR3110
import org.knora.webapi.store.triplestore.upgrade.plugins.*

/**
Expand Down Expand Up @@ -64,6 +65,8 @@ object RepositoryUpdatePlan {
PluginForKnoraBaseVersion(versionNumber = 27, plugin = new MigrateOnlyBuiltInGraphs), // PR 3026
PluginForKnoraBaseVersion(versionNumber = 28, plugin = new MigrateOnlyBuiltInGraphs), // PR 3038
PluginForKnoraBaseVersion(versionNumber = 29, plugin = new UpgradePluginPR3110()),
PluginForKnoraBaseVersion(versionNumber = 30, plugin = new UpgradePluginPR3110()),
PluginForKnoraBaseVersion(versionNumber = 30, plugin = new UpgradePluginPR3116()),
// KEEP IT ON THE BOTTOM
// From "versionNumber = 6" don't use prBasedVersionString!
)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright © 2021 - 2024 Swiss National Data and Service Center for the Humanities and/or DaSCH Service Platform contributors.
* SPDX-License-Identifier: Apache-2.0
*/

package org.knora.webapi.store.triplestore.upgrade.plugins

import org.eclipse.rdf4j.sparqlbuilder.core.SparqlBuilder.`var` as variable
import org.eclipse.rdf4j.sparqlbuilder.core.query.ModifyQuery
import org.eclipse.rdf4j.sparqlbuilder.core.query.*
import org.eclipse.rdf4j.sparqlbuilder.rdf.Rdf

import org.knora.webapi.slice.admin.AdminConstants
import org.knora.webapi.slice.admin.repo.rdf.Vocabulary
import org.knora.webapi.store.triplestore.upgrade.GraphsForMigration
import org.knora.webapi.store.triplestore.upgrade.MigrateSpecificGraphs

/**
* Certain restricted views have a watermark that is not a boolean. This plugin removes the invalid watermark triples.
*/
class UpgradePluginPR3116 extends AbstractSparqlUpdatePlugin {

override def graphsForMigration: GraphsForMigration =
MigrateSpecificGraphs.from(AdminConstants.adminDataNamedGraph)

private val removeInvalidRestrictedViewWatermarkTriples: ModifyQuery = {
val invalidTriple = variable("s").has(
Vocabulary.KnoraAdmin.projectRestrictedViewWatermark,
Rdf.literalOf("path_to_image"),
)
Queries
.MODIFY()
.prefix(Vocabulary.KnoraAdmin.NS)
.delete(invalidTriple)
.where(invalidTriple.from(Vocabulary.NamedGraphs.knoraAdminIri))
}

override def getQueries: List[ModifyQuery] = List(removeInvalidRestrictedViewWatermarkTriples)
}

0 comments on commit d7be347

Please sign in to comment.