-- 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.