Skip to content
This repository has been archived by the owner on May 25, 2021. It is now read-only.

form model converter gives error on example shex from primer #314

Open
sideshowtom opened this issue Apr 7, 2020 · 5 comments
Open

form model converter gives error on example shex from primer #314

sideshowtom opened this issue Apr 7, 2020 · 5 comments

Comments

@sideshowtom
Copy link

sideshowtom commented Apr 7, 2020

Sorry if this is user inexperience. In the field labelled 'ShEx Shape' I entered the url
https://github.com/sideshowtom/wit2/blob/master/shexPrimerExample.shex
which contains

PREFIX school: http://school.example/#
PREFIX xsd: http://www.w3.org/2001/XMLSchema#
PREFIX ex: http://ex.example/#

school:enrolleeAge xsd:integer MinInclusive 13 MaxInclusive 20

school:Enrollee {
ex:hasGuardian IRI {1,2}
}

which is an example from the Shex primer, and I left the field labelled 'ShEx Layout' blank. Then when I press convert, a red error box pops up with
Error: TypeError: undefined is not a function

@sideshowtom sideshowtom changed the title form model converter gives error on shex from primer form model converter gives error on example shex from primer Apr 7, 2020
@james-martin-jd
Copy link
Contributor

Looking at that shape, it most likely won't work as-is in the shex converter. This is partially because it is not a shape within a node, but just a set of rules (or rather, a rule) on a root. The converter needs to point at a starting shape, which you cannot easily do with this format.

An example of what I mean can be seen on the userprofile shex shape, which is used in the react SDK profile page. If you're still learning ShEx don't worry - all that matters is the piece at the top:

START=@<#UserProfile>

Then inside the shape there is a <#UserProfile> node that defines the start of the shape, and links/branches out from there. Basically, the form needs some root shape to start building from, and without one we don't know what links to which piece.

Here's an example of the primer example shape you sent that works - however since the school:Enrollee is not part of a node it will not be referenced anywhere in the output. You could add a link inside of the <#PrimerExample> node somewhere, or pull that ex:hasGuardian condition inside of the PrimerExampler.

Hope this helps!

@sideshowtom
Copy link
Author

sideshowtom commented Apr 10, 2020

Yes, thanks, that helps. I'm still learning :)

-edit- I'm trying to figure out where the START=@<#UserProfile> syntax is explained. I think its in http://shex.io/shex-semantics/#prod-startActions but I'm not sure. It isn't explained in the shex primer.

@brownhoward
Copy link
Contributor

brownhoward commented Apr 10, 2020

If you are interested in learning about ShEx (and SHACL), I recommend Validating RDF Data. There is an HTML version with lots of examples.

Example ShEx shapes and Form Model used when testing the React SDK can be found at https://solidsdk.inrupt.net/public/FormLanguage/examples/.

@sideshowtom
Copy link
Author

sideshowtom commented Apr 10, 2020

Thank you! I also didn't know about these documents
https://www.w3.org/ns/shex#
and
http://shex.io/shape-map/

-edit (2)-

Sorry to be so persistent about this, but I just want to make sure I understand, so I know what the Form Model Converter does and how to use it.

What is the field in the Form Model Converter labelled 'ShEx Layout'? Is that the same thing as a shape map?

@james-martin-jd
Copy link
Contributor

@sideshowtom The ShEx primer actually doesn't explain START syntax, I opened an issue in the shex repo a while back to address this: shexSpec/primer#18

ShEx Layout is not currently used, it is something new to ShEx that is still experimental in nature. Don't worry about the layout piece for now, as the field value isn't ever read or enabled, it should always be disabled for now.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants