SetLink

From OpenCog
Jump to: navigation, search

A type of Link used to group its arguments into a set.

For example:

 SetLink
    ConceptNode "x"
    ConceptNode "y"
    ConceptNode "z" 

simply indicates that there is a set {x,y,z}.

Naming Sets

Sets can be given a name, using the SimilarityLink or the DefineLink:

 SimilarityLink
    ConceptNode "last three letters of the alphabet"
    SetLink
       ConceptNode "x"
       ConceptNode "y"
       ConceptNode "z"

The SimilarityLink is used to make declarative statements; the DefineLink is used to make imperative statements; see Link comparison for a discussion of the differences.

Subsets

The SubsetLink can be used to indicate subsets:

 SubsetLink
    SetLink
       ConceptNode "x"
       ConceptNode "y"
    SetLink
       ConceptNode "x"
       ConceptNode "y"
       ConceptNode "z"

which states that {x,y} is a subset of {x,y,z}. If the set is named, then one can write:

 SubsetLink
    SetLink
       ConceptNode "x"
       ConceptNode "y"
    ConceptNode "last three letters of the alphabet"

Set membership

Sets can also be constructed by specifying individual members:

  MemberLink
     ConceptNode "x"
     ConceptNode "last three letters of the alphabet"
  MemberLink
     ConceptNode "y"
     ConceptNode "last three letters of the alphabet"
  MemberLink
     ConceptNode "z"
     ConceptNode "last three letters of the alphabet"

Note, however, it is not exactly equivalent: each MemberLink could have a distinct truth value indicating the degree to which the letters x,y,z, are members. Neither the SetLink nor the SimilarityLink allow this to be expressed. A clearer example is provided by the following:

  MemberLink  <1.0>
     ConceptNode "z"
     ConceptNode "last letters of the alphabet"
  MemberLink  <0.9>
     ConceptNode "w"
     ConceptNode "last letters of the alphabet"
  MemberLink  <0.8>
     ConceptNode "s"
     ConceptNode "last letters of the alphabet"
  MemberLink  <0.2>
     ConceptNode "m"
     ConceptNode "last letters of the alphabet"

which suggests that perhaps its a poor idea to group the letter "m" among the set of the last letters of the alphabet. There is no particularly good way to express this fuzzy-membership notion with a simple SetLink, although one could have that

  SetLink <0.4>
     ConceptNode "z"
     ConceptNode "w"
     ConceptNode "s"
     ConceptNode "m"

is a way of weakly grouping together m,s,w and z into a somewhat ephemeral group, with strength 0.4. However, this cannot indicate that perhaps some of the elements are stronger members than others.

See also