Corrected and extended analysis · SPHN and CARE-SM · MIMIC-IV

Does the knowledge graph schema matter for clinical outcome prediction?

A study of SPHN and CARE-SM graphs of synthetic patients reported that the choice of schema changed outcome prediction substantially. We corrected the published pipeline, repeated the comparison on the original synthetic data and tested it on real patients. Once the graphs were built and checked correctly, the schema made at most a small difference, graph models performed like tabular models on the same data, and supplying ontology meaning did not change performance.

Author
Michel Dumontier, Maastricht University
Original study
Jhee et al., ESWC 2025
Code and results
kg-schemas-outcome-prediction
Status
Manuscript prepared for MIE 2027

Main findings

The original study

Jhee and colleagues generated 10,000 synthetic patients modelled on 552 people with a ruptured intracranial aneurysm and represented them as knowledge graphs following two schemas, the Swiss Personalized Health Network (SPHN) schema and CARE-SM, a model built on the Semanticscience Integrated Ontology. They asked three questions. Do graph models outperform tabular models? Does the schema matter? Does the way time is encoded matter? They reported that a relational graph convolutional network (R-GCN) with a literal encoder outperformed tabular models (AUC 0.91 against at most 0.71), that SPHN outperformed CARE-SM (0.91 against 0.50), and that time encodings performed alike.

The task is three-class node classification of the outcome at the end of the stay (discharge home, rehabilitation or death), evaluated with stratified 10-fold cross-validation and weighted one-versus-rest AUC.

What we checked

We reran the public pipeline (TeamHeKA/neurovasc, commit 1619d99) with its pinned software and the original protocol: the same folds, one ninth of each training set for validation, 2,000 full-batch epochs and the checkpoint with the best validation accuracy. Every change to the original code is marked in the repository. We then corrected the errors listed below and compared each configuration with tabular models on the same patients and folds.

Issue in the original pipelineEffectCorrection
Tabular and graph models used different synthetic tablesThe graph advantage reflected the dataTabular models rerun on the graph table
The CARE-SM literal filter used a predicate absent from the graphAll 40,000 numeric values droppedFilter corrected
CARE-SM features four steps from the patient, with a three-layer modelNo feature within the model's reachFour or five layers
Untrained node embeddings near zeroNode identity almost invisibleUnit-scale initialisation
Care pathways generated independently of the outcomeTime encodings could not differTested on real data
Locally minted IRIs and two incorrect procedure codesNo resolvable semanticsReleased terms and verified codes on real data

Real patients

From MIMIC-IV v3.1 we selected adults with a first admission coded for non-traumatic subarachnoid haemorrhage. At landmarks 24, 48 and 72 hours after admission, patients still alive and in hospital entered the analysis (1,388, 1,287 and 1,190 patients). Features used only information recorded before the landmark, namely age, sex, Glasgow Coma Scale, vital signs, laboratory values and the presence and timing of eight treatments. The outcome was discharge home (560 at 24 hours), to rehabilitation or care (530), or death including hospice (298).

We built SPHN and CARE-SM graphs following the original templates, an SPHN variant with time relations, a compiled CARE-SM graph with shortcut edges from each patient to each feature, and a graph using the released SPHN 2026.1 classes and properties with ATC, ICD-10-PCS, LOINC and SNOMED CT codes. Before training, every graph was checked automatically. Every numeric value had to reach the model, every feature had to lie within the model's reach, and no outcome edge could be present. Patient-specific nodes started from zero embeddings to prevent memorisation.

To test whether ontology meaning helps, we varied only the class and code nodes shared across patients. They started from random vectors, from SapBERT embeddings of their labels (also shuffled across nodes as a control) or from OWL2Vec* embeddings of the SPHN schema extended with the code hierarchies. Alternatively, their ancestors were added as graph edges, from the ATC and ICD-10-PCS codes themselves or from the OMOP vocabularies, which add SNOMED CT and LOINC ancestors.

Models were compared on the same ten folds with paired t-tests, and we report mean differences with 95% confidence intervals. Only aggregate results left the secure environment, and counts below 11 are never reported.

Synthetic data

