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/01/02 21:14:18 UTC

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: introduction

Posted by Benjamin Goering <be...@gmail.com>.
IMO in writing software, the best libraries (esp for teams) support
multiple databases. And I've rarely regretted using postgres or mysql, as
there are wire-compatible elastic implementations.

Recently at permanent.cloud, I've been using typeorm and postgres. GitLab
AutoDevops will automatically set up a postgres so it works nicely.

On Tue, Jan 15, 2019, 6: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
>>>>
>>>>
>>
>


Re: LDP and persistence Was: introduction

Posted by ajs6f <aj...@apache.org>.
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 ajs6f <aj...@apache.org>.
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>.
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 ajs6f <aj...@apache.org>.
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>.
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 Randall Leeds <ra...@apache.org>.
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
>
>

LDP and persistence Was: introduction

Posted by ajs6f <aj...@apache.org>.
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: introduction

Posted by Benjamin Young <by...@bigbluehat.com>.
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