W3C

- DRAFT -

Semantic Web Health Care and Life Sciences Interest Group Teleconference

15 Apr 2015

See also: IRC log

Attendees

Present
dbooth, ericP, Lloyd, twamarc, Tony, Claude, RobHausam, mscott
Regrets
Chair
David Booth and EricP
Scribe
dbooth

Contents


<trackbot> Date: 15 April 2015

http://wiki.hl7.org/index.php?title=ITS_RDF_ConCall_Agenda#DRAFT_Agenda_for_21-Apr-2015

o discuss: Element ordering. Some possibilities:

rdf: List

Ordered List Ontology

Collections Ontology

Simple List Conventions

<scribe> ACTION: Tony to show an example of his and Grahame's approaches side-by-side [recorded in http://www.w3.org/2015/04/15-hcls-minutes.html#action01]

<trackbot> Error finding 'Tony'. You can review and register nicknames at <http://www.w3.org/2014/HCLS/track/users>.

http://wiki.hl7.org/images/2/25/FHIR_RDF_Sample_side_by_side_comparisons.pdf

ShEx expressivity

<ericP> V&T questionnaire

eric: Questionnaire on validation and translation (above link)
... Please answer the questionnaire to say what expressivity you need

FHIR Element ordering

Ordered List Ontology: http://smiy.sourceforge.net/olo/spec/orderedlistontology.html

Collections Ontology: http://www.essepuntato.it/lode/owlapi/http://purl.org/co/

Simple List Conventions: http://goo.gl/8PNuAG

lloyd: extensions may depend on ordering, so ordering of all extensions must also be kept in the RDF

http://smiy.sourceforge.net/olo/spec/orderedlistontology.html

[[

PREFIX dc:<http://purl.org/dc/elements/1.1/>

PREFIX ex:<http://example.org/>

PREFIX mo:<http://purl.org/ontology/mo/>

PREFIX olo:<http://purl.org/ontology/olo/core#>

PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>

SELECT ?item ?index {

ex: FunkyPlaylist olo:slot [ olo:index ?index ; olo:item ?item ] .

} ORDER BY ?index

# If this were done using Simple List Conventions,

# the query would be:

# SELECT ?item ?index {

# ex:FunkyPlaylist list:item ( ?item ?index ) .

# } ORDER BY ?index

]]

AGREED: We need to retain explicit order info for extensions in RDF, and for anything with cardinality more than one. Otherwise we should lean on the schema to determine order when reserializing back to XML from RDF.

<mscott> There’s a way to answer a question like “Give me the second treatment of this patient” with limit and offset: SELECT ?treatment { ?treatment a :Treatment ; :ends ?date } ORDER BY ?date LIMIT 1 OFFSET 1

Simple List Conventions: http://goo.gl/8PNuAG

Tony's side-by-side comparison of Grahame and Tony's approaches

http://wiki.hl7.org/images/2/25/FHIR_RDF_Sample_side_by_side_comparisons.pdf

https://global.gotomeeting.com/join/157514853

Access Code: 157-514-853

tony: my approach uses anonymous instances, plus fhir:value .

marc: Benefit of the first example is to use the URI.

tony: but the anon instance allows extensions to appear

lloyd: JSON uses Coding.system and Coding._system (for extensions) , but better to use anon instance.

second github example:

[[

@prefix loinc: <http://loinc.org/owl#> .

:resource a fhir:Observation;

fhir: Observation.code [
... CodeableConcept.coding [
... Coding.system <http://loinc.org>;
... Coding.code "54411-4";
... Coding.display "Rh immune globulin given Qualitative";

ex: concept loinc:54411-4;

];

fhir: CodeableConcept.text "Rh immune globulin";

].

]]

<Lloyd> <extension url="http://...StructureDefinition/Coding-concept"> <valueURI value="http://loinc.org/54411-4"/> </extension

claude: If we point to an instance then we should use SKOS

tony's example:

[[

@prefix loinc: <http://loinc.org/owl#> .

:resource a fhir:Observation;

fhir: Observation.code [
... CodeableConcept.coding [rdf:type fhir:Coding , <http://loinc.org/54411-4.ttl>
... Coding.system <http://loinc.org> ;
... Coding.code "54411-4";
... Coding.display "Rh immune globulin given Qualitative";

];

fhir: CodeableConcept.text "Rh immune globulin";

].

]]

