rdfjs / shacl-ui

SHACL-driven UIs
https://rdf.js.org/shacl-ui/
11 stars 2 forks source link

Use-case : tree selectors widgets #29

Open tfrancart opened 1 year ago

tfrancart commented 1 year ago

See #16 for the full story.

I have tree selectors. They rely on:

having the ability to indicate with property roles which properties are used for tree navigation could automate tree selectors.

bergos commented 11 months ago

@tfrancart can you please provide an example given as Turtle? Maybe you can also give more context based on that example. I think that would be useful for further discussions.

tfrancart commented 11 months ago

Here is an example given as Turtle of how things currently look like:

xxx:PersonShape a sh:NodeShape
  rdfs:label "Person"@en ;
  sh:property [
    sh:path dct:subject ;
    sh:name "category (tree)";
    config-datasource:treeRootsDatasource [
      a config-datasource:tSPARQLDatasource ;
      config-datasource:queryString """A SPARQL query selecting the roots of the tree to display"""";
   ] ;
   config-datasource:treeChildrenDatasource [
      a config-datasource:tSPARQLDatasource ;
      config-datasource:queryString """A SPARQL query selecting the children of a node being unfolded"""";
   ] ;
  ]

Maybe this could be generalized as a TreeSelector ? Something like

xxx:PersonShape a sh:NodeShape
  rdfs:label "Painter"@en ;
  sh:property [
    sh:path dct:subject ;
    sh:name "category (tree)";
    sh:node [
     # this represents our tree structure

      sh:property [
        sh:path [ sh:alternativePath(skos:narrower [sh:inversePath skos:broader])] ;
        # flagging this path as the one to use to fetch chidren
        xxxxx:propertyRole xxxxx:HierarchyChildrenRole ;
     ] ;
    # need to find something similar to say "dct:subject values are connected to a tree in which the roots are indicated by this path expression" - that's a bit difficult :-) and requires more thinking
    ]
  ]