# `RDF.XSD.Facets.Pattern`
[🔗](https://github.com/rdf-elixir/rdf-ex/blob/v3.0.1/lib/rdf/xsd/facets/pattern.ex#L1)

`RDF.XSD.Facet` for `pattern`.

`pattern` is a constraint on the value space of a datatype which is achieved
by constraining the lexical space to literals which match each member of a
set of regular expressions.
The value of pattern  must be a set of regular expressions.

see <https://www.w3.org/TR/xmlschema11-2/datatypes.html#rf-pattern>

# `pattern`

```elixir
@callback pattern() :: (String.t() | [String.t()]) | nil
```

Returns the value of this `RDF.XSD.Facet` on specific `RDF.XSD.Datatype`.

# `pattern_conform?`

```elixir
@callback pattern_conform?(
  facet_constraint_value :: any(),
  value :: any(),
  RDF.XSD.Datatype.uncanonical_lexical()
) :: boolean()
```

Validates if a `value` and `lexical` conforms with a concrete `facet_constraint_value` for this `RDF.XSD.Facet`.

This function must be implemented on a `RDF.XSD.Datatype` using this `RDF.XSD.Facet`.

# `conform?`

```elixir
@spec conform?(RDF.XSD.Datatype.t(), any(), RDF.XSD.Datatype.uncanonical_lexical()) ::
  boolean()
```

Checks if a `value` and `lexical` conforms with the `c:pattern_conform?/3` implementation on the `datatype` `RDF.XSD.Datatype`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
