- From: David Booth <david@dbooth.org>
- Date: Fri, 27 Feb 2015 16:09:46 -0500
- To: Markus Lanthaler <markus.lanthaler@gmx.net>, public-linked-json@w3.org
Hi Markus, On 02/27/2015 03:23 AM, Markus Lanthaler wrote: > On 26 Feb 2015 at 21:35, David Booth wrote: >> On 02/25/2015 10:11 AM, Manu Sporny wrote: >>> So, count us in - send the questions to the mailing list and it looks >>> like you have multiple community members that would be willing to help out. >> >> Thanks Manu (and Markus and Jim and any others)! Okay, my first >> question regards blank nodes. >> >> Here is an except of a FHIR JSON data: >> >> { >> "dob": "1972-11-30", >> "_dob": { >> "id": "314159", >> "extension": [{ >> "url" : "http://example.org/fhir/extensions#text", >> "valueString" : "Easter 1970" >> }] >> } > > Have you considered expanding dob and _dob to the same URL? Something like: > > { > "@context": { > "@vocab": "http://example/fhir/vocab#", > "xsd": "http://www.w3.org/2001/XMLSchema#", > "dob": { "@type": "xsd:date" }, > "_dob": { "@id": "dob", "@type": "@id" }, > "extension": { "@container": "@list" } > }, > "dob": "1972-11-30", > "_dob": { > "id": "314159", > "extension": [ > { > "url": "http://example.org/fhir/extensions#text", > "valueString": "Easter 1970" > } > ] > } > } > > This yields (please note extension is a list): > > _:b0 <http://example/fhir/vocab#dob> "1972-11-30"^^<http://www.w3.org/2001/XMLSchema#date> . > _:b0 <http://example/fhir/vocab#dob> _:b1 . > _:b1 <http://example/fhir/vocab#extension> _:b3 . > _:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> _:b2 . > _:b3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> . > _:b1 <http://example/fhir/vocab#id> "314159" . > _:b2 <http://example/fhir/vocab#url> "http://example.org/fhir/extensions#text" . > _:b2 <http://example/fhir/vocab#valueString> "Easter 1970" . Interesting. No, I had not considered that idea. It looks like it has the advantage of making JSON properties "dob" and "_dob" (the extensions) more explicitly connected to each other, because their values are now attached to the same RDF property <http://example/fhir/vocab#dob>. But it also has the disadvantage of overloading the <http://example/fhir/vocab#dob> property in RDF so that its range includes both xsd:date and rdf:List , which would complicate RDF inference. I had been thinking that the lack of explicit relationship between "dob" and "_dob" properties could be a problem for RDF, but I am now convinced that it will not be a problem. FHIR uses a closed content model, so extensions cannot introduce new properties. This means that all of the FHIR properties can be declared in a standard FHIR ontology, including the relationship between "dob" and "_dob", like this: fhir:_dob fhir:extends fhir:dob . > > You can transform these triples back to > > { > "@context": ... > "@graph": [ > { > "@id": "_:b0", > "dob": "1972-11-30"m > "_dob": { > "@id": "_:b1", > "id": "314159", > "extension": [ > { > "@id": "_:b2", > "url": "http://example.org/fhir/extensions#text", > "valueString": "Easter 1970" > } > ], > } > } > ] > } > > with the following frame: > > { > "@context": { > "@vocab": "http://example/fhir/vocab#", > "xsd": "http://www.w3.org/2001/XMLSchema#", > "dob": { "@type": "xsd:date" }, > "_dob": { "@id": "dob", "@type": "@id" }, > "extension": { "@container": "@list" } > }, > "dob": {} > } Wow, interesting technique! I didn't realize that the @context could un-overload a property like that, when serializing back to JSON-LD. In general I haven't yet thought much about how to do the serialization back to JSON-LD from RDF, except to observe that it looks it will require a FHIR-specific JSON-LD serializer. So it's good to know that a technique like that is possible. Thanks, David Booth
Received on Friday, 27 February 2015 21:10:13 UTC