# Concepts & Terminology

Here are some useful concepts and terms to understand if you want to access the full range of capabilities in SA5 Data.&#x20;

## Data Sources&#x20;

### Simple v. Complex Data Sources

* A **Simple Data Source** returns a single value.&#x20;
* A **Complex Data Source** returns a structure.&#x20;
  * e.g. a JSON-LD source&#x20;
  * e.g. a Collection List source&#x20;

### Implicit v. Explicit Data Sources&#x20;

* An **Implicit Data Source** is one which is available automatically with no special definition or setup.
  * e.g. query string, URL parts, and cookies are all implicit data sources in SA5&#x20;
* An **Explicit Data Source** requires special setup before it can be accessed&#x20;

## Data Binding&#x20;

### Simple v. Complex Data Binding&#x20;

1. **Simple Data Binding ( 1:1 ).** Refers to simple situations in which a *single data item* is bound to a *single, simple element* such as a text element, a checkbox, or a form input element.  These are all characterized by 1:1 bindings.&#x20;
2. **Complex Data Binding ( n:1, 1:n, n:n ).** Refers to complex binding situations that involve *Collection List data sources*, bound to *complex elements* ( tabs, sliders, select options ) or *elements groups*. &#x20;

## Data Paths &#x20;

[Data Paths](#data-paths) describe specifically what you are binding to the data bound element.&#x20;

As an example, let's say that we want to do the following;&#x20;

> I want to initialize a form input field with the `name` value from the URL query string.&#x20;

{% hint style="success" %}
Since the [query string](/sa5-data/data-sources/url-query-params.md) is a Simple Data Source in SA5, there is no special setup required.&#x20;
{% endhint %}

To achieve this, we can simply add the following custom attribute on the Form Input element;

```
wfu-bind = $query.name
```

Here `$query.name`is the Data Path. It identifies the data we are binding.&#x20;

There are two parts, which are separated by the period (`.`) delimiter;

* `$query` is the Data Source Type&#x20;
* `name` is the Data Source Name&#x20;

### Abbreviated Data Paths&#x20;

Many commonly-used Data Source Types can be *abbreviated*.  In this example, the Query String Data Source Type can be replaced with a question mark `?`.&#x20;

This allows the attribute to be written even more efficiently as-&#x20;

```
wfu-bind = ?name
```

## Using Data Paths w/ Complex Data Sources&#x20;

SA5 data paths are designed for much more complex uses as well, such as navigating tabular and hierarchical data structures.&#x20;

{% hint style="warning" %}
This will be covered in special courses but you can find some introduction in the [Data Paths](/sa5-data/concepts/data-paths.md) documentation.&#x20;
{% endhint %}

use a simple, implicit data source such as a&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://attr.sygnal.com/sa5-data/concepts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
