Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4af6f3b
Add experimental additional source for data provided via stdin
mikesname Jun 6, 2025
6f8b870
Added first experimental option to parallelise the execution of the e…
herminiogg Aug 11, 2025
49384eb
Pulled latest version of the ShExML CodeMeta file
herminiogg Aug 11, 2025
40047a6
Incremented the max memory for the parallel testing in the GitHub Act…
herminiogg Aug 11, 2025
ff8b623
Merge branch 'enhancement-#223' of github.com:herminiogg/ShExML into …
herminiogg Aug 11, 2025
9dd81fe
Second attemp to increment the max memory size for the GitHub Action …
herminiogg Aug 11, 2025
c80e8cd
Added fork and grouping options to the execution of tests in the GitH…
herminiogg Aug 12, 2025
d938645
Changed to JDK 17 in the GitHub Action workflow to continue supportin…
herminiogg Aug 12, 2025
dad4362
Reducing the batch size for the tests in the GitHub Actions workflow
herminiogg Aug 12, 2025
7f0faf9
Refactoring of the cross-compiled classes to avoid the duplication of…
herminiogg Aug 12, 2025
d43c75b
Increased Scala versions to the latest available ones and the 3.3 LTS…
herminiogg Aug 12, 2025
5ef8a68
Merge pull request #226 from herminiogg/enhancement-#223
herminiogg Aug 12, 2025
30bd813
Merge pull request #227 from herminiogg/enhancement-#225
herminiogg Aug 12, 2025
c602cbe
Changed the way in which relative paths with wildcards are transforme…
herminiogg Aug 13, 2025
ce0fdf4
Merge pull request #229 from herminiogg/enhancement-#228
herminiogg Aug 13, 2025
a8c3d8f
Merge branch 'enhancement-#230' into experiments/stdin_input
herminiogg Sep 5, 2025
c90b639
Merge pull request #212 from mikesname/experiments/stdin_input
herminiogg Sep 5, 2025
b9d160b
Implemented the possibility to input a file from stdin as proposed in…
herminiogg Sep 5, 2025
3379a35
Merge pull request #231 from herminiogg/enhancement-#230
herminiogg Sep 5, 2025
24537d5
Added the option to use - to read the mapping rules from stdin in the…
herminiogg Sep 5, 2025
6d34b44
Merge pull request #233 from herminiogg/enhancement-#232
herminiogg Sep 5, 2025
848264f
Added tests for the CLI
herminiogg Sep 9, 2025
0314d42
Version 0.6.0
herminiogg Sep 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/scala.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,19 @@ jobs:

