Status: evidence review only. No OWL was generated, no model, experiment or UI code was changed, and no mapping below is adopted. Candidates are proposals with the evidence location beside them; where the retained sources do not settle a point it is marked UNKNOWN. Abstract-only sources (Smith 2004, Rosse and Mejino 2003, the two OMEX specification records) were not used to fix any relation direction or mapping.
Companion files in this folder:
evidence_cards.md: one card per source (identifiers, exact quotations with location, claim versus interpretation versus independent confirmation, licence, limits).smith2004_variable_dictionary.{json,md}: all 76 variables and 32 equations of the canonical CellML with units, role, SemSim annotation, reference point, direction and unit plausibility.d_sources.json: retrieval ledger (URLs, method, licence, SHA-256) for the new docs/evidence/d_* files.Source identifiers used below: S1 Gennari 2011, S2 Cook 2013 (OPB dependencies), S3 Harmonizing 2019, S4 Rosse and Mejino 2003 (abstract), S5 SemGen 2019, S6 Smith 2004 (author manuscript, S6P), S7 SHACL, S8 PROV-O, S9 SemSim-annotated Smith CellML (PMR workspace 267), S10 OPB releases, S11 FMA releases, S12 Wiley passages (Colunga 2020, Jones 2021), S13 Neal 2014, S14 Neal 2015, S15/S16 OMEX metadata specifications (abstracts), S17 Paeme 2011, S18 Revie 2013, S19 Pironet 2013. Project files: physiology.md, ontology.md, src/physiosim/ontology/__init__.py (the registry), orchestration_state.md (Hermes OpenCOR runs).
| Source | Access achieved | Retained as |
|---|---|---|
| S1 Gennari 2011 | full text (PMC author manuscript, all rights reserved) | quotations only |
| S2 Cook 2013 | full text, CC BY 2.0 | d_fulltext_PMC3904761_cook2013_opb.xml |
| S3 Harmonizing 2019 | full text, CC BY (Europe PMC) | d_fulltext_PMC6433895_neal2019_harmonizing.xml |
| S4 Rosse and Mejino 2003 | abstract | card only |
| S5 SemGen 2019 | PMC page (all rights reserved); supplement not open | quotations only |
| S6 Smith 2004 | author manuscript (LaTeX, 36 pp., created 2003-08-27) read in full; published version paywalled and not seen | not retained (copyright); quotations, page numbers and SHA-256 in card S6P |
| S7 SHACL, S8 PROV-O | W3C Recommendations read | quotations |
| S9 SemSim-annotated Smith CellML | already retained (a_smith_2004.cellml), now fully parsed |
d_semsim_ws267_annotations_by_variable.json, d_ols_fma_terms_ws267.json |
| S10 OPB | GitHub master OWL + bundled v1.07; BioPortal blocked (403/401) | d_opb_master_excerpt_and_version_diff.json |
| S11 FMA | OWL header, OLS record, UW release page; licence document not retrieved | d_fma_*, d_ols_fma_ontology.json |
| S12 Wiley passages | 20 passages / 13 articles via the Wiley connector | quotations only |
| S13 Neal 2014, S14 Neal 2015 | full text, CC BY | d_fulltext_PMC4183381…, d_fulltext_PMC4696653… |
| S15/S16 OMEX metadata v1.0, v1.2 | abstract only in Europe PMC XML; publisher page refused (HTTP 405) | short XML records |
| S17 Paeme 2011, S18 Revie 2013, S19 Pironet 2013 | full text, CC BY | d_fulltext_PMC3271239…, …PMC3621159…, …PMC3610305… |
Connector failures worth knowing: the PubMed connector's search_articles returned an API error for every query (full-text and metadata calls worked); Europe PMC fullTextXML returned HTTP 500 for the two non-open-access PMC items (S1, S5), as the user also saw; BioPortal requires an API key; Smith's 2004 University of Canterbury thesis (cited by S19 as the source of the total blood volume) was not located by web search.
Evidence that the distinction is needed and how the literature makes it:
Portion of blood (fma9670) part_of cavity of left ventricle (fma9466) / cavity of right ventricle (fma9291) / lumen of aorta (fma12239) / set of lumens of vena cava trunks (fma280059) / lumen of pulmonary trunk (fma14167) / lumen of pulmonary venous tree organ (fma52455). The property is the same (OPB_00509) and the unit is the same.CO and SV are complete-beat quantities (ontology.md). No source in this set annotates temporal aggregation; S14 Table 2 lists "Temporal solution domain" only as the shared time variable.sa, sv, pa, pv concepts, which ontology.md already keeps local.Candidate concepts (proposals, each with its evidence):
| candidate | evidence | status |
|---|---|---|
| Pressure variables are annotated as properties of an energy differential with source and sink (S16 item 9); chamber pressures have an unspecified sink (common ground), free-wall pressures have the pericardial contents as sink (S21) | OMEX metadata v1.2 §2.3.7.3; SemGen protocol step 5; equations E5, E8, E14, E19, E21, E23, E25 for the external-pressure terms | adopted as a documentation decision (decisions.md); the registry reference string is unchanged; whether the common ground is atmospheric is UNKNOWN; the entity for pericardial contents is not selected; the external-pressure terms are recorded under Q2, not as reference values |
Bearer entity = Portion of blood part_of a cavity/lumen, not the organ |
S9 table; S1 quote 4; S4 abstract (material versus non-material entities) | candidate; conflicts with the project registry's use of fma7101 "Left ventricle" and fma7098 for P_lv/V_lv (conflict C5) |
| Flow direction encoded as process source/sink participants | S9 (all six Q_*); S5 protocol step 5 ("anonymous … defined by their generating sources and sinks"); S14 quote 6 | candidate; the project encodes the same information as an orientation pair; both are explicit, the SemSim form names the entities |
| Constitutive parameters (E_es, lambda, P_0, R, L, V_d, V_0) annotated with an OPB constitutive property only, no entity | S14 quote 4; SemGen protocol step 6; S9 (all such variables have free text only) | candidate; OPB_00160 Fluid flow resistance and OPB_00076 Fluid volumetric elastance are confirmed present and unchanged in OPB master (S10); OPB_00104 Fluid inertance is a candidate for L_* |
| V_spt is "the blood volume displaced by the septum", a difference term, not a fluid volume of an organ part | S18 (A.11)-(A.14) text; E6, E12, E18 | candidate meaning; OPB property UNKNOWN (S9 labels it with a dependency class, see C6) |
Valve flows are processes located at their valve: bqbiol:occursIn the valve node (Q_mt mitral, Q_av aortic, Q_tc tricuspid, Q_pv pulmonary) |
BioModels.net qualifiers 1.1 occursIn (S22); manuscript Figure 1 valve elements R.mt, R.av/L.av, R.tc, R.pv/L.pv (S6P); E29-E32 | adopted as a documentation decision (decisions.md "Anatomical structures as nodes"); SHACL rules G10 and S5; registry unchanged |
Superseded for identifiers and compartment meaning by anatomy_nodes_v2.md (2026-11-01); the table below is kept as the v1 record. Anatomical structures referenced by the Smith model and their node status (decisions.md "Anatomical structures as nodes"). FMA identifiers are label-checked in OLS FMA 5.1.0 (docs/evidence/d_ols_fma_heart_structures.json, d_ols_fma_terms_ws267.json). "ws267" is the SemSim annotation in PMR workspace 267; "shapes" is the OMEX-form data and fixtures under shacl/; "registry" is src/physiosim/ontology/__init__.py.
| structure | FMA | role in the Smith model | ws267 | shapes | registry |
|---|---|---|---|---|---|
| Cavity of left ventricle | fma9466 | container of LV blood (P_lv, V_lv) | node | node | no: Left ventricle fma7101 (C5 pending) |
| Cavity of right ventricle | fma9291 | container of RV blood | node | node | no: Right ventricle fma7098 |
| Lumen of aorta | fma12239 | aortic blood (P_ao, V_ao) | node | node | no: local sa |
| Set of lumens of vena cava trunks | fma280059 | vena cava blood | node | node | no: local sv |
| Lumen of pulmonary trunk | fma14167 | P_pa in ws267 | node | node | no: local pa |
| Lumen of pulmonary arterial tree | fma52449 | V_pa in ws267 (split from P_pa, rule S3) | node | node | no |
| Lumen of pulmonary venous tree organ | fma52455 | pulmonary venous blood | node | node | no: local pv |
| Mitral valve | fma7235 | location of Q_mt (E29) | text only | node (occursIn) | no |
| Aortic valve | fma7236 | location of Q_av (E30) | text only ("atrial valve" in free text) | node (occursIn) | no |
| Tricuspid valve | fma7234 | location of Q_tc (E31) | text only | node (occursIn) | no |
| Pulmonary valve | fma7246 | location of Q_pv (E32) | text only | node (occursIn) | no |
| Wall of left ventricle | fma9556 | LV free wall (P_lvf, V_lvf) | node (with the OPB_01061 defect) | no | no |
| Wall of right ventricle | fma9533 | RV free wall | node (same defect) | no | no |
| Interventricular septum | fma7133 | septum free wall (V_spt, E18) | no: ws267 uses Cardiac septum fma7180, which also covers the interatrial septum | no | no |
| Pericardium | fma9869 | wall across which P_pcd acts (E4) | node (as V_pcd bearer, defective) | no | no |
| Pericardial cavity | fma11350 | space of P_peri; sink of P_lvf, P_rvf | no | node | no |
| Portion of pericardial fluid | fma9887 | contents of the pericardial space | node (P_peri) | node | no |
| Thoracic cavity | fma7565 | space of P_th; sink of P_pcd | no | no (no fluid entity selected; S21) | no |
| Left atrium / Cavity of left atrium | fma7097 / fma9465 | part of the pulmonary venous compartment's blood (S19; Figure 1 node "P.la"; interpretation, see decisions.md) | no | node: blood in fma9465 is a bqbiol:hasPart part of the compartment blood (rule S6) | no |
| Right atrium / Cavity of right atrium | fma7096 / fma11359 | part of the vena cava compartment's blood (Figure 1 node "P.ra"; interpretation, see decisions.md) | no | node: blood in fma11359 is a bqbiol:hasPart part of the compartment blood (rule S6) | no |
| Valve of inferior vena cava; Valve of coronary sinus; Valve of foramen ovale | fma9240; fma9242; fma75348 | not modelled | no | no | no; whether omitted structures get nodes is not decided |
The sources draw this line explicitly:
Candidate relation set for the Smith model (proposal; equation ids from the dictionary):
| relation kind | candidate vocabulary | Smith equations it would describe | evidence |
|---|---|---|---|
| identity of meaning (variable ↔ composite annotation) | isComputationalComponentFor / hasPhysicalDefinition / physicalPropertyOf (SemSim, as used in S9); OMEX form not verified (S15/S16 abstract-only) |
each variable once | S1 quote 4, S9 |
| capacitive dependency (pressure from volume) | OPB_01543 Fluid capacitive dependency: "the volume of a fluid depends the differential of fluid pressures across its boundary" | E10, E16, E19, E21, E23, E25 (linear); E4, E11, E17 (exponential EDPVR) | S2 quote 3; S10 definitions |
| resistive flow dependency | OPB_01572 Resistive flow dependency | E27, E28 | S2 quote 3; S10 |
| inductive dependency (valve inertance) | OPB_01541 Fluid inductive dependency; property OPB_00104 Fluid inertance | E29-E32 (the non-zero branch) | S2 quote 6; S10 |
| boundary / temporal integrative dependency (volume from flows) | OPB_01173 Temporal integrative dependency | E9, E15, E20, E22, E24, E26 | S2 quote 5; S10 |
| additive / difference dependencies | OPB_01194 Additive dependency, OPB_01195 Difference dependency | E3, E5, E6, E8, E12, E14 | S10 (no rdfs:comment on these two classes: definition UNKNOWN) |
| weighted activation (E7, E13), driver E1-E2, septum balance E18, piecewise valve switching | no OPB class identified in the retained excerpt | — | UNKNOWN; Cook 2013 says non-proportional dependencies are "beyond the scope of the OPB" (S2 quote 7) |
The project's registry stores depends_on as a tuple of names and equation as a string on the variable itself. That conflates the two layers the sources separate. Recording this is the finding; changing the registry is out of scope for this review.
Rules stated by the sources:
Concrete cases for the Smith model, with the evidence that decides each. "Reject" means reject as direct equivalence; a component equation may still relate the two.
| # | proposed connection | decision | evidence |
|---|---|---|---|
| R1 | Smith P_lv ≡ Smith P_lvf (both kPa-labelled pressures of the left ventricle) |
reject | E8: P_lv = P_lvf + P_peri; S18 (A.4) "free wall pressures" exclude septum and pericardium |
| R2 | Smith P_ao ≡ Smith P_pa as "the same kind of arterial pressure" for a shared reference |
reject | E19 includes P_th, E23 does not; different reference class |
| R3 | Smith V_spt ≡ a fluid volume of the cardiac septum |
reject | S6P p. 10: the free wall volumes "are not physical volumes, but are defined to capture the deflection of the cardiac free walls"; S18: displaced blood volume; E6, E12 difference terms; S9 annotation to OPB_01061 is itself defective (C6) |
| R4 | Smith V_pcd ≡ fluid volume of the pericardium (fma9869) as annotated in S9 |
reject as stated | E3 and S6P Eq. (11): V_pcd = V_lv + V_rv, which "excludes the volume of the atria and the myocardium" (S6P p. 11); the bearer is not the pericardium |
| R5 | Smith Q_av (instantaneous) ≡ project CO (complete-beat mean) |
reject | temporal context differs (ontology.md); no source annotates aggregation |
| R6 | Smith Q_av ≡ project Q_aortic |
candidate allow; C1 decided, no conversion | same property (OPB_00299), same direction (S9 source blood in LV cavity → sink blood in aortic lumen; project orientation lv→sa); C5's chosen blood-in-cavity/lumen participants make the intended granularity explicit, but named aortic lumen versus local aggregate sa still requires a human-asserted source/sink mapping with provenance, not automatic entity identity (S14 quote 5; ontology.md, Explicit local concepts); pressure reference is not applicable to a flow |
| R7 | Smith P_lv ≡ project P_lv |
candidate allow; C1 decided, no conversion | same property (OPB_00509); both are chamber pressures with an unspecified sink, so the reference is the common ground in each model, and equating them assumes the two grounds coincide, which must be stated with provenance; bearer: S9 blood in cavity of LV (the chosen C5 form) versus registry fma7101 (implementation pending); the pressure laws differ in their external terms (E8: P_lv = P_lvf + P_peri; project: external pressure zero, src/physiosim/ontology/__init__.py:89-90), which is a dependency difference under Q2 and a post-merge assumption to reconcile (S14 quotes 12-13), not a reference mismatch |
| R8 | Smith P_ao ≡ project P_sa |
candidate allow; C1 decided, no conversion | Smith P_ao has no external-pressure term (E23); read-only project equation P = (V - V0)/C has no external term (src/physiosim/ontology/__init__.py:89; physiology.md:94); bearers still differ (S9 lumen of aorta versus local aggregate "systemic arteries"), requiring a human-asserted mapping with provenance (ontology.md, Explicit local concepts); C5 creates no automatic entity identity; P_vc's pending C3 status (an external-pressure term, not a reference point) does not bear on P_ao |
| R9 | project HR → OPB_01212 Event frequency in current OPB |
blocked | identifier absent from OPB master (C4); only valid against the pinned v1.07 file |
| R10 | Smith R_sys ≡ project R_systemic |
candidate allow | both OPB_00160, both aorta/systemic-arterial → vena-cava/systemic-venous paths; path endpoints differ in granularity (as R6) |
| R11 | Smith E_es_lvf ≡ project E_lv |
reject as equivalence | E_es_lvf is the end-systolic slope of the free wall (S17 quote 2); project E_lv is a time-varying elastance E(t); Smith's time variation is in e(t) (E7), so the project's E_lv corresponds to a product term, a dependency, not a variable |
| R12 | Smith V_lv ≡ project V_lv |
candidate allow; registry implementation pending | same property (OPB_00154), both ODE states integrating valve flows (E9 versus project dV/dt = Q_in - Q_out); C5's chosen blood-in-LV-cavity form aligns the intended bearer with S9, resolving the design choice, but current registry still uses fma7101 (src/physiosim/ontology/__init__.py:37,86); this remains a candidate mapping with S9/project provenance, not an implemented registry change; V_lv (mL) has no pressure-reference slot |
| R13 | any Smith pressure ≡ any project pressure with a numeric unit conversion kPa→mmHg | reject the conversion; compare without a factor | decided 2026-11-01 (decisions.md, user): the CellML numerals are read as mmHg-based, so applying the declared kPa→mmHg factor of 7.5 would corrupt the comparison; comparisons use the values as they stand and cite the decision |
The sources separate three things: semantic annotation (meaning), provenance/curatorial metadata (origin), and numeric behaviour (S3 quote 1; S14 quotes 10-13). Applied to what this project has actually encountered:
| observed problem | class | why | what would check it |
|---|---|---|---|
| CellML declares kPa for values that behave as mmHg (C1) | provenance + numeric | S17 tabulates the identical numerals in mmHg; S6 abstract reports mmHg; the semantic layer cannot know which label is right | decided 2026-11-01 from the 2004 manuscript (S6P), Paeme (S17) and simulated magnitudes (decisions.md); a check against the published Figure 7 waveform remains open; PROV-O wasDerivedFrom/wasQuotedFrom from paper to CellML would record the source of each value |
| negative Q_av held constant over each closed-valve span (runs A-C; C11) | numeric | S17 quote 6 and S6: the original solver changed the state set by phase; a fixed-state ODE run of E29-E32 is a different numerical procedure | solver study; not an annotation matter |
| SemSim annotates V_lvf, V_rvf, V_spt with OPB_01061 (a dependency class) | semantic QC | S3 recommendation (vi) names exactly this check; S7 sh:class or sh:in on the property slot would flag it |
SHACL shape on allowed property classes |
| SemSim free text "Pericardial blood volume" on a pressure; "atrial valve" for the aortic valve | semantic QC (text versus structured annotation) | S3 quote 9 | human review; a text/annotation consistency check cannot be automated from these sources |
| P_pa and V_pa annotated to different lumens (S9) | semantic QC | the capacitive dependency E19 relates them, so one bearer is expected | shape: variables linked by a capacitive dependency share a bearer |
identifiers.org/opb/... → 403; bhi.washington.edu/OPB#... → 404 |
provenance / infrastructure | S3 recommends identifiers.org for resolvability; resolution currently fails without credentials | record resolution status and date with each identifier; pin the OWL file hash |
| OPB_01212 absent from OPB master; 67 labels changed | provenance / version | S13 quote 9 (term obsolescence); S8 wasRevisionOf, specializationOf |
pin owl:versionIRI (OPB master has none) or the file hash; re-verify labels per release |
| project benchmark: correct metadata on the wrong numeric column | provenance | S3 quote 1 and S14 quote 12: semantics does not see numbers | PROV-O chain from CSV column to variable to run; numeric replay |
| different compartment granularity (named lumen versus lumped "systemic arteries") | semantic, but not decidable automatically | S14 quotes 5, 16, 17 | human assertion with recorded rationale |
HR) is absent from OPB master (22 identifiers removed, 67 relabelled between v1.07 and master); neither OPB URI form dereferences without credentials; the OPB repository states no licence. The project's six other OPB identifiers are unchanged.Portion of blood part_of Cavity of left ventricle (fma9466). Both labels verify in FMA 5.1.0. They are not the same entity; the project decided to adopt the blood-in-cavity/lumen form over organ-only anatomy (S9; Q1). This is a project resolution of a design choice, not a new scientific finding or physical equivalence between compartments. Registry fma7101/fma7098 remains the actual implementation until a future change; implementation is pending.shacl/, section 5) catch the first and the last (rules G1 and S3) and cannot catch the two free-text defects.analyze_c11.py SHA-256 eb3da405…7a5, c11-results.json SHA-256 a3baef9a…5af; inputs match the PROV record hashes): each run has three Q_av < 0 spans, Q_av is exactly constant within every span (max − min = 0), and P_lv − P_ao < 0 at every sample in every span. That is the sampled behaviour E30 predicts and supports reading the negative values as an artefact of the CellML encoding rather than physiology; the 1 ms output cannot show the step in which each value arose. The size of the frozen value does not scale uniformly with the step: B/C ratios are 2.0000, 16.27 and 10.50 for spans 1-3. Only span 1, which starts at t = 0 from Q_av = 0 with P_lv − P_ao = −94, halves with the step. One possible reason, not tested, is that span 1 begins on a step boundary while the later spans begin mid-step at an arbitrary phase.rdfs:comment) and whether OPB dependency classes carry formal player restrictions.sh:conforms; it can enforce the structural rules above (one bearer per pressure, allowed property classes, source and sink present on flows, equal reference slots for asserted equivalences, shared bearer across a capacitive dependency). It cannot test physiological validity or numeric agreement, and a shape passes vacuously on unannotated data unless sh:minCount is used.wasDerivedFrom, wasRevisionOf, hadPrimarySource, wasQuotedFrom); alternateOf/specializationOf are the closest standard terms for "two annotations of the same thing from different aspects" without asserting identity. It does not validate anything.shacl/) in the identifiers of the node specification v2: eleven generic rules for OMEX v1.2 composite annotations (property class, bearer present, fluid volume bearer, energy differentials, processes, participants as single or lumped fluid portions, constitutive properties, v2 containers, v2 valve locations, coverage) and seven Smith-specific rules (chamber pressures have no sink, free-wall pressures have one, a pressure and its volume are the same blood, flow direction matches the driving pressure difference, valve flows occur in their valve, venous compartments include their atrium, each compartment lies in its v2 container), the third to fifth reading equation dependencies from shacl/smith2004_dependencies.ttl. Positive and negative control fixtures produce exactly their expected results, and the runner checks that every anatomical identifier is a v2 primary identifier. On the workspace 267 annotation, translated to OMEX form, there are 22 Violations, 7 Warnings and 46 Info results (shacl/report_ws267.md); all six flow directions agree with the equations.The brief asks for a hand-performed semantic and unit comparison that receives the same knowledge as the ontology-assisted path, so that no advantage is assumed. Neal 2015 is the precedent: automatic overlap detection was scored against a human expert and missed about half the overlaps (S14 quote 19).
smith2004_variable_dictionary.md (without the "candidate" tables of this document), the S9 annotation table, the project registry listing from ontology.md, and the equations.Done: full texts of six papers and three derivative papers read; the 2004 author manuscript read in full (S6P); OMEX metadata v1.2 read; two W3C Recommendations read; the SemSim reference annotation of the Smith model parsed and label-checked; OPB versions compared; the variable dictionary produced; C5, the pressure reference and the C1 unit reading decided; SHACL shapes written, controlled and run; PROV-O record of the OpenCOR runs committed and confirmed against the server files (prov/). Not done: no OWL written; no registry change; no numeric work; the published 2004 article (as opposed to the manuscript) and OMEX v1.0 not seen.
Next steps that the evidence supports, in order: numeric comparison of the Smith CellML runs with the project model is now permitted under the C1 decision and stays report-only; resolve the unsourced CellML features (C3 peripheral P_th, C7 driver delay, C9 inflow inertances), for example from the Matlab code the CellML was translated from; check the CellML output against the manuscript's Figure 7; select FMA entities for the thoracic-cavity contents so P_pcd and P_th can be annotated; carry the v2 node specification (anatomy_nodes_v2.md), already propagated to the SHACL layer, into the registry.