VladimirAlexiev / rdf2rml

RDF by Example: rdfpuml for True RDF Diagrams, rdf2rml for R2RML Generation
39 stars 5 forks source link

On "Visualize RDF Shapes (SHACL and ShEx)" #8

Open tfrancart opened 4 years ago

tfrancart commented 4 years ago

Hi !

What are your ideas about "Visualize RDF Shapes (SHACL and ShEx)" ? I'm thinking about parsing SHACL in Java using https://github.com/TopQuadrant/shacl and then output PLantUML text. Did you had any specific plans on this ? (I would have been happy to do that using RDF4J but I can't find a SHACL Object modelling in RDF4J).

Cheers

VladimirAlexiev commented 3 years ago

If I do this, it'll be in perl. But the idea is in the freezer :-(

I'm also considering a bastardized syntax to add cardinalities to turtle examples, which will be simpler to write and interpret:

:node1 :link :node2,
  [puml:min 1, puml:max 2]

@tfrancart what do you think?

tfrancart commented 3 years ago

Actually, since then, I developed this SHACL to PlantUML converter, in Java, based on TopQuadrant SHACL lib, and the result is at https://shacl-play.sparna.fr/play/draw and code at https://github.com/sparna-git/shacl-play/tree/master/shacl-diagram

I don't have a strong opinion on the example you provide, an alternative idea that comes to my mind is

:node1 :link [
  rdf:value :node2;
  puml:min 1 ;
  puml:max 2 ;
]

But this changes the structure of the example graph itself, which might not be convenient

VladimirAlexiev commented 3 years ago

@tfrancart nice!

VladimirAlexiev commented 3 years ago

Ok, I see

ShapeEntry
issued : xsd:date [1..1]

So I guess peopl just don't bother to declare the type of their literals?

VladimirAlexiev commented 3 years ago

Scalability problems:

VladimirAlexiev commented 3 years ago

Suggestion: move cardinality from edge label to arrowhead, this way you shorten the label and use the space better. Eg

ConceptScheme -> "0..*" Concept : hasTopConcept

instead of

ConceptScheme -> Concept : hasTopConcept [0..*]

(Sorry I'm too lazy to post properly in your project but I'm writing on mobile while watching the 1/4 final ;-)

tfrancart commented 3 years ago

where are the datatypes?

Indicated inside the box

i don't quite understand this "prop|^invProp"

That's a SPARQL property path used as the vaule of sh:path

the ELI shapes are very disconnected and even broken? Eg Format.media_type has two conflicting shapes

Yeah, forget about these Shapes, they are very special : we defined one Shape for each property to be able to check domain / range

So I guess peopl just don't bother to declare the type of their literals?

I don't see what you mean ?

SHACL for SHACL returns NPE

It used to work - I'll see what happens

SKOS (OPOCE) returns blank page

It used to work - I'll see what happens

Try with "OpenArchaeo Shapes", it's the closest to a typical SHACL file we design and use in our projects. The others are all a little fancy.

VladimirAlexiev commented 3 years ago

Doc generator should render markdown in Abstract, else: Screenshot_20210702-223400_Chrome.jpg