Skip to content

link-foundation/links-notation

Repository files navigation

links-notation (languages: en • ru)

Actions Status npm Version and Downloads count JavaScript
Actions Status Crates.io Version and Downloads count Rust
Actions Status NuGet Version and Downloads count C#
Actions Status PyPI Version and Downloads count Python

Gitpod Open in GitHub Codespaces

Codacy Badge CodeFactor

Link Foundation's Links Notation Class Library.

introduction

This library gives you an ability to convert any string that contains links notation into a list of links and back to the string after modifications are made.

Links notation is based on two concepts references and links. Each reference references other link. The notation supports links with any number of references to other links.

Quick Start

C#

var parser = new LinkFoundation.LinksNotation.Parser();
var links = parser.Parse("papa (lovesMama: loves mama)");

JavaScript

import { Parser } from 'links-notation';
const parser = new Parser();
const links = parser.parse("papa (lovesMama: loves mama)");

Rust

use links_notation::parse_lino;
let links = parse_lino("papa (lovesMama: loves mama)").unwrap();

Python

from links_notation import Parser
parser = Parser()
links = parser.parse("papa (lovesMama: loves mama)")

Examples

Links notation (lino)

Doublets (2-tuple)

papa (lovesMama: loves mama)
son lovesMama
daughter lovesMama
all (love mama)

Triplets (3-tuple)

papa has car
mama has house
(papa and mama) are happy

Sequences (N-tuple)

I'm a friendly AI.
(I'm a friendly AI too.)
(linksNotation: links notation)
(This is a linksNotation as well)
(linksNotation supports (unlimited number (of references) in each link))
(sequence (of references) surrounded by parentheses is a link)
parentheses may be ommitted if the whole line is a single link

Indented Syntax

Links can also use indented syntax for better readability:

3:
  papa
  loves
  mama

This is equivalent to:

(3: papa loves mama)

So that means that this text is also links notation. So most of the text in the world already may be parsed as links notation. That makes links notation the most easy an natural/intuitive/native one.

What is Links Notation?

Links Notation (Lino) is a simple, intuitive format for representing structured data as links between entities references to links. It's designed to be:

  • Natural: Most text can already be parsed as links notation
  • Flexible: Supports any number of references in each link
  • Universal: Can represent doublets, triplets, and N-tuples
  • Hierarchical: Supports nested structures with indentation

The notation uses two core concepts:

  • References: Points to other links (like variables or identifiers)
  • Links: Connect references together with optional identifiers

Documentation

For detailed implementation guides and API references, see the language-specific documentation:

Additional resources:

About

A way to describe data using references and links.

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 10