SemApps microservices

Next week I’ll meet some people from the SemApps middleware project https://semapps.org/


If someone want to know more about it, let me know :blush:

SemApps introduction (French vids will be soon translated in English ) https://www.youtube.com/playlist?list=PLw8CdIbrt0JGevxI0q4iOwXWEgO-oHUwd

3 Likes

Anything you could explain would be great, because it looks really cool but I can’t figure out exactly what it does.

This link https://semapps.org/docs/discover is very general but doesn’t have much detail, but then the documentation tab on the main page, https://semapps.org/docs/guides/ldp-server, goes right into how to install it, and I’m lost in between. Also unfortunately I can speak only English.

I’ve not been writing code lately, so it’s not really a problem if I don’t understand it, but there might be others who want to know more too, and there might be some great synergy with Solid.

Sorry, but you asked :slight_smile:

The goal of SemApps is to facilitate interoperability between some french entities that think about what could be a ‘transition’, to a world more ‘collaborative’. They want to store their data in an interoperable format and share activities

SemApps is based on Apache Fuseki, a triplestore for Sparql query.
On top of that the middleware based on molecular.js provide microservices to provide a LDP implementation for storing files like Solid or other services as seen in the pics I posted first.
This is the SemApps server that can deal with ActivityPub .

DMS is an example of what could be a crud admin app based on React. DMS could be a template to start a new project by simply adding ontologies in a config file to generate forms…

They project to use Startinblox’s components, wac, webid, be Solid compatible…

1 Like

Does it allow collaborative editing of graphs by users at the same time?
Does it allow direct and indirect LDP containers?

I’m not sure Solid will exactly follow LDP, so they may have to support both.

Thanks @Smag0

Yes, this is an interesting project. I just looked at it yesterday, after having a vidcall with @pukkamustard. The microservices framework is moleculer, btw.

I think with ‘Mds’ you mean DMS, their data management system based on react-admin.

@tag42git I guess collaborative editing is possible. SemApps is mostly a backend application, and currently has low-level features, so I expect that all the intricacies of collaborative editing need to be built on top of that. But if one does the moleculer microservices framework allows it to be encapsulated in nice separate services.

I think - whether you use it or not - the SemApps project is nice to take a peek at the code and learn from it. For my own techstack I’m currently looking into NestJS (nodejs + typescript + nestjs + nextjs + preact + fastify + terminusdb), but nothing decided yet.

2 Likes

I’m not clear on what’s needed for collaborative editing, and how easy it is to do it in LDP. Hopefully LDP was designed with it in mind, but it may be that you need a layer on top to provide CRDT or something for updates of shared data.

Same question arises for SPARQL. I don’t know how far SPARQL gets its towards collaborative editing.

It’s a nice extra for them to have SPARQL in addition to LDP/Solid, so it will be interesting to see how the two projects evolve and which use cases suit SemApps better because of the extra SPARQL capability.

2 Likes

Hey, everybody!

Glad to read your messages! We are currently translating into English several videos that present the SemApps project, the team, the use cases, the perspectives and so on.

As soon as they are ready, we will send them to you!

Thanks @Smag0 for sharing, we are not (yet) very good communicators :wink:

We are also very interested by your projects and those developed in the SOLID community. If you identify opportunities for collaboration, mutualisation, synergies, we would be happy to discuss them!

Cheers, Guillaume

3 Likes

Hi @GuillaumeAV,

It would be nice to have something of a roadmap on your future plans and direction for the project. Your tagline of “Fostering interconnections between communities” is intriguing and I would like to know more about your positioning in that regard.

Other mutualisation + synergies I just posted Aligning efforts in LD schema / ontology design + adoption which is a common concern besides spec standardization + alignment. Regarding the latter, I see you are making opiniated choices in SemApps, like dependency on WebID module, where imho you should take care not to have them become fixed requirements for users of SemApps, i.e. make alternatives easily re-configurable with minimal coding.

Hey @aschrijver !

The communities we work with tend to work in their own corners. They work in silos and use platforms that are also in silos.

We believe that being able to share data across respective platforms of the communities is likely to foster the development of cross-organizational collaborative dynamics. And thus increase : The network effects, the ability of agents to share and to play on their complementarities and to be more efficient together.

One of the major objectives of SemApps is to promote the interoperability of platforms, to enable the development of decentralized & federated social networks, both in the physical and the digital world.
So we need to use open standards and protocols, that’s why we build SemApps on RDF, OWL, SPARQL, LDP, Web-ID, Web-ACL, Activity and so on …

This will allow us to interoperate SemApps instances with each other in an elegant way, AND to interoperate SemApps with other software & platforms also respecting SOLID specifications and Semantic Web standards …

We are working towards a secured, distributed and federated social web, like you I believe !

Regarding technical collaboration prospects, I leave it up to the SemApps developers (I’m not one) who should answer you in the coming days :slight_smile:

2 Likes

Thanks for the info @GuillaumeAV! I very much agree with the vision to avoid fragmentation and silo’s and to enable data sharing, facilitating coop, etc. With your standards alignment you’ll indeed promote the interoperability of platforms… but the devil is in the implementation details.

This was also something I discussed with @pukkamustard - who, like me, is developing functionality for local communities. What ontologies do we adopt, which parts of a standard are stable or to be avoided, what alternative standards should we support, who is doing what and why, etc.?

SemApps is currently missing this documentation viewpoint, and is an implementation project towards this goal for people that come across it:

I.e. SemApps instances will interoperate seamlessly, but other platform interop depends on the individual interpretation of their developers of said standards and ontologies. This is where the Fediverse is at the moment: lotsa production-ready apps, but a hard road to seamless federation between them. Standardizing here now has a lot of catching up to do.

Hi there,
Here are some technical answers, sorry for the delay !

Does it allow collaborative editing of graphs by users at the same time?

Collaborative editing is possible, since the same data can be edited by different users. However if you are talking about google-doc-like real-time editing, we do not see key advantages to that. It would be a lot of work, and many challenges would probably arise.

Does it allow direct and indirect LDP containers?

For now it handles only direct containers. We will probably handle indirect containers in the future.

I see you are making opiniated choices in SemApps, like dependency on WebID module, where imho you should take care not to have them become fixed requirements for users of SemApps, i.e. make alternatives easily re-configurable with minimal coding.

I don’t think there is a dependency to WebID, but if we did add that by mistake, it is certainly possible to remove it. The WebID of the logged user can be added to SPARQL requests in order to handle ACLs (not implemented yet on Fuseki-side), but if no WebID is provided, then Fuseki will assume the user is anonymous.

SemApps instances will interoperate seamlessly, but other platform interop depends on the individual interpretation of their developers of said standards and ontologies. This is where the Fediverse is at the moment: lotsa production-ready apps, but a hard road to seamless federation between them. Standardizing here now has a lot of catching up to do.

Yes I agree that this is a major challenges. We hope we will find common spaces to discuss the issues that arise as we try to make our apps interoperable. Very happy to see your enthousiasm @aschrijver, and looking forward to future collaborations !

2 Likes

Nah, I just looked at the code of Connector, and indeed there is not a dependency atm, other than that you name a variable as WebId, but where it comes from is not hard-code or anything. I was just mentioning it as something to watch out for in all future development, and I see you do :slight_smile:

1 Like