-
Notifications
You must be signed in to change notification settings - Fork 5
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
add section about 'unstar' mapping #115
base: main
Are you sure you want to change the base?
Conversation
Is this proposed "as well as" the graph-to-graph algorithm or "instead of"? |
This approach requires graphs containing triple terms to be represented as datasets. That excludes cases where you need to put "unstarred" RDF 1.2 graphs into an RDF 1.1-based quad store and manage them within specific named graphs. Implementations supporting the default graph union mechanism would also treat the "triple term graphs" as asserted in that union graph. |
It has been mentioned (or opined) that the "star" name would eventually go away (it would be just RDF 1.2 with triple terms). If so, perhaps "unstar" is an unfortunate name for future reference? |
There seems to be an issue with the examples section: all examples say "Cannot GET /uploads/dcqFS6/spec/ex-unstar-output.trig". |
It's the general PR-preview issue of not being able to retrieve neighboring resources. They are fleshed out if you look at the GitHack version. |
I personally don't think that we should have multiple such mappings, and I am more and more convinced that the graph-to-graph approach makes more sense. The reasons I stuck to my initial graph-to-dataset approach in this PR are that
|
What is the "graph-to-graph" algorithm? A mapping based on the RDF standard reification vocabulary? |
Or something isomorphic to it but using dedicated terms. There's an example of that in this recent wiki page (with links to w3c/rdf-semantics#49 and w3c/rdf-star-wg#114.). |
Semantic Task Force 2024-11-22
|
Design goals: (content from the PR)
|
I just updated the PR; the new algorithm is "graph-to-graph", repurposing the reification vocabulary. Note that I deliberately chose a very specific name for this, to distinguish it from the type we will probably introduce as the class of all triple terms, for example, to describe the range of rdf:reifies (say, |
This is a suggestion related to presentation only. RDF-concepts defines RDF and is also a readable document. The algorithms of unstar/restar are good for defining the translation but algorithms do not communicate the broad intent so well. Maybe: have all the written description, discussion and examples, then have the algorithms.
|
@gkellogg How did you create that link? I'm trying to read the new PR but again am unable to read the included examples. |
Select spec/index.html in the branch you want to see and enter it in http://raw.githack.com/. It gives you a link to the rendered version. |
I think this approach is good. The use of a dedicated type for unstarred triple terms seems prudent. If used, an Whether the constituent triple term predicates should be reused from the reification vocabulary or not has been debated some (see e.g. w3c/rdf-semantics#49 (comment)). It depends on whether or not it makes sense to make I think the name But these details, about naming and which constituent triple term predicates to use, can probably be dealt with separately, to avoid blocking this PR. The question about whether to use name "unstar" at all remains (as "RDF-star" is not mentioned as such in RDF 1.2; only in reference to the RDF-star WG). |
To me it seems like the discussions in the Semantics TF and in Github issues, e.g. rdf-semantics issue #49 and rdf-star-wg issue #130, moved away from re-using the RDF reification vocabulary. The reason is a bit intricate: the RDF standard reification describes an occurrence/instance/reification of a triple. The triple term describes a triple and only the reification, indicated by
Given this difference in meaning I think it's more prudent to not reuse the properties from the reification vocabulary but to mint new ones, like e.g. W.r.t. other wordings:
|
Regarding the name of the algorithm, I guess we could go for "classicize" (as it converts to RDF "classic"). |
Regarding the vocabulary, I think that duplicating the properties |
The WG seems to tend towards allowing the usage of triple terms in a more general way than just as a source of reifiers. In that context it is probably prudent to differentiate the two concepts, and not mix and mingle them. Also, I don't see how |
On second (or rather n-th) thought I'd like to add something. Following recent discussions in the Semantics TF (as captured here and discussed there) we might settle for calling However, doesn't this jeopardize backwards compatability? So far it's possible to infer that an entity is of type To work around this problem, we could stress that any application of the unstar mapping should refrain from applying the same optimization. Also, an unassuming RDF 1.1 environment would not be led into a completely wrong direction if it assumed that the immediate subject of an unstar operation - On the other hand, backwards compatability is what the unstar mapping is all about, so why jeopardize it? |
Applying the
I do not suggest to change the domain of So yes, it would mean that any bnode generated by the unstar mapping could be inferred to be of type Regarding the notion of |
Fair enough.
I discussed the "unassuming RDF 1.1 environment", and that is what matters to backwards compatability. In such an environment,
I disagree. No matter what the term "statement" means, the term |
I stand corrected; re-reading the related sections in RDF Semantics, it says "The subject of a reification is intended to refer to a concrete realization of an RDF triple, such as a document in a surface syntax, rather than a triple considered as an abstract object" (emphasis is mine). I will change my PR accordingly. |
W.r.t. vocabulary I’m still not convinced: defining a new |
On a more basic level, I don’t think the proposal accomplishes all that it could and should accomplish. I would like the mapping to transform RDF 1.2 Full into a semantically equivalent RDF 1.1. IMO that is possible and desirable. The following is a sketch of a possible approach, extending and slightly redesigning the proposed PR. 1: Triple Terms
Consequently an RDF 1.2 reification can be described with standard triples. Take the following RDF 1.2 Full construct:
Using the triple term vocabulary from above it can be mapped to standard RDF triples as follows:
That is, modulo vocabulary design, not much different from the proposed PR. The proposed PR also adds some useful comments that are not repeated here. 2: Reifiers
Here
Semantic Equivalence
IMO it is very useful to expressly state that this is the point where the two approaches meet. In conclusion these mappings require the following addition to the RDF vocabulary:
I think that is a reasonable expenditure. If I'm not mistaken a mapping algorithm based on this vocabulary is trivial, supports round-tripping and is idempotent. The sketched approach should even allow to mix both representations without any loss of information - that is of course not desirable, but can occur when integrating data, and would be manageable as an intermediary state. |
I hesitated to do that, but since these terms are not meant to be used outside of the classicize algorithm, then it seemed better to isolate them in their own vocabulary rather than "pollute" the |
In what level of entailment would you like this equivalent to stand? Simple entailment? RDF entailment? RDFS entailment? A new entailment level? Also, the mapping does not suffice to encode RDF 1.2 Full into RDF 1.1. You would also need to transform literals with a base description. While there are different solutions to do that, this would make the mapping (and the corresponding entailment regime) more complex. |
The classicize algorithm is meant to transform triple terms into something that RDF 1.2 Classic and possibly even older RDF environments can understand. So the triples using those new properties will be part of classic/older data. The application of the algorithm may be well isolated from classic/older data, but the result is not. |
I've illustrated the level of semantics equivalence that IMO is desirable with the last example, namely that
I don't see how that problem is related to the topic of this discussion. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've reviewed spec/index.html up to the Algorithms. I'll come back for that. There are a number of requested changes above. I didn't think I'd find so many, nor that I'd have this much time to do so, or I'd have bundled them into a review... Sorry for the extra clicks these will take to apply!
I understand - although I differ w.r.t. "casually" and "normatively". However, I'd rather say that the mistake should not be made worse by repeating it but rather pointed out where it was made. Also, we had the discussion a year ago and I don't want to repeat it unnecessarily, but I do indeed like the pair "Basic" and "Full" much more than "Classic" and "Full". On an unrelated note I meanwhile would argue to not have that distinction at all, but it's probably too late for that. |
Thank you, that addresses my respective concern.
So, do you propose to open a new issue on that topic? |
We have w3c/rdf-semantics#61 . |
Okay, I wasn't aware. The tag says 'editorial'. What does that mean? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK
- unstarring a graph now produce a graph (not a dataset) - it uses the reification vocabulary (with a distinctinve type rdf:UnstarredTripleTerm)
also, the algo 'quote-triple-term' was renamed, because it was not actually "quoting" the triple.
following @afs, the two transformations ('classicize' and revert) are now primarily described in prose, the algorithm being secundary. We now also describe the reverse transformation.
The rewording uses the notion of constiutent terms, for which a definition is also added in Section 3.
Co-authored-by: Andy Seaborne <[email protected]>
Co-authored-by: Ted Thibodeau Jr <[email protected]>
this makes Respec unhappy, because 'appears in' is currently not defined, but including the definition will be for another PR. This keeps this PR more "localized".
Rebased this PR on top of the latest main, and added an entry in section 'Changes between RDF 1.1 and RDF 1.2' |
as per w3c/rdf-star-wg#129
Preview with the examples working
(as opposed to the automatic preview below)
Preview | Diff