From 5f701862e07ad0a3beab853db51d78203b79fe9d Mon Sep 17 00:00:00 2001 From: Blake Regalia Date: Tue, 23 Jan 2024 17:01:13 -0800 Subject: [PATCH 1/4] fix: resolve source graph in separate query --- .../flexo/mms/routes/gsp/ModelLoad.kt | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt b/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt index 92607978..3d2e030d 100644 --- a/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt +++ b/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt @@ -217,6 +217,80 @@ fun Route.loadModel() { // compute the delta run { + val selectQueryString = """ + select distinct ?srcGraph { + graph mor-graph:Metadata { + # select the latest commit from the current named ref + ?srcRef mms:commit ?srcCommit . + + # get the latest snapshot associated with the source commit + ?srcCommit ^mms:commit/mms:snapshot ?srcSnapshot . + { + # prefer the model snapshot + ?srcSnapshot a mms:Model ; + mms:graph ?srcGraph . + } union { + # settle for staging... + ?srcSnapshot a mms:Staging ; + mms:graph ?srcGraph . + + # ...if model is not available + filter not exists { + ?srcCommit ^mms:commit/mms:snapshot/a mms:Model . + } + } + } + + bind( + sha256( + concat(str(?dstCommit), "\n", str(?srcCommit)) + ) as ?diffId + ) + + bind( + iri( + concat(str(?dstCommit), "/diffs/", ?diffId) + ) as ?diff + ) + + bind( + iri( + concat(str(mor-graph:), "Diff.Ins.", ?diffId) + ) as ?insGraph + ) + + bind( + iri( + concat(str(mor-graph:), "Diff.Del.", ?diffId) + ) as ?delGraph + ) + } + """.trimIndent() + + val selectResponseText = executeSparqlSelectOrAsk(selectQueryString) { + prefixes(prefixes) + + iri( + // use current branch as ref source + "srcRef" to prefixes["morb"]!!, + + // set dst graph + "dstGraph" to loadGraphUri, + + // set dst commit (this commit) + "dstCommit" to prefixes["morc"]!!, + ) + } + + // parse the JSON response + val bindings = Json.parseToJsonElement(selectResponseText).jsonObject["results"]!!.jsonObject["bindings"]!!.jsonArray + + if(bindings.size != 1) { + throw ServerBugException("Failed to resolve source graph") + } + + val sourceGraphIri = bindings[0].jsonObject["srcGraph"]!!.jsonObject["value"]!!.jsonPrimitive.content + val updateString = genDiffUpdate("", localConditions, """ graph mor-graph:Metadata { # select the latest commit from the current named ref @@ -253,6 +327,9 @@ fun Route.loadModel() { // set dst commit (this commit) "dstCommit" to prefixes["morc"]!!, + + // use explicit srcGraph + "srcGraph" to sourceGraphIri, ) } } From d8cd6a6ef554a9b0ff4b8f9d00b72f2c8cfd0794 Mon Sep 17 00:00:00 2001 From: Blake Regalia Date: Wed, 24 Jan 2024 16:14:58 -0800 Subject: [PATCH 2/4] fix: remove unnecessary binds --- .../flexo/mms/routes/gsp/ModelLoad.kt | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt b/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt index 3d2e030d..bc7be57d 100644 --- a/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt +++ b/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt @@ -240,30 +240,6 @@ fun Route.loadModel() { } } } - - bind( - sha256( - concat(str(?dstCommit), "\n", str(?srcCommit)) - ) as ?diffId - ) - - bind( - iri( - concat(str(?dstCommit), "/diffs/", ?diffId) - ) as ?diff - ) - - bind( - iri( - concat(str(mor-graph:), "Diff.Ins.", ?diffId) - ) as ?insGraph - ) - - bind( - iri( - concat(str(mor-graph:), "Diff.Del.", ?diffId) - ) as ?delGraph - ) } """.trimIndent() @@ -273,12 +249,6 @@ fun Route.loadModel() { iri( // use current branch as ref source "srcRef" to prefixes["morb"]!!, - - // set dst graph - "dstGraph" to loadGraphUri, - - // set dst commit (this commit) - "dstCommit" to prefixes["morc"]!!, ) } From b5ff3416a102880018efbd964aeda86e371b2404 Mon Sep 17 00:00:00 2001 From: Blake Regalia Date: Wed, 24 Jan 2024 16:22:45 -0800 Subject: [PATCH 3/4] chore: merge sonar properties --- sonar-project.properties | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sonar-project.properties b/sonar-project.properties index d48f9459..6815bc5f 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,4 +1,6 @@ sonar.projectKey=Open-MBEE_flexo-mms-layer1-service sonar.organization=openmbee sonar.language=kotlin -sonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml \ No newline at end of file +sonar.coverage.jacoco.xmlReportPaths=build/reports/jacoco/test/jacocoTestReport.xml +sonar.sources=src/main/ +sonar.tests=src/test/ \ No newline at end of file From 16979c2b8a9d701466e0983862f1f0807f2b20e9 Mon Sep 17 00:00:00 2001 From: Blake Regalia Date: Tue, 30 Jan 2024 16:07:46 -0800 Subject: [PATCH 4/4] fix: select srcGraph and srcCommit once --- .../flexo/mms/routes/gsp/ModelLoad.kt | 31 +++++-------------- 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt b/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt index bc7be57d..a496ea97 100644 --- a/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt +++ b/src/main/kotlin/org/openmbee/flexo/mms/routes/gsp/ModelLoad.kt @@ -218,7 +218,7 @@ fun Route.loadModel() { // compute the delta run { val selectQueryString = """ - select distinct ?srcGraph { + select distinct ?srcGraph ?srcCommit { graph mor-graph:Metadata { # select the latest commit from the current named ref ?srcRef mms:commit ?srcCommit . @@ -261,29 +261,9 @@ fun Route.loadModel() { val sourceGraphIri = bindings[0].jsonObject["srcGraph"]!!.jsonObject["value"]!!.jsonPrimitive.content - val updateString = genDiffUpdate("", localConditions, """ - graph mor-graph:Metadata { - # select the latest commit from the current named ref - ?srcRef mms:commit ?srcCommit . - - # get the latest snapshot associated with the source commit - ?srcCommit ^mms:commit/mms:snapshot ?srcSnapshot . - { - # prefer the model snapshot - ?srcSnapshot a mms:Model ; - mms:graph ?srcGraph . - } union { - # settle for staging... - ?srcSnapshot a mms:Staging ; - mms:graph ?srcGraph . - - # ...if model is not available - filter not exists { - ?srcCommit ^mms:commit/mms:snapshot/a mms:Model . - } - } - } - """) + val sourceCommitri = bindings[0].jsonObject["srcCommit"]!!.jsonObject["value"]!!.jsonPrimitive.content + + val updateString = genDiffUpdate("", localConditions, "") executeSparqlUpdate(updateString) { prefixes(prefixes) @@ -300,6 +280,9 @@ fun Route.loadModel() { // use explicit srcGraph "srcGraph" to sourceGraphIri, + + // use explicit srcCommit + "srcCommit" to sourceCommitri, ) } }