# ==== Bundles ====
#
# LV2 plugins are installed in ``bundles'', a directory with a particular
# format.  Inside the bundle, the entry point is a file called `manifest.ttl`.
# The manifest lists the plugins (or other resources) that are in this bundle,
# and the files that contain further information.
#
# Hosts typically read the `manifest.ttl` of every bundle when starting up to
# discover what LV2 plugins and other resources are present.  Accordingly,
# manifest files should be as small as possible for performance reasons.
#
#
# ==== Namespace Prefixes ====
#
# Turtle files contain many URIs.  To make this more readable, prefixes can be
# defined.  For example, with the `lv2:` prefix below, instead of
# <http://lv2plug.in/ns/lv2core#Plugin> the shorter form `lv2:Plugin` can be
# used.  This is just a shorthand for URIs within one file, the prefixes are
# not significant otherwise.

@prefix lv2:  <http://lv2plug.in/ns/lv2core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

# ==== A Plugin Entry ====

<http://lv2plug.in/plugins/eg-amp>
	a lv2:Plugin ;
	lv2:binary <amp.so>  ;
	rdfs:seeAlso <amp.ttl> .

# The token `.so` above is replaced by the build system with the
# appropriate extension for the current platform (e.g. .so, .dylib, .dll).
# This file is called called `manifest.ttl.in` rather than `manifest.ttl`
# to indicate that it is not the final file to be installed.
# This is not necessary, but is a good idea for portable plugins.
# For reability, the following text will assume `.so` is the extension used.
#
# In short, this declares that the resource with URI
# `http://lv2plug.in/plugins/eg-amp` is an LV2 plugin, with executable code in
# the file `amp.so` and a full description in `amp.ttl`.  These paths are
# relative to the bundle directory.
#
# There are 3 statements in this description:
# [options="header"]
# |================================================================
# | Subject                             | Predicate    | Object
# | <http://lv2plug.in/plugins/eg-amp>  | a            | lv2:Plugin
# | <http://lv2plug.in/plugins/eg-amp>  | lv2:binary   | <amp.so>
# | <http://lv2plug.in/plugins/eg-amp>  | rdfs:seeAlso | <amp.ttl>
# |================================================================
#
# The semicolon is used to continue the previous subject; an equivalent
# but more verbose syntax for the same data is:

<http://lv2plug.in/plugins/eg-amp> a lv2:Plugin .
<http://lv2plug.in/plugins/eg-amp> lv2:binary <amp.so> .
<http://lv2plug.in/plugins/eg-amp> rdfs:seeAlso <amp.ttl> .

# (Since this data is equivalent, it is safe, if pointless, to list it twice)
#
# The documentation for a URI can often be found by visiting that URI in a web
# browser, e.g. the documentation for lv2:binary can be found at
# <http://lv2plug.in/ns/lv2core#binary>.  All standard LV2 classes and
# properties are documented in this way, so if you encounter a URI in some data
# which you do not understand, try this first.
#
# The URI of a plugin does not need to be a resolvable web address, it just
# serves as a global identifier.  However, it is a good idea to use an actual
# web address if possible for easy access documentation, downloads, and so on,
# even if no documents are currently hosted there.  There are compatibility
# rules about when the URI of a plugin must be changed, see the
# http://lv2plug.in/ns/lv2core[LV2 specification] for details.  Note that this
# does not require authors to control a top-level domain; for example, URIs in
# project directories at shared hosting sites are fine.  It is not required to
# use HTTP URIs, but use of other schemes is strongly discouraged.
#
# AUTHORS MUST NOT CREATE URIS AT DOMAINS THEY DO NOT CONTROL WITHOUT
# PERMISSION, AND *ESPECIALLY* MUST NOT CREATE INVALID URIS, E.G. WHERE THE
# PORTION FOLLOWING ``http://'' IS NOT A DOMAIN NAME.  If you need an example
# URI, the domain http://example.org/ is reserved for this purpose.
#
# A detailed explanation of each statement follows.

<http://lv2plug.in/plugins/eg-amp> a lv2:Plugin .

# The `a`, as in ``is a'', is a Turtle shortcut for `rdf:type`.
# `lv2:Plugin` expands to <http://lv2plug.in/ns/lv2core#Plugin> (using the
# `lv2:` prefix above) which is the type of all LV2 plugins.
# This statement means ``<http://lv2plug.in/plugins/eg-amp> is an LV2 plugin''.

<http://lv2plug.in/plugins/eg-amp> lv2:binary <amp.so> .

# This says ```eg-amp` has executable code in the file `amp.so`''.
# Relative URIs in manifest files are relative to the bundle directory, so this
# refers to the file amp.so in the same directory as this manifest.ttl file.

<http://lv2plug.in/plugins/eg-amp> rdfs:seeAlso <amp.ttl> .

# This says ``there is more information about `eg-amp` in the file `amp.ttl`''.
# The host will look at all such files when it needs to actually use or
# investigate the plugin.
