-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define proper discovery mechanism for predefined SHACL shapes and viewport definition #25
Comments
Also compare #32 (comment) |
Some things that are not clear to me:
|
The |
The issue with them is that they only allow creating a |
I read it as you can add multiple "partitions" to a dataset which allows you define one "view". |
I guess we have to use http://rdfs.org/ns/void#DatasetDescription or/and http://schema.org/DataCatalog as an entry point. There can be multiple
|
I rather would add mulitple |
|
Maybe it's easier to make the entry point not based on a class instead we just define that it must be attached to The property used to point to the shapes would be defined in the That property could be used to point to the shape for each class. But it would be also possible to use one shape as a collection for all class-related shapes. With an additional type, this collection shape could be flagged as the default shape. That would allow having alternative shapes for any future use cases, like actual data vs. model. </.well-know/void>
spex:shape [ a sh:NodeShape, spex:DefaultShapes;
sh:node [ a sh:NodeShape;
sh:targetClass <https://permits.ld.admin.ch/schema/Profession>;
sh:property [ a sh:PropertyShape;
], [ a sh:PropertyShape;
]
], [ a sh:NodeShape;
sh:targetClass <https://permits.ld.admin.ch/schema/...>;
sh:property [ a sh:PropertyShape;
], [ a sh:PropertyShape;
]
]
]. |
I'll use the Other thing: I'm a bit surprised that you used a surrounding Now to extend your example with viewpoints, I would see something like: </.well-know/void>
spex:shape [
a sh:NodeShape, spex:DefaultShapes;
sh:node [ a sh:NodeShape;
sh:targetClass <https://permits.ld.admin.ch/schema/Profession>;
sh:property [ a sh:PropertyShape;
], [ a sh:PropertyShape;
]
], [ a sh:NodeShape;
sh:targetClass <https://permits.ld.admin.ch/schema/...>;
sh:property [ a sh:PropertyShape;
], [ a sh:PropertyShape;
]
] ;
] ;
spex:viewport [
a spex:ViewPort ;
schema:name "Only the Profession class" ;
spex:includes <https://permits.ld.admin.ch/schema/Profession> ;
] ;
spex:viewport [
a spex:ViewPort ;
schema:name "Everything but the Profession class" ;
spex:excludes <https://permits.ld.admin.ch/schema/Profession> ;
] ;
. @bergos in the discussion, you mention using one more level and |
I agree on that, but to avoid getting lost now, let's define our structure and later we check how well it matches with existing stuff.
The additional level would allow to create bundles of shapes. The use case would be similar to branches in git. There could be one bundle of shapes that covers the current data and others to model possible extensions to the data model.
My idea was to hand over From data structure perspective, I'm not sure if it makes sense. We use it for variables in pipelines. That allows to combine different sets of variables like |
@martinmaillard did you implement something in this regard now? If yes can you point os to it that we can potentially officiate it. |
Nothing done yet |
So do you need anything more from here to advance on SPEX? |
Time 😄 And if you have some inputs about the RDF structure I shared above, that's welcome too. |
Let's say we keep the additional nesting level for the shapes. As @bergos mentioned, it could make it easier to allow multiple versions of the schema later (or something like that). I don't really like the use of Here's what I propose: </.well-know/void> spex:shape [
- a sh:NodeShape, spex:DefaultShapes;
+ a spex:DefaultShapes ;
- sh:node [
+ schema:hasPart [
a sh:NodeShape;
sh:name "Profession" ;
sh:targetClass <https://permits.ld.admin.ch/schema/Profession>;
], [
a sh:NodeShape;
sh:name "Something" ;
sh:targetClass <https://permits.ld.admin.ch/schema/Something>;
] ;
] ; |
One more question: which URI should I use for the |
I would go for |
The repo for described.at is here: https://gitlab.zazuko.com/docker/described.at |
I implemented basic support for viewports. Only supporting |
IANA defines
.well-known/void
. That should be the entry point and in there we should follow the basic VoID and/or schema.org Dataset syntax to point to data.The text was updated successfully, but these errors were encountered: