{"id":51908788,"url":"https://github.com/juherr/datex4j","last_synced_at":"2026-07-27T02:00:53.598Z","repository":{"id":373127980,"uuid":"1310055779","full_name":"juherr/datex4j","owner":"juherr","description":"Modern Java toolkit for DATEX II (v2/v3): parsing, serialization, validation, and model APIs.","archived":false,"fork":false,"pushed_at":"2026-07-25T16:37:14.000Z","size":3279,"stargazers_count":0,"open_issues_count":26,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-25T18:09:33.583Z","etag":null,"topics":["afir","datex","datex-ii","datex2","mobility","nap","ocpi","traffic"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juherr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-23T14:51:57.000Z","updated_at":"2026-07-25T16:28:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/juherr/datex4j","commit_stats":null,"previous_names":["juherr/datex4j"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/juherr/datex4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juherr%2Fdatex4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juherr%2Fdatex4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juherr%2Fdatex4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juherr%2Fdatex4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juherr","download_url":"https://codeload.github.com/juherr/datex4j/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juherr%2Fdatex4j/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35933751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-27T02:00:06.776Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["afir","datex","datex-ii","datex2","mobility","nap","ocpi","traffic"],"created_at":"2026-07-27T02:00:52.839Z","updated_at":"2026-07-27T02:00:53.583Z","avatar_url":"https://github.com/juherr.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# datex4j\n\n**A modular Java SDK for the European [DATEX II](https://datex2.eu) standard.**\n\ndatex4j reads, writes, validates, and converts DATEX II publications without exposing JAXB through\nits public facades. The SDK bundles generated models for DATEX II 2.0–2.3 and 3.0–3.7, provides\nhelpers for common user domains, and has no application-framework dependency.\n\n- **Java 21+**, JPMS-compatible, and framework-free.\n- **Generated DATEX II models** built reproducibly from vendored official XML Schemas.\n- **Small public facades** for XML, JSON, and structured validation.\n- **Optional domain modules** for traffic, SRTI, parking, EV charging, and UVAR.\n- **Apache-2.0** licensed and versioned as a multi-module SDK.\n\n\u003e Project status: `0.1.0`. The architecture and public facades are in place, while domain\n\u003e convenience APIs and DATEX II profile support continue to grow.\n\n## Quick start\n\ndatex4j publishes several artifacts with the same project version. Import the BOM, then add the\nfacade and model dependencies that your application needs.\n\n```xml\n\u003cdependencyManagement\u003e\n  \u003cdependencies\u003e\n    \u003cdependency\u003e\n      \u003cgroupId\u003edev.juherr.datex4j\u003c/groupId\u003e\n      \u003cartifactId\u003edatex4j-bom\u003c/artifactId\u003e\n      \u003cversion\u003e0.1.0\u003c/version\u003e\n      \u003ctype\u003epom\u003c/type\u003e\n      \u003cscope\u003eimport\u003c/scope\u003e\n    \u003c/dependency\u003e\n  \u003c/dependencies\u003e\n\u003c/dependencyManagement\u003e\n\n\u003cdependencies\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003edev.juherr.datex4j\u003c/groupId\u003e\n    \u003cartifactId\u003edatex4j-xml\u003c/artifactId\u003e\n  \u003c/dependency\u003e\n  \u003cdependency\u003e\n    \u003cgroupId\u003edev.juherr.datex4j\u003c/groupId\u003e\n    \u003cartifactId\u003edatex4j-model-v3_7\u003c/artifactId\u003e\n  \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\nUse `datex4j-model` instead of `datex4j-model-v3_7` when one application must handle every bundled\nDATEX II version. A missing version module produces an explicit error when the facade discovers the\navailable models through `ServiceLoader`.\n\n```java\nimport dev.juherr.datex4j.model.v3_7.situation.SituationPublication;\nimport dev.juherr.datex4j.xml.DatexMarshaller;\nimport dev.juherr.datex4j.xml.DatexXml;\n\nDatexMarshaller marshaller = DatexXml.builder().validating(true).build();\n\nSituationPublication publication = new SituationPublication();\npublication.setLang(\"en\");\npublication.setModelBaseVersion(\"3\");\n\nbyte[] xml = marshaller.write(publication);\nSituationPublication restored = marshaller.read(xml, SituationPublication.class);\n```\n\nThe runnable [XML example](examples/src/main/java/dev/juherr/datex4j/examples/DatexExample.java)\nbuilds a complete publication. The [documentation index](docs/README.md) links to examples for JSON,\nvalidation, domain builders, location helpers, and OCPI mapping.\n\n## Version and model selection\n\n| DATEX II family | Bundled versions | Java package pattern | Notes |\n|---|---|---|---|\n| 2.x | 2.0, 2.1, 2.2, 2.3 | `dev.juherr.datex4j.model.v2_X.*` | Legacy `d2LogicalModel` publications |\n| 3.x | 3.0–3.7 | `dev.juherr.datex4j.model.v3_X.*` | Default: 3.7 |\n\nEach version lives in a separate `datex4j-model-vX_Y` artifact. The `datex4j-model` aggregate pulls\nin every version transitively. The AFIR-specific `AfirEnergyInfrastructure` and `AfirFacilities`\npackages are part of the 3.7 model; earlier versions expose only the modules defined by their own\nroot schema.\n\nDomain builders currently target DATEX II 3.7. The XML and validation facades can target any\nbundled version when the corresponding model artifact is present. Conformant JSON fixtures cover\nDATEX II 3.6 and 3.7.\n\nSee [Models and versions](docs/guides/models-and-versions.md) for dependency choices, version\nselection, and the differences between DATEX II 2.x and 3.x.\n\n## Modules\n\n| Area | Modules | Purpose |\n|---|---|---|\n| Model | `datex4j-model-spi`, `datex4j-model-vX_Y`, `datex4j-model` | Version-neutral SPI, generated per-version models, and the all-version aggregate |\n| Facades | `datex4j-xml`, `datex4j-json`, `datex4j-validation` | XML/JSON conversion and structured XSD validation |\n| Helpers | `datex4j-builders`, `datex4j-location` | Shared publication builders and location helpers |\n| Domains | `datex4j-domain-traffic`, `-srti`, `-parking`, `-evcharging`, `-uvar` | Convenience APIs for official DATEX II user domains |\n| Integration | `datex4j-ocpi` | Generated OCPI 2.3.0 model and OCPI ↔ DATEX II mapping |\n| Dependency management | `datex4j-bom` | One version for every published datex4j artifact |\n| Verification | `examples`, `datex4j-integration-tests` | Runnable examples and real/synthetic feed tests; not published |\n\nThe [architecture guide](docs/architecture.md) documents the dependency direction, generated-code\nboundaries, SPI discovery, and JPMS strategy.\n\n## Documentation\n\n- [Documentation index](docs/README.md) — user and contributor learning paths.\n- [XML, JSON, and validation](docs/guides/xml-json-validation.md) — public facade usage.\n- [Domain builders and locations](docs/guides/domain-builders-and-location.md) — convenience APIs.\n- [OCPI mapping](docs/guides/ocpi-mapping.md) — supported mappings and known limitations.\n- [API compatibility](docs/api-compatibility.md) — supported types, extensions, and migration\n  policy.\n- [AFIR / NAP knowledge base](docs/afir/README.md) — regulation, country access points, and datasets.\n- [Open DATEX II test data](docs/datex-test-data-sources.md) — cross-domain source catalogue.\n\n## Upstream standards and profiles\n\n- [DATEX II on GitHub](https://github.com/DATEX-II-EU) — official model, profile, extension, and\n  issue repositories.\n- [Mobilithek AFIR DATEX II recharging profile](https://github.com/MobilithekDE/AFIR-DATEX-II-Recharging-Profil)\n  — Germany's AFIR recharging data model, guidance, releases, and FAQ.\n\n## Build from source\n\nThe project requires Java 21 or newer. The committed Maven wrapper pins Maven, while\n[mise](https://mise.jdx.dev) provisions the JDK.\n\n```bash\nmise install\n./mvnw verify\n```\n\nRun the documented examples with:\n\n```bash\n./mvnw -pl examples -am test\n./mvnw -q -pl examples -am install -DskipTests\n./mvnw -q -pl examples exec:java\n```\n\n## Roadmap\n\nThe current roadmap focuses on richer domain builders, multi-version domain helpers, DATEX II\nprofiles and extensions, and deeper AFIR/OCPI conformance coverage. See\n[CHANGELOG.md](CHANGELOG.md) for delivered and unreleased changes.\n\n## Contributing\n\n[CONTRIBUTING.md](CONTRIBUTING.md) explains generated-code boundaries, model regeneration, testing,\ndocumentation ownership, and the release workflow.\n\n## License\n\nApache License 2.0 — see [LICENSE](LICENSE).\n\nDATEX II schemas are © the DATEX II programme and are redistributed for code generation and\nvalidation; see \u003chttps://datex2.eu\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuherr%2Fdatex4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuherr%2Fdatex4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuherr%2Fdatex4j/lists"}