# 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/master/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://skohub.io/hbz/vocabs-edu/heads/master/w3id.org/class/esc/scheme.html"><img src="https://github.com/hbz/slides/blob/master/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://skohub.io/hbz/vocabs-edu/heads/master/w3id.org/class/esc/n06.html"><img src="https://github.com/hbz/slides/blob/master/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/master/swib19-img/follow-topic.png?raw=true" alt="Screenshot 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/master/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/master/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/master/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/master/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"}}