diff --git a/spec/dev.html b/spec/dev.html index 018b4bc..25bc883 100644 --- a/spec/dev.html +++ b/spec/dev.html @@ -112,18 +112,16 @@
-
-
+
+
-
-
diff --git a/spec/section/fields.md b/spec/section/fields.md index 41242e3..94e8605 100644 --- a/spec/section/fields.md +++ b/spec/section/fields.md @@ -1,10 +1,31 @@ ## Fields {#fields} -A field is an [ExpressionMap](http://w3id.org/rml/core/spec#dfn-expression-map) that gives a name to an expression. A [=field=] MUST have a parent that is either a [logical source]() or another [=field=]. The parent relation MUST not contain cycles: it is tree-shaped with a logical source as its root. The transitive parents of a [=field=], i.e., the [=field=]'s parent, the parent of the [=field=]'s parent, etcetera, are fittingly called the [=field=]'s ancestors. A [=field=] MUST have a declared name that is an alphanumerical string. [=Fields=] with the same parent MUST have different declared names. If a [=field=]'s parent is another [=field=], we distinguish between the [=field=]'s declared name and the [=field=]'s name. A [=field=]'s name is the concatentation of the name of the parent [=field=], a dot `.`, and the [=field=]'s declared name. A [=field=] MUST have an expression and a [reference formulation](). If no reference formulation is explicitly declared, the [=field=] has the same [reference formulation]() as its parent. +A field is a type of expression map, that gives a name to an expression. Consequently, a [=field=] MUST have an expression. + +A [=field=] (`rml:Field`) MUST have following additional properties: +- exactly one field name property (`rml:fieldName`), that specifies the [=name=] of the field +- zero or more field properties (`rml:field`), to describe nested [=field=], also of the type `rml:Field` +- zero or one field reference formulation property (`rml:fieldReferenceFormulation`), to specify the reference formulation of the field. +- zero or one iterator property (`rml:fieldIterator`) to specify the iterator of the field. + +| Property | Domain | Range | +|----------------------------|--------------|----------------------------| +| `rml:fieldName` | `rml:Field` | `rml:LogicalSource` | +| `rml:field` | `rml:Field` | `rml:Field` | +| `rml:referenceFormulation` | `rml:Field` | `rml:ReferenceFormulation` | +| `rml:iterator` | `rml:Field` | `Literal` | + + +### Field parents {#fieldparents} + +A [=field=] MUST have a parent that is either a [logical source]() or another [=field=]. The parent relation MUST not contain cycles: it is tree-shaped with a logical source as its root. The transitive parents of a [=field=], i.e., the [=field=]'s parent, the parent of the [=field=]'s parent, etcetera, are fittingly called the [=field=]'s ancestors. + +### Field names {#fieldnames} +A [=field=] MUST have a declared name that is an alphanumerical string. [=Fields=] with the same parent MUST have different declared names. If a [=field=]'s parent is another [=field=], we distinguish between the [=field=]'s declared name and the [=field=]'s name. A [=field=]'s name is the concatenation of the name of the parent [=field=], a dot `.`, and the [=field=]'s declared name.