Federated knowledge management with ActivityPub

Hello SocialPub

I am a researcher working in the field of Crisis Management and Climate Change Adaptation.

I would like to define and implement a federated knowledge management infrastructure for these sectors in Europe. Ideally, this new service type should seamlessly integrate in fediverse.

I’ve browsed through ActivityPub standard and my impression is that it should be possible to encode relatively complex data models for the types of information that is necessary (Gaps, Solutions, Examples, Standards…) , but I’m not sure what is the best way to do it. Has anyone already tried anything similar? Where can I find some examples of such data?


Hi Deno.

ActivityPub is a publishing protocol. So what one would use it for is to share updates on Data stored in other formats. ActivityPub itself has NO recommendations on how data is stored. Storing data however seems essential for knowledge management.

So what are your requirements? What should be integrated into the FediVerse?


A bit of a side note: There is Mastodon over Mammon - Towards publicly owned scholarly knowledge containing some speculation over how the FediVerse might replace peer reviewed journals. No where do they discuss that arXiv already provides free access (and often earlier) to a lot of the current research. At least it did so 10 to 20 years ago …

1 Like

Hi Deno,

As part of the openEngiadina project we did some research into using ActivityPub for a federated system for local knowledge - including information for crisis management.

I completely agree. The approach we follow is to model the data as RDF and then view ActivityPub as a protocol that distributes RDF data (encoded as JSON-LD). This allows crowd-sourcing and federated management of complex knowledge.

Some previous work that can be used with this approach:

In the openEngiadina project we ended up using the XMPP protocol instead of ActivityPub. But the ideas are exactly the same, we just send around bits of RDF data (in XMPP encoded as RDF/XML instead of JSON-LD). We have a little demo to illustrate some ideas: GeoPub. It can be used for MOAC data and can also display some geo-tagged data on a map.

1 Like

Let me try to explain on a simple example. Please take a look at Front | Portfolio of CDM Gaps, Solutions and Trials

For simplicity, let us just look at two data models that are managed on the PoS: Gaps and Solutions.

Here is example of a Gap: Faciliate matching of CDM solutions to capability needs | Portfolio of CDM Gaps, Solutions and Trials. Couple of solutions are linked to it, click on them to see what solutions look like.

Both Gaps and Solutions have a relatively complex model compared to data models used on social media. Gap is a simpler one, so I’ll only explain the gap data model:

  • Gap has a “title”, a “motivation”, a “summary” and 1…* “rationales”.
  • each rationale links to 1…* “CM function” taxonomy terms. (With other words, each rationale can be tagged by one or more taxonomy terms)

In addition, gaps can be “endorsed” by 1…* “Organization” and automated matching is established to the solutions that may be answering this gap.

Solution is a bit more complex, but it’s the same type of building blocks - title, abstract and then links to various taxonomies, some of them simple tags and some of them separate text pieces with tags attached to these pieces of text. E.g. a solution has 1…* use cases, and each use case has 1…* CM function associated with it. This is what enables gap/solution and solution/solution matching at the moment.

Data models for gaps and solutions are OK as they are. What s not OK is that PoS is a Centralised site, or “yet another knowledge silo”. What I would like to do now is to develop a “federated PoS”.

The idea is that a Gap that’s posted on one site can be integrated on other sites - or not, depending on what the site owner wants to show on their site. And that users can choose what they want to see independently on the site - including search and automated gap/solution matching.

The idea is also that a title & summary of this gap is shared with the rest of the Fediverse, so that people can commend on it. Or vote on it. which in turn could be used as part of the ranking algorithm when showing the data to the users…

*Long story cut short, I want to know how to encode a “Gap” in a way that’s compatible with

title & abstract are clear, that’s what every mastodon message also has.
But how to encode the “motivation” and the 1…* rationales, each with 1…* associated tags?

Basically I’m just looking for a way to express the meanings and relations between bits and pieces of a structured message that’s then shared through Fediverse using ActivityPub protocol.

What I hope to achieve is:

  1. share the message with other types of fediverse services, so that MANY people can interact with them. I presume that these services will only pick up Title + abstract and ignore the rest
  2. At a same time allow services of the same type to pick up the whole message, correctly interpret it as “this is a Gap” and correctly interpret each piece of the message and then decide what they want to do with it.

On top of this, the ActivityPub provides nice mechanisms for sharing updates and even for indicating that Alice has stated that solution S addresses Gap G - another useful information for a service that’s trying to match gaps and solutions in semi-intelligent way…

This is more or less what I had in mind, yes. Do you have some examples on how this mapping from RDF on ActivityPub compliant JSON-LD can be done?