ConfigurationAUCAccuracy
As published
SPHN, R-GCN with literal encoder, 3 layers (paper 0.91)0.910 ± 0.0070.781 ± 0.013
CARE-SM, R-GCN with literal encoder, 3 layers (paper 0.50)0.502 ± 0.0110.439 ± 0.007
CARE-SM as published, 5 layers0.499 ± 0.0180.439 ± 0.007
Corrected CARE-SM
Numeric values restored, 4 layers0.821 ± 0.0150.662 ± 0.022
Numeric values restored, 5 layers0.833 ± 0.0130.678 ± 0.014
Numeric values restored, 4 layers, unit-scale embeddings0.889 ± 0.0080.749 ± 0.011
Numeric values restored, 5 layers, unit-scale embeddings0.890 ± 0.0080.750 ± 0.010
Diagnostics
SPHN with the dedicated age edge relabelled as a diagnosis edge0.843 ± 0.0680.736 ± 0.044
Random forest on features read back from the CARE-SM graph0.917 ± 0.0060.783 ± 0.013
CARE-SM with an outcome edge per patient (leakage test)0.981 ± 0.0400.962 ± 0.060
Tabular models on the table the graphs were built from
Logistic regression0.918 ± 0.0060.782 ± 0.013
Random forest0.916 ± 0.0060.781 ± 0.010
Neural network (the original architecture)0.912 ± 0.0070.778 ± 0.013
Random forest, age only0.914 ± 0.0070.784 ± 0.014
Random forest, care events only0.504 ± 0.0190.432 ± 0.015
Tabular models on the earlier table behind the published tabular results
Logistic regression0.707 ± 0.0140.560 ± 0.016
Random forest0.708 ± 0.0110.564 ± 0.013
Neural network0.702 ± 0.0150.560 ± 0.013

Test AUC (weighted one-versus-rest) and accuracy, mean and standard deviation over the original 10 folds with 2,000 epochs.

Three observations explain the published differences. The published tabular results reproduce only on an earlier version of the synthetic table, so the graph advantage reflected different data. The five-layer CARE-SM model failed because the numeric values were dropped, not because of depth or over-smoothing, since the corrected five-layer model performs well. Merging the CARE-SM graphs into one graph lost no information, because the features read back from it give the same performance as the original table.

The original authors later shared their CARE-SM training notebook. It trains CARE-SM with the same three-layer model as SPHN, with an embedding size of 100 and its own fold seed. Run with these settings, the published graph gives 0.502 ± 0.018, matching the published 0.50, while the graph with its values restored gives 0.822 ± 0.008 with four layers and 0.886 ± 0.006 with unit-scale embeddings.

Age alone predicts the synthetic outcome as well as any model (0.914 ± 0.007), and SPHN delivers it on a dedicated edge. Relabelling that edge lowers SPHN, so part of its lead came from one predicate. The care events carry no outcome signal by construction, which is why the time encodings could not differ.

Why age is a sufficient predictor

The reason lies in how the synthetic patients were generated. The generator in the original repository works in four steps.

  1. Every variable, including the outcome, is drawn independently from a distribution fitted to the 552 real patients. Categorical variables become integer codes, and no variable is standardised.
  2. Correlations are then introduced by multiplying the table by the lower-triangular Cholesky factor of a correlation matrix. Each column becomes a weighted sum of itself and of every column that follows it in the table.
  3. In the table the graphs were built from, the outcome is the sixth column, ahead of seventeen other variables. Its column therefore becomes a weighted sum of the initial outcome code and of those seventeen variables, age included.
  4. That sum is cut into three classes at the target proportions (44, 43 and 12 percent).

Age is the only continuous variable in the sum and is measured in years, while most of the others are 0/1 codes, so the sum, and hence the outcome, is close to age cut at two thresholds. The data show this directly. Mean age is 43.0, 60.1 and 74.8 years for discharge home, rehabilitation and death, with a spread of only 7 to 9 years within each class, and a rule with cut-offs near 50 and 70 years classifies 78 percent of patients correctly, the same accuracy as the graph model on SPHN (0.781 ± 0.013). Variables that enter the sum with visible weight carry some signal (sex alone reaches an AUC of about 0.76), whereas length of stay, the Glasgow Coma Scale and the number of medical acts carry none. Mixing unstandardised values also pushes some variables outside clinical ranges, for example Glasgow Coma Scale values up to 52 on a scale that ends at 15. The care pathway events are generated afterwards, independently of everything else.

We infer the dominance of age from the generator code and the data. The mixing weights are stored in a serialised file in the original repository that we did not load. The figures in this subsection were computed from data/syn_data.csv at commit 1619d99.

Real patients in MIMIC-IV

Model24 hours48 hours72 hours
Gradient boosting0.813 ± 0.0230.818 ± 0.0340.829 ± 0.038
CARE-SM graph, 4 layers0.808 ± 0.0320.818 ± 0.0320.812 ± 0.052
Compiled CARE-SM graph, 3 layers0.805 ± 0.0300.820 ± 0.0260.823 ± 0.025
Logistic regression0.793 ± 0.0230.804 ± 0.0350.813 ± 0.025
SPHN graph (original template), timestamps0.791 ± 0.0320.793 ± 0.0380.808 ± 0.037
SPHN graph, timestamps and time relations0.784 ± 0.0330.787 ± 0.0370.806 ± 0.031
SPHN 2026.1 graph, released terms, both edge directions0.813 ± 0.030
Gradient boosting, care events only0.682 ± 0.0390.694 ± 0.0380.690 ± 0.033
Gradient boosting, age only0.605 ± 0.0290.601 ± 0.0420.631 ± 0.024

Test AUC, mean and standard deviation over 10 folds, seed 0. Accuracy of gradient boosting at 24 hours is 0.646 ± 0.028.

