You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@annotator.apache.org by ajs6f <aj...@apache.org> on 2019/02/05 16:18:17 UTC

Re: LDP and persistence Was: introduction

I added a few more LDP implementations to the list, but I didn't see any more WAP impls. I think I may be using the wrong search terms! Does anyone know of others besides MangoServer, which is the only one there?


ajs6f

> On Jan 29, 2019, at 5:27 PM, ajs6f <aj...@apache.org> wrote:
> 
> I certainly agree that if we can start with WAP, we're that much further ahead, and I'm happily looking into the example you gave on the wiki page. I should have remembered that in order to become a W3C rec, there would have had to be impls.
> 
> I have no argument against AS paging (and LDP paging never made it past a Working Group note [1]-- it didn't become part of the rec proper). I was just trying to figure out what the boundaries are for our work. I found this in that note [2]:
> 
>> Clients generally have no insight into the allocation of information to pages, although in some cases currently defined only for LDPCs the server can expose its algorithm.
> 
> which pretty much seems to exclude ordering. Of course an extension could go beyond that, but I don't see any amazing advantage to LDP Paging that would make us go nuts for it and try to break out of protocol for it. For anyone who is _REALLY_ interested in this question, there's a thread [3] that goes into considerable detail about the reasoning behind LDP Paging. 
> 
> ajs6f
> 
> [1] https://www.w3.org/2012/ldp/hg/ldp-paging.html
> [2] https://www.w3.org/2012/ldp/hg/ldp-paging.html#ldpr-PagingIntro
> [3] https://lists.w3.org/Archives/Public/public-ldp-comments/2014Sep/0003.html
> 
>> On Jan 29, 2019, at 12:33 PM, Benjamin Young <by...@bigbluehat.com> wrote:
>> 
>> Great start! I added some links there. 😊
>> 
>> Given that Web Annotation's have their own protocol (based on LDP), I'd prefer we aim for that target.
>> 
>> The LDP style paging was considered by the Working Group, but we went with ActivityStreams-style paging because ordering matters--see this note from the spec:
>> "Activity Streams Collection [activitystreams-core<https://www.w3.org/TR/annotation-protocol/#bib-activitystreams-core>] model is used for paging, as in-page ordering is an important requirement."
>> -- see https://www.w3.org/TR/annotation-protocol/#h-summary
>> 
>> LDP's ordering, iirc, was "random" or at least didn't express explicit ordering, but you know more about LDP than I do. 😊
>> 
>> Thoughts?
>> 
>> 
>> --
>> 
>> http://bigbluehat.com/
>> 
>> http://linkedin.com/in/benjaminyoung
>> 
>> ________________________________
>> From: ajs6f <aj...@apache.org>
>> Sent: Tuesday, January 29, 2019 12:17 PM
>> To: dev@annotator.incubator.apache.org
>> Cc: Randall Leeds
>> Subject: Re: LDP and persistence Was: introduction
>> 
>> Sure-- I've made a page at:
>> 
>> https://github.com/apache/incubator-annotator/wiki/LDP-and-Web-Annotation-Protocol-Implementations
>> 
>> although I don't know that there's really a wrong way for us to go about this! :grin:
>> 
>> I'm afraid that I'm not aware of any other Web Annotation Protocol-specific impls, but that says more about my ignorance than anything else.
>> 
>> On paging in particular, are we committed to building on the Activity Streams model via
>> 
>> https://www.w3.org/TR/annotation-protocol/#annotation-pages
>> 
>> ?
>> 
>> ajs6f
>> 
>>> On Jan 23, 2019, at 1:51 PM, Benjamin Young <by...@bigbluehat.com> wrote:
>>> 
>>> Agreed! Perhaps we could start by building a list on the wiki (and later the site) of LDP and Web Annotation Protocol (specific) implementations.
>>> 
>>> Once we have that, I'd reckon some browser-side client plumbing would be in order (i.e. annotation service discovery, code to get a collection of annotations based on the current documents URI, pagination across annotation collections, etc).
>>> 
>>> Sound about right?
>>> 
>>> 
>>> --
>>> 
>>> http://bigbluehat.com/
>>> 
>>> http://linkedin.com/in/benjaminyoung
>>> 
>>> ________________________________
>>> From: Randall Leeds <ra...@apache.org>
>>> Sent: Wednesday, January 23, 2019 1:16 PM
>>> To: dev@annotator.incubator.apache.org
>>> Subject: Re: LDP and persistence Was: introduction
>>> 
>>> This makes good sense to me.
>>> 
>>> On Wed, Jan 23, 2019, 09:59 ajs6f <ajs6f@apache.org wrote:
>>> 
>>>> Hi, Benjamin--
>>>> 
>>>> No problem. I'm obviously not all that good about quick response myself! :0
>>>> 
>>>> It seems to me that these two things (the relationship to LDP and the
>>>> question of backend persistence) could be connected: is it not possible to
>>>> choose LDP for the data storage abstraction layer for Annotator? Of course,
>>>> we would probably have to pick at least one LDP implementation to package
>>>> with Annotator as a choice for those who "choose not to choose" for
>>>> themselves or for people who are just interested in playing with web
>>>> annotation and don't need to think about production deployment.
>>>> 
>>>> If we chose LDP for the abstraction layer, then we could also choose a
>>>> default component that can use whatever we think are appropriate concrete
>>>> forms for persistence. (Benjamin Goering mentioned using widely-available
>>>> RDBMSes, for example, which is certainly a good and common pattern, and
>>>> plenty of LDP impls can use them.)
>>>> 
>>>> One reason I suggest this: if we choose for a lower-level persistence
>>>> abstraction (e.g. working directly against an SQL backend) and given that
>>>> the Web Annotation protocol extends LDP, we will find ourselves rewriting
>>>> code that LDP implementations have already written and which already is
>>>> tested in use.
>>>> 
>>>> ajs6f
>>>> 
>>>>> On Jan 15, 2019, at 9:55 AM, Benjamin Young <by...@bigbluehat.com>
>>>> wrote:
>>>>> 
>>>>> Hey Adam!
>>>>> 
>>>>> First, huge apologies for letting this slip through the cracks caused by
>>>> all the holiday-ing (at least for me ;) )!
>>>>> 
>>>>> Second, you're spot on about Web Annotation Protocol being essentially
>>>> an extension of the Linked Data Platform (LDP) [1] spec. Also, Web
>>>> Annotations, being based on JSON-LD, can be stored into any triple store.
>>>> The server-side implementations tested by the W3C so far [2] have used the
>>>> filesystem, a relational database, or a JSON-friendly NoSQL database
>>>> (MongoDB, Apache CouchDB, PouchDB, etc).
>>>>> 
>>>>> Honestly, database selection is one of the things that has tripped me up
>>>> in contributing a server implementation. I want it to be database/store
>>>> agnostic, ideally, but that comes with it's own "tyranny of choice" among
>>>> data storage abstraction layers. 😋
>>>>> 
>>>>> In the end, it's up to the group to decide what to build and what to
>>>> build on and in what language...etc.
>>>>> 
>>>>> Most of the work has gone into the DOM connective tissue code, and I've
>>>> brought over some of the Web Annotation Data Model validation code [3].
>>>> There's still more to do on all fronts. 😊
>>>>> 
>>>>> Let me know if you have thoughts on the plans here. Your experience with
>>>> Jena (both as a project and a tool) would be very helpful!
>>>>> 
>>>>> Cheers!
>>>>> Benjamin
>>>>> 
>>>>> 
>>>>> [1] https://www.w3.org/TR/ldp/
>>>>> [2]
>>>> https://github.com/w3c/test-results/tree/gh-pages/annotation-protocol#index-of-implementations-tested
>>>>> [3]
>>>> https://github.com/apache/incubator-annotator/blob/master/test/data-model.mjs
>>>>> 
>>>>> 
>>>>> --
>>>>> 
>>>>> http://bigbluehat.com/
>>>>> 
>>>>> http://linkedin.com/in/benjaminyoung
>>>>> 
>>>>> ________________________________
>>>>> From: ajs6f <aj...@apache.org>
>>>>> Sent: Wednesday, January 2, 2019 4:14 PM
>>>>> To: dev@annotator.incubator.apache.org
>>>>> Subject: introduction
>>>>> 
>>>>> Hi, Annnotator folks!
>>>>> 
>>>>> My name is Adam Soroka and I'm a committer for Apache Jena. For a day
>>>> job I work at the Smithsonian Institution and I've been interested in
>>>> semantic technology for quite a while in the context of so-called cultural
>>>> heritage. I watched the W3C Web Annotation WG with interest and I was happy
>>>> to see extensions developed for the International Image Interoperability
>>>> Framework [1].
>>>>> 
>>>>> I'm still a little uncertain about the scope of the Annotator project.
>>>> It seems to include a node.js server component to store and manage
>>>> annotations as well as browser-side tooling. I was under the impression
>>>> (very likely wrong!) that annotations, as RDF graphs, could be stored in
>>>> anything that can store RDF (triplestores, etc.) and that in particular,
>>>> LDP implementations should be able to support the annotation protocol
>>>> (almost?) directly. Is this wrong? Are there special requirements on
>>>> annotation servers that make it appropriate to use a special-purpose part?
>>>>> 
>>>>> Thanks for any clarification/info/advice!
>>>>> 
>>>>> ajs6f
>>>>> 
>>>>> [1] https://iiif.io/api/annex/openannotation/index.html
>>>> 
>>>> 
>> 
> 


Re: LDP and persistence Was: introduction

Posted by Benjamin Young <by...@bigbluehat.com>.
There are also these three...very early whacks at it:
https://github.com/BigBlueHat/anno-proto-coucho
https://github.com/BigBlueHat/annotator-couchapp
https://github.com/BigBlueHat/web-annotation-protocol-server

None of those are ready for prime time, but might be worth forking and pursuing.

I think the larger question is a Web Annotation Protocol server a thing unto itself ever? or is it best mixed into an LDP server and/or ActivityStreams server--such as Sarven (CC'd) has done with https://dokie.li/

Sarven's mayktso project is an example of such a mix of "protocols":
https://github.com/csarven/mayktso#about

At any rate, we should decide collectively if building a some server-side foundation for annotation is part of what we want to do here.

I'd personally like to see some sort of JS-based server-side code for serving annotations to (optionally) couple with our JS-based DOM-side code to enable devs to provide custom UX's on top of that.

That's the dream anyhow.  😉

Cheers,
Benjamin


--

http://bigbluehat.com/

http://linkedin.com/in/benjaminyoung

________________________________
From: ajs6f <aj...@apache.org>
Sent: Tuesday, February 5, 2019 11:18 AM
To: dev@annotator.incubator.apache.org
Cc: Randall Leeds
Subject: Re: LDP and persistence Was: introduction

I added a few more LDP implementations to the list, but I didn't see any more WAP impls. I think I may be using the wrong search terms! Does anyone know of others besides MangoServer, which is the only one there?


ajs6f

> On Jan 29, 2019, at 5:27 PM, ajs6f <aj...@apache.org> wrote:
>
> I certainly agree that if we can start with WAP, we're that much further ahead, and I'm happily looking into the example you gave on the wiki page. I should have remembered that in order to become a W3C rec, there would have had to be impls.
>
> I have no argument against AS paging (and LDP paging never made it past a Working Group note [1]-- it didn't become part of the rec proper). I was just trying to figure out what the boundaries are for our work. I found this in that note [2]:
>
>> Clients generally have no insight into the allocation of information to pages, although in some cases currently defined only for LDPCs the server can expose its algorithm.
>
> which pretty much seems to exclude ordering. Of course an extension could go beyond that, but I don't see any amazing advantage to LDP Paging that would make us go nuts for it and try to break out of protocol for it. For anyone who is _REALLY_ interested in this question, there's a thread [3] that goes into considerable detail about the reasoning behind LDP Paging.
>
> ajs6f
>
> [1] https://www.w3.org/2012/ldp/hg/ldp-paging.html
> [2] https://www.w3.org/2012/ldp/hg/ldp-paging.html#ldpr-PagingIntro
> [3] https://lists.w3.org/Archives/Public/public-ldp-comments/2014Sep/0003.html
>
>> On Jan 29, 2019, at 12:33 PM, Benjamin Young <by...@bigbluehat.com> wrote:
>>
>> Great start! I added some links there. 😊
>>
>> Given that Web Annotation's have their own protocol (based on LDP), I'd prefer we aim for that target.
>>
>> The LDP style paging was considered by the Working Group, but we went with ActivityStreams-style paging because ordering matters--see this note from the spec:
>> "Activity Streams Collection [activitystreams-core<https://www.w3.org/TR/annotation-protocol/#bib-activitystreams-core>] model is used for paging, as in-page ordering is an important requirement."
>> -- see https://www.w3.org/TR/annotation-protocol/#h-summary
>>
>> LDP's ordering, iirc, was "random" or at least didn't express explicit ordering, but you know more about LDP than I do. 😊
>>
>> Thoughts?
>>
>>
>> --
>>
>> http://bigbluehat.com/
>>
>> http://linkedin.com/in/benjaminyoung
>>
>> ________________________________
>> From: ajs6f <aj...@apache.org>
>> Sent: Tuesday, January 29, 2019 12:17 PM
>> To: dev@annotator.incubator.apache.org
>> Cc: Randall Leeds
>> Subject: Re: LDP and persistence Was: introduction
>>
>> Sure-- I've made a page at:
>>
>> https://github.com/apache/incubator-annotator/wiki/LDP-and-Web-Annotation-Protocol-Implementations
>>
>> although I don't know that there's really a wrong way for us to go about this! :grin:
>>
>> I'm afraid that I'm not aware of any other Web Annotation Protocol-specific impls, but that says more about my ignorance than anything else.
>>
>> On paging in particular, are we committed to building on the Activity Streams model via
>>
>> https://www.w3.org/TR/annotation-protocol/#annotation-pages
>>
>> ?
>>
>> ajs6f
>>
>>> On Jan 23, 2019, at 1:51 PM, Benjamin Young <by...@bigbluehat.com> wrote:
>>>
>>> Agreed! Perhaps we could start by building a list on the wiki (and later the site) of LDP and Web Annotation Protocol (specific) implementations.
>>>
>>> Once we have that, I'd reckon some browser-side client plumbing would be in order (i.e. annotation service discovery, code to get a collection of annotations based on the current documents URI, pagination across annotation collections, etc).
>>>
>>> Sound about right?
>>>
>>>
>>> --
>>>
>>> http://bigbluehat.com/
>>>
>>> http://linkedin.com/in/benjaminyoung
>>>
>>> ________________________________
>>> From: Randall Leeds <ra...@apache.org>
>>> Sent: Wednesday, January 23, 2019 1:16 PM
>>> To: dev@annotator.incubator.apache.org
>>> Subject: Re: LDP and persistence Was: introduction
>>>
>>> This makes good sense to me.
>>>
>>> On Wed, Jan 23, 2019, 09:59 ajs6f <ajs6f@apache.org wrote:
>>>
>>>> Hi, Benjamin--
>>>>
>>>> No problem. I'm obviously not all that good about quick response myself! :0
>>>>
>>>> It seems to me that these two things (the relationship to LDP and the
>>>> question of backend persistence) could be connected: is it not possible to
>>>> choose LDP for the data storage abstraction layer for Annotator? Of course,
>>>> we would probably have to pick at least one LDP implementation to package
>>>> with Annotator as a choice for those who "choose not to choose" for
>>>> themselves or for people who are just interested in playing with web
>>>> annotation and don't need to think about production deployment.
>>>>
>>>> If we chose LDP for the abstraction layer, then we could also choose a
>>>> default component that can use whatever we think are appropriate concrete
>>>> forms for persistence. (Benjamin Goering mentioned using widely-available
>>>> RDBMSes, for example, which is certainly a good and common pattern, and
>>>> plenty of LDP impls can use them.)
>>>>
>>>> One reason I suggest this: if we choose for a lower-level persistence
>>>> abstraction (e.g. working directly against an SQL backend) and given that
>>>> the Web Annotation protocol extends LDP, we will find ourselves rewriting
>>>> code that LDP implementations have already written and which already is
>>>> tested in use.
>>>>
>>>> ajs6f
>>>>
>>>>> On Jan 15, 2019, at 9:55 AM, Benjamin Young <by...@bigbluehat.com>
>>>> wrote:
>>>>>
>>>>> Hey Adam!
>>>>>
>>>>> First, huge apologies for letting this slip through the cracks caused by
>>>> all the holiday-ing (at least for me ;) )!
>>>>>
>>>>> Second, you're spot on about Web Annotation Protocol being essentially
>>>> an extension of the Linked Data Platform (LDP) [1] spec. Also, Web
>>>> Annotations, being based on JSON-LD, can be stored into any triple store.
>>>> The server-side implementations tested by the W3C so far [2] have used the
>>>> filesystem, a relational database, or a JSON-friendly NoSQL database
>>>> (MongoDB, Apache CouchDB, PouchDB, etc).
>>>>>
>>>>> Honestly, database selection is one of the things that has tripped me up
>>>> in contributing a server implementation. I want it to be database/store
>>>> agnostic, ideally, but that comes with it's own "tyranny of choice" among
>>>> data storage abstraction layers. 😋
>>>>>
>>>>> In the end, it's up to the group to decide what to build and what to
>>>> build on and in what language...etc.
>>>>>
>>>>> Most of the work has gone into the DOM connective tissue code, and I've
>>>> brought over some of the Web Annotation Data Model validation code [3].
>>>> There's still more to do on all fronts. 😊
>>>>>
>>>>> Let me know if you have thoughts on the plans here. Your experience with
>>>> Jena (both as a project and a tool) would be very helpful!
>>>>>
>>>>> Cheers!
>>>>> Benjamin
>>>>>
>>>>>
>>>>> [1] https://www.w3.org/TR/ldp/
>>>>> [2]
>>>> https://github.com/w3c/test-results/tree/gh-pages/annotation-protocol#index-of-implementations-tested
>>>>> [3]
>>>> https://github.com/apache/incubator-annotator/blob/master/test/data-model.mjs
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> http://bigbluehat.com/
>>>>>
>>>>> http://linkedin.com/in/benjaminyoung
>>>>>
>>>>> ________________________________
>>>>> From: ajs6f <aj...@apache.org>
>>>>> Sent: Wednesday, January 2, 2019 4:14 PM
>>>>> To: dev@annotator.incubator.apache.org
>>>>> Subject: introduction
>>>>>
>>>>> Hi, Annnotator folks!
>>>>>
>>>>> My name is Adam Soroka and I'm a committer for Apache Jena. For a day
>>>> job I work at the Smithsonian Institution and I've been interested in
>>>> semantic technology for quite a while in the context of so-called cultural
>>>> heritage. I watched the W3C Web Annotation WG with interest and I was happy
>>>> to see extensions developed for the International Image Interoperability
>>>> Framework [1].
>>>>>
>>>>> I'm still a little uncertain about the scope of the Annotator project.
>>>> It seems to include a node.js server component to store and manage
>>>> annotations as well as browser-side tooling. I was under the impression
>>>> (very likely wrong!) that annotations, as RDF graphs, could be stored in
>>>> anything that can store RDF (triplestores, etc.) and that in particular,
>>>> LDP implementations should be able to support the annotation protocol
>>>> (almost?) directly. Is this wrong? Are there special requirements on
>>>> annotation servers that make it appropriate to use a special-purpose part?
>>>>>
>>>>> Thanks for any clarification/info/advice!
>>>>>
>>>>> ajs6f
>>>>>
>>>>> [1] https://iiif.io/api/annex/openannotation/index.html
>>>>
>>>>
>>
>