lloyd: the code instance is a member of the LOINC class and the SNOMED class, etc.
... Observation.code should be an instance of both fhir:Coding and loinc:54411
... I like that types can be stated explicitly or inferred.

tony: i'm trying to get the same approach to work with fhir:Code

(example 3)

lloyd: I'd like to asee a full coding instance
... If I have two concepts, one that infers A and the other B, then A and B cannot be disjoint.

eric: Talking with Grahame, he was saying codings are a union

lloyd: no, if you want union you'll need repetition. your concept should be a subclass of all of them. the intersection.
... If you want to convey laterality and diagnosis, they need to be separate.

eric: Multiple codings (within a codeable concept) are an intersection; multiple codes a union.

lloyd: I'd like to see this in terms of a full coding.

david: And please show the corresponding XML or JSON

lloyd: 1. what's the minimum needed in the instance to allow round tripping? 2. What's the min needed in the instance to support reasoning? 3. What's the full detail we'd want for reasoning?
... If we only say the code system and code, that's sufficient to figure out the LOINC concept that applies, but it requires complex reasoning to figure that out.
... Whereas if you say it's loinc:12345 then it shortcuts that reasoning.
... Also you've got coding with system and code and possibly version, and you may have something that says this coding is a translation of this coding.
... In the case of a bare code, you only have to send the code over the wire, because the code system and version are fixed in the resource datatype definitions.
... But for a particular version of FHIR, the attribute with datatype code will be bound to a single valueset. But possibly in a future version of FHIR that enumeration may expand.
... You're pointing to a valueset and the code system within that is fixed, and the version is fixed for a version of FHIR, then over the wire you only need to say you're an XYZ valueset, and the attribute allows you to infer.

dbooth: how to know what FHIR version applied when the message was sent?

lloyd: The version in theory should not matter, because we're adding new concepts but not changing their meanings.
... Want for a simple code in an instance is for us to be able to reason against that single code, and codeable concepts the same way.
... Maybe easier to treat everything as CodeableConcept in RDF -- it may be easier.

eric: Why not do that in XML?

lloyd: Because people get annoyed with deeply nested XML.

dbooth: sounds like a good idea. May need to keep a flag that says whether to reserialize it in the short form.

eric: We could use URIs for codeable concepts that are reused a lot.

lloyd: I'd like status in the RDF to say its a coding that has a code. That allows the reasoning to be in the same structure.

<jimi_> :)

(example 4)

github example:

[[

:resource a fhir:Observation;

fhir: contained fhir:Observation\#23;
... Observation.subject [
... Reference.reference fhir:Observation\#23

].

fhir: Observation\#23 a fhir:Patient;
... Patient.name [
... text "John Smith

].

]]

lloyd the reference is a string because the URI resolution is not completely standard.

<ericP> orange decided that my conversation was too long, but here's a ladder diagram so you can pretend i'm still there -- http://tools.ietf.org/html/rfc3986#page-29

Summary of Action Items

[NEW] ACTION: Tony to show an example of his and Grahame's approaches side-by-side [recorded in http://www.w3.org/2015/04/15-hcls-minutes.html#action01]
 
[End of minutes]

Minutes formatted by David Booth's scribe.perl version 1.140 (CVS log)
$Date: 2015/04/15 18:49:58 $

Scribe.perl diagnostic output

[Delete this section before finalizing the minutes.]
This is scribe.perl Revision: 1.140  of Date: 2014-11-06 18:16:30  
Check for newer version at http://dev.w3.org/cvsweb/~checkout~/2002/scribe/

Guessing input format: RRSAgent_Text_Format (score 1.00)

Succeeded: s/formation/resolution/
No ScribeNick specified.  Guessing ScribeNick: dbooth
Inferring Scribes: dbooth
Present: dbooth ericP Lloyd twamarc Tony Claude RobHausam mscott
Found Date: 15 Apr 2015
Guessing minutes URL: http://www.w3.org/2015/04/15-hcls-minutes.html
People with action items: tony

[End of scribe.perl diagnostic output]