CARE-SM against the template SPHN graph

Landmark and seedDifference in AUC95% CIp
24 h, seed 0+0.017−0.010 to +0.0440.19
48 h, seed 0+0.025−0.004 to +0.0540.08
72 h, seed 0+0.004−0.021 to +0.0290.73
24 h, seed 1+0.022+0.009 to +0.0360.005
24 h, seed 2+0.016−0.004 to +0.0370.11

CARE-SM minus SPHN on the same folds. The difference is positive in all five comparisons and significant in one.

Other comparisons at 24 hours

ComparisonDifference in AUC95% CIp
Compiled CARE-SM minus CARE-SM−0.003−0.028 to +0.0220.77
SPHN with time relations minus SPHN−0.007−0.025 to +0.0110.40
Gradient boosting minus CARE-SM+0.005−0.012 to +0.0220.54
Gradient boosting minus template SPHN+0.022+0.001 to +0.0420.04
Template SPHN, both directions minus one direction+0.002−0.016 to +0.0200.79
Released SPHN 2026.1 minus template SPHN, both directions+0.020+0.003 to +0.0370.03
Gradient boosting minus released SPHN 2026.1−0.001−0.014 to +0.0130.92

Unlike the synthetic data, age alone predicted the outcome weakly while the care events and their timing carried signal. Compiling CARE-SM and adding time relations to SPHN changed nothing. Passing messages in both directions did not change the template SPHN graph, but the graph built with released SPHN terms performed better and matched gradient boosting. Because that graph differs from the template in several ways at once, including its layout and depth, the gain cannot be attributed to the released terms themselves.

Does ontology meaning help?

−0.010 −0.005 0 +0.005 +0.010 difference in AUC SapBERT label embeddings, shuffled across nodes SapBERT label embeddings OWL2Vec* ontology embeddings ATC and ICD-10-PCS hierarchies as edges OMOP hierarchies as edges (adds SNOMED CT and LOINC)
Difference in AUC from random starting vectors for the shared class and code nodes, with 95% confidence intervals over 10 folds (each fold averaged over three seeds). Every interval includes zero.
What the shared class and code nodes receivedAUCDifference95% CIp
Random vectors (reference)0.812 ± 0.027
SapBERT label embeddings, shuffled across nodes0.811 ± 0.028−0.001−0.007 to +0.0050.69
SapBERT label embeddings0.811 ± 0.032−0.001−0.006 to +0.0040.63
OWL2Vec* ontology embeddings0.810 ± 0.028−0.002−0.011 to +0.0060.55
ATC and ICD-10-PCS hierarchies as edges0.813 ± 0.029+0.001−0.007 to +0.0080.84
OMOP hierarchies as edges (adds SNOMED CT and LOINC)0.812 ± 0.027−0.001−0.006 to +0.0050.79

None of the five ways of supplying ontology content changed performance by more than 0.002 AUC, and the differences are smaller than the variation between seeds. The two embeddings do carry different information. OWL2Vec* places heart rate next to the other vital-sign results and the drugs together, while SapBERT groups labels by wording. On these features the models use the graph layout and the numeric values rather than the meaning of the terms. The feature set is small and dense, so related codes have little need to share strength, and settings with many sparse codes may behave differently.

What this means

The large schema effect in the original study came from how the graphs were built and preprocessed. Once corrected, the schema made at most a small difference, and graph models performed as well as, but not better than, tabular models on the same data. The original graphs used locally minted identifiers, and no hierarchy or reasoning entered the models, so the comparison was one of graph structures rather than of ontologies. Our experiments with released terms, standard codes, embeddings and hierarchies support this reading.

Limitations. The real-data analysis covers one centre and one outcome definition. MIMIC-IV has no structured aneurysm severity score, and treatments partly reflect severity, so their signal is prognostic rather than causal. We did not rerun the TransE and RDF2Vec baselines of the original study, whose code is not in its repository.

Seven checks for clinical knowledge graph studies

  1. Compare graph and tabular models on the same data, patients and folds.
  2. Confirm that the model depth covers the longest path from the prediction target to each feature.
  3. Verify that every literal reaches the model, for example by counting the values ingested.
  4. Ablate predicate identity, since a dedicated predicate can carry most of the signal.
  5. Confirm that synthetic data contain the signal a comparison is meant to detect.
  6. Use resolvable ontology terms and verified codes, and validate graphs against the source ontologies.
  7. Publish the code for every reported configuration.

Reproducing these results

All code, pinned environments and per-fold results are in the repository, and every number on this page is computed from those results by site/build.py. The synthetic data and original code are available from TeamHeKA/neurovasc. MIMIC-IV requires credentialed access through PhysioNet. The OMOP-based hierarchy needs a vocabulary export from Athena, which includes licensed SNOMED CT and LOINC content.

The original authors' repository notes the discrepancy between the tabular and graph data. We shared these findings with the original authors before publication and thank them for their responses.