From 95194b5aa3ea8c6b35bd0416c472377d0ec3e47e Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Champin Date: Thu, 13 Feb 2025 15:32:17 +0100 Subject: [PATCH 1/7] address w3c/rdf-star-wg#145 redefine "RDF triple" so that "triple term" and "asserted triple" are two different roles for triples, rather than objects of different nature. This also induced some changes in Section 1 "Introduction", but the rest of the text works well with this change. --- spec/index.html | 126 +++++++++++++++++++++++------------------------- 1 file changed, 59 insertions(+), 67 deletions(-) diff --git a/spec/index.html b/spec/index.html index a4a1c2b..25dc7ac 100644 --- a/spec/index.html +++ b/spec/index.html @@ -67,8 +67,8 @@ are comprised of a default graph and zero or more named graphs. -

RDF 1.2 introduces triple terms as another kind of RDF term - which can be used as the object of another triple. +

RDF 1.2 introduces the ability to use an RDF triple + as a triple term, in the object position of another triple. RDF 1.2 also introduces directional language-tagged strings, which contain a base direction element that allows the initial text direction to be specified for presentation by a user agent.

@@ -288,9 +288,8 @@

RDF Vocabularies and Namespace IRIs

Triple Terms and Reification

-

A triple term is an RDF term with the components of - an RDF triple, which can be used as the object - of another triple.

+

A triple term is an [=RDF triple=] used as an [=RDF term=] + in the [=object=] position of another triple.

A triple term is not necessarily asserted, allowing statements to be made about other statements that may not be @@ -417,12 +416,14 @@

Working with Multiple RDF Graphs

Equivalence, Entailment and Inconsistency

-

An RDF triple encodes a statement—a - simple logical expression, or claim about the world. +

An RDF triple encodes a proposition—a + simple logical expression, describing a relationship between two entities. + An [=asserted triple=] is a claim that the corresponding proposition is true. An RDF graph is the conjunction (logical AND) of - its triples. The precise details of this meaning of RDF triples and graphs are + all the claims made by its [=asserted triples=]. + The precise details of this meaning of [=RDF triples=] and [=RDF graphs=] are the subject of [[[RDF12-SEMANTICS]]] [[RDF12-SEMANTICS]], which yields the - following relationships between RDF graphs:

+ following relationships between RDF graphs:

Entailment
@@ -547,21 +548,37 @@

RDF Graphs

An RDF graph is a set of RDF triples.

-

An RDF triple is said to be asserted in an RDF graph if it is an element of the RDF graph.

-

Triples

-

An RDF triple (usually called "triple") - is a 3-tuple (|s|, |p|, |o|) with the following characteristics:

+

An RDF triple + (often called simply "triple") + is a 3-tuple that is defined recursively as follows:

    -
  • |s| is an IRI or a blank node.
  • -
  • |p| is an IRI.
  • -
  • |o| is an IRI, a blank node, a literal, - or a triple term.
  • +
  • + If |s| is an [=IRI=] or a [=blank node=], + |p| is an [=IRI=], and + |o| is an [=IRI=], a [=blank node=], or a [=literal=], + then (|s|, |p|, |o|) is an [=RDF triple=]. +
  • + +
  • + If |s| is an [=IRI=] or a [=blank node=], + |p| is an [=IRI=], and + |o| is an [=RDF triple=], + then (|s|, |p|, |o|) is an [=RDF triple=]. +
+

The three components (|s|, |p|, |o|) of an [=RDF triple=] are respectively called the subject, predicate and object of the triple.

+ +

An [=RDF triple=] used as the [=object=] of another [=triple=] is called a triple term. + An [=RDF triple=] is said to be asserted in an [=RDF graph=] if it is an element of the [=RDF graph=]. + In a given [=RDF graph=], a [=triple=] can appear as a [=triple term=], as an [=asserted triple=], or both. +

+

IRIs, literals, blank nodes, and triple terms are collectively known as RDF terms.

@@ -575,9 +592,32 @@

Triples

http://example.org/.

The set of nodes of an RDF graph - is the set of subjects and objects of the triples in the graph. - It is possible for a predicate IRI to also occur as a node in + is the set of subjects and objects of the asserted triples of the graph. + It is possible for a [=predicate=] [=IRI=] to also occur as a [=node=] in the same graph.

+ +

The set of [=RDF terms=] appearing in an [=RDF triple=] |t| is defined recursively as follows:

+ +
    +
  • The [=subject=], [=predicate=] and [=object=] of |t| [=appear=] in |t|. +
  • If the [=object=] |o| of |t| is a [=triple term=], any [=RDF term=] [=appearing=] in |o| also [=appears=] in |t|. +
+ +

By extension, an [=RDF term=] is said to [=appear=] in an [=RDF graph=] if it appears in an [=asserted triple=] of that graph. An [=RDF triple=] is said to [=appear=] in an [=RDF graph=] if it is either an [=asserted triple=] of that graph or a [=triple term=] [=appearing=] in that graph.

+ + + +

Every triple with a triple term as its [=object=] SHOULD + use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) + as its predicate. + Every triple whose object is not a triple term SHOULD NOT + use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) + as its predicate.

+
@@ -848,54 +888,6 @@

Blank Nodes

-
-

Triple Terms

- -

A triple term is a 3-tuple that is defined recursively as follows:

- - - -

Given a triple (|s|, |p|, |o|), - |s| is called the subject of the triple, - |p| is called the predicate of the triple, and - |o| is called the object of the triple. - Similarly, given a triple term (|s|, |p|, |o|), - |s| is called the subject of the triple term, - |p| is called the predicate of the triple term, and - |o| is called the object of the triple term.

- -

While, syntactically, the notion of an RDF triple - and the notion of a triple term are the same, they represent - different concepts. RDF triples are the members of RDF graphs, - whereas triple terms can be used as components of RDF triples.

- -

The definition of triple term is recursive. - That is, a triple term can itself have an - object component which is another triple term. - However, by this definition, cycles of triple terms cannot be created.

- -

Every triple with a triple term as its object SHOULD - use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) - as its predicate. - Every triple whose object is not a triple term SHOULD NOT - use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) - as its predicate.

-
-

Graph Comparison

From a8d08f47cf318160c81f5f326b3efade2e5763d3 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Champin Date: Fri, 14 Feb 2025 10:22:43 +0100 Subject: [PATCH 2/7] Apply suggestions from code review Co-authored-by: Olaf Hartig --- spec/index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/index.html b/spec/index.html index 25dc7ac..f1a3015 100644 --- a/spec/index.html +++ b/spec/index.html @@ -416,7 +416,7 @@

Working with Multiple RDF Graphs

Equivalence, Entailment and Inconsistency

-

An RDF triple encodes a proposition—a +

An RDF triple encodes a proposition—a simple logical expression, describing a relationship between two entities. An [=asserted triple=] is a claim that the corresponding proposition is true. An RDF graph is the conjunction (logical AND) of @@ -551,8 +551,8 @@

RDF Graphs

Triples

-

An RDF triple - (often called simply "triple") +

An RDF triple + (often simply called "triple") is a 3-tuple that is defined recursively as follows:

    From a069e7b3ec611878d07bfec44418ab66811b26da Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Champin Date: Fri, 14 Feb 2025 10:46:19 +0100 Subject: [PATCH 3/7] replace 'recursively' with 'inductively' in definitions @franconi --- spec/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/index.html b/spec/index.html index f1a3015..f574e88 100644 --- a/spec/index.html +++ b/spec/index.html @@ -553,7 +553,7 @@

    Triples

    An RDF triple (often simply called "triple") - is a 3-tuple that is defined recursively as follows:

    + is a 3-tuple that is defined inductively as follows:

    • @@ -596,7 +596,7 @@

      Triples

      It is possible for a [=predicate=] [=IRI=] to also occur as a [=node=] in the same graph.

      -

      The set of [=RDF terms=] appearing in an [=RDF triple=] |t| is defined recursively as follows:

      +

      The set of [=RDF terms=] appearing in an [=RDF triple=] |t| is defined inductively as follows:

      • The [=subject=], [=predicate=] and [=object=] of |t| [=appear=] in |t|. From 0493b8b68d0d363a889b5250540e73b1fc9165eb Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Champin Date: Mon, 17 Feb 2025 17:13:28 +0100 Subject: [PATCH 4/7] Apply suggestions from code review Co-authored-by: Ted Thibodeau Jr --- spec/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/index.html b/spec/index.html index f574e88..79ac42b 100644 --- a/spec/index.html +++ b/spec/index.html @@ -416,7 +416,7 @@

        Working with Multiple RDF Graphs

        Equivalence, Entailment and Inconsistency

        -

        An RDF triple encodes a proposition—a +

        An RDF triple encodes a proposition — a simple logical expression, describing a relationship between two entities. An [=asserted triple=] is a claim that the corresponding proposition is true. An RDF graph is the conjunction (logical AND) of @@ -576,7 +576,7 @@

        Triples

        An [=RDF triple=] used as the [=object=] of another [=triple=] is called a triple term. An [=RDF triple=] is said to be asserted in an [=RDF graph=] if it is an element of the [=RDF graph=]. - In a given [=RDF graph=], a [=triple=] can appear as a [=triple term=], as an [=asserted triple=], or both. + In a given [=RDF graph=], a [=triple=] can appear as a [=triple term=], an [=asserted triple=], or both.

        IRIs, literals, From c069fa9fe8acdf2d500bbd6dd00bea1c98ca8f5a Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Champin Date: Tue, 18 Feb 2025 12:56:07 +0100 Subject: [PATCH 5/7] reorder text, re-introducing a 'Triple terms' section This also creates a new 'RDF Terms' section, preceding the IRIs, Literals, Blank nodes and Triple terms sections, containing some general definitions about terms. --- spec/index.html | 66 ++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/spec/index.html b/spec/index.html index 79ac42b..eb8acc5 100644 --- a/spec/index.html +++ b/spec/index.html @@ -548,6 +548,10 @@

        RDF Graphs

        An RDF graph is a set of RDF triples.

        +

        An [=RDF triple=] is said to be asserted in an [=RDF graph=] if it is an element of the [=RDF graph=]. +

        +

        Triples

        @@ -573,11 +577,15 @@

        Triples

        The three components (|s|, |p|, |o|) of an [=RDF triple=] are respectively called the subject, predicate and object of the triple.

        -

        An [=RDF triple=] used as the [=object=] of another [=triple=] is called a triple term. - An [=RDF triple=] is said to be asserted in an [=RDF graph=] if it is an element of the [=RDF graph=]. - In a given [=RDF graph=], a [=triple=] can appear as a [=triple term=], an [=asserted triple=], or both. -

        + +

        The definition of triple is recursive. + That is, a triple can itself have an + object component which is another triple. + However, by this definition, cycles of triples cannot be created.

        +
        + +
        +

        RDF terms

        IRIs, literals, blank nodes, and triple terms are collectively known as @@ -595,29 +603,6 @@

        Triples

        is the set of subjects and objects of the asserted triples of the graph. It is possible for a [=predicate=] [=IRI=] to also occur as a [=node=] in the same graph.

        - -

        The set of [=RDF terms=] appearing in an [=RDF triple=] |t| is defined inductively as follows:

        - -
          -
        • The [=subject=], [=predicate=] and [=object=] of |t| [=appear=] in |t|. -
        • If the [=object=] |o| of |t| is a [=triple term=], any [=RDF term=] [=appearing=] in |o| also [=appears=] in |t|. -
        - -

        By extension, an [=RDF term=] is said to [=appear=] in an [=RDF graph=] if it appears in an [=asserted triple=] of that graph. An [=RDF triple=] is said to [=appear=] in an [=RDF graph=] if it is either an [=asserted triple=] of that graph or a [=triple term=] [=appearing=] in that graph.

        - - - -

        Every triple with a triple term as its [=object=] SHOULD - use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) - as its predicate. - Every triple whose object is not a triple term SHOULD NOT - use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) - as its predicate.

        -
        @@ -888,6 +873,31 @@

        Blank Nodes

        +
        +

        Triple terms

        + +

        An [=RDF triple=] used as the [=object=] of another [=triple=] is called a triple term. + In a given [=RDF graph=], a [=triple=] can appear as a [=triple term=], an [=asserted triple=], or both. +

        + +

        The set of [=RDF terms=] appearing in an [=RDF triple=] |t| is defined inductively as follows:

        + +
          +
        • The [=subject=], [=predicate=] and [=object=] of |t| [=appear=] in |t|. +
        • If the [=object=] |o| of |t| is a [=triple term=], any [=RDF term=] [=appearing=] in |o| also [=appears=] in |t|. +
        + +

        By extension, an [=RDF term=] is said to [=appear=] in an [=RDF graph=] if it appears in an [=asserted triple=] of that graph. An [=RDF triple=] is said to [=appear=] in an [=RDF graph=] if it is either an [=asserted triple=] of that graph or a [=triple term=] [=appearing=] in that graph.

        + +

        Every triple with a triple term as its [=object=] SHOULD + use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) + as its predicate. + Every triple whose object is not a triple term SHOULD NOT + use http://www.w3.org/1999/02/22-rdf-syntax-ns#reifies (rdf:reifies) + as its predicate.

        + +
        +

        Graph Comparison

        From 3834bb1160bfa06b63635422d86bb0ff1b0a1aea Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Champin Date: Tue, 18 Feb 2025 15:31:49 +0100 Subject: [PATCH 6/7] Apply suggestions from code review Co-authored-by: Olaf Hartig --- spec/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/index.html b/spec/index.html index eb8acc5..4a6c957 100644 --- a/spec/index.html +++ b/spec/index.html @@ -585,7 +585,7 @@

        Triples

        -

        RDF terms

        +

        RDF Terms

        IRIs, literals, blank nodes, and triple terms are collectively known as @@ -874,7 +874,7 @@

        Blank Nodes

        -

        Triple terms

        +

        Triple Terms

        An [=RDF triple=] used as the [=object=] of another [=triple=] is called a triple term. In a given [=RDF graph=], a [=triple=] can appear as a [=triple term=], an [=asserted triple=], or both. From b5cc7fd018448e847690f662bd583ec9e9756ee0 Mon Sep 17 00:00:00 2001 From: Pierre-Antoine Champin Date: Tue, 18 Feb 2025 17:43:23 +0100 Subject: [PATCH 7/7] Improve definition of 'appears' --- spec/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/index.html b/spec/index.html index 4a6c957..9433fc8 100644 --- a/spec/index.html +++ b/spec/index.html @@ -884,7 +884,7 @@

        Triple Terms

        • The [=subject=], [=predicate=] and [=object=] of |t| [=appear=] in |t|. -
        • If the [=object=] |o| of |t| is a [=triple term=], any [=RDF term=] [=appearing=] in |o| also [=appears=] in |t|. +
        • If a [=triple term=] |t2| appears in |t|, then any [=RDF term=] [=appearing=] in |t2| also [=appears=] in |t|.

        By extension, an [=RDF term=] is said to [=appear=] in an [=RDF graph=] if it appears in an [=asserted triple=] of that graph. An [=RDF triple=] is said to [=appear=] in an [=RDF graph=] if it is either an [=asserted triple=] of that graph or a [=triple term=] [=appearing=] in that graph.