Skip to contents

Attach provisional semantic assertions to an observational vector.

Usage

prelabel(x, labels, unmatched = "keep", missing_label = "<NA>")

Arguments

x

A vector.

labels

Candidate semantic mappings describing provisional semantic assertions.

labels is internally normalised with as_value_key() and may therefore be supplied as:

  • a named vector;

  • a named list;

  • a two-column data frame or tibble.

unmatched

Behaviour for unmatched observational values.

One of:

  • "keep" (default): preserve unmatched values as observational semantic assertions;

  • "na": operationalise unmatched values as NA during semantic coercion.

missing_label

Semantic assertion used internally for missing observational values.

Value

A vector with:

  • class "prelabelled";

  • attached provisional semantic vocabulary stored in the "prelabel" attribute.

Details

prelabel() creates lightweight semantic mappings that support iterative semantic refinement workflows before values mature into formally defined variables created with labelled::labelled() or dataset::defined().

Unlike strictly defined semantic vectors, prelabelled vectors tolerate:

  • incomplete semantic mappings;

  • unresolved observational values;

  • contextual ambiguity;

  • incremental semantic stabilisation.

This design is particularly useful in provenance-aware, contextual reconstruction, and archival workflows where semantic interpretations emerge gradually through iterative refinement.

The class supports workflows inspired by RiC-O and PROV-O, where observational evidence and semantic interpretation remain explicitly separated.

prelabelled vectors intentionally separate:

  • observational evidence;

  • semantic operationalisation;

  • contextual semantic refinement.

Original observational values remain unchanged while semantic assertions may evolve through iterative refinement workflows.

Semantic operationalisation is available through:

Examples


x <- c(
  "R",
  "png",
  "csv",
  "unknown"
)

extension_map <- c(
  R = "functional_programming",
  png = "visualisation",
  csv = "tabular_data"
)

x <- prelabel(
  x,
  labels = extension_map
)

x
#> [1] "R"       "png"     "csv"     "unknown"
#> attr(,"prelabel")
#>                        R                      png                      csv 
#> "functional_programming"          "visualisation"           "tabular_data" 
#>                  unknown 
#>                "unknown" 
#> attr(,"class")
#> [1] "prelabelled" "character"  

as.character(x)
#> [1] "functional_programming" "visualisation"          "tabular_data"          
#> [4] "unknown"               

semantic_workspace <- as_character(x)

attributes(semantic_workspace)
#> $prelabel
#>                        R                      png                      csv 
#> "functional_programming"          "visualisation"           "tabular_data" 
#>                  unknown 
#>                "unknown" 
#> 
#> $original_values
#> [1] "R"       "png"     "csv"     "unknown"
#> attr(,"prelabel")
#>                        R                      png                      csv 
#> "functional_programming"          "visualisation"           "tabular_data" 
#>                  unknown 
#>                "unknown" 
#>