- From: Chris Mungall <cjmungall@lbl.gov>
- Date: Wed, 21 Nov 2018 09:13:13 -0800
- To: "Melanie Courtot" <mcourtot@ebi.ac.uk>
- Cc: "Jerven Bolleman" <jerven.bolleman@sib.swiss>, ljgarcia <ljgarcia@ebi.ac.uk>, public-bioschemas@w3.org
- Message-ID: <B99BD6F7-0373-4B85-84FF-5ECF465159DC@lbl.gov>
This is partly a matter of personal preference, but I strongly prefer relegating all "@"s to the context and using shorthands like "id" and "type" in the body. On 21 Nov 2018, at 7:54, Melanie Courtot wrote: > Thanks both, that looks much more straighforward. I see that the > identifier property from bioschema in my original snippet, > "identifier": "biosample:SAMEA100000”, as also been rewritten using > @id - shouldn’t we expand the biosample prefix in the context as > well then? The final version would then be: > > { > "@context": [ "http://schema.org <http://schema.org/>", > { > "OBI" :"http://purl.obolibrary.org/obo/OBI_ > <http://purl.obolibrary.org/obo/OBI_>” > “biosample":”http://identifiers.org/biosample > <http://identifiers.org/biosample>" > }], > "@type": "DataRecord", > "@id": "biosample:SAMEA100000", > "mainEntity": { > "@type" : ["Sample","OBI:0000747"] > } > } > > > I’m still unclear about the notation "@context": > "http://schema.org” - is that the default context for anything not > otherwise bound to a prefix? > > Is there a difference between @context": "http://schema.org” and > "@context":{ > "@base": "http://schema.org", > } > As said I couldn’t find an explanation for the syntax "@context": > "http://schema.org” in the json-ld spec at > https://www.w3.org/TR/json-ld/#the-context > <https://www.w3.org/TR/json-ld/#the-context> > > > > Finally (and that’s maybe Jerven feels about strongly as well, > given the edits to the subject line ;)): we now have a DataRecord with > ID as well as the mainEntity of the page with the same ID. > > "mainEntity": { > "@id": ""biosample:SAMEA100000", > > > Should we use @id in the data Record as the actual URL of the > biosamples page we are referring to, i.e., > https://www.ebi.ac.uk/biosamples/samples/SAMEA100000 > <https://www.ebi.ac.uk/biosamples/samples/SAMEA100000>, and the the ID > of the mainEntity is the identifiers.org <http://identifiers.org/> > “canonical” IRI for this sample? It seems a little bit circular > to be honest. We may be better off saying this is a dataRecord with > "@id": "biosample:SAMEA100000” and then not have an ID for the > mainEntity? Or is the circularity not a problem? > > Thanks again for the help, > Melanie > > > > > >> On 21 Nov 2018, at 15:26, Jerven Bolleman <jerven.bolleman@sib.swiss> >> wrote: >> >> Hi Melanie, Leyla, >> >> I see the error in my reply. >> >> You want to say the anonymous mainEntity is a schema:Sample and a >> OBI:0000747 at the same time. >> Then you want to use this >> { >> "@context": [ "http://schema.org", >> { >> "OBI" :"http://purl.obolibrary.org/obo/OBI_" >> }], >> "@type": "DataRecord", >> "@id": "biosample:SAMEA100000", >> "mainEntity": { >> "@type" : ["Sample","OBI:0000747"] >> } >> } >> >> There may be or may not be a file somewhere that relates the >> schema;Sample to OBI:0000747 in some way in the future but this is >> not expressible in a context in JSON-LD (not now in 1.0 nor in 1.1) >> >> Regards, >> Jerven >> On 11/21/2018 03:45 PM, ljgarcia wrote: >>> Hi Melanie, >>> I do not see why you would need the second local context in your >>> example. >>> Now, regarding http://purl.obolibrary.org/obo/OBI_0000747. Are you >>> trying to express that schema:Sample is somehow "inspired/based" on >>> http://purl.obolibrary.org/obo/OBI_0000747? If yes, you do not need >>> to add it here. That will be expressed somehow as part of the Sample >>> definition is schema.org. The "somehow" way to express it, I think >>> has not been agreed yet, it would be a property such as "baseOn", >>> "equivalentTo" or so. >>> Kind regards, >>> On 2018-11-21 14:00, Jerven Bolleman wrote: >>>> Hi Melanie, >>>> >>>> I think you want to do this. >>>> >>>> { >>>> "@context": [ "http://schema.org", >>>> { >>>> "OBI" :"http://purl.obolibrary.org/obo/OBI_" >>>> } >>>> ], >>>> "@type": "DataRecord", >>>> "@id": "biosample:SAMEA100000", >>>> "mainEntity": { >>>> "@type" : "OBI:0000747" >>>> } >>>> } >>>> >>>> Here we start with merging two contexts. The standard schema.org >>>> and >>>> one just for your file. Here trying to make the OBI one easier to >>>> read. >>>> >>>> So your top level is a DataRecord linked via schema:mainEntity to >>>> something with type "OBI:0000747". >>>> >>>> You can see what a JSON-LD snipit means in RDF at >>>> https://json-ld.org/playground/ e.g. http://tinyurl.com/y9ccen2j >>>> >>>> >>>> I am repeating myself here but in additionalType is only for the >>>> MicroData serialization which no one in the bioschema space seems >>>> to >>>> use. >>>> >>>> If you have more than one type just do >>>> >>>> { >>>> "@context": [ "http://schema.org", >>>> { >>>> "OBI" :"http://purl.obolibrary.org/obo/OBI_" >>>> } >>>> ], >>>> "@type": [ "DataRecord", "Thing", "WebPage" ], >>>> "@id": "biosample:SAMEA100000", >>>> "mainEntity": { >>>> "@type" : "OBI:0000747" >>>> } >>>> } >>>> >>>> To be honest I don't like the DataRecord at all and am still >>>> advocating it's removal from bioschema. Mostly because schema.org >>>> doesn't have StoreRecord, just Store. >>>> >>>> Regards, >>>> Jerven >>>> >>>> PS Alasdair, Leyla maybe remove additionalType considering the >>>> confusion it has generated and we have no Microdata examples. >>>> >>>> On 11/21/2018 02:40 PM, Melanie Courtot wrote: >>>>> Hi, >>>>> >>>>> Hi - following up discussions at the BioHackathon we’re looking >>>>> at updating our sample serialisation. We are running into some >>>>> questions with respect to the context usage and are hoping someone >>>>> can help. >>>>> >>>>> Specifically, I’m trying to understand the usage of contexts and >>>>> base IRIS - I’m familiar with XML base and namespaces as well as >>>>> RDF, but I was looking at some schema.org <http://schema.org> >>>>> JSON-LD and trying to understand nuances based on the official >>>>> spec at https://www.w3.org/TR/json-ld/#the-context >>>>> >>>>> Here is the relevant excerpt from our serialisation: >>>>> >>>>> { >>>>> "@context": "http://schema.org", >>>>> "@type": "DataRecord", >>>>> "identifier": "biosample:SAMEA100000", >>>>> "mainEntity": { >>>>> "@context": [ >>>>> "http://schema.org", >>>>> { >>>>> "@base": "http://schema.org" >>>>> }, >>>>> { >>>>> "Sample": { >>>>> "@id": "http://purl.obolibrary.org/obo/OBI_0000747" >>>>> } >>>>> } >>>>> ], >>>>> …. >>>>> >>>>> >>>>> As you can see there is a repetition of contexts and base that I >>>>> don’t think is needed. >>>>> >>>>> 1. The first context, which is at the top level in our sample >>>>> page, seems to match example 4 from the spec, and would actually >>>>> be a reference to another json-ld context? Though it doesn’t >>>>> point to a json-ld file. I couldn’t find this specific notation >>>>> anywhere else in the JSON-LD spec, but this is what is used >>>>> throughout on schema.org <http://schema.org>, eg >>>>> https://schema.org/Person, example 1 in json-ld. >>>>> >>>>> 2. The whole page is a DataRecord (where DataRecord is a new type >>>>> we are proposing to schema.org <http://schema.org>, so should >>>>> expand to http://schema.org/DataRecord) - which is expected as we >>>>> want to describe a data record in our resource, and we then >>>>> describe the mainEntity in that DataRecord. >>>>> As you can see, the context is redefined in mainEntity - my >>>>> understanding is that this means this specific context declaration >>>>> will be valid only within the scope of that mainEntity. This >>>>> context reads >>>>> >>>>> "@context": [ >>>>> "http://schema.org", >>>>> { >>>>> "@base": "http://schema.org" >>>>> }, >>>>> >>>>> I don’t understand what the first "http://schema.org” means, >>>>> and whether it’s needed as we explicitly define the base. Also >>>>> this seems redundant with the global page context we have defined >>>>> at the page level, so I’d be tempted to just have >>>>> >>>>> "@context": { >>>>> "@base": "http://schema.org" >>>>> }, >>>>> >>>>> At the top level. >>>>> >>>>> 3. Finally, we are trying to say that http://schema.org/Sample >>>>> (which is a new type we’re proposing) also has the IRI >>>>> "http://purl.obolibrary.org/obo/OBI_0000747”. I’m not sure >>>>> adding >>>>> >>>>> { >>>>> "Sample": { >>>>> "@id": "http://purl.obolibrary.org/obo/OBI_0000747" >>>>> } >>>>> >>>>> In the context is the right way of doing it, or whether we should >>>>> just add an additionalType <https://schema.org/additionalType> >>>>> property on the sample object later on - or should we do both? >>>>> >>>>> Apologies for the rather long email, but I hope we have a JSON-LD >>>>> specialist on this list that can provide some guidance as to how >>>>> we should best use those. Thanks in advance for any help! >>>>> >>>>> Cheers, >>>>> Melanie >>>>> >>>>> >>>>> >>>>> >>>>> -- Mélanie Courtot, PhD >>>>> GA4GH/BioSamples Project lead >>>>> European Bioinformatics Institute (EMBL-EBI) >>>>> >> >>
Received on Wednesday, 21 November 2018 17:14:15 UTC