From 0b1993eff655db9eebce3cd72dc3196b7eba9fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Thu, 5 Dec 2024 20:25:26 +0100 Subject: [PATCH 01/16] Add subsection about triple terms --- spec/index.html | 59 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/spec/index.html b/spec/index.html index 48ed9e6..3f80370 100644 --- a/spec/index.html +++ b/spec/index.html @@ -237,8 +237,8 @@

Triples

terms of this abstract syntax. Concrete RDF syntax is introduced later in .

-

In the next three subsections we discuss the three types of RDF data - that occur in triples: IRIs, literals and blank nodes.

+

In the next four subsections we discuss the four types of RDF data + that occur in triples: IRIs, literals, blank nodes and triple terms.

@@ -351,6 +351,61 @@

Blank nodes

+
+

Triple terms

+ +

A triple is a simple abstraction for stating a directed, binary + relationship between two resources. It is the basic unit of description in + RDF. Sometimes we need to describe more detailed circumstances underlying + such relationships. While you can describe these using more sophisticated + modelling, there is a tension between simple, direct statements and more + complex, granular descriptions.

+ +

RDF defines triple terms for this + purpose. They make it possible to describe more concrete circumstances, + such as events, relationship entities or tokens in data sources, in + relation to simple statements. This allows us to keep the simple + relationships, rather than remodel them into more complex structures.

+ +

Conceptually, we can annotate a simple statement:

+
+      <Bob> <is interested in> <the Mona Lisa> ~ <Bob's interest> .
+    
+ +

This annotation refers to the interest itself, as a concrete + circumstance. We can thus describe it concretely:

+
+      <Bob's interest> <is an> <Interest> .
+      <Bob's interest> <since> <4th of October 1998> .
+    
+ +

An annotation is formed by the statement itself and a + reifying triple.

+
+      <Bob> <is interested in> <the Mona Lisa> .
+      <Bob's interest> <reifies> <Bob> <is interested in> <the Mona Lisa> .
+    
+ +

Formally, a reifying triple is expressed as a specific relationship from + a resource, known as a reifier, and a triple + term. A triple term is a fixed object which identify a statement + through its constituent subject, predicate and object.

+ +

Reifiers are subjects of triples relating to triple terms using the + rdf:reifies predicate. Triple terms should only appear in the + object position of such reifying triples.

+ +

Note that triple terms only reference statements. That means + that we can describe statements without implying them. This can be useful + to describe suggestions or disputed claims. We can also annotate statements + with multiple reifiers, to describe various circumstances or sources + pertaining to different times, etc.

+ + +
+

Multiple graphs

From 3a4f1964d0ef94a73233f8e8112adf867f03f3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Thu, 5 Dec 2024 20:28:18 +0100 Subject: [PATCH 02/16] Add Turtle examples of reifiers and annotations --- spec/example-named-annotations.ttl | 11 ++++++++++ spec/example-unnamed-annotation.ttl | 4 ++++ spec/example-unnamed-reifier.ttl | 6 ++++++ spec/index.html | 32 +++++++++++++++++++++++++++++ 4 files changed, 53 insertions(+) create mode 100644 spec/example-named-annotations.ttl create mode 100644 spec/example-unnamed-annotation.ttl create mode 100644 spec/example-unnamed-reifier.ttl diff --git a/spec/example-named-annotations.ttl b/spec/example-named-annotations.ttl new file mode 100644 index 0000000..c2dc979 --- /dev/null +++ b/spec/example-named-annotations.ttl @@ -0,0 +1,11 @@ + foaf:topic_interest wd:Q12418 ~ + ~ . + + + a prov:Influence ; + dcterms:date "1998-10-04"^^xsd:date . + + + a rdf:Statement ; + dcterms:date "2004-01-12"^^xsd:date ; + dcterms:creator . diff --git a/spec/example-unnamed-annotation.ttl b/spec/example-unnamed-annotation.ttl new file mode 100644 index 0000000..5a80253 --- /dev/null +++ b/spec/example-unnamed-annotation.ttl @@ -0,0 +1,4 @@ +PREFIX prov: + + foaf:topic_interest wd:Q12418 {| a prov:Influence ; + dcterms:date "1998-10-04"^^xsd:date |} . diff --git a/spec/example-unnamed-reifier.ttl b/spec/example-unnamed-reifier.ttl new file mode 100644 index 0000000..fb2b0bf --- /dev/null +++ b/spec/example-unnamed-reifier.ttl @@ -0,0 +1,6 @@ +PREFIX rdf: + +<< foaf:topic_interest wd:Q12418 >> + a rdf:Statement ; + dcterms:date "2004-01-12"^^xsd:date ; + dcterms:creator . diff --git a/spec/index.html b/spec/index.html index 3f80370..64e8b72 100644 --- a/spec/index.html +++ b/spec/index.html @@ -826,6 +826,38 @@
Representation of blank nodes

For more details about the syntax of Turtle please consult the Turtle specification [[RDF12-TURTLE]].

+
+
Representations of reifying triples
+ +

Turtle provides concise notation for reifying and annotating + triples. This allows us to encode the example in the section about triple terms, where the simple fact + that Bob is interested in the Mona Lisa was annotated with a more + specific circumstance.

+ +

We can use an unnamed annotation to state when the interest itself + began:

+
+        
+ +

We can also describe that Alice has once made the simple claim. Here + we use syntax for a reifying triple, which references it without + implying its truth:

+
+        
+ +

The previous two descriptions can also be combined, as two + annotations on one statement. Here we also identify the reifiers with + IRIs:

+
+        
+
From c444e0d8474b2c9306c7274d9fd6dd8f67dc4c4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Sun, 8 Dec 2024 00:04:53 +0100 Subject: [PATCH 03/16] Move "more details about Turtle" to end of section --- spec/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/index.html b/spec/index.html index 64e8b72..0c93e18 100644 --- a/spec/index.html +++ b/spec/index.html @@ -822,8 +822,6 @@
Representation of blank nodes
the square brackets are interpreted as triples with the blank node as subject. Lines starting with '#' represent comments.

- -

For more details about the syntax of Turtle please consult the Turtle specification [[RDF12-TURTLE]].

@@ -858,6 +856,8 @@
Representations of reifying triples
data-include-format="text">
+ +

For more details about the syntax of Turtle please consult the Turtle specification [[RDF12-TURTLE]].

From 7af2b16f2e1fe686ba8d4f01f4fca49e72699291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Sun, 8 Dec 2024 17:24:14 +0100 Subject: [PATCH 04/16] Update subsection about triple terms --- spec/index.html | 71 ++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/spec/index.html b/spec/index.html index 0c93e18..b1cb05d 100644 --- a/spec/index.html +++ b/spec/index.html @@ -354,54 +354,57 @@

Blank nodes

Triple terms

-

A triple is a simple abstraction for stating a directed, binary - relationship between two resources. It is the basic unit of description in - RDF. Sometimes we need to describe more detailed circumstances underlying - such relationships. While you can describe these using more sophisticated +

As the basic unit of description in RDF, the triple is a simple + abstraction for stating a directed relationship between two resources. + Sometimes we need to describe more detailed circumstances underlying such + relationships. While we can describe these using more sophisticated modelling, there is a tension between simple, direct statements and more - complex, granular descriptions.

- -

RDF defines triple terms for this - purpose. They make it possible to describe more concrete circumstances, - such as events, relationship entities or tokens in data sources, in - relation to simple statements. This allows us to keep the simple - relationships, rather than remodel them into more complex structures.

- -

Conceptually, we can annotate a simple statement:

+ complex, granular descriptions. This may require a trade-off between + directness and completeness.

+ +

To bridge this difference, we can use triple terms as + references to simple statements. A triple term is a fixed object + that identifies a statement through its constituent subject, predicate and + object.

+ +

This enable us to describe more concrete circumstances, such as events, + relationship entities or tokens in data sources, in relation to + the simple statements. That allows us to keep them as is, rather than + requiring a complete remodelling into more detailed structures, for the + sake of occasionally adding details.

+ +

Conceptually, we can annotate a simple statement with a + reference to something more detailed:

       <Bob> <is interested in> <the Mona Lisa> ~ <Bob's interest> .
     
-

This annotation refers to the interest itself, as a concrete - circumstance. We can thus describe it concretely:

+

This annotation refers to Bob's interest as a concrete circumstance, with + a date of origin:

       <Bob's interest> <is an> <Interest> .
       <Bob's interest> <since> <4th of October 1998> .
     
-

An annotation is formed by the statement itself and a - reifying triple.

+

Formally, an annotation is formed by two triples: the statement itself + and a reifying + triple. This expresses the simple relationship and the reifying relation to that from the circumstance, as a concretization thereof:

       <Bob> <is interested in> <the Mona Lisa> .
-      <Bob's interest> <reifies> <Bob> <is interested in> <the Mona Lisa> .
+      <Bob's interest> <is a concretization of> «( <Bob> <is interested in> <the Mona Lisa> .
     
-

Formally, a reifying triple is expressed as a specific relationship from - a resource, known as a reifier, and a triple - term. A triple term is a fixed object which identify a statement - through its constituent subject, predicate and object.

- -

Reifiers are subjects of triples relating to triple terms using the - rdf:reifies predicate. Triple terms should only appear in the - object position of such reifying triples.

- -

Note that triple terms only reference statements. That means - that we can describe statements without implying them. This can be useful - to describe suggestions or disputed claims. We can also annotate statements - with multiple reifiers, to describe various circumstances or sources - pertaining to different times, etc.

+

Reifiers are subjects of + triples relating to triple terms using the rdf:reifies + predicate. Triple terms should only appear in the object + position of such reifying triples.

+ +

Note that triple terms only reference 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 + circumstances varying on time, location, etc.

From fad20b78705e4188e834b5d661e950c42db62a10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Sun, 8 Dec 2024 17:57:24 +0100 Subject: [PATCH 05/16] Update participants and editors --- spec/common/participants.html | 2 +- spec/index.html | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/common/participants.html b/spec/common/participants.html index fe5a8a6..d8a0ac4 100644 --- a/spec/common/participants.html +++ b/spec/common/participants.html @@ -1 +1 @@ -Members of the RDF-star Working Group Group included Achille Zappa, Adrian Gschwend, Andy Seaborne, Antoine Zimmermann, Dan Brickley, David Chaves-Fraga, Dominik Tomaszuk, Dörthe Arndt, Enrico Franconi, Fabien Gandon, Gregg Kellogg, Gregory Williams, Jesse Wright, Jose Emilio Labra Gayo, Julián Arenas-Guerrero, Olaf Hartig, Ora Lassila, Pasquale Lisena, Peter Patel-Schneider, Pierre-Antoine Champin, Raphaël Troncy, Ruben Taelman, Rémi Ceres, Souripriya Das, Stuart Sutton, Ted Thibodeau, Thomas Pellissier Tanon, Timothée Haudebourg, and Vladimir Alexiev. +Members of the RDF-star Working Group Group included Achille Zappa, Adrian Gschwend, Alan Snyder, Amin Anjomshoaa, Andy Seaborne, Antoine Zimmermann, Dan Brickley, Dave Raggett, Dominik Tomaszuk, Dörthe Arndt, Enrico Franconi, Erich Bremer, Fabien Gandon, Felix Sasaki, Gregg Kellogg, Gregory Williams, Jean-Yves Rossi, Jose Emilio Labra Gayo, Julián Arenas-Guerrero, Kurt Cagle, Niklas Lindström, Olaf Hartig, Ora Lassila, Pasquale Lisena, Peter Patel-Schneider, Pierre-Antoine Champin, Raphaël Troncy, Richard Lea, Ruben Taelman, Rémi Ceres, Souripriya Das, Ted Thibodeau Jr, Thomas Lörtsch, Thomas Pellissier Tanon, Timothée Haudebourg, and Vladimir Alexiev. diff --git a/spec/index.html b/spec/index.html index b1cb05d..2d6c7e5 100644 --- a/spec/index.html +++ b/spec/index.html @@ -21,6 +21,7 @@ editors: [ { name: "Pierre-Antoine Champin", w3cid: "42931"}, + { name: "Niklas Lindström" }, ], formerEditors: [ From b54250e8bd6679f03107fb18bdfd64e900ee0a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Sun, 8 Dec 2024 20:00:19 +0100 Subject: [PATCH 06/16] Incorporate suggested editorial improvements --- spec/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/index.html b/spec/index.html index 2d6c7e5..e2a8f42 100644 --- a/spec/index.html +++ b/spec/index.html @@ -357,8 +357,8 @@

Triple terms

As the basic unit of description in RDF, the triple is a simple abstraction for stating a directed relationship between two resources. - Sometimes we need to describe more detailed circumstances underlying such - relationships. While we can describe these using more sophisticated + Sometimes, we need to describe more detailed circumstances underlying such + relationships. While we could describe these using more sophisticated modelling, there is a tension between simple, direct statements and more complex, granular descriptions. This may require a trade-off between directness and completeness.

@@ -367,9 +367,9 @@

Triple terms

data-cite="RDF12-CONCEPTS#dfn-triple-term">triple terms as references to simple statements. A triple term is a fixed object that identifies a statement through its constituent subject, predicate and - object.

+ object components.

-

This enable us to describe more concrete circumstances, such as events, +

This enables us to describe more concrete circumstances, such as events, relationship entities or tokens in data sources, in relation to the simple statements. That allows us to keep them as is, rather than requiring a complete remodelling into more detailed structures, for the @@ -403,9 +403,9 @@

Triple terms

Note that triple terms only reference 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 + describing unknown propositions, such as suggestions or disputed claims. We can also annotate statements with multiple reifiers, to describe different - circumstances varying on time, location, etc.

+ circumstances varying in time, location, etc.

From 051a328ed372464eb67dda95657cc44672638ffc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Sat, 14 Dec 2024 21:20:23 +0100 Subject: [PATCH 07/16] Update subsection about triple terms - Add illustration of the annotation example - Adjust introduction and narrative according to suggestions - Move detailed remarks to aside notes --- ...eonardo_da_Vinci,_from_C2RMF_retouched.jpg | Bin 0 -> 44970 bytes spec/example-triple-annotation.svg | 91 +++++++++++++++ spec/figures.css | 29 +++++ spec/index.html | 110 +++++++++--------- 4 files changed, 177 insertions(+), 53 deletions(-) create mode 100644 spec/Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg create mode 100644 spec/example-triple-annotation.svg create mode 100644 spec/figures.css diff --git a/spec/Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg b/spec/Mona_Lisa,_by_Leonardo_da_Vinci,_from_C2RMF_retouched.jpg new file mode 100644 index 0000000000000000000000000000000000000000..34b42eacf0e0c8acae15d00d6cb5cb8579ab7e24 GIT binary patch literal 44970 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 + + + + + + + + + + + + + + + + + + + + + + + + Bob + + + + is interested in + + + + + + "Mona Lisa" + + + + The Mona Lisa + + + + + + + + + + + is an + + + + Interest + + + + + since + + + + 4th of October 1998 + + + + diff --git a/spec/figures.css b/spec/figures.css new file mode 100644 index 0000000..1a4e46c --- /dev/null +++ b/spec/figures.css @@ -0,0 +1,29 @@ +svg { + font-family: sans-serif; + margin: auto; + --bg: #fff; + --fg: #000; + --green: #4aa35b; + --red:red; + --blue: #3575b8; + --purple: #82b; + --white: white; +} + +.label { font-size:18px; font-weight:bold } + +text.iri { font-size:12px; fill:var(--fg); stroke:none } + +.green path { stroke:var(--green) } +.green { fill:var(--green) } + +.blue path { stroke:var(--blue) } +.blue { fill:var(--blue) } + +.purple path { stroke:var(--purple) } +.purple { fill:var(--purple) } + +.arrow text { font-size: 16px } +.arrow textPath { text-anchor: middle } +.arrow path { stroke-width:2.0;marker-end:url(#ConcaveTriangle) } +.arrow.back path { stroke-width:1.6;marker-end:none;marker-start:url(#ConcaveTriangle) } diff --git a/spec/index.html b/spec/index.html index e2a8f42..cc26806 100644 --- a/spec/index.html +++ b/spec/index.html @@ -355,57 +355,61 @@

Blank nodes

Triple terms

-

As the basic unit of description in RDF, the triple is a simple - abstraction for stating a directed relationship between two resources. - Sometimes, we need to describe more detailed circumstances underlying such - relationships. While we could describe these using more sophisticated - modelling, there is a tension between simple, direct statements and more - complex, granular descriptions. This may require a trade-off between - directness and completeness.

- -

To bridge this difference, we can use triple terms as - references to simple statements. A triple term is a fixed object - that identifies a statement through its constituent subject, predicate and - object components.

- -

This enables us to describe more concrete circumstances, such as events, - relationship entities or tokens in data sources, in relation to - the simple statements. That allows us to keep them as is, rather than - requiring a complete remodelling into more detailed structures, for the - sake of occasionally adding details.

- -

Conceptually, we can annotate a simple statement with a - reference to something more detailed:

-
-      <Bob> <is interested in> <the Mona Lisa> ~ <Bob's interest> .
-    
+

As the basic unit of description in RDF, the triple states a simple, + directed relationship between two resources. Sometimes, we need to describe + more detailed circumstances underlying such relationships. Conceptually, we + can annotate a statement with something more detailed:

-

This annotation refers to Bob's interest as a concrete circumstance, with - a date of origin:

-
-      <Bob's interest> <is an> <Interest> .
-      <Bob's interest> <since> <4th of October 1998> .
-    
+
+ + +
Informal triple annotation example: a concretization of a + statement described with its own characteristics.
+
-

Formally, an annotation is formed by two triples: the statement itself - and a reifying - triple. This expresses the simple relationship and the reifying relation to that from the circumstance, as a concretization thereof:

+

In conjunction to the arc expressing the relationship, the dashed circle + in the figure expresses a reifier. This is Bob's interest, + with a type and a date of origin, as a concrete circumstance of the fact + that Bob is interested in the Mona Lisa.

+ +

Formally, this annotation is composed of four triples:

       <Bob> <is interested in> <the Mona Lisa> .
       <Bob's interest> <is a concretization of> «( <Bob> <is interested in> <the Mona Lisa> .
+      <Bob's interest> <is an> <Interest> .
+      <Bob's interest> <since> <4th of October 1998> .
     
-

Reifiers are subjects of - triples relating to triple terms using the rdf:reifies - predicate. Triple terms should only appear in the object - position of such reifying triples.

- -

Note that triple terms only reference 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 - circumstances varying in time, location, etc.

+

The second triple is called a reifying triple, and + expresses a concretization of the proposition stated by the first triple. + The object of a reifying triple is a triple term. It denotes the + proposition itself, as a logical, abstract object identified through its + constituent subject, predicate and object components.

+ +

Triple terms may only appear in the object position, + and should be used with the special reifies predicate of reifying + triples.

+ + +
@@ -476,13 +480,13 @@

Multiple graphs

in the intended way. Possible semantics of datasets are described in a separate note [[RDF11-DATASETS]].

-
+
Informal graph of the sample dataset
Informal graph of the sample dataset
-

Fig. 3 depicts the sample dataset. +

Fig. 4 depicts the sample dataset. provides an example of concrete syntax for this dataset.

@@ -714,7 +718,7 @@

N-Triples

The figure below shows the triples resulting from the example:

-
+
Graph of the sample triples
RDF graph resulting from the N-Triples example
@@ -738,7 +742,7 @@

Turtle

support for namespace prefixes, lists and shorthands for datatyped literals. Turtle provides a trade-off between ease of writing, ease of parsing and readability. The graph shown in - Fig. 4 can be + Fig. 5 can be represented in Turtle as follows:

@@ -927,7 +931,7 @@ 

TriG

The figure below shows the triples resulting from this example.

-
+
Triples resulting from the TriG example
Triples resulting from the TriG example
@@ -955,7 +959,7 @@

N-Quads

The nine lines in the N-Quads example correspond to the nine - arcs in Fig. 5. Lines 1-7 represent quads, where the first + arcs in Fig. 6. Lines 1-7 represent quads, where the first element constitutes the graph IRI. The part of the quad after the graph IRI specifies the subject, predicate and object of the statement, following the syntactic @@ -983,7 +987,7 @@

JSON-LD

@graph keyword.

The following JSON-LD example encodes the graph of Fig. 4:

+ href="#fig5">Fig. 5:

       01    {
@@ -1083,7 +1087,7 @@ 

RDFa

Snippets).

The HTML example below encodes the - RDF graph depicted in Fig. 4:

+ RDF graph depicted in Fig. 5:

       01  <body prefix="foaf: http://xmlns.com/foaf/0.1/
@@ -1181,7 +1185,7 @@ 

RDF/XML

languages listed here have been adopted and standardized.

The RDF/XML example below encodes the - RDF graph depicted in Fig. 4:

+ RDF graph depicted in Fig. 5:

       01    <?xml version="1.0" encoding="utf-8"?>

From 962dec81c5a08002fd88d3e8bf2146b0b6e7a958 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= 
Date: Sun, 15 Dec 2024 00:30:45 +0100
Subject: [PATCH 08/16] Move note about added triple terms to Changes section

---
 spec/index.html | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/spec/index.html b/spec/index.html
index cc26806..f9d7e25 100644
--- a/spec/index.html
+++ b/spec/index.html
@@ -410,8 +410,6 @@ 

Triple terms

We can also annotate statements with multiple reifiers, to describe different circumstances varying in time, location, etc. - -
@@ -1455,7 +1453,7 @@

Changes between RDF 1.0 and RDF 1.1

Changes between RDF 1.1 and RDF 1.2

    - +
  • Added information about triple terms (new in RDF 1.2).
From a7d1daf68f2d510185b628de7ae78725b6961350 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Wed, 18 Dec 2024 17:38:12 +0100 Subject: [PATCH 09/16] Apply suggestions from code review Co-authored-by: Ted Thibodeau Jr --- spec/index.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/index.html b/spec/index.html index f9d7e25..265f88b 100644 --- a/spec/index.html +++ b/spec/index.html @@ -238,8 +238,8 @@

Triples

terms of this abstract syntax. Concrete RDF syntax is introduced later in .

-

In the next four subsections we discuss the four types of RDF data - that occur in triples: IRIs, literals, blank nodes and triple terms.

+

In the next four subsections, we discuss the four types of RDF data + that occur in triples: IRIs, literals, blank nodes, and triple terms.

@@ -355,7 +355,7 @@

Blank nodes

Triple terms

-

As the basic unit of description in RDF, the triple states a simple, +

As the basic unit of description in RDF, a triple states a simple, directed relationship between two resources. Sometimes, we need to describe more detailed circumstances underlying such relationships. Conceptually, we can annotate a statement with something more detailed:

@@ -367,7 +367,7 @@

Triple terms

statement described with its own characteristics.
-

In conjunction to the arc expressing the relationship, the dashed circle +

In conjunction with the arc expressing the relationship, the dashed circle in the figure expresses a reifier. This is Bob's interest, with a type and a date of origin, as a concrete circumstance of the fact @@ -387,7 +387,7 @@

Triple terms

The object of a reifying triple is a triple term. It denotes the proposition itself, as a logical, abstract object identified through its - constituent subject, predicate and object components.

+ constituent subject, predicate, and object components.

Triple terms may only appear in the object position, and should be used with the special reifies predicate of reifying From b714385931abd798e959cef94811940733b72a16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Wed, 18 Dec 2024 17:50:24 +0100 Subject: [PATCH 10/16] Rephrase triple term note intro and add links Co-authored-by: Ted Thibodeau Jr --- spec/index.html | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/spec/index.html b/spec/index.html index 265f88b..ac77e0b 100644 --- a/spec/index.html +++ b/spec/index.html @@ -394,10 +394,14 @@

Triple terms

triples.

-

In conjunction with the arc expressing the relationship, the dashed circle - in the figure expresses a In conjunction with the arc expressing the relationship, the purple + circle underneath expresses a reifier. This is Bob's interest, with a type and a date of origin, as a concrete circumstance of the fact that Bob is interested in the Mona Lisa.

From 4644bc0daee01974907a31898fc87f5df837fb21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Thu, 23 Jan 2025 23:38:03 +0100 Subject: [PATCH 14/16] Update spec/index.html Co-authored-by: Ted Thibodeau Jr --- spec/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/index.html b/spec/index.html index 52f207d..dfa1255 100644 --- a/spec/index.html +++ b/spec/index.html @@ -838,7 +838,7 @@
Representation of blank nodes
Representations of reifying triples
-

Turtle provides concise notation for reifying and annotating +

Turtle provides a concise notation for reifying and annotating triples. This allows us to encode the example in the section about triple terms, where the simple fact that Bob is interested in the Mona Lisa was annotated with a more From 3e07f935a5c91bc860783c5b15ea90d6bd52230f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Lindstr=C3=B6m?= Date: Thu, 23 Jan 2025 23:38:39 +0100 Subject: [PATCH 15/16] Update spec/index.html Co-authored-by: Ted Thibodeau Jr --- spec/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/index.html b/spec/index.html index dfa1255..4915b59 100644 --- a/spec/index.html +++ b/spec/index.html @@ -852,7 +852,7 @@

Representations of reifying triples

We can also describe that Alice has once made the simple claim. Here - we use syntax for a reifying triple, which references it without + we use the syntax of a reifying triple, which references it without implying its truth:

Date: Thu, 23 Jan 2025 23:38:57 +0100
Subject: [PATCH 16/16] Update spec/index.html

Co-authored-by: Ted Thibodeau Jr 
---
 spec/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/spec/index.html b/spec/index.html
index 4915b59..92159d7 100644
--- a/spec/index.html
+++ b/spec/index.html
@@ -868,7 +868,7 @@ 
Representations of reifying triples
-

For more details about the syntax of Turtle please consult the Turtle specification [[RDF12-TURTLE]].

+

For more details about the syntax of Turtle, please consult the Turtle specification [[RDF12-TURTLE]].