steps:
- uses: actions/checkout@v4
- name: Set up JDK 8
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
java-version: '8'
distribution: 'adopt'
java-version: '21'
distribution: 'temurin'
- uses: sbt/setup-sbt@v1
- name: Build the docker compose stack
run: docker compose up -d
- name: Run tests
run: sbt --mem 2048 "+ test"
- name: Run tests parallel all
run: sbt --mem 8192 "set fork := true" "set Test / testGrouping := { (Test / definedTests).value.grouped(20).map { group => Tests.Group(group.head.name + \"-batch\", group, Tests.SubProcess(ForkOptions())) }.toSeq }" "+ testOnly * -- -Dparallel=all"
- name: Run tests parallel shapes
run: sbt --mem 8192 "set fork := true" "set Test / testGrouping := { (Test / definedTests).value.grouped(20).map { group => Tests.Group(group.head.name + \"-batch\", group, Tests.SubProcess(ForkOptions())) }.toSeq }" "+ testOnly * -- -Dparallel=shapes"
- name: Run tests parallel queries
run: sbt --mem 8192 "set fork := true" "set Test / testGrouping := { (Test / definedTests).value.grouped(20).map { group => Tests.Group(group.head.name + \"-batch\", group, Tests.SubProcess(ForkOptions())) }.toSeq }" "+ testOnly * -- -Dparallel=queries"
9 changes: 6 additions & 3 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ lazy val shexml = project
.in(file("."))
.settings(
name := "ShExML",
version := "0.5.4",
scalaVersion := "3.2.0",
crossScalaVersions := Seq("2.12.17", "2.13.9", "3.2.0"),
version := "0.6.0",
scalaVersion := "3.3.6",
crossScalaVersions := Seq("2.12.20", "2.13.16", "3.3.6"),
libraryDependencies ++= Seq(
"org.antlr" % "antlr4" % "4.9.2",
"net.sf.saxon" % "Saxon-HE" % "12.4",
Expand Down Expand Up @@ -38,6 +38,9 @@ lazy val shexml = project
CrossVersion.partialVersion(scalaVersion.value) match {
case Some((3, _)) => "org.scala-lang" % "scala-compiler" % "2.13.9"
case Some((2, n)) if n >= 12 => "org.scala-lang" % "scala-compiler" % scalaVersion.value
}) ++ (CrossVersion.partialVersion(scalaVersion.value) match {
case Some((m, n)) if m >= 3 || m >= 2 && n >= 13 => Seq("org.scala-lang.modules" %% "scala-parallel-collections" % "1.0.4")
case _ => Nil
}),
assembly / assemblyMergeStrategy := {
case PathList("META-INF", "services", xs @ _*) => MergeStrategy.concat
Expand Down
247 changes: 102 additions & 145 deletions codemeta.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,110 @@
"schema" : "http://schema.org/",
"id" : "@id",
"type" : "@type",
"name" : {
"@id" : "schema:name"
},
"version" : {
"@id" : "schema:version"
},
"identifier" : {
"@id" : "schema:identifier",
"@type" : "@id"
},
"codeRepository" : {
"email" : {
"@id" : "schema:email"
},
"affiliation" : {
"@id" : "schema:affiliation",
"@type" : "@id"
},
"familyName" : {
"@id" : "schema:familyName"
},
"givenName" : {
"@id" : "schema:givenName"
},
"roleName" : {
"@id" : "schema:roleName"
},
"author" : {
"@id" : "schema:author",
"@type" : "@id"
},
"dateCreated" : {
"@id" : "schema:dateCreated",
"@type" : "http://www.w3.org/2001/XMLSchema#date"
},
"softwareRequirements" : {
"@id" : "schema:softwareRequirements",
"@type" : "@id"
},
"developmentStatus" : {
"@id" : "schema:developmentStatus"
},
"issueTracker" : {
"@id" : "https://w3id.org/codemeta/3.0/issueTracker",
"@type" : "@id"
},
"referencePublication" : {
"@id" : "https://w3id.org/codemeta/3.0/referencePublication",
"@type" : "@id"
},
"applicationCategory" : {
"@id" : "schema:applicationCategory"
},
"dateModified" : {
"@id" : "schema:dateModified",
"@type" : "http://www.w3.org/2001/XMLSchema#date"
},
"runtimePlatform" : {
"@id" : "schema:runtimePlatform"
},
"codeRepository" : {
"@id" : "schema:codeRepository",
"@type" : "@id"
},
"description" : {
"@id" : "schema:description"
},
"downloadUrl" : {
"@id" : "schema:downloadUrl",
"@type" : "@id"
},
"license" : {
"@id" : "schema:license",
"@type" : "@id"
},
"schema:author" : {
"@type" : "@id"
"programmingLanguage" : {
"@id" : "schema:programmingLanguage"
},
"referencePublication" : {
"contributor" : {
"@id" : "schema:contributor",
"@type" : "@id"
},
"releaseNotes" : {
"@id" : "schema:releaseNotes"
},
"SoftwareSourceCode" : {
"@id" : "schema:SoftwareSourceCode"
},
"Person" : {
"@id" : "schema:Person"
},
"Organization" : {
"@id" : "schema:Organization"
},
"Role" : {
"@id" : "schema:Role"
}
},
"id" : "https://github.com/herminiogg/ShExML",
"type" : "SoftwareSourceCode",
"applicationCategory" : "Computer Science",
"author" : [ {
"type" : "Role",
"roleName" : "Main author"
}, {
"id" : "https://herminiogarcia.com/#me",
"type" : "Person",
"affiliation" : {
Expand All @@ -41,155 +119,34 @@
"familyName" : "García González",
"givenName" : "Herminio",
"identifier" : "https://orcid.org/0000-0001-5590-4857"
}, {
"type" : "Role",
"schema:author" : "https://herminiogarcia.com/#me",
"roleName" : "Main author"
} ],
"codeRepository" : "https://github.com/herminiogg/ShExML",
"contributor" : {
"id" : "https://niod.knaw.nl/en/staff/mikebryant",
"type" : "Person",
"affiliation" : {
"id" : "https://niod.knaw.nl/en",
"type" : "Organization",
"name" : "NIOD Institute for War, Holocaust and Genocide Studies"
},
"email" : "m.bryant@niod.knaw.nl",
"familyName" : "Bryant",
"givenName" : "Mike",
"identifier" : "https://orcid.org/0000-0003-0765-7390"
},
"dateCreated" : "2018-02-22",
"dateModified" : "2024-06-27",
"dateModified" : "2025-07-08",
"description" : "A heterogeneous data mapping language based on Shape Expressions",
"developmentStatus" : "active",
"downloadUrl" : "https://api.github.com/repos/herminiogg/ShExML/downloads",
"identifier" : "https://doi.org/10.5281/zenodo.12569454",
"issueTracker" : "https://api.github.com/repos/herminiogg/ShExML/issues",
"identifier" : "https://doi.org/10.5281/zenodo.15837379",
"license" : "https://api.github.com/licenses/mit",
"name" : "ShExML",
"programmingLanguage" : "Scala",
"referencePublication" : "https://doi.org/10.7717/peerj-cs.318",
"releaseNotes" : "## What's Changed\r\n* Solved a performance problem when executing functions over big data sources",
"releaseNotes" : "## What's Changed\r\n* Fixed a bug which prevented the generation of a subject based on a condition applied down the hierarchy.\r\n* Added the possibility to get the iteration index as part of a new builtin functions mechanism.\r\n* Iterators and fields can now be placed in any order.\r\n* Allowed the option to use dashes in the variables names.\r\n* Added the possibility to pass autoincrement ids as arguments of a function.\r\n* Added an option to precompile the ShExML input (`-pc` in the CLI) to generate a single version with all the imported files incorporated and check the input for syntactic and grammatical errors. (This should facilitate debugging in these kinds of files.)\r\n* Improved the CLI help message, removing unnecessary nesting of options and grouping them by categories.\r\n* The databases needed for some tests can now be set up locally using Docker (thanks @mikesname for this contribution).\r\n\r\n**Full Changelog**: https://github.com/herminiogg/ShExML/compare/v0.5.3...v0.5.4",
"runtimePlatform" : "JVM",
"softwareRequirements" : [ {
"id" : "http://example.org/shex_3",
"type" : "SoftwareSourceCode",
"name" : "es.weso:shex_3",
"version" : "0.1.97"
}, {
"id" : "http://example.org/postgresql",
"type" : "SoftwareSourceCode",
"name" : "org.postgresql:postgresql",
"version" : "42.5.0"
}, {
"id" : "http://example.org/picocli",
"type" : "SoftwareSourceCode",
"name" : "info.picocli:picocli",
"version" : "4.0.4"
}, {
"id" : "http://example.org/srdf4j_3",
"type" : "SoftwareSourceCode",
"name" : "es.weso:srdf4j_3",
"version" : "0.1.104"
}, {
"id" : "http://example.org/rmlmapper",
"type" : "SoftwareSourceCode",
"name" : "be.ugent.rml:rmlmapper",
"version" : "4.9.0"
}, {
"id" : "http://example.org/scala-logging_3",
"type" : "SoftwareSourceCode",
"name" : "com.typesafe.scala-logging:scala-logging_3",
"version" : "3.9.5"
}, {
"id" : "http://example.org/stringdistance_2.13",
"type" : "SoftwareSourceCode",
"name" : "com.github.vickumar1981:stringdistance_2.13",
"version" : "1.2.6"
}, {
"id" : "http://example.org/srdf_3",
"type" : "SoftwareSourceCode",
"name" : "es.weso:srdf_3",
"version" : "0.1.104"
}, {
"id" : "http://example.org/jena-arq",
"type" : "SoftwareSourceCode",
"name" : "org.apache.jena:jena-arq",
"version" : "3.17.0"
}, {
"id" : "http://example.org/jena-shacl",
"type" : "SoftwareSourceCode",
"name" : "org.apache.jena:jena-shacl",
"version" : "3.17.0"
}, {
"id" : "http://example.org/scalatest_3",
"type" : "SoftwareSourceCode",
"name" : "org.scalatest:scalatest_3",
"version" : "3.2.9"
}, {
"id" : "http://example.org/mariadb-java-client",
"type" : "SoftwareSourceCode",
"name" : "org.mariadb.jdbc:mariadb-java-client",
"version" : "2.6.2"
}, {
"id" : "http://example.org/slf4j-nop",
"type" : "SoftwareSourceCode",
"name" : "org.slf4j:slf4j-nop",
"version" : "1.7.27"
}, {
"id" : "http://example.org/logback-classic",
"type" : "SoftwareSourceCode",
"name" : "ch.qos.logback:logback-classic",
"version" : "1.3.5"
}, {
"id" : "http://example.org/scala3-library_3",
"type" : "SoftwareSourceCode",
"name" : "org.scala-lang:scala3-library_3",
"version" : "3.2.0"
}, {
"id" : "http://example.org/Saxon-HE",
"type" : "SoftwareSourceCode",
"name" : "net.sf.saxon:Saxon-HE",
"version" : "12.4"
}, {
"id" : "http://example.org/sqlite-jdbc",
"type" : "SoftwareSourceCode",
"name" : "org.xerial:sqlite-jdbc",
"version" : "3.32.3.2"
}, {
"id" : "http://example.org/scala-reflect",
"type" : "SoftwareSourceCode",
"name" : "org.scala-lang:scala-reflect",
"version" : "2.13.9"
}, {
"id" : "http://example.org/scala-csv_2.13",
"type" : "SoftwareSourceCode",
"name" : "com.github.tototoshi:scala-csv_2.13",
"version" : "1.3.6"
}, {
"id" : "http://example.org/antlr4",
"type" : "SoftwareSourceCode",
"name" : "org.antlr:antlr4",
"version" : "4.9.2"
}, {
"id" : "http://example.org/json-path",
"type" : "SoftwareSourceCode",
"name" : "com.jayway.jsonpath:json-path",
"version" : "2.8.0"
}, {
"id" : "http://example.org/jena-core",
"type" : "SoftwareSourceCode",
"name" : "org.apache.jena:jena-core",
"version" : "3.17.0"
}, {
"id" : "http://example.org/jena-base",
"type" : "SoftwareSourceCode",
"name" : "org.apache.jena:jena-base",
"version" : "3.17.0"
}, {
"id" : "http://example.org/mysql-connector-java",
"type" : "SoftwareSourceCode",
"name" : "mysql:mysql-connector-java",
"version" : "8.0.21"
}, {
"id" : "http://example.org/scala-compiler",
"type" : "SoftwareSourceCode",
"name" : "org.scala-lang:scala-compiler",
"version" : "2.13.9"
}, {
"id" : "http://example.org/mssql-jdbc",
"type" : "SoftwareSourceCode",
"name" : "com.microsoft.sqlserver:mssql-jdbc",
"version" : "8.4.1.jre8"
} ],
"version" : "0.5.3"
"softwareRequirements" : [ "http://example.org/jena-shacl", "http://example.org/Saxon-HE", "http://example.org/logback-classic", "http://example.org/jena-core", "http://example.org/scala-compiler", "http://example.org/mysql-connector-java", "http://example.org/stringdistance_2.13", "http://example.org/rmlmapper", "http://example.org/jena-base", "http://example.org/srdf_3", "http://example.org/mssql-jdbc", "http://example.org/json-path", "http://example.org/picocli", "http://example.org/postgresql", "http://example.org/scala3-library_3", "http://example.org/shex_3", "http://example.org/scala-logging_3", "http://example.org/jena-arq", "http://example.org/srdf4j_3", "http://example.org/slf4j-nop", "http://example.org/antlr4", "http://example.org/mariadb-java-client", "http://example.org/sqlite-jdbc", "http://example.org/scalatest_3", "http://example.org/scala-csv_2.13", "http://example.org/scala-reflect" ],
"version" : "0.5.4",
"issueTracker" : "https://api.github.com/repos/herminiogg/ShExML/issues",
"referencePublication" : "https://doi.org/10.7717/peerj-cs.318"
}
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ CSVPERROW: C S V P E R R O W ;
SQL: S Q L ':' ;
SCALA: S C A L A ':' ;
SPARQL: S P A R Q L ':' ;
STDIN: S T D I N ;
QUERY_PART: (LETTER | DIGIT | ALLOWED_CHARACTERS | '}' | '{' | '"')+ ;
GREATER_SYMBOL_QUERY: '>' -> mode(DEFAULT_MODE) ;
WS_QUERY: [ \t\n\r] -> skip ;
Expand Down

Large diffs are not rendered by default.

Loading