- 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