{"id":24795152,"url":"https://github.com/vpinna80/vtl","last_synced_at":"2025-06-11T08:08:10.395Z","repository":{"id":42976093,"uuid":"264141019","full_name":"vpinna80/VTL","owner":"vpinna80","description":"VTL Engine and Editor","archived":false,"fork":false,"pushed_at":"2025-05-13T12:23:41.000Z","size":22695,"stargazers_count":14,"open_issues_count":4,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-13T13:42:08.610Z","etag":null,"topics":["sdmx","vtl-sdmx"],"latest_commit_sha":null,"homepage":"https://github.com/vpinna80/VTL/wiki","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"eupl-1.2","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vpinna80.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-HEADER.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-05-15T08:36:15.000Z","updated_at":"2025-05-13T12:23:47.000Z","dependencies_parsed_at":"2023-01-24T08:00:17.601Z","dependency_job_id":"a88e84af-07d7-4736-8a9b-2ba82376d5e7","html_url":"https://github.com/vpinna80/VTL","commit_stats":{"total_commits":469,"total_committers":7,"mean_commits":67.0,"dds":"0.18336886993603407","last_synced_commit":"db1cebe6ff68ce16a0a086f8a0e2cdbfbb2b3575"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpinna80%2FVTL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpinna80%2FVTL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpinna80%2FVTL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpinna80%2FVTL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vpinna80","download_url":"https://codeload.github.com/vpinna80/VTL/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vpinna80%2FVTL/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259227951,"owners_count":22824903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sdmx","vtl-sdmx"],"created_at":"2025-01-29T23:28:43.989Z","updated_at":"2025-06-11T08:08:10.383Z","avatar_url":"https://github.com/vpinna80.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/badge/license-EUPL-green)](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12)\n![VTL E\u0026E builds](https://github.com/vpinna80/VTL/actions/workflows/maven.yml/badge.svg)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/c20a3a19b6744db191d9dd1b1b3a8cbf)](https://www.codacy.com/manual/valentino.pinna/VTL?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=vpinna80/VTL\u0026amp;utm_campaign=Badge_Grade)\n[![Codacy Badge](https://app.codacy.com/project/badge/Coverage/c20a3a19b6744db191d9dd1b1b3a8cbf)](https://app.codacy.com/gh/vpinna80/VTL/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_campaign=Badge_coverage)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/vpinna80/VTL?label=github-release)\n![Maven metadata URL](https://img.shields.io/maven-metadata/v?label=maven-release\u0026metadataUrl=https%3A%2F%2Frepo1.maven.org%2Fmaven2%2Fit%2Fbancaditalia%2Foss%2Fvtl%2Fvtl%2Fmaven-metadata.xml)\n\n# VTL E\u0026E\n\nAn engine and editor for the \n[Validation and Transformation Language](https://sdmx.org/?page_id=5096), \nwritten in Java, Javascript and R.\n\n## Usage and documentation\n\nUsage info, documentation and examples are available at the\n[project wiki](https://github.com/vpinna80/VTL/wiki).\n\n## Contributing to the project\n\nAll contributions are welcome!\n\nPlease take a moment to read the [Guideline](CONTRIBUTING.md).\n\n## Build information\n\nA complete description of the project modules and the build process will be available soon.\n\nTo build this project, you will need:\n\n* A Windows or Linux machine;\n\n\u003e Building on a MacOS machine should be possible by now but **it is untested**.\n\n* JDK \u003e= 11;\n* [Apache Maven](https://maven.apache.org/) 3.9.4;\n* [GNU R](https://www.r-project.org/) \u003e= 4.3.2 for building RVTL package;\n* Configured internet connection (to download [node.js](https://nodejs.org/)).\n\nTo build the project, launch the command:\n\n    mvn [-P with-r,with-sdmx,with-spark,with-jupyter,with-cli] clean package\n\nEach artifact will be generated inside the `target` folder of each module.\nThe optional maven profiles allow you to build any of the provided VTL bundles for\nthe different front-ends capable of communicating with the VTL engine.\n\n### RVTL and VTL Studio\n\nIf you want to build the editor and the R package along with the engine, activate the \n`with-r` maven profile. Before you do that, make sure to install `rJava` package in your \nR installation. Then you may need to configure your internet connection in Maven settings\nin order to download Node.js and npm packages. You will also need to install `REngine.jar`\ninto your local maven repository. It can be done with the following command:\n\n```\nUn*x:\nmvn install:install-file -DgroupId=org.rosuda.JRI -DartifactId=Rengine -Dversion=$R_VERSION -Dfile=$R_LIBRARY/java/jri/REngine.jar -Dpackaging=jar\n\nWindows\nmvn install:install-file -DgroupId=org.rosuda.JRI -DartifactId=Rengine -Dversion=%R_VERSION% -Dfile=%R_LIBRARY%/java/jri/REngine.jar -Dpackaging=jar\n```\n\nPlease set the environment variables `R_VERSION` and `R_LIBRARY` accordingly\nto your environment settings, or directly replace them in the command above.\nThe R package, ready for installation in R (with install.packages), \nwill be located there. Moreover, each bundle created while this profile is\nactive will contain support for the R environment.\n\n### SDMX Support\n\nVTL E\u0026E is fully integrated with sdmx.io Metadata Registry. In order to enable support in \nbuilt bundles for SDMX interactions, such as using DSD and datasets, activate the `with-sdmx`\nmaven profile. To build you also need to have previously built and installed the metadata \nregistry maven artifacts, available from sdmx.io web site. \n\n### Spark support\n\nIf you want to build with support for the Spark evironment, activate the \n`with-spark` maven profile. Each bundle listed below created while this profile is\nactive will contain the Spark environment (Note that the Spark libraries are not\nincluded in the bundle and must be made available at runtime in your CLASSPATH).\n\n### Jupyter notebook kernel\n\nIf you want to build the Jupyter notebook kernel along with the engine, also activate the \n`with-jupyter` maven profile. The java-native jupyter kernel will be packaged as an\nexecutable jar that can be installed into your jupyter with the command\n`java -jar vtl-jupyter-x.x.x-complete.jar`. Please make sure that your Python environment\nis able to launch java, and that java version requirement is satisfied.\n\n### Command-line interface for VTL Engine\n\nIf you want to build the command line interface to VTL along with the engine, activate the\n`with-cli` maven profile. An executable JAR file ready to be deployed in your platform \nwill be packaged during the `package` maven lifecycle phase in your build.\n\n## Project Status\n\nThe Project is an ongoing development effort at Bank of Italy, with the \npurpose of demonstrating the feasibility and usefulness of VTL in a real \nscenario, such as translating validation rules exchanged by entities \noperating in the ESCB. Thus,\n\n\u003e some VTL operators and statements offer only limited functionality,\nand some have to be implemented yet.\n\nThe following table shows the current implementation status:\n\n| operator | scalar | dataset-level | component-level |\n| -------- | ------ | ------------- | --------------- |\n| define datapoint ruleset    |     |     | ❌  |\n| define hierarchical ruleset | ✅  |     |     |\n| define operator             | ✅  | ✅  | ✅  |\n| call defined operator       | ✅  | ✅  | ✅  |\n| persistent assignment       | ✅  | ✅  | ✅  |\n| membership (#)              |     | ✅  |     |\n| eval                        | ❌  | ❌  | ❌  |\n| cast                        | ✅  |     | ✅  |\n| pivot/unpivot               |     | ✅  |     |\n| filter, sub                 |     | ✅  |     |\n| keep, drop, rename          |     | ✅  |     |\n| calc, aggr                  |     | ✅  |     |\n| inner_join                  |     | ✅  |     |\n| left_join                   |     | ✅  |     |\n| full_join                   |     | ✅  |     |\n| cross_join                  |     | ✅  |     |\n| check                       | ✅  |     |     |\n| check_datapoint             | ✅  |     |     |\n| check_hierarchy             | ✅  |     |     |\n| hierarchy                   | ✅  |     |     |\n| set operations              | ✅  |     |     |\n| if-then-else                | ✅  | ✅  | ✅  |\n| case when                   | ✅  | ✅  | ✅  |\n| l-r-trim                    | ✅  | ✅  | ✅  |\n| upper,lower                 | ✅  | ✅  | ✅  |\n| substr                      | ✅  | ✅  | ✅  |\n| replace                     | ✅  | ✅  | ✅  |\n| instr                       | ✅  | ✅  | ✅  |\n| match_characters            | ✅  | ❌  | ✅  |\n| length                      | ✅  | ✅  | ✅  |\n| arithmetic (+, -, *, /)     | ✅  | ✅  | ✅  |\n| mod                         | ✅  | ✅  | ✅  |\n| boolean operators           | ✅  | ✅  | ✅  |\n| rounding functions          | ✅  | ✅  | ✅  |\n| math functions              | ✅  | ✅  | ✅  |\n| comparisons (=, \u003e, \u003c, \u003c\u003e)   | ✅  | ✅  | ✅  |\n| between                     | ✅  | ✅  | ✅  |\n| in/not_in                   | ❌  |     | ✅  |\n| isnull                      | ✅  | ✅  | ✅  |\n| nvl                         | ✅  | ✅  | ✅  |\n| exists_in                   |     | ✅  |     |\n| period_indicator            | ✅  | ✅  | ✅  |\n| fill_time_series            |     | ✅  |     |\n| flow_to_stock               |     | ✅  |     |\n| stock_to_flow               |     | ✅  |     |\n| timeshift                   |     | ✅  |     |\n| timeagg                     | ✅  | ✅  | ✅  |\n| current_date                | ✅  |     | ✅  |\n| dateadd, datediff           |     | ✅  |     |\n| yeartoday, daytoyear        |     | ❌  |     |\n| monthtoday, daytomonth      |     | ❌  |     |\n| getyear, getmonth, getday   |     | ✅  |     |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpinna80%2Fvtl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvpinna80%2Fvtl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvpinna80%2Fvtl/lists"}