-
Notifications
You must be signed in to change notification settings - Fork 12
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
REQUIREMENT: May specify Open/Closed #33
Comments
There may be more than one type of "open" - accept any metadata properties, or accept any properties from a limited set of vocabularies. |
This relates to the entire profile and therefore does not fit on any of the rows in the csv template. That means that we may need a manifest file of some type that gives information for the profile itself. That file could include the administrative information: who created it, when, etc. |
From an email to the list from Tom Baker: "In ShEx, "openness" is an attribute of a shape [1]. Maybe we could have To contemplate when we get here: should we allow open/closed to be only on shapes or on the entire profile (if we figure out a mechanism for the latter)? |
@kcoyle I suggest we support open/closed only on shapes. Reasons:
|
... or my original proposal for shapeOpen, but since we might want to say that the default interpretation of a profile is "open", shapeClosed might make more sense because we would not encourage people to use this element at all unless they want to close their shapes. |
@tombaker but what then of what you might call the "top level" or "default" shape? What I mean is that if the simplest profile can be just a list of properties (no declared shapes at all), how would you say whether that was a closed or open list? I'm guessing you would stipulate that if one wanted to say that it was either open or closed would have to assign the list a shape. It might be useful to decide on what the default is. |
@philbarker An interesting question. To be translated into ShEx, a "shapeless" list of properties would need to be turned into a shape for which "closed" (or "open") could be specified. In this sense, a shapeless list of properties could be seen as having an implied (anonymous) shape. I have been assuming that the default should be "open", as it is in ShEx, but am curious to hear the case for "closed". In the absence of a default, we would in effect be saying that it could be either open or closed unless deliberately specified - in effect, saying that the minimal profile would need to have at least two columns. |
@tombaker "Closed" for a profile means that properties or shapes that are not included in the profile are invalid for matching on the profile. It would be the same as marking all shapes as "closed". This seems to me to be the likely intention, rather than having some shapes closed and some open. I say likely because people would generally think of their metadata (aka the entire profile) as open or closed. I have no objection to putting open and closed on a shape, but in either case we have to think about what that means:
It seems to me that the nature of an application profile is to create a defined metadata environment, which would be "closed" in the RDF sense. An open metadata set would be somewhat contrary to the intention of a profile. What does seem especially relevant for those ingesting metadata created by others would be the instruction to ignore any shapes/properties/values that are not included in the profile, thus creating a metadata set that conforms to the profile. So I am arguing for "closed" as the default, and am not sure that our first template version will need "open", but we should poll the community for that option. |
I would assume the default default (i.e. if the spec says nothing) would be "open" because that is the de facto situation with no profile, however, I can see the argument for the intention in creating an AP being to close down some options--hence the question. (Aside: I recall discussions arising from OAI-PMH mandating Dublin Core metadata but nothing being mandatory in Dublin Core.) My 2c regarding @kcoyle's Qs
That is what I assume it means
If the valueShape for a property is an open shape that lists no mandatory properties then that value could be any non-literal.
I don't think so. If so then there would be no point in having the constraint.
That would be an implementation issue. In a spec I would word this as such data "may be ignored" "may trigger an error or warning". If I were creating the data I would want a validator warning to tell me I was using terms that may be ignored. If I were receiving data and had decided to keep all data as it was sent I wouldn't want an error/warning. If I were writing a validator I would make these warning configurable through a "strictness level" setting or similar. |
I did my usual shallow->middling dive into the documents, and here's what I believe is true: The "open" in RDF schema or OWL corresponds only vaguely to what we are discussing here for profiles. The "open world assumption" is a somewhat different beast, as per the OWL documentation:
Instead, our sense of "open/closed" is directly related to validation. SHACL has this description of "closed":
Therefore, in SHACL, closed is explicitly about a subject/predicate pair. I'm less clear about the ShEx use of closed because of how that documentation is worded:
What I am unclear about on this is "outgoing triples", although the document also says:
So I believe this also refers to triples with a specific property but I can't tell if the "outgoing arc" can include the object node's value. @ericprud ? |
The concept of closed is intended to be the same for both languages. In ShEx it applies to "outgoing arcs" of the node being validated, meaning all triples with that node as a subject and any predicate or object. So if the predicate of an outgoing arc isn't mentioned in a closed shape, it's flagged as a violation. The only predicates SHACL recognizes when testing closed-ness are those in the top-level triple constraints, which makes closed-ness more complicated. For instance, if a closed schema required a |
@kcoyle @philbarker @ericprud If you are suggesting that "closed" be the default because ingesters of metadata should be able to ignore triple patterns not included in a profile (though I am unsure if you are arguing this), then I'd point out:
Re: "A node in the subject position has an outgoing arc and a node in the object position has an incoming arc." (from the Primer), you wrote: "So I believe this also refers to triples with a specific property but I can't tell if the "outgoing arc" can include the object node's value." The example given in the Primer includes a schema:
and matching data:
A shape can always describe the object node's value associated with a given property (but can also leave it unspecified). If you meant to ask whether the "INCOMING arc" can include the object node's value, then the line
@ericprud Closing As I see it, inverse triple constraints are a good example of what an expressive constraint language like ShEx can cover, but would be very awkward to express in a simple CSV format. |
This discussion is continued at dcmi/dctap#8 |
#17 #19
"Must be able to include information about what to do with metadata received or encountered that is not included in the profile itself."
The text was updated successfully, but these errors were encountered: