build.gradle 8.2 KB

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