--
tags:
- ShExMap
--
# ShExMap Jena planning
## resources
* [ShExMap](https://shex.io/extensions/Map/)
## arch
ShExMap consists of two stages
1. parsing (binding?) - parse RDF graph against a grammar (i.e. validate) with semantic actions with variable names. This produces a `Binding Tree` which associates values in the graph with variables.
``` json
{
diagId: "Diag1",
beforeIntervention: {
systolic: 110,
diastolic: 80
},
afterIntervention: {
systolic: 110,
diastolic: 80
}
}
```
2. synthesize - traverse a (different) grammar with semantic actions to supply constants from the binding tree
## jena requirements
ShExMap calls semantic actions to bind variables but if you're validating a diagnosis which has two observations (say, one before and one after medication) and each obs has a systolic and diastolic, we need to build a binding hierarchy like:
## The plan (such as it is)
1. execute [1dotNoCode3_pass](https://github.com/shexSpec/shexTest/blob/6f245174875ed5031184d53c6d9af7e145f4a33d/validation/manifest.ttl#L14369-L14395) in a debugger
2. figure out what info is in execution context and what's on the stack to be able to either return something or construct something which preserves sys/dia associations.