build.gradle 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. buildscript {
  2. repositories {
  3. mavenLocal()
  4. mavenCentral()
  5. }
  6. dependencies {
  7. classpath "io.opencaesar.owl:owl-fuseki-gradle:+"
  8. classpath "io.opencaesar.owl:owl-shacl-fuseki-gradle:+"
  9. classpath "io.opencaesar.owl:owl-query-gradle:+"
  10. classpath "io.opencaesar.owl:owl-load-gradle:+"
  11. classpath "io.opencaesar.owl:owl-reason-gradle:+"
  12. classpath "io.opencaesar.oml:oml-bikeshed-gradle:1.+"
  13. classpath "io.opencaesar.oml:oml-merge-gradle:1.+"
  14. classpath "io.opencaesar.adapters:oml2owl-gradle:1.+"
  15. }
  16. }
  17. plugins {
  18. id "java"
  19. id "maven-publish"
  20. id "eclipse"
  21. id "signing"
  22. }
  23. ext.title = "System Design Ontology - 2 Layers"
  24. description = "System design ontology considering only 2 layers (types and instances)."
  25. group = "be.ua"
  26. version = "1.0.0"
  27. ext {
  28. dataset = "SystemDesignOntology2Layers"
  29. rootIri = "http://ua.be/sdo2l/description/bundle"
  30. url = ""
  31. bikeshed = "build/bikeshed"
  32. }
  33. repositories {
  34. mavenLocal()
  35. mavenCentral()
  36. maven {
  37. //url "https://git.rys.one/api/v4/groups/dtdesign/-/packages/maven"
  38. url "https://git.rys.one/api/v4/projects/${System.getenv('CI_PROJECT_ID')}/packages/maven"
  39. name "Gitlab"
  40. credentials(HttpHeaderCredentials) {
  41. name = "Job-Token"
  42. value = System.getenv("CI_JOB_TOKEN")
  43. }
  44. authentication {
  45. header(HttpHeaderAuthentication)
  46. }
  47. }
  48. }
  49. configurations {
  50. oml
  51. }
  52. ext {
  53. //coreVersion = "3.+"
  54. metrologyVersion = "+"
  55. }
  56. dependencies {
  57. //oml "io.opencaesar.ontologies:core-vocabularies:$coreVersion"
  58. oml "io.opencaesar.ontologies:metrology-vocabularies:$metrologyVersion"
  59. }
  60. task downloadDependencies(type:io.opencaesar.oml.merge.OmlMergeTask, group:"oml") {
  61. inputZipPaths = configurations.oml.files
  62. outputCatalogFolder = file("build/oml")
  63. }
  64. task omlToBikeshed(type: io.opencaesar.oml.bikeshed.Oml2BikeshedTask, group:"oml", dependsOn: downloadDependencies) {
  65. inputCatalogPath = file("catalog.xml")
  66. inputCatalogTitle = project.title
  67. inputCatalogVersion = project.version
  68. rootOntologyIri = "$rootIri".toString()
  69. outputFolderPath = file("$bikeshed")
  70. publishUrl = "$url".toString()
  71. }
  72. task generateDocs(type: Exec, dependsOn: omlToBikeshed) {
  73. inputs.files(fileTree("$bikeshed").include("**/*.bs"))
  74. outputs.files(fileTree("$bikeshed").include("**/*.html"))
  75. if (org.gradle.internal.os.OperatingSystem.current().isWindows()) {
  76. commandLine "$bikeshed/publish.bat"
  77. } else {
  78. commandLine "$bikeshed/publish.sh"
  79. }
  80. }
  81. task omlToOwl(type:io.opencaesar.oml2owl.Oml2OwlTask, group:"oml", dependsOn: downloadDependencies) {
  82. // OML catalog
  83. inputCatalogPath = file("catalog.xml")
  84. // OWL catalog
  85. outputCatalogPath = file("build/owl/catalog.xml")
  86. }
  87. // A task to run the Openllet reasoner on the OWL catalog
  88. task owlReason(type:io.opencaesar.owl.reason.OwlReasonTask, group:"oml", dependsOn: omlToOwl) {
  89. // OWL catalog
  90. catalogPath = file("build/owl/catalog.xml")
  91. // Input ontology IRI to reason on
  92. inputOntologyIri = "$rootIri".toString()
  93. // Entailment statements to generate and the ontologies to persist them in
  94. specs = [
  95. "$rootIri/classes = ALL_SUBCLASS".toString(),
  96. "$rootIri/properties = INVERSE_PROPERTY | ALL_SUBPROPERTY".toString(),
  97. "$rootIri/individuals = ALL_INSTANCE | DATA_PROPERTY_VALUE | OBJECT_PROPERTY_VALUE | SAME_AS".toString()
  98. ]
  99. // Junit error report
  100. reportPath = file("build/reports/reasoning.xml")
  101. }
  102. task startFuseki(type: io.opencaesar.owl.fuseki.StartFusekiTask, group:"oml") {
  103. configurationPath = file(".fuseki.ttl")
  104. outputFolderPath = file(".fuseki")
  105. webUI = true
  106. }
  107. task stopFuseki(type: io.opencaesar.owl.fuseki.StopFusekiTask, group:"oml") {
  108. outputFolderPath = file(".fuseki")
  109. }
  110. task owlLoad(type:io.opencaesar.owl.load.OwlLoadTask, group:"oml", dependsOn: owlReason) {
  111. inputs.files(startFuseki.outputFolderPath) // rerun when fuseki restarts
  112. catalogPath = file("build/owl/catalog.xml")
  113. endpointURL = "https://fuseki.rys.app/$dataset".toString()
  114. fileExtensions = ["owl", "ttl"]
  115. iris = [
  116. "$rootIri/classes".toString(),
  117. "$rootIri/properties".toString(),
  118. "$rootIri/individuals".toString()
  119. ]
  120. }
  121. task owlQuery(type:io.opencaesar.owl.query.OwlQueryTask, group:"oml", dependsOn: owlLoad) {
  122. inputs.files(owlLoad.inputs.files) // rerun when the dataset changes
  123. endpointURL = "https://fuseki.rys.app/$dataset".toString()
  124. queryPath = file("src/sparql")
  125. resultPath = file("build/results")
  126. format = "json"
  127. }
  128. task owlShacl(type:io.opencaesar.owl.shacl.fuseki.OwlShaclFusekiTask, group:"oml", dependsOn: owlLoad) {
  129. inputs.files(owlLoad.inputs.files) // rerun when the dataset changes
  130. endpointURL = "https://fuseki.rys.app/$dataset".toString()
  131. queryPath = file("src/shacl")
  132. resultPath = file("build/reports")
  133. }
  134. build {
  135. group "oml"
  136. dependsOn owlReason
  137. }
  138. tasks.named("clean") {
  139. group "oml"
  140. }
  141. task omlZip(type: Zip, group:"oml") {
  142. from file("src/oml")
  143. include "**/*.oml"
  144. destinationDirectory = file("build/libs")
  145. archiveBaseName = project.name
  146. archiveVersion = project.version
  147. }
  148. def pomConfig = {
  149. licenses {
  150. license {
  151. name "The Apache Software License, Version 2.0"
  152. url "http://www.apache.org/licenses/LICENSE-2.0.txt"
  153. distribution "repo"
  154. }
  155. }
  156. developers {
  157. developer {
  158. id "uantwerp"
  159. name "University of Antwerp"
  160. email ""
  161. }
  162. }
  163. scm {
  164. url "https://msdl.uantwerpen.be/git/lucasalbertins/DTDesign/"
  165. }
  166. }
  167. publishing {
  168. publications {
  169. maven(MavenPublication) {
  170. groupId project.group
  171. artifactId project.name
  172. version project.version
  173. artifact omlZip
  174. pom {
  175. packaging = "zip"
  176. withXml {
  177. def root = asNode()
  178. if (configurations.find { it.name == "oml" }) {
  179. def dependencies = root.appendNode("dependencies")
  180. configurations.oml.resolvedConfiguration.resolvedArtifacts.each {
  181. def dependency = dependencies.appendNode("dependency")
  182. dependency.appendNode("groupId", it.moduleVersion.id.group)
  183. dependency.appendNode("artifactId", it.moduleVersion.id.name)
  184. dependency.appendNode("version", it.moduleVersion.id.version)
  185. if (it.classifier != null) {
  186. dependency.appendNode("classifier", it.classifier)
  187. dependency.appendNode("type", it.extension)
  188. }
  189. }
  190. }
  191. root.appendNode("name", project.ext.title)
  192. root.appendNode("description", project.description)
  193. root.appendNode("url", "https://msdl.uantwerpen.be/git/lucasalbertins/DTDesign/")
  194. root.children().last() + pomConfig
  195. }
  196. }
  197. }
  198. }
  199. repositories {
  200. maven {
  201. //url "https://git.rys.one/api/v4/groups/dtdesign/-/packages/maven"
  202. url "https://git.rys.one/api/v4/projects/${System.getenv('CI_PROJECT_ID')}/packages/maven"
  203. name "Gitlab"
  204. credentials(HttpHeaderCredentials) {
  205. name = "Job-Token"
  206. value = System.getenv("CI_JOB_TOKEN")
  207. }
  208. authentication {
  209. header(HttpHeaderAuthentication)
  210. }
  211. }
  212. }
  213. }
  214. //signing {
  215. // def pgpSigningKey = project.findProperty("pgpSigningKey")
  216. // if (pgpSigningKey != null) { pgpSigningKey = new String(pgpSigningKey.decodeBase64()) }
  217. // def pgpSigningPassword = project.findProperty("pgpSigningPassword")
  218. // useInMemoryPgpKeys(pgpSigningKey, pgpSigningPassword)
  219. // sign publishing.publications.maven
  220. //}
  221. //gradle.taskGraph.whenReady { taskGraph ->
  222. // signMavenPublication.onlyIf { taskGraph.allTasks.any{it.name == "publishMavenPublicationToGitlabRepository"} }
  223. //}
  224. eclipse {
  225. synchronizationTasks downloadDependencies
  226. }