Skip to content

Graph structure

rspeer edited this page Nov 6, 2014 · 8 revisions

Nodes and edges

ConceptNet is a network of labeled nodes and edges, plus additional supporting information about these nodes and edges. The nodes, or concepts, are words, word senses, and short phrases, in a number of different languages. The edges are pieces of common-sense knowledge that connect these concepts to each other with a particular relation.

This diagram shows a single edge connecting two nodes:

A single edge of ConceptNet

The strings /c/en/car, /c/en/drive, and /r/UsedFor are URIs of ConceptNet, described in greater detail on the URI hierarchy page.

Edge properties and sources

Each edge comes from a particular knowledge source, giving us a reason to believe it. The source also assigns a weight to the edge, indicating how important and informative that edge should be, and possibly a surface text that shows us how this fact of common-sense knowledge was originally expressed in natural language.

The source, weight, surface text, and a coarser-grained version of the source called the dataset, are all properties of the data structure that represents an edge.

An edge of ConceptNet plus its properties

Very often, our reason to believe an edge will be a conjunction (an "and" node) of multiple sources. For example, many statements come from a human contributor interacting with some computational activity for gathering knowledge. The statement could be wrong or unhelpful if either the human contributor was wrong, or if there was a problem with the computational activity.

Sources can also include parsers and knowledge-extraction rules, which are useful but can themselves introduce errors. They too appear as part of a conjunction of sources.

We would like to be able to learn, eventually, what the most and least reliable sources are, so we use these conjunction structures to assign credit appropriately.

Multiple edges can express the same assertion

An assertion is the proposition expressed by a relation between two concepts.

For example, "a car is used for driving" expresses an assertion, where the relation /r/UsedFor connects /c/en/car to /c/en/drive.

Edges provide evidence than an assertion is true, but multiple different edges can contribute to the same assertion. Here, for example, we see two edges that form one assertion. The edges have different sources and different surface texts, but the assertion is the same.

Two edges expressing the same assertion

Assertions as edges

Often, we want to refer to assertions as single things, no matter how many edges are involved. We can represent an assertion in an edge-like form, using the same data structure as an edge.

The source of the assertion becomes the disjunction (an "or" node) of all of its edges' sources. It also gets labeled with a new dataset, and uses one of its edges' surface text as its own surface text. An assertion made by combining two edges is shown in the following diagram.

An assertion built from two edges

Assertions as nodes

Assertions have URIs, much like concepts and relations do. In fact, its URI is built from the URIs of its concepts and relation.

This gives us a way of referring to an assertion as a single thing, and determining when multiple edges contribute to the same assertion.

An assertion with a URI

It also allows us to treat an assertion as a node, allowing us to have assertions about assertions.

One of the knowledge sources for ConceptNet is a project called GlobalMind, which encouraged bilingual users to translate assertions between languages that they know. This gives us /r/TranslationOf relations between pairs of assertions, in addition to similar relations between their individual nodes.

This final diagram shows such a relation between assertions. (We've simplified the diagram by removing the details of the individual edges.)

A TranslationOf relation between two assertions

Further information

  • See Edges for how edges and assertions are represented as data structures.
  • See URI hierarchy for how URIs are generated, and what information is embedded in them.
  • See API for one way to explore the assertions in ConceptNet.
Clone this wiki locally