Building an app out of RDF


#1

I was chewing over ideas today for a nice little side project for when I was blocked on other things, and it kind of exploded. This often happens when I go for a walk or sit thinking deeply to long!

The app I was contemplating is a fusion of ideas from current and past experience, driven by my love of visualisation. For example, consider if spoggy was combined with the Data Browser, where you can pull in, query and display data from RDF sources through a user interface that mixes and matches entity relationships, tabular, and even spreadsheet like UI. And where the source data can be added to, edited, annotated through simple gestures like dragging an icon, drawing a link, editing a property and so on.

I love UI that is fun to explore and encourages users to discover features and workflows, as well as design their own, by being intuitive, forgiving and… fun! :smile:

Anyway, the app itself is not the subject of this topic. I’m posting this to wonder out loud if RDF can become the fabric of applications themselves.

In contemplating my app it became obvious that making the elements of it interchangeable and flexible would make it both more powerful, and create opportunities to build the ‘spreadsheet of the RDF world’, by which I mean an application which users can customise and program themselves.

An App Composed of RDF

So focusing in for a moment, I’ll kick this off with a diagram. This illustrates how an app could be composed entirely of RDF. It would need an ‘engine’ (interpreter or compiler, not shown) which would consume the RDF that defines it’s various components (UI, business logic, modules, functions, code) and ‘enact’ the resulting application.

I hope it is self explanatory, but ask if not and I’ll update this post to clarify.

What do you think? I’m not proposing building this, it’s too ambitious for me alone, but I find the idea interesting.

Implications

Such an app could edit itself, could have bits of other apps (of this type) pulled into it, tweaked, pipelined, mixed and matched just as we do when we play with a spreadsheet. So anyone could do this at some level - maybe just tweaking parameters of a feature here and there, up to rewriting or replacing different parts, or cannibalising something for a new app and so on.

Adding RDF Interfaces

I had another thought this morning, and I’ve not even been for my walk yet! I’m wondering what it would mean if each of these ‘objects’ (the UI Element, Function etc) had RDF interfaces such as exposing its RDF graph store (as in say rdflib.js), an LDP interface and so on. Then any RDF aware app, or component, could explore and/or modify any other component. It starts to feel like ALife!

Seen this before?

I doubt this is a new idea (even I had a similar one twenty years ago :wink:) so if you know of other attempts like this whether or not RDF based, let me know.


Conceptual Design - Solid better User Experience
Conceptual Design - Solid better User Experience
#2

Theoretically such application is feasible, and that is the power of semantics. From the functional aspect of it, it would be useful to narrow the domain of the application by feeding it the specifications needless to say in RDF.

It would be necessary for a DNS-like service that would make RDF datasets discoverable.

I guess, once AI becomes more robust, this would be the norm.


#3

@joepio and the other Ontola folks have been doing a subset of this, I think.


#4

I’m not sure but Ontowiki might be similar to what you’re talking about.

TimBL wrote https://www.w3.org/DesignIssues/Footprints.html , which also seems very relevant and talks about form languages and a user interface ontology.

Btw, I very much regret my little joke a few days ago. I was trying to be funny and not trying to pick on any particular person or ethnic group. Afterward my mastodon account was hacked, which led me to delete my github account in a fit of pique. I suppose I deserved it. Nothing much of consequence was lost to the world.


#5

Thanks for your links @Vincent and @tag42git, I’ll take a look.

I had another thought this morning, and I’ve not even been for my walk yet! I’m wondering what it would mean if each of these ‘objects’ (the UI Element, Function etc) had RDF interfaces such as exposing its RDF graph store (as in say rdflib.js), an LDP interface and so on. Then any RDF aware app, or component, could explore and/or modify any other component. It starts to feel like ALife!

I’m going for my walk now, so… :grimacing:


#6

@happybeing Some years ago, I made a try ( an under alpha Spoggy version) with Processing & Jena reading an .owl configuration file
http://smag0.blogspot.com/2014/03/creer-une-interface-pour-visualiser-les.html?m=0 ( can be translated with Google Traduction on the right) .
For the test, That just ajust width,height & background color of the app, but I think this could be easily ported to JavaScript with p5js https://p5js.org/ and why apply ‘machine learning’ with ml5 https://ml5js.org/

This sort of config file could be shared on pods, and incrementally completed, so that everyone could copy apps.
Does this example correspond to your vision ?
Some work on ui-ontology could be integrated.
Is there a vocabulary to describe apps, Classes, Objects, Functions, parameters?


#7

That’s very interesting @Smag0, thanks. I don’t think I understand your overall idea - where this was going. I see you using RDF to read properties that customise the application, but I think you have much more in mind, along the same lines as I describe as you suggest. You have probably thought more about it than me though. Thanks for sharing this.

Writing my notes on this I think the difference is that you have a templated app which can be configured by adding components and logic which are read by the templated app. Whereas rather than a template, I think in terms of a simple engine, with the entire app being defined in RDF (as containers, resources), and run by the engine. Not that different, and I think your demo is a step towards that anyway.


#8

Another interesting one is Sparql Web Pages, which I think is part of Topbraid Composer. We need a free open source alternative to that, which can be tailored for Solid pods :grinning:


#9

Lots of relevant and useful suggestions, thanks for this one @tag42git. I think they can all contribute something to this idea and some might be steal-able! :slight_smile:


#10

Not steal, liberate!