Skip to content
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

#212: Added sh:ShapeClass #254

Open
wants to merge 7 commits into
base: gh-pages
Choose a base branch
from
Open

Conversation

HolgerKnublauch
Copy link
Contributor

I know this issue has not been discussed yet, but I have prepared this branch to implement it in case it gets accepted, and also to illustrate how the process for future changes could/should look like. The PR includes the changes to the HTML text, adds at least one test case and updates the TTL file.

<div class="def">
<div class="def-header">TEXTUAL DEFINITION</div>
The class <code>sh:ShapeClass</code> is an <code>rdfs:subClassOf</code> of both <code>sh:NodeShape</code> and <code>rdfs:Class</code>.
<code>sh:ShapeClass</code> has itself as its <code>rdf:type</code>.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not true.

sh:ShapeClass rdfs:subClassOf rdfs:Class , sh:NodeShape. # true
sh:ShapeClass a rdfs:Class. # true
sh:ShapeClass a sh:NodeShape. # FALSE!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But the triple sh:ShapeClass rdf:type sh:ShapeClass is explicitly stated in the TTL file:

https://github.com/w3c/data-shapes/pull/254/files#diff-e7ad12ee6ccf9c41e835d5d12955c739ac6ead85384719f9a3cd0127f7a1c5fdR58

Copy link
Contributor

@afs afs Feb 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the textual definition, the sentence

sh:ShapeClass has itself as its rdf:type.

has two readings: as part of the definition and being an authoritative statement, or as stating a consequence of the first part. Replace the preceeding . with ; and it does make it part of the definition.

The class sh:ShapeClass is an rdfs:subClassOf of both sh:NodeShape and of rdfs:Class; sh:ShapeClass has itself as an rdf:type.

("an rdf:type" - it has unrelated ones as well)

The current 3rd sentence, which is definitely not adding to the definition, and is stating a consequence of "SHACL instance":

If s is a SHACL instance of sh:ShapeClass in a shapes graph SG then the set of SHACL instances of s in a data graph DG is a target from DG for s in SG.

could be moved to after the textual definition box so the definition box is all definition.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why should sh:ShapeClass rdf:type sh:ShapeClass be true?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I read it - because the definition says it is.

If it is the other reading where sh:ShapeClass rdf:type sh:ShapeClass is an implication, it does not need to be in the definition box. I don't see the implication path that concludes that fact but maybe I've missed it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, what about I just remove that sentence? We do not make these assertions explicit in the spec of other things (e.g. we don't say that sh:NodeShape rdf:type rdfs:Class. This information is present in the sh: namespace TTL and that's probably good enough?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have removed the offending sentence and made sh:ShapeClass a rdfs:Class in the TTL file as this was not really necessary. I hope this addresses the concern here and will ask for another review

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@HolgerKnublauch --

Are you saying it is a natural conclusion from the rest of SHACL? What path leads to that?

If on the other hand, it is a necessary additional requirement about sh:ShapeClass then it should be in the definition. (i.e the definition should be complete and self-contained without the namespace document.)

Concretely - what requires sh:ShapeClass rdf:type sh:ShapeClass to work?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what requires sh:ShapeClass rdf:type sh:ShapeClass to work?

Nothing really, so I have taken it out and made it rdfs:Class only. Maybe our messages crossed paths.

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

Successfully merging this pull request may close these issues.

3 participants