---
name: "JSON::Schema::Modern::Annotation"
section: "3pm"
platform: "linux"
package: "libjson-schema-modern-perl"
version: "0.611-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/JSON::Schema::Modern::Annotation"
---

# JSON::Schema::Modern::Annotation(3pm)

Contains a single annotation from a JSON Schema evaluation

## NAME

JSON::Schema::Modern::Annotation - Contains a single annotation from a JSON Schema evaluation

## VERSION

version 0.611

## SYNOPSIS

```
  use JSON::Schema::Modern;
  my $js = JSON::Schema::Modern->new;
  my $result = $js->evaluate($data, $schema);
  my @annotations = $result->annotations;
  my $value = $annotations[0]->annotation;
  my $instance_location = $annotations[0]->instance_location;
  my $annotations_encoded = encode_json(\@annotations);
```

## DESCRIPTION

An instance of this class holds one annotation from evaluating a JSON Schema with JSON::Schema::Modern.

## ATTRIBUTES

### keyword

The keyword that produced the annotation.

### instance\_location

The path in the instance where the annotation was produced; encoded as per the JSON Pointer specification (RFC 6901 \<https://datatracker.ietf.org/doc/html/rfc6901\>).

### keyword\_location

The schema path taken during evaluation to arrive at the annotation; encoded as per the JSON Pointer specification (RFC 6901 \<https://datatracker.ietf.org/doc/html/rfc6901\>).

### absolute\_keyword\_location

The canonical URI or URI reference of the location in the schema where the error occurred; not defined, if there is no base URI for the schema and no `$ref` was followed. Note that this is not actually fragmentless URI in most cases, as the indicated error will occur at a path below the position where the most recent identifier had been declared in the schema. Further, if the schema never declared an absolute base URI (containing a scheme), this URI won't be absolute either.

### unknown

A boolean flag, indicating whether the keyword is a known vocabulary keyword or unknown.

### annotation

The actual annotation value (which may or may not be a string).

### depth

An integer which indicates how many subschemas deep this annotation was generated from. Can be used to construct a tree-like structure of annotations.

## METHODS

### TO\_JSON

Returns a data structure suitable for serialization. Corresponds to one output unit as specified in \<https://json-schema.org/draft/2020-12/json-schema-core#section-12.3\> and \<https://json-schema.org/draft/2020-12/output/schema\>, except that `"instanceLocation"` and `"keywordLocation"` are JSON pointers, **not** URI fragments, even in draft2019-09. (See the `"strict_basic"` "output\_format" in JSON::Schema::Modern, only available in that version, if the distinction is important to you.)

### dump

Returns a JSON string representing the error object, according to the specification \<https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.10\>.

## SUPPORT

Bugs may be submitted through \<https://github.com/karenetheridge/JSON-Schema-Modern/issues\>.

I am also usually active on irc, as 'ether' at `"irc.perl.org"` and `"irc.libera.chat"`.

You can also find me on the JSON Schema Slack server \<https://json-schema.slack.com\> and OpenAPI Slack server \<https://open-api.slack.com\>, which are also great resources for finding help.

## AUTHOR

Karen Etheridge \<ether@cpan.org\>

## COPYRIGHT AND LICENCE

This software is copyright (c) 2020 by Karen Etheridge.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Some schema files have their own licence, in share/LICENSE.
