- From: Brent Shambaugh <brent.shambaugh@gmail.com>
- Date: Sat, 14 Mar 2015 13:13:29 -0500
- To: Nate Otto <nate@ottonomy.net>
- Cc: Linked JSON <public-linked-json@w3.org>, Credentials Community Group <public-credentials@w3.org>
- Message-ID: <CACvcBVqeb9aex-GpYr3caX34KDfaRf5R3KuFRboYSkuG-NE6Ow@mail.gmail.com>
Nate, Here is another response that I got when digging into Agent.js. @ahdinosaur claimed that he wrote an extension for linked data for json-schema ( https://github.com/openvocab/ovn/issues/13#issuecomment-79457550). Elf Palvik may be participating in this too. I've seen both of them in and around this community. -Brent Shambaugh Website: bshambaugh.org On Thu, Mar 12, 2015 at 9:01 PM, Brent Shambaugh <brent.shambaugh@gmail.com> wrote: > Fun! I was just looking at some JSON that I wanted to write JSON-LD for > and I turned to a JavaScript Developer wondering what "$ref: > "Relationship"" meant. It turned out that he thought I was reading JSON > Schema. Maybe we'll intersect someday. FWIW it was here ( > https://github.com/openvocab/ovn/blob/master/vocab/Agent.js). > > -Brent Shambaugh > > Website: bshambaugh.org > > On Mon, Mar 9, 2015 at 5:16 PM, Nate Otto <nate@ottonomy.net> wrote: > >> JSON-LD community, >> (CC Credentials Community Group & Badge Alliance) >> >> In the Badge Alliance, we've been preparing a new draft of our Open >> Badges spec that uses JSON-LD. We are experimenting with the idea of >> "extensions", where badge issuers may collaborate on sets of additional >> properties to add to badges. An extension is more than just adding new >> linked data properties to a badge; it's about making sure that many issuers >> can add the same type of data to a badge for a purpose, in a consistent >> manner, to make it more likely that consumers would implement understanding >> those additions in their products. See our draft here: >> http://specification.openbadges.org/#Extensions >> >> For example, a badge assertion itself would have a context at the top, >> and an issuer may add an extension as an embedded JSON object (blank node) >> with its own context link: >> >> { >> "@context": "http://specification.openbadges.org/1.1/context.json", >> >> .... badges properties .... >> >> "extension:exampleExtension": { >> "@context":" >> http://standard.openbadges.org/extensions/exampleExtension/context.json", >> "@type": ["extension", "extension:ExampleExtension"], >> "exampleProperty": "I'm a property, short and sweet." >> } >> } >> >> We wanted to be able to answer the question "did the issuer implement the >> extension how the extension author intended?" For that, we turned to >> JSON-schema (http://json-schema.org/), which allows authors to set out >> what the structure of an extension should be so that implementers know what >> properties must be includes, what data types are permitted, and have a >> built-in validation method to ensure that they have correctly implemented >> the specification. >> >> Within the context for an extension, there is a obi:validation array that >> contains references to different JSON-schema validators relevant to >> documents that use the context. >> >> { >> "@context": { >> "obi": "http://standard.openbadges.org/", >> "exampleProperty": "http://schema.org/text" >> }, >> "obi:validation": [ >> { >> "obi:validatesType": "obi:extensions/#ExampleExtension", >> "obi:validationSchema": "http://standard.openbadges.org/extensions/exampleExtension/schema.json" >> } >> ] >> } >> >> The obi:validatesType property provides a key to what objects within an >> Open Badge the obi:validationSchema applies to. Processors who want to take >> advantage of the optional JSON-schema features would be instructed to >> extract the JSON object(s) corresponding to the type from the input badge >> object and process them against the schema. >> >> The current approach (not finalized) instructed extension authors to >> write JSON-schema based on the compact JSON input they expected to see. >> Manu Sporny provided us some feedback that I'd like to discuss a little >> more here, that we should use a JSON-LD frame to process the input JSON >> into a compact form to be used as input to a JSON-schema validation process. >> >> JSON-LD framing is powerful for a case like this. A simple frame like: >> >> { >> "@context:" "http://appropriatecontext.com", >> "@type":"extension:ExampleExtension" >> } >> >> ...could pull out just the extensions that apply and test them. >> >> The downsides of this approach are mostly around the difficulty of >> learning JSON-LD and JSON-LD framing for developers. Without adding a >> JSON-LD framing step to the validation process, implementations don't >> necessarily need a JSON-LD processor as part of their Open Badges >> processing stack, but if we add Framing, they will be required to include >> JSON-LD processing. In addition, extension authors will need to learn >> Framing in order to write validation features of extensions, and there are >> precious few examples of JSON-LD frames in the wild, most from late 2011, >> and I don't know if they are up-to-date. I've struggled to write any frame >> more complex than the above, for instance, after 7 months of casually >> studying JSON-LD. While some of the core Badge Alliance members may be able >> to provide some support to extension authors, I don't want this to become a >> major impediment to the growth of the specification. >> >> However, what is more important is that we find a beautiful combination >> of technologies that gives Open Badges and open credentials a productive >> long future life. I'd love some feedback on connecting JSON-LD with >> JSON-schema, and particularly about whether Framing should be included as a >> step in this process. >> >> *Nate Otto, Developer* >> concentricsky.com >> > >
Received on Saturday, 14 March 2015 18:13:55 UTC