README Ligature Docs Wander Docs
a knot

Ligature

A Semantic Network Toolkit

What is Ligature?

Ligature is a libre (free and open source, MPL-2.0 licensed) toolkit for working with semantic networks that focuses on simplicity, pragmatism, and portability. It is currently under heavy design and development, and not ready for real world use, but experimentation and feedback are encouraged and much welcomed. This website aims to document the current state of Ligature and link to resources.

What are Semantic Networks?

Wikipedia has a pretty good article on Semantic Networks, quoting the opening paragraph:

A semantic network, or frame network is a knowledge base that represents semantic relations between concepts in a network. This is often used as a form of knowledge representation. It is a directed or undirected graph consisting of vertices, which represent concepts, and edges, which represent semantic relations between concepts, mapping or connecting semantic fields. A semantic network may be instantiated as, for example, a graph database or a concept map. Typical standardized semantic networks are expressed as semantic triples.

That article contains an example semantic network. Below is that semantic network expressed in Ligature. I replaced “is a” and “is an” with a colon and changed “lives in” to “lives-in” but those are the only changes.

{
  Cat : Mammal, Cat has Fur,
  Bear : Mammal, Bear has Fur,
  Whale : Mammal, Whale lives-in Water,
  Mammal : Animal, Mammal has Vertebra,
  Fish : Animal, Fish lives-in Water,
}

Ligature and the tools around it allow you to work with data represented this way.

Implementations and Related Tools

Work on Ligature is spread out over a number of git repositories. Below is a list of them.

  • ligature.dev - This website!
  • Ligature F# - An implementation of Ligature written in F#. It targets DotNet Core and JS via Fable. This is currently the most complete and actively developed implementation. It supports running in the browser via Fable an F# to JS compiler.
  • Ligature Rust - An implementation of Ligature written in Rust.
  • Ligature Scala - An implementation of Ligature written in Scala for the JVM.