Demote annotated property group to "all fields" priority #15
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Everything is derived from
Thingand this class has an annotated property group. This fact attributes a certain priority to those properties and makes them show without "all fields" being enabled.Here this is undesirable.
More desirable would be to include
pidin the respective property group of each class where it is relevant (and thereby live it up to the top, where is is better placed when required).If that is done, the
ThingPropertyGroup(or any identified one) should be demoted to only show, when "all fields" is enabled.For clarity
While the
Thingclass hassh:group: ThingPropertyGroupannotations, the relevantThingPropertyGroup a sh:PropertyGroupdeclaration isn't provided anywhere and is consequently not part of the SHACL that is ingested into ashacl-vuedeployment. That would be necessary forshacl-vueto handle between-group ordering and within-group property ordering in the intended way, and also to display group-level info such as titles and descriptions.I disabled all ordering based on pre-specified
sh:PropertyGroups andsh:groupannotations when I introduced the reverse hierarchical ordering recently. I did this because there will inevitably be some conflicts between the two types if they co-exist, and I don't think it's important enough to deal with that type of conflict resolution right now. It might make sense for some future use case to allow selecting between the different types of groups/ordering via configuration, or to merge the approaches somehow, but I'll leave it for when there's a clear need.This all means, the current
sh:group: ThingPropertyGroupannotations on properties of theThingclass do nothing inshacl-vue. They aren't used to determine class inheritance (I get that from subclass statements in the OWL). However, they could be used as is, for whatever reason we think would be useful.Getting back to the issue
Actually, there are currently only two aspects that determine (rightly or wrongly) whether a field is shown by default:
sh:namespecified (this comes either from linkml slottitleor a linkml slot annotationsh:name)All other fields will only show when the "All fields" switch is true.
So what is desirable?
My feeling is that we should have a set of default rules for a grouping/ordering approach that is independent of
sh:groupannotations (with or without specifiedsh:PropertyGroups):required: trueor have some sort ofrecommended:trueannotationsh:orderannotationsh:orderannotation, order randomly or alphabetically, or some other specThis means we would not implicitly give some priority to any property with a
sh:grouporsh:nameannotation.An argument could also be made for removing all required properties from their respective originating classes and adding them to a seperate required "group" on top.
What do you think?
Some exchanges after the above:
@mih
@jsheunis
@mih
@jsheunis
@mih
@jsheunis
@mih
Ok I now have the broad ordering and show/hide feature in place with the following rules:
PersonThingThingMixinPerson, by defaultsh:orderannotation of the property (relative to other properties in the group)ThingandThingMixin) and their properties by default, unless:dlco:recommended: true, with the prefixdlco: https://concepts.datalad.org/)sh:orderannotation of the property (relative to other properties in the group)Notes:
sh:groupandsh:PropertyGroupannotations do not play any role in the above process.dlcowith whichever improved prefix we can conjure upCurationAidhassh:orderannotations fordisplay_nameandcuration_comments(and none for identifiers) and these slots are all inherited intoPersonwhere they keep their original annotation. This is why will appear in the ordered properties in a location where they might not have explicitly been placed according to the LinkMLslot_usageof thePersonclass.Demo video:
Works for me! Thanks
Works now.