[annotator-dev] To Web Annotation (from Annotator 2.x)
Benjamin Young
bigbluehat at hypothes.is
Thu Jul 30 19:28:18 UTC 2015
On Thu, Jul 30, 2015 at 12:51 PM, Ben Leinfelder <leinfelder at nceas.ucsb.edu>
wrote:
> I’m more familiar with the Open Annotation model and RDF than I am with
> this Web Annotation model and JSON-LD direction (news to me today, in
> fact). But they seem conceptually interchangeable.
>
Not much has changed (afaik) to Open Annotation in it's journey to become
Web Annotation. The addition of the JSON-LD @context and those examples (as
primary!) in the spec would be the biggest changes that I know of. The
"meta model" is the same, however.
So, likely it's still familiar territory for you. :)
>
> The XPath-y selectors could be added to your model using
> oa:FragmentSelector and some #xpointer(/my/path/to/something) value.
> http://www.openannotation.org/spec/core/specific.html#FragmentSelector
> I agree that the model is lacking when the quote of an annotation spans
> different elements and may require an additional property to specify which
> of (potentially multiple) oa:FragmentSelectors should be used for the start
> and end of the selection.
>
So, "XPath-y" is the right word here. ;)
Annotator stores partial XPointer's (technically, I suppose) relative to
the element that annotator is listening inside of--which means, they're
pretty much worthless if you don't know which element Annotator was
connected to when the XPointer was generated.
For example, in the Annotator JSON that's part of this little To Web
Annotation project there are two keys inside `ranges[0]` (`start` and
`end`) which store XPointers. In the example...they have the same value
`/p[1]`.
https://github.com/BigBlueHat/to-web-annotation/blob/master/index.html#L38-L41
Annotator isn't using XPointer as a way to identify *the* selection, but
only as an optimization (afaik) to get closer to the DOM node which
contains the selection.
As such, those XPointers don't have much use to others (besides the current
implementer), because:
1. you have to know the parent element Annotator is annotating "inside" of
2. even if you know that, they don't actually give you the selection that
was made...just it's parent node
Having those is useful for Annotator performance, but not (as I'd hoped)
universal data value...at least not without changing Annotator--which is
fine. ;)
I'm planning on floating this XPointer thing past the W3C Annotation
Working Group, and see if I've got the encoding right in the example I'll
include. If I do, then it's back to Annotator to see what I can fix without
breaking anything. ;)
Thanks for the thoughts, Ben!
Benjamin
>
> Have you tried shoehorning the into/out of oa:FragmentSelectors?
> -ben
>
> > On Jul 30, 2015, at 9:25 AM, Benjamin Young <bigbluehat at hypothes.is>
> wrote:
> >
> > On Thu, Jul 30, 2015 at 11:23 AM, Ben Leinfelder <
> leinfelder at nceas.ucsb.edu> wrote:
> > Hi Benjamin,
> > I haven’t been following 2.x development closely, but I thought
> supporting an Open Annotation model natively was on the TODO list for
> AnnotatorJS.
> > Sure enough, the road map lists it -
> http://docs.annotatorjs.org/en/latest/roadmap.html
> > - Internal data model consistent with Open Annotation
> > - A (beta-quality) storage component that speaks OA JSON-LD
> >
> > Pretty sure that got pushed back to target a later release though that
> decision is not yet reflected in the roadmap. Getting Open/Web annotation
> models from AnnotatorJS is one of the features I really really want from
> 2.x, so I’m wondering how your plugin conversion work relates to the goals
> on the 2.x roadmap?
> >
> > It's that goal done as a plugin, basically. :)
> >
> > I actually extracted the conversion code from this storage plugin
> project:
> > https://github.com/bigbluehat/annotator-pouchdb/tree/web-annotation
> >
> > PouchDB (and CouchDB) are "just" JSON document stores with no JSON-LD
> "smarts" (without extension anyhow). However, you can see from that code
> that the plugin is basically just running the conversion during storage and
> retrieval...nothing more.
> >
> > In theory, if this piece can indeed be made to be this common, it could
> be hooked into a storage plugin (as I've done) or put in as it's own plugin
> that converts the annotations whenever they're JSON'd.
> >
> > One thing to note from this is that Annotator 2.0's model is nearly
> compatible already with Web Annotation.
> >
> > The one piece un-expressable (so far) is the XPath ranges--which is work
> needed on the W3C Working Group's end...which is also on my list to ask
> about. ;)
> >
> > If you've got experience with Open/Web Annotation Data Model, I'd *love*
> help on this project. Especially if you've got experience with a "smarter"
> JSON-LD-loving storage provider, so we can see if this "un-smart"
> conversion at storage time thing could actually provide what's necessary.
> >
> > Any and all thoughts are welcome. :)
> >
> > Cheers!
> > Benjamin
> > --
> > Developer Advocate
> > http://hypothes.is/
> >
> >
> > Thanks,
> > -ben
> >
> >
> > > On Jul 30, 2015, at 7:54 AM, Benjamin Young <bigbluehat at hypothes.is>
> wrote:
> > >
> > > I've been working on some (deliberately very) basic conversion code to
> turn Annotator 2.x JSON output into Web Annotation Data Model.
> > >
> > > Here's what I've got so far:
> > >
> > > http://bigbluehat.github.io/to-web-annotation/
> > >
> > >
> > > Code lives at:
> > >
> > > https://github.com/BigBlueHat/to-web-annotation
> > > The hope is to build the SimplestThingThatCouldPossiblyWork to move
> Annotator JSON docs into the wide world of Web Annotation.
> > >
> > > I've posted more JSON-LD related thoughts to the W3C list (which is
> public for anyone to join FYI!):
> > >
> https://lists.w3.org/Archives/Public/public-annotation/2015Jul/0225.html
> > >
> > > It'd be great to hear thoughts on this project and approach from the
> Annotator side.
> > >
> > > The slightly longer term objective is to make this conversion (once
> I'm sure it's correct/working well) available as an Annotator plugin for
> use with storage providers that "speak" Web Annotation.
> > >
> > > Feedback welcome!
> > > Benjamin
> > > --
> > > Developer Advocate
> > > http://hypothes.is/
> > > _______________________________________________
> > > annotator-dev mailing list
> > > annotator-dev at lists.okfn.org
> > > https://lists.okfn.org/mailman/listinfo/annotator-dev
> > > Unsubscribe: https://lists.okfn.org/mailman/options/annotator-dev
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/annotator-dev/attachments/20150730/e3e40e60/attachment-0004.html>
More information about the annotator-dev
mailing list