an image of 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 switched from using "is a" and "is an" to just "isa" and "lives in" to "lives-in" but those are the only changes.

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

Learning More

Ligature is made up of several parts each documented separately.

Implementations and Related Tools

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

Attribution

This website makes use of the follow projects and libraries