See also: IRC log
<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
<ericP> V&T questionnaire
eric: Questionnaire on validation
and translation (above link)
... Please answer the questionnaire to say what expressivity
you need
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
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
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]