W3C

– DRAFT –
FHIR RDF

16 December 2021

Attendees

Present
Ben McAlister, Claude Nanjo, David Booth, EricP, Gaurav Vaidya, James Champion, Jim Balhoff
Regrets
-
Chair
David Booth
Scribe
dbooth

Meeting minutes

EricP's progress on FHIR JSON-LD library

eric: Got shex generation working from FHIR models. Instead of loading 50MB of FHIR resources, you load 3MB of shex. Much easier to work with. Conventions I keep checking w Grahame to understand, much easier just to look at the content model. Passing all tests right now. Now working to gen JSON-LD from shex.

david: You're instantiating the preprocessing rules?

eric: yes, but I'm using an existing module for that.

James: I'm working to add a third window to the playground. Forked eric's repo. Lots of event handling and interaction with these windows.
… Uses a lot of jquery. Makes it tedious to walk through.
… When a third window is added, is that bidirectional or one direction?

eric: At present, the bottom window is serving two purposes. If you're in the R4 or R5 tab, it shows preprocessed data. If you are in any other tab, it parses the upper window as JSON-LD and produces something else.
… The URL remembers the content of the two windows.

david: Not bidirectional. That's too much to bite off.

JSON-LD context and Framing

https://github.com/w3c/hcls-fhir-rdf/issues/96

jim: Found in the JSON-LD spec says that the context can contain extra info, which seems to indicate that it could also be the framing document.

ISSUE: Round tripping and JSON-LD framiing

Issue 76 -- OWL and RDF lists

https://github.com/w3c/hcls-fhir-rdf/issues/76

jim: Issue 76, RDF lists cause a problem with OWL.
… In Protege you can do the reasoning that I want, but it causes problem, and the spec does say that all URIs in the RDF namespace are reserved.
… I tried an experiment using URIs instead of bnodes for list nodes, but they got swallowed by the OWL parser.

eric: What use cases does it break?
… I'm interested in stratification of patient document, e.g., people who have non-viral respiratory infection.
… If you're using Hermit, will that still work?

jim: I used URIs for the list nodes because protege does not allow anonymous individuals.

(Jim shown an example in protege)

jim: library example allows inference of containing books.

jim: If I save it into turtle using blank nodes, and try to reload it, it doesn't work.

eric: Should ask Matt Horridge(?), who maintains protege.

david: I don't like how this smells, having to use explicit rdf:first and rdf:rest .

eric: But we'd be using it closer to the original intent.
… There's growing support for lists. SPARQL 1.2 is adding more support for them.

jim: If this didn't violate the spec, I wouldn't mind doing it.
… OWL spec says that the only object properties that can exist are the owl:topObject and owl:bottomObject.

david: If the OWL API were improved, is this a direction we'd want to go, given that it technically violates the OWL spec?

ACTION: Eric to try Jim's book example

david: My aversion to this approach is not due to the technical violation of the OWL spec.

Meeting schedule

David: Will cancel Dec 30.

Semantics of FHIR structure definitions

https://github.com/ericprud/fhircat-playground/tree/ericP-variant/fhirlib/test/fhir

eric: These are trimmed structure defs.
… Took the hierarchy for resources, and one resource, and reference datatype
… Structure defs are in a bundle w a bunch of entries.
… A the bottom, line 506, MedicationRequest has metadata, mappings, is a resource, a specializatino of DomainResource.
… differential is what things are added to DomainResource.
… Snapshot is everything in DomainResource plus what they added (in the differential).
… Single inheritance.
… If I have a resource, and look for code, it has a value that has some definitions. It's a specialization of string. String has a string.value that has some definitions.
… But when I look, code.value only has one 'value', so I assume it is the intersection of restrictions.
… But when I look at the spec, there is extension and specialization. What is the semantics of two different properties with the same last bit, when using specialization?

eric: string has a string.value and code has a code.value
… The profiling page didn't really explain. I tried to ask in zulip

https://chat.fhir.org/#narrow/stream/179177-conformance/topic/FHIR.20Specification/near/265133382

ben: Based on an ISO spec

https://www.hl7.org/fhir/datatypes.html

eric: Derivation can be specialization or restriction. With restriction the value type is an intersection. But fuzzy about what specialization is.

eric: Another issue: Am I allowed to have multiple types if I don't have a property that has the "value[x]" property in it?
… If resource.type has a cardinality bigger than one, will that only happen with "value[x]"?
… Observation.value will have a very long list of types, and its name ends with "[x]". Does that mean it's a disjunction?
… i thnk it means that anything inside the disjunction has a cardinality of only one?

claude: The cardinality is 0..1 because if you have a BP, you'd have two components, systolic and distollic, so you would not have a value. But if you do have a value then you have to pick one of the values provided.

[x] = https://www.hl7.org/fhir/formats.html#choice

eric: So once you have a choice of types, the choices can only be external types -- no further structure to them.
… Are there any other places with more than one type, other than 'value[x]'?

claude: Yes, I think with references.
… if you have a med request, you can have the med code or the ref to the med.
… They created a type for that: CodeableReference. It's kind of like a choice, where one item is a ref to something else.

eric: CodeableReference can be either a CodeableConcept or a Reference, or both.

claude: And according to the model it could be both. But if so, they should be consistent.

ben: Where are you on translating fhir path into shex?

eric: At the very beginning.

ben: Lots of interest in the UK on mapping now. In NHS they are now embracing FHIR mapping language.

claude: We created a DSL to express the model. UML doesn't have the ability to bind to a language.
… Struggling to get OMG to embrace the terminology bindings, so we created a simplified language for the logical model. Can use that to autogen Java, C#, and typescript.

eric: When can you share it?

claude: In active discussion now. Depends on whether we can get a community to contribute. If so, we'd do it as open source.

ben: This is the other thing the NHS are exploring with regards to representing logical models and mapping https://maurodatamapper.github.io/about/introduction/

david: Is there a gap in open source licenses? Need an open source license that encourages contributing back, but not as heavy handed as viral GPL?

eric: If a license says you have to contribute, then you can get sued.

ben: https://maurodatamapper.github.io/about/research/ coming out of Oxford

ben: Working w Mark Kramer at MItre?

claude: We were working closely, but then the work stalled.
… Mark felt that the DSL should be very close to FHIR. For us, we ran into a lot of issues using FHIR, so we wanted to develop both a language and a model without the overhead/complexity of FHIR.
… We both moved forward along those visions.
… Easy to translate our DSL into OO prog lang.
… Our main goal is to scale for informaticists to write what they want and we run it.
… Need to make these models accessible to the care providers.

claude: we have two layers: language to write the model. But the other layer is a clinical layer that is used to create a rule, and that's what we show clinicians.
… Rules are expressed in clinical language that clinicians understand.

claude: With CIMI, people didn't understand the need for a model. Couldn't make progress, because we needed the logical model.
… We're auto generating the profiles from the model.

ADJOURNED

Summary of action items

  1. Eric to try Jim's book example

Summary of issues

  1. Round tripping and JSON-LD framiing
Minutes manually created (not a transcript), formatted by scribe.perl version 185 (Thu Dec 2 18:51:55 2021 UTC).

Diagnostics

Succeeded: s/OWL/protege/

Succeeded: s/, but not both//

Succeeded: s/Reference/Reference, or both/

Succeeded: s/CodeableConcept or a Reference/CodeableConcept or a Reference, or both/

Succeeded: i/If a license/david: Is there a gap in open source licenses? Need an open source license that encourages contributing back, but not as heavy handed as viral GPL?

Succeeded: s/role/rule/

Succeeded: s/EITHER/either/

Succeeded: i/Issue 76/https://github.com/w3c/hcls-fhir-rdf/issues/76

Succeeded: s/EricP's progress/EricP's progress on FHIR JSON-LD library

Succeeded: i/Found in the JSON-LD/https://github.com/w3c/hcls-fhir-rdf/issues/96

Succeeded: s/OWL and RDF lists/Issue 76 -- OWL and RDF lists

Succeeded: s/CodeableReference, or both/CodeableReference/

No scribenick or scribe found. Guessed: dbooth

Maybe present: ben, claude, david, eric, James, jim