# Nulls

A **Null** in Internet Object represents the absence of a value or an explicitly undefined state. Null is a scalar primitive used to indicate missing, unknown, or intentionally empty data.

Null values in Internet Object support both compact and verbose representations to balance readability and space efficiency.

## Syntax

A null value can be expressed in two forms:

```ebnf
null = compactNull | verboseNull
compactNull = "N"
verboseNull = "null"
```

## Structural Characters

| Symbol | Name         | Unicode  | Description                    |
| ------ | ------------ | -------- | ------------------------------ |
| `N`    | Uppercase N  | `U+004E` | Compact representation of null |
| `null` | Keyword null | Multiple | Verbose representation of null |

## Valid Forms

```ruby
N                    # Compact null
null                 # Verbose null
```

## Optional Behaviors

### Literal and Alternate Forms

Internet Object supports two equivalent representations for null values:

* **Compact form**: `N` (recommended)
* **Verbose form**: `null`

```ruby
N        # ✅ Recommended compact form
null     # ✅ Verbose form (equivalent to N)
```

### Empty Representation

Null explicitly represents the absence of a value, distinct from empty strings or empty arrays.

```ruby
N        # Null value
""       # Empty string (different from null)
[]       # Empty array (different from null)
```

## Invalid Forms

```ruby
n         # ❌ Lowercase not allowed
NULL      # ❌ All caps not allowed
Null      # ❌ Mixed case not allowed
nil       # ❌ Alternative keywords not allowed
undefined # ❌ Alternative keywords not allowed
```

## See Also

* [Values](/the-structure/values.md)
* [Schema for Null Handling](https://github.com/maniartech/InternetObject-specs/blob/gitbook/schema-definition-language/README.md)


---

# 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://docs.internetobject.org/the-structure/values/null.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.
