TSVFileManifestV1 Format

Example:

#format http://ns.nuke24.net/Formats/TSVFileManifestV1

foo/bar/helloworld.txt	urn:bitprint:SQ5HALIG6NCZTLXB7DNI56PXFFQDDVUZ.276TET7NAXG7FVCDQWOENOX4VABJSZ4GBV7QATQ	data:,Hello,%20world!

# Same, but without giving a name:
urn:bitprint:SQ5HALIG6NCZTLXB7DNI56PXFFQDDVUZ.276TET7NAXG7FVCDQWOENOX4VABJSZ4GBV7QATQ	data:,Hello,%20world!

# Provide metadata about some blob;
# by convention, bz:fileLength = http://bitzi.com/xmlns/2002/01/bz-core#fileLength.
# Conventional prefixes TBD, but 'whatever ContentCouch uses
# for xmlns prefixes' is a reasonable guess.
urn:bitprint:SQ5HALIG6NCZTLXB7DNI56PXFFQDDVUZ.276TET7NAXG7FVCDQWOENOX4VABJSZ4GBV7QATQ	: bz:fileLength @ 13

# Path components should be URI encoded even if a relative path:
# A file named 'hello world.txt' would be represented like: 
hello%20world.txt	data:,Hello,%20world!	: bz:fileLength @ 13 : dc:modified @ 1646098188

Tokens are tab separated, hence 'TSV' in the name.

Each token is either a URI (if it starts with a valid URI scheme+":"), metadata (if it starts with ":"), or, if the first token, a relative path, with components URI-encoded.

Blank and comment lines (defined by the HashFormat format) can be ignored.

Tokens beginning with ':' indicate metadata using SchemaSchema syntax, i.e. `: property name @ property value : another @ ...`, where property values may be abstract identifiers or JSON-style number or string literals.

Compatible with M3U if only one column!

A standard dialect for recording snapshots of filesystems is that the first column contains a relative path, the second a URI, and the third, if it's there, metadata.

Common Metadata Names

Chosen to match the conventional xmlns namespace names as used by CCouch's XML/RDF format. Later versions of this format, or the parent 'line-based hash format metaformat', may provide a way to do the equivalent of a xmlns declaration (see Scratch38-S0001/HashFormats.md, if you know where to find that), but these specific cases can be assumed to have the following meanings:

dc:modified
Short for http://purl.org/dc/terms/modified. Modification time, probably represented as an integer unix timestamp (seconds).
bz:fileLength
Short for http://bitzi.com/xmlns/2002/01/bz-core#fileLength. Length of content, in bytes.
ccouch:fileNodeId
Short for http://ns.nuke24.net/ContentCouch/fileNodeId. Filesystem-specific identifier of the node at which the file is stored (inode number on most unix filesystems, a long 'file key' string on NTFS).