# SkoHub: ## KOS-based content syndication with ActivityPub <small>Adrian Pohl ([@acka47](https://twitter.com/acka47)), hbz & Felix Ostrowski ([@literarymachine](https://twitter.com/literarymachine)), graphthinking GmbH</small> <small>SWIB19, Hamburg, 2019-11-27</small> <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" width="120px" src="https://mirrors.creativecommons.org/presskit/buttons/88x31/png/by.png" title="Licensed under a Creative Commons Attribution 4.0 International License"></a> --- ## Background: ### Set up infrastructure for publishing and finding Open Educational Resources (OER) --- ## Open Educational Resources (OER) - various resource types: from task sheets to textbooks to simulations & software - anything text-based, audio, video, interactive - published all over the web: video or slide platforms, homepages, wikis, repositories etc. --- ## Possible approach - set up OER repos - ask people to deposit / re-publish content there - harvest data via OAI-PMH - normalize data and index into discovery services - tell people where to go for search --- ## No. --- ## Not again. --- ## Why not? Drawbacks of a repo approach - setting up and maintaining repos is costly - only resources in repos are covered, not elsewhere on the web - users have to know where to find your service - it's repository-centric & "off the web" --- ### Repository-centric, not web-centric > <span style="font-size:24px;">Conceptually, we have come to see [OAI-PMH] as repository-centric instead of resource-centric or web-centric. It has its starting point in the repository, which is considered to be the center of the universe. **Interoperability is framed in terms of the repository, rather than in terms of the web and its primitives.** This kind of repository, although it resides on the web, hinders seamless access to its content because it does not fully embrace the ways of the web.</span> <small>– [Van de Sompel/Nelson 2015](https://dx.doi.org/10.1045/november2015-vandesompel)</small> --- ## How could a web-centric or resource-centric approach to discovery look like? --- ## We have little technical debt with OER & the chance to try out something new: --- ## Make it subject-oriented --- ## Enter SkoHub - a project by hbz & graphthinking funded by the federal state of North-Rhine Westphalia - second phase to make software production-ready just started - [software](https://github.com/topics/skohub) *and* a [service](https://skohub.io) --- ## Let's demo Note: Hier kurz ansagen, dass wir die abstrakte Idee z.B. schon auf der ELAG präsentiert haben und wir das heute eher konkret abhandeln wollen. --- ### Managing & publishing SKOS vocabularies on the web 1. publish SKOS vocab as [Turtle file](https://github.com/hbz/vocabs-edu) on GitHub 2. set up webhook 3. vocab is published as HTML/JSON-LD via skohub.io 4. each concept is also an ActivityPub actor that you can follow ---- <a href="https://github.com/hbz/vocabs-edu/blob/master/esc.ttl"><img src="https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/esc-on-github.png?raw=true" alt="The SKOS turtle file for the Educational Subject Classification on GitHub" width=800 style="border: none; box-shadow: none;" /></a> <small>Educational Subject Classification on GitHub</small> ---- <img src="http://blog.lobid.org/images/presenting-skohub-vocabs/add-webhook2.png" alt="Setting up a webhook in GitHub" width=750 style="border: none; box-shadow: none;" /> <small>Setting up a Webhook</small> ---- <a href="https://test.skohub.io/acka47/skos/w3id.org/class/esc/scheme.html"><img src="https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/published-esc.png?raw=true" alt="The published ESC vocab as HTML view on skohub.io" width=800 style="border: none; box-shadow: none;" /></a> <small>The published vocab on skohub.io</small> ---- <a href="https://test.skohub.io/hbz/vocabs-edu/w3id.org/class/esc/n06.html"><img src="https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/concept.png?raw=true" alt="A single concept HTML view on skohub.io" width=800 style="border: none; box-shadow: none;" /></a> <small>A single concept HTML view on skohub.io</small> ---- <img src="https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/follow-topic.png?raw=true" alt="Creenshot of following SKOS concept in Mastodon" width=700 style="border: none; box-shadow: none;" /> <small>Follow a subject using Mastodon</small> --- ### Describing web content & send notifications - use SkoHub browser plugin to describe a web resource - assign a subject while doing so - metadata is published to inbox of assigned subjects & then distributed to followers Note: Ideally, OER publishers will implement notifications when publishing a resource, for now we are using a SkoHub Editor-based browser add-on. FO: Hier auch auf das Browser-Plugin hinweisen (geht ja auch aus den Screenshots hervor) ---- <a href="https://pad.gwdg.de/p/BJvl5sFiB"><img src="https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/slides-screenshot.png?raw=true" alt="The title slide of this slide deck" width=800 style="border: none; box-shadow: none;" /></a> <small>This is a nice slide deck. I would like to share it with others interested in ICT.</small> ---- <img src="https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/describe-resource.png?raw=true" alt="Describing a resource with the SkoHub Editor browser extension" width=800 style="border: none; box-shadow: none;" /> <small>Describe the resource with basic metadata</small> ---- <img src="https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/notification-toot.png?raw=true" alt="A notification toot in mastodon" width=600 style="border: none; box-shadow: none;" /> <small>Followers of subjects will receive notification</small> ---- ```json { "id":"https://test.skohub.io/m/e3a4ca4a-23ee-4de2-a07f-fd3e03f465b8", "type":"Note", "name":"SkoHub – KOS-based content syndication with ActivityPub", "url":"https://pad.gwdg.de/p/BJvl5sFiB#/", "content":"<p>SkoHub – KOS-based content syndication with ActivityPub: <a href=\"https://pad.gwdg.de/p/BJvl5sFiB#/\" rel=\"nofollow noopener\" target=\"_blank\">https://pad.gwdg.de/p/BJvl5sFiB#/</a></p>", "attachment":{ "name":"SkoHub – KOS-based content syndication with ActivityPub", "id":"https://pad.gwdg.de/p/BJvl5sFiB#/", "description":"Presentation at SWIB19 in Hamburg, 2019-11-27", "type":"PresentationDigitalDocument", "creator":[ { "type":"Person", "id":"http://lobid.org/team/ap#!", "name":"Adrian Pohl" }, { "type":"Person", "name":"Felix Ostrowski", "id":"https://github.com/literarymachine" } ], "about":[ { "id":"https://w3id.org/class/esc/n06", "prefLabel":{ "en":"Information and Communication Technologies (ICTs)" }, "type":"Concept", "inScheme":{ "id":"https://w3id.org/class/esc/scheme" } } ], "license":{ "id":"https://oerworldmap.org/assets/json/licenses/cc-by", "prefLabel":{ "en":"Creative Commons Attribution", "de":"Creative Commons Namensnennung" }, "type":"Concept", "inScheme":{ "id":"https://oerworldmap.org/assets/json/licenses/" } }, "image":"https://github.com/hbz/slides/blob/swib19-skohub/skohub-swib19/img/slides-screenshot.png?raw=true" } } ``` <small>The [payload](https://test.skohub.io/m/e3a4ca4a-23ee-4de2-a07f-fd3e03f465b8) of the notification with full resource description attached</small> --- ## open, decentralized & modular Note: - fully based on open web standards: [Linked Data Notifications](https://www.w3.org/TR/ldn/), [ActivityPub](http://activitypub.rocks/) - set up your own hub, use with any client - modularized: we invite you to use SkoHub PubSub together with your vocabs publishing solution - create your own clients: clients are views, decoupled from the data (https://ruben.verborgh.org/blog/2017/12/20/paradigm-shifts-for-the-decentralized-web/#apps-become-views) - as SkoHub provides a generic infrastructure, it might be used for other purposes e.g.: - communicate new publications by a person based on their authority record - communicate updates (corrections, additions) for a subject, person entry etc, see Ilik/Koster 2019 - any ideas? --- ## Social requirements - get people together - facilitate agreement on shared domain models & schemas - promote usage --- ## Try it out, get involved - GitHub issues: https://github.com/hbz/skohub.io/issues/ - Homepage: https://skohub.io - Blog: http://blog.lobid.org/tags/skohub --- ## References de Sompel, Herbert Van / Nelson, Michael L. (2015): Reminiscing About 15 Years of Interoperability Efforts. D-Lib Magazine 21 , no. 11/12. DOI: [10.1045/november2015-vandesompel](https://doi.org/10.1045/november2015-vandesompel) Ilik, Violeta / Koster, Lukas (2019): Information-Sharing Pipeline, The Serials Librarian, DOI: [10.1080/0361526X.2019.1583045](https://doi.org/10.1080/0361526X.2019.1583045). Preprint: [https://doi.org/10.31219/osf.io/hbwf8](https://doi.org/10.31219/osf.io/hbwf8)
{"title":"SkoHub – KOS-based content syndication with ActivityPub","description":"Presentation at SWIB19 in Hamburg, 2019-11-27","image":"https://raw.githubusercontent.com/hbz/slides/swib19-skohub/skohub-swib19/img/slides-screenshot.png","slideOptions":{"theme":"black"}}