diff --git a/spec/section/output.md b/spec/section/output.md
index f5c81dc..8c2cff7 100644
--- a/spec/section/output.md
+++ b/spec/section/output.md
@@ -17,23 +17,22 @@ RDF syntaxes and RDF APIs generally represent [=blank nodes=] with [=blank node
## The Generated RDF Triples of a Triples Map
+This subsection describes the process of generating RDF triples from a [=Triples Map=]. This process contributes [=RDF triples=] to the [=output dataset=]. Each generated triple MUST be placed into one or more graphs of the output dataset.
-This subsection describes the normative process by which [=RDF triples=] are generated from a [=Triples Map=]. This process contributes [=RDF triples=] to the [=output dataset=]. Each generated triple MUST be placed into one or more graphs of the output dataset.
-
-The generated RDF triples are determined by the following algorithm. [=RML Processors=] MAY employ alternative implementations to compute the generated [=RDF triples=], provided that the resulting output dataset is semantically equivalent to the one obtained by this algorithm.
+The [=generated RDF triples=] are determined by the following algorithm. [=RML Processors=] MAY employ alternative implementations to compute the generated [=RDF triples=], provided that the resulting output dataset is semantically equivalent to the one obtained by this algorithm.
Let:
- **sm** be the [=subject map=] of the [=Triples Map=].
-- **records** be the set of logical records obtained by evaluating the [=logical source=] of the [=Triples Map=] using its declared [=reference formulation=].
+- **iterations** be the set of [=logical iterations=] obtained by evaluating the [=logical source=] of the [=Triples Map=] using its declared [=reference formulation=].
- **classes** be the set of class [=IRIs=] defined in **sm** (via `rml:class`).
- **sgm** be the set of [=graph maps=] attached to **sm**.
-For each logical record **record** in **records**, apply the following steps:
+For each [=logical iteration=] **iteration** in **iterations**, apply the following steps:
-1. Let [=subject=] be the [=RDF term=] resulting from applying **sm** to **record**.
-2. Let **subject_graphs** be the set of [=RDF term=] resulting from applying each graph map in **sgm** to **record**.
+1. Let [=subject=] be the [=RDF term=] resulting from applying **sm** to **iteration**.
+2. Let **subject_graphs** be the set of [=RDF term=] resulting from applying each graph map in **sgm** to **iteration**.
3. For each class [=IRI=] in **classes**, add a triple to the [=output dataset=] as follows:
| Component | Value |
@@ -45,10 +44,10 @@ For each logical record **record** in **records**, apply the following steps:
4. For each [=predicate-object map=] of the Triples Map, apply the following steps:
- - Let **predicates** be the set of [=RDF terms=] resulting from applying each predicate map of the predicate-object map to **record**.
- - Let **objects** be the set of [=RDF terms=] resulting from applying each object map (excluding [=referencing object maps=]) to **record**.
+ - Let **predicates** be the set of [=RDF terms=] resulting from applying each predicate map of the predicate-object map to **iteration**.
+ - Let **objects** be the set of [=RDF terms=] resulting from applying each object map (excluding [=referencing object maps=]) to **iteration**.
- Let **pogm** be the set of graph maps of the predicate-object map.
- - Let **predicate_object_graphs** be the set of RDF terms resulting from applying each graph map in **pogm** to **record**.
+ - Let **predicate_object_graphs** be the set of RDF terms resulting from applying each graph map in **pogm** to **iteration**.
For each possible combination ``, where *predicate* ∈ **predicates** and *object* ∈ **objects**, add a triple to the output dataset as follows:
@@ -64,15 +63,15 @@ For each [=referencing object map=] of a [=predicate-object map=] in the [=Tripl
- Let **psm** be the [=subject map=] of the [=parent Triples Map=] referenced by [=referencing object map=].
- Let **pogm** be the set of [=graph maps=] of the [=predicate-object map=].
-- Let **joined_records** be the result of evaluating the [=join conditions=] defined by the [=referencing object map=], combining records from both the child and parent logical sources.
+- Let **joined_iterations** be the result of evaluating the [=join conditions=] defined by the [=referencing object map=], combining iterations from both the child and parent logical sources.
-For each pair `` in **joined_records**, apply the following steps:
+For each pair `` in **joined_iterations**, apply the following steps:
-1. Let **subject** be the [=RDF terms=] resulting from applying **sm** to **child_record**.
-2. Let **predicates** be the set of [=RDF terms=] resulting from applying each [=predicate map=] of the [=predicate-object map=] to **child_record**.
-3. Let **object** be the [=RDF terms=] resulting from applying **psm** to **parent_record**.
-4. Let **subject_graphs** be the set of RDF terms resulting from applying each graph map in **sgm** to **child_record**.
-5. Let **predicate_object_graphs** be the set of RDF terms resulting from applying each graph map in **pogm** to **child_record**.
+1. Let **subject** be the [=RDF terms=] resulting from applying **sm** to **child_iteration**.
+2. Let **predicates** be the set of [=RDF terms=] resulting from applying each [=predicate map=] of the [=predicate-object map=] to **child_iteration**.
+3. Let **object** be the [=RDF terms=] resulting from applying **psm** to **parent_iteration**.
+4. Let **subject_graphs** be the set of RDF terms resulting from applying each graph map in **sgm** to **child_iteration**.
+5. Let **predicate_object_graphs** be the set of RDF terms resulting from applying each graph map in **pogm** to **child_iteration**.
For each *predicate* in **predicates**, add a triple to the output dataset as follows:
@@ -109,19 +108,19 @@ Execute the following steps:
A [=term map=] defines how an [=RDF term=] is generated from the evaluation of a [=logical iteration=] over a [=logical source=].
-The result of evaluating a term map for a given logical record can be one of the following:
+The result of evaluating a term map for a given [=logical iteration=] can be one of the following:
- **Empty**, if any referenced value of the [=term map=] evaluates to a null, empty or missing value (each data format defines it in [RML-IO-Registry](https://w3id.org/kg-construct/rml-io-registry/));
-- **An [=RDF term=]**, when evaluation produces a valid [=RDF term=]according to the [=term generation rules=];
+- **An [=RDF term=]**, when evaluation produces a valid [=RDF term=] according to the [=term generation rules=];
- **A data error**, when a valid RDF term cannot be produced.
-The [=generated RDF term=] of a [=term map=] for a given logical record is determined as follows:
+The [=generated RDF term=] of a [=term map=] for a given [=logical iteration=] is determined as follows:
1. If the term map is a **constant-valued term map**, then the generated RDF term is the term map’s constant value.
-2. If the term map is a **reference-valued term map**, then the generated RDF term is determined by evaluating the [=reference value=] expression over the logical record and applying the *term generation rules* to the resulting value.
-3. If the term map is a **template-valued term map**, then the generated RDF term is determined by evaluating the [=template value=] against the logical record and applying the *term generation rules* to the resulting value.
+2. If the term map is a **reference-valued term map**, then the generated RDF term is determined by evaluating the [=reference value=] expression over the [=logical iteration=] and applying the [=term generation rules=] to the resulting value.
+3. If the term map is a **template-valued term map**, then the generated RDF term is determined by evaluating the [=template value=] expression over the [=logical iteration=] and applying the [=term generation rules=] to the resulting value.
-The term generation rules define how a concrete RDF term is generated from a given value:
+The term generation rules define how a concrete RDF term is generated from each value from the [=expression evaluation result=]:
1. **If the value is null, empty or missing**, then no RDF term is generated.
@@ -141,8 +140,8 @@ The term generation rules define how a concrete RDF term is generated
- Return a blank node that is unique in the target graph.
5. **If the term type is `rml:Literal`:**
- - If the term map declares a [=language tag=], then return a literal with that language tag and the natural RDF lexical form corresponding to *value*.
- - Otherwise, if the term map declares a non-empty [=datatype=] different from the natural RDF datatype corresponding to the value’s implicit datatype, then return an RDF literal with the specified datatype.
+ - If the term map declares a [=language map=], then evaluate the [=language map=] to obtain a [=language tag=] and return a literal with that [=language tag=] and the natural RDF lexical form corresponding to *value*.
+ - Otherwise, if the term map declares a [=datatype map=], then evaluate it to obtain a [=datatype IRI=] and return an RDF literal with that [=datatype=] and the natural RDF lexical form corresponding to *value*.
- Otherwise, return the natural RDF literal corresponding to *value*.