Skip to content

feat(accuracy): cross-engine result hashing, execution status tracking, and JVM isolation (#23) - #28

Merged
remiceres merged 1 commit into
mainfrom
feature/23-jvm-subprocess-isolation-result-hashing
Oct 29, 2026
Merged

remiceres merged 1 commit into
mainfrom
feature/23-jvm-subprocess-isolation-result-hashing

Conversation

@remiceres

Copy link
Copy Markdown
Contributor

Summary

Implements cross-engine SPARQL solution verification, canonical result hashing, execution status badges, and subprocess-level JVM isolation as specified in #23.

Technical Scope & Changes

  • Canonical Result Hashing:
    • Added fr.inria.corese.benchmark.validation.SparqlResultHasher in pure standard Java 21 (zero external dependencies).
    • Lexicographically normalized projected variable order and deterministic binary length-prefixed encoding.
    • Generates reproducible 64-character SHA-256 digests and accurate rowCount.
  • Driver Integration:
    • Integrated canonical term extraction into JenaDriver, RDF4JDriver, and CoreseDriver.
    • Verified cross-engine hash parity on real benchmark data (16 Bowlogna queries matched 100% across Jena and RDF4J).
  • Execution Status & Cross-Validation:
    • Enriched QueryResult with rowCount, resultHash, and status (PASS, MISMATCH, TIMEOUT, ERROR).
    • Added crossValidateQueries() in Main.java to detect discrepancies and flag MISMATCH.
    • Updated web dashboard (site/app.js) with mismatch alerts (⚠️), row counts, and hash tooltips.
  • Subprocess-Level JVM Isolation:
    • Decoupled multi-engine sequential execution into isolated child JVM instances via ProcessBuilder.
    • Dedicated heap calibration (-Xms4g -Xmx8g -XX:+UseG1GC) eliminating GC and JIT cross-contamination.
  • Tests:
    • 30 JUnit 5 tests passing (including QueryResultAccuracyTest and SparqlResultHasherTest).
    • 9 Python tests passing (test_baseline.py).

Closes #23

…g, and JVM isolation (#23)

- Implement SparqlResultHasher for deterministic canonical SHA-256 result hashing
- Enrich QueryResult and reports with rowCount, resultHash, and status (PASS, MISMATCH, TIMEOUT, ERROR)
- Integrate result hashing and variable normalization into Jena, RDF4J, and Corese drivers
- Add JVM subprocess isolation via ProcessBuilder (-Xms4g -Xmx8g -XX:+UseG1GC) to eliminate GC/JIT contamination
- Support cross-engine validation and status display in web dashboard
- Add comprehensive JUnit 5 tests (SparqlResultHasherTest, QueryResultAccuracyTest)
@remiceres
remiceres merged commit 360e097 into main Oct 29, 2026
4 checks passed
@remiceres
remiceres deleted the feature/23-jvm-subprocess-isolation-result-hashing branch October 29, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Scientific Rigor & Validation] Cross-engine result accuracy verification, SPARQL binding hashing, and process-level JVM isolation

1 participant