-
Notifications
You must be signed in to change notification settings - Fork 1
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 introduction of triple terms and accompanying Turtle examples #16
base: main
Are you sure you want to change the base?
Conversation
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.
Looks good; a couple of minor suggestions.
Thank you @gkellogg and @domel! I incorporated your suggestions in b54250e. Let me know if I should have tagged you in such editorial commits (if so I'll amend it). Or if you prefer another workflow, e.g. that I amend previous commits instead, in case that eases further reviews. Alternatively, if you're comfortable with the Github interface for suggesting improvements, I can include further suggestions through that. (All approaches work equally fine for me.) |
I notice the |
I can do anything you’d like. I would probably always ask co-editors for a review, and any others are at your discretion. |
I think if you put at GitHack link in the top comment (above where PR Preview makes its updates) you’ll get the included files. We shouldn’t avoid features because of PR Preview limitations. |
To be clear, this is a draft PR. I've added some reviewers to ensure it's good enough process-wise. After, that I'll mark is as "ready for review" for the wider group. Of course anyone is free to review the content even in this state, (Other changes ("Add initial text direction", "Use SVG for illustrations"), will come in subsequent PRs.) |
Personally, I had difficulty understanding this subsection. Some parts were unclear to me; in other places, sentences can be simplified, I think. I will add my comments in reviews. Sorry if I'm sounding overly critical, I certainly applaud the initial effort. I'm just reading this with my reviewer hat on. |
spec/index.html
Outdated
<section id="section-triple-terms"> | ||
<h3>Triple terms</h3> | ||
|
||
<p>As the basic unit of description in RDF, the triple is a simple |
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.
Trying to use less words to say the same thing (likely a matter of writing style, but still, I think simplicity is important for a primer)
As the atomic unit of description in RDF, the triple (or statement) states a directed relationship between two resources. Sometimes, we need to describe this relationship itself in more detail.
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.
+1 to @william-vw 's proposal
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.
Yes, this is better. While I also prefer "atomic" (as in "atomic proposition"), there have been some reactions to using that (since triples have components). That's why I used "basic". But I'll try this out. Keep commenting if something even better comes to mind.
spec/index.html
Outdated
modelling, there is a tension between simple, direct statements and more | ||
complex, granular descriptions. This may require a trade-off between | ||
directness and completeness.</p> | ||
|
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.
Instead of going into details, how about following the above paragraph directly with an example:
For instance, given the following:
<Bob> <is interested in> <the Mona Lisa>
We may want to say the following about the relationship:
<Bob> <is interested in> <the Mona Lisa> <is an> <Interest> <4th of October 1998>
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.
Going into details is what this is about, but I appreciate your advice to approach it gently. However, your suggested form can be misleading, as it appears to conflate the proposition with a circumstance thereof.
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 feel like <Bob> <is interested in> <the Mona Lisa>
is already quite specific - it does not reflect a need for an occurrence / token. (Avoiding the discussion on whether occurrences are always needed.) Hence, I didn't see an issue with this particular example.
E.g., <the Mona Lisa> <depicts> <cypress tree>
could be found in many different sources and at different dates.
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 think in this PR we should focus on how to use reifiers, and continue the debate on why they are needed in w3c/rdf-star-wg#138? The primer should convey the design, but not all of the theory. (Perhaps RDF Concepts needs to cover more of that? Or Semantics; after all, it is where the original reification documentation resides.)
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.
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.
Triple terms can only appear in the object position, and should only be used as the object of a special predicate representing this "concretization" relation.
Depending on the outcome of the discussion, this statement can be weakened.
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.
Conceptually, we can annotate a simple statement with a reference to something more detailed.
[figure]
The dotted circle above the "is intersted in" arc is called a reifier and expresses a concrete circumstance of Bob's interest, with a type and a date of origin.
I feel there is a non sequitur here; the terms annotate, reference and details are no longer used in the second part.
A suggestion:
Conceptually, we can annotate a simple statement with something more detailed.
[figure]
The dotted circle annotates the "is interested in" arc and is called a reifier.
A reifier expresses a concrete circumstance of Bob's interest, and details it with a type and a date of origin.
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 have a feeling that confusion will increase due to a <Interest>
and <is interested in>
. Changing the latter to <hasInterest>
might be enough to solve this.
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.
Thank you @william-vw and @pchampin for these suggestions! I've tried to work much of that into 051a328.
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 have a feeling that confusion will increase due to
a <Interest>
and<is interested in>
. Changing the latter to<hasInterest>
might be enough to solve this.
The <is interested in>
is the more abstract binary relationship, following the existing example in the primer. Changing it to <hasInterest>
implies remodelling, to instead link from <Bob>
to the reified <Interest>
. That would be better modelling if such interests as resources where of primary interest (heh). But the point here is to show how such more detailed interests can link to the simple proposition itself, as a reification thereof. Thus allowing us to keep the (arguably too) simple relationship.
spec/index.html
Outdated
requiring a complete remodelling into more detailed structures, for the | ||
sake of occasionally adding details.</p> | ||
|
||
<p>Conceptually, we can <em>annotate</em> a simple statement with a |
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 think I understand the reason for the original example - annotations as a segue to reifiers - but I felt it difficult to understand. Perhaps due to its format (with the tilde) being not immediately clear to me, it no longer mentioning triple terms (so it felt like a bit of a non-sequitur), and it introducing another concept (IMO unnecessarily, namely "annotation").
Perhaps it could be simplified as follows:
This can be done using triple terms as references to statements. A triple term is a fixed object that identifies a statement using its subject, predicate and object components. For instance:
⟪ <Bob> <is interested in> <the Mona Lisa> ⟫
In turn, triple terms can be "concretized" using so-called reifiers. Here, a reifier turns Bob's interest into a concrete circumstance, which can then be described:
<Bob's interest> <reifies> ⟪ <Bob> <is interested in> <the Mona Lisa> ⟫ . <Bob's interest> <is an> <Interest> . <Bob's interest> <since> <4th of October 1998> .
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.
The advice from e.g. @franconi during the last Semantic TF meeting was (IIUC) to concentrate on annotations. I agree, admittedly based on my library work, where the bulk of our use cases for RDF-star utilize those. To mitigate that bias, I've looked elsewhere too. Other sentiments appear to confirm this; see e.g. this post by Bob DuCharme. My experiments with our collected use cases (including Wikidata and Uniprot descriptions adapted to this form) mostly seem to confirm this as well.
So my goal here, which might not be achieved yet, is to begin with that and then explain how such "footnotes with details" are expressed trough reifying triples.
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.
Your explanation of "footnotes with details" makes it clearer what your intent was :-)
I can see an analogy with Wikipedia where a claim can be "backed" by multiple citations; each of those citations can then have separate provenance data.
(To me, a footnote provides singular details on a claim; it would rather be in line with the triple term as subject view.)
In other words, the analogy wasn't fully clear to me ...
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 also believe that annotations are the easiest path to come to triple terms. That was the original RDF-star use case (where embedded triples were also automatically asserted).
spec/index.html
Outdated
|
||
<p>Formally, an annotation is formed by two triples: the statement itself | ||
and a <a data-cite="RDF12-CONCEPTS#dfn-reifying-triple">reifying | ||
triple</a>. This expresses the simple relationship and the reifying relation to that from the circumstance, as a concretization thereof:</p> |
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.
This sentence took many readings (I think I still don't understand it) :-)
This expresses the simple relationship and the reifying relation to that from the circumstance, as a concretization thereof
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.
Point taken; it got a bit twisted during a rewrite. How about:
This expresses, on the one hand, the relationship as an abstract statement, and on the other, the circumstance as a concretization of that abstraction.
?
spec/index.html
Outdated
can also annotate statements with multiple reifiers, to describe different | ||
circumstances varying in time, location, etc.</p> | ||
|
||
<aside class="note">Triple terms were added to the RDF data model in RDF 1.2.</aside> |
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.
We could also add a separate info box on alternatives:
<aside class="note">
We could describe triples using more sophisticated modelling. ...
Using triple terms allows us to keep triples as is, rather than requiring a complete remodelling into more detailed structures, for the sake of occasionally adding details. ...
</aside>
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.
Agreed. Please see if 051a328 addresses this.
spec/index.html
Outdated
<p>Note that triple terms only <em>reference</em> statements. This means | ||
that we can describe statements without implying them. This is useful for | ||
describing unknown propositions, such as suggestions or disputed claims. We | ||
can also annotate statements with multiple reifiers, to describe different |
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.
It would be great if we could elaborate on that aspect, since it outlines the practical benefits of using reifiers.
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.
Agree here too; see 051a328.
spec/index.html
Outdated
<section id="section-triple-terms"> | ||
<h3>Triple terms</h3> | ||
|
||
<p>As the basic unit of description in RDF, the triple is a simple |
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.
+1 to @william-vw 's proposal
spec/index.html
Outdated
modelling, there is a tension between simple, direct statements and more | ||
complex, granular descriptions. This may require a trade-off between | ||
directness and completeness.</p> | ||
|
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.
spec/index.html
Outdated
requiring a complete remodelling into more detailed structures, for the | ||
sake of occasionally adding details.</p> | ||
|
||
<p>Conceptually, we can <em>annotate</em> a simple statement with a |
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 also believe that annotations are the easiest path to come to triple terms. That was the original RDF-star use case (where embedded triples were also automatically asserted).
spec/index.html
Outdated
|
||
<p>To bridge this difference, we can use <a | ||
data-cite="RDF12-CONCEPTS#dfn-triple-term">triple terms</a> as | ||
<em>references</em> to simple statements. A triple term is a fixed object |
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 am not sure what "fixed" is supposed to mean here. Are there any objects in an RDF graph, that are not "fixed"?
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.
No, I guess there aren't. (Except maybe bnodes?)
That phrasing is an attempt to hint at the unicity ("type nature") of the propositions denoted by triple terms. But I'll seek to rephrase this as I'm working your other suggestions into the text. (Reordering; adding a figure; cutting or shortening.)
spec/index.html
Outdated
modelling, there is a tension between simple, direct statements and more | ||
complex, granular descriptions. This may require a trade-off between | ||
directness and completeness.</p> | ||
|
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.
Note that this graphical example would change the description of the example.
Here is an attempt to reuse @niklasl 's narrative about examples 5-7, adapting it to this figure instead.
Conceptually, we can annotate a simple statement with a reference to something more detailed.
[figure]
The dotted circle above the "is intersted in" arc is called a reifier and expresses a concrete circumstance of Bob's interest, with a type and a date of origin.
Formally, this annotation is composed of four triples:
<Bob> <is interested in> <the Mona Lisa> .
<reifier> <is a concretization of> «( <Bob> <is interested in> <the Mona Lisa> )» .
<reifier> <is an> <Interest> .
<reifier> <since> <4th of October 1998> .
The object of the second triple is a triple term describing the statement of which the reifier is a concretization. Triple terms can only appear in the object position, and should only be used as the object of a special predicate representing this "concretization" relation.
spec/index.html
Outdated
</pre> | ||
|
||
<p><a data-cite="RDF12-CONCEPTS#dfn-reifier">Reifiers</a> are subjects of | ||
triples relating to triple terms using the <code>rdf:reifies</code> |
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.
pnames have not been introduced yet, so this should rather be the full IRI (or an abstract description thereof).
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 thank you for these and refer to 051a328 to see if that is more satisfactory.
@pchampin Yes, I have an SVG prepared for illustration, but held that to first get the content approved. I'll add my SVG versions (for all illustrations) in a separate PR. It looked similar to yours: But I think your shape looks friendlier (less "space-ship"), and I really like the squiggly line; so I'll move towards your design. 😃 |
- Add illustration of the annotation example - Adjust introduction and narrative according to suggestions - Move detailed remarks to aside notes
Thanks @niklasl for the updated PR. As I mentioned before, I think "Bob's interest" is not an ideal example, as it would be rather artificial to have multiple reifiers (or circumstances) - Bob's interest ended in April and restarted in March? Alice wrote it down first, and then Trudy? They can be examples, but I feel they are rather artificial. I think that a more general example like |
I also feel that the language is still a bit confusing. Circumstances are underlying relationships, but they also concretize propositions, annotate statements, ... |
spec/index.html
Outdated
modelling, there is a tension between simple, direct statements and more | ||
complex, granular descriptions. This may require a trade-off between | ||
directness and completeness.</p> | ||
|
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 have a feeling that confusion will increase due to a <Interest>
and <is interested in>
. Changing the latter to <hasInterest>
might be enough to solve this.
constituent subject, predicate and object components.</p> | ||
|
||
<p>Triple terms may only appear in the <strong>object position</strong>, | ||
and should be used with the special <em>reifies</em> predicate of reifying |
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.
Is this should
normative?
and should be used with the special <em>reifies</em> predicate of reifying | |
and SHOULD be used with the special <em>reifies</em> predicate of reifying |
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.
or not?
and should be used with the special <em>reifies</em> predicate of reifying | |
and ought to be used with the special <em>reifies</em> predicate of reifying |
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.
The primer isn't a REC, it is a W3C Working Group Note (at least RDF 1.1 was). The text isn't normative and it does not have the activating text: "The key words ... in this document are to be interpreted as described in RFC 2119."
"should" is fine.
The point of RFC2119 is to have emphasis when a word has spec-significance.
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 agree to keep "should" (it is also used in other places in the text). @TallTed do you accept that? (Feel free to just "Resolve conversation" if so. 🙂 )
Someone may lose interest in something for many years, only to have it rekindled again. Alice may have discovered Bob's interest when they went on a school trip to the Louvre, and she may have stated that he is interested in the painting some years later; and so on. I found it a useful enough example of an atomic proposition meaning a simple relationship, which shows to be too abstract a model of the circumstances, when we want to express more detailed information underlying this simple fact (whilst keeping it, rather than do a remodelling).
Well, we could just exemplify multiple data sources of any of the statements. But that brings us quite close to the following subsection about named graphs, which is provenance-oriented. So I do think an example which builds on the "central" example is useful, showcasing an annotation to provide circumstantial details. (This is based on seeing such a description pattern in RDF-star over the years. And I think with reifiers it makes sense.) The examples in Turtle do show a little bit more detail, particularly choice of RDF vocabularies (a prov:Influence and a classic rdf:Statement), which for the interested may provide enough reference to pursue more avout the various modelling choices. (And remember, all models are wrong.) |
Well yes, they are both mechanisms that can be used for similar purposes. I think that readers will be able to see the parallels between them, regardless of the example used. I don't think an overlap with named graphs should stop us from giving the most suitable examples (whatever they may be). On that note, we should likely discuss the similarities & differences between them in a notice box... I also noticed that the interest example is part of the named graphs example: |
Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com>
Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com>
I agree.
Yes, I think so too. I have such a note in the works, but intended for a separate PR (as I expect an equal amount of discussion on that).
My purpose here was to annotate the central example, so "yes", in that sense. I tried to stay neutral here in relation to named graphs. I'm trying to get this PR accepted to get this explanation in place (of course with more improvements if asked for, but ideally more of the editorial sort, unless there is strong dissent regarding narrative). Perhaps a separate issue could be raised if the choice of example is of strong concern? (I have prepared SVG versions of all illustrations, so while I'd rather keep the existing examples, it's at least easier to alter it with those (there's at least a date discrepancy in one that I'd like to fix).) |
This adds a subsection to introduce triple terms with a basic example, and examples of annotations and reifiers in the Turtle syntax section, based on the introductory example.
Note
Use this githack preview to view the results (since the generated preview does not handle included files).
Preview | Diff