[Post deleted 3]

[Post deleted]


This is a great read, thanks Ruben! One of my questions since I first learned of Solid was about how we can maintain a data-model cross-application, and shapes certainly seem like the way.

We’ve added ShEx shape support into the SDK and I think that’s a good first step, soon we will be adding something more like footprint support as well. But I think overall the work we’re doing aligns with what you’ve written (at least in broad strokes).


Hi @RubenVerborgh,
For a project, my app loads this schema / shape : https://holacratie.solid.community/public/Schema/tension.ttl, construct form from it and submit it to a POD, this is the interpretation I made of the same need, I think.

And here another work from a friend of mind generate forms for Semantic Web https://github.com/jmvanel/semantic_forms

This was a great read and very informative. One question I had while reading was related to your statement:

“…data can be stored or created in one shape but retrieved in another shape.

Could you elaborate on this or point me to more info about how this is accomplished? I may be mistaken, but wouldn’t the shape dictate how the data is mapped, and therefore dictate how that data would need to be queried?


After readthrough, I’ still confuse how I will use Shape in my app.

Is there any JS example that I would use in the future in my app? I used to believe that Shape is only for Client side form creation https://github.com/solid/solid/issues/259

But in you blog post, seems it is also live in Server side, act as something like GraphQL Schema. Which defined the GraphQL Query the Client can perform, and what GraphQL Mutation Client can send.

Could you comment on how this relates to the type registry?

It seems the type registry provides the footprint as long as you know what type you’re looking for, and instead of specifying a shape explicitly, it specifies the root node or container for the shape?
So in future the type registry would be replaced or augmented by expressing shapes and footprints with their own vocabularies?
Or would the type registry be replaced by something completely different?

Ruben already commented on this, but we have some examples now in the SDK of how shapes can help drive the UI. It started before the footprint concept had been solidified, but it’s not too far off, and future versions will incorporate more of the UI ontologies and so on to make them more interoperable.

That said, the vision I see for shapes is a reusable library of shapes, to help applications maintain consistent vocabularies and predicates cross-application. In other words, a simple example might be an instant message - there could be many different vocabs and predicates used by IM applications, but if they could use an InstantMessage shape, then it’s a lot easier to maintain interoperability, so IMs from one app can seamlessly get used in another app.

I’m not really aware with shapes, and if i made some mistake, please let me know, but I made a little try for parsing shex shapes & rendering forms https://scenaristeur.github.io/spoggy-simple/testform.html

using .shex shapes stored here

For example role.shex

    PREFIX :  <>
    PREFIX schema: <http://schema.org/>
    PREFIX xsd:  <http://www.w3.org/2001/XMLSchema#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
    PREFIX hola: <https://holacratie.solid.community/public/Schema/>

 start = @<RoleShape>

<RoleShape> {               # An Role has:
  schema:name           xsd:string  ;
  schema:dateCreated    xsd:date?  ;
  schema:creator        hola:Circle;
  hola:subClassOf       hola:Circle;
  hola:controls         hola:Domain*;
  hola:policy           hola:Policy;
  hola:specialRule      hola:SpecialRule;
  hola:roleLead         hola:User;
  hola:assignedTo       hola:User*;

gives me

It looks like quite easy, to replace an “xsd:date” with a datepicker

i aim to preload all dependend forms and with attribute diplay=“none”, not the only “start” as shape can have intern shape or imported shape like https://holacratie.solid.community/public/Schema/issue.shex manage Issue, User, Employee

Now I have to manage choices, sets,…
but it’s a little bit hard to parse, if someone has another idea,
with regex ?, extracting in json…?
let me know.

1 Like

Hello Everyone!

It is nice to meet you!

I am new member and happy to be here as I see so many good pieces of advice!

Thank you! :grin: