Here's an older implementation idea
Here's one idea:
ProtoEvaluationLink PredicateNode "name of the attribute, e.g. AV" SomeAtom FloatValue # which is a vector of floats holding the actual av
- Where SomeAtom is the atom to be tagged with the attribute.
- Where the PredicateNode is an actual node, so that it's in the atomspace, its globally unique, and thus easy to find.
- Where the ProtoEvaluationLink shows up in the incoming set of both SomeAtom, and of the PredicateNode, so that it is easy to find, given one or the other or both.
- Perhaps there should be a ProtoStateLink, which would be globally unique, given the first two elements (similar to StateLink).
- Perhaps the ProtoStateLink should be a real actual link, kept in the atomspace???
- What is the *fastest* algorithm for finding the value, given SomeAtom, and the PredicateNode ... ? Perhaps the fastest algorithm would come from using this structure:
ProtoEvaluationLink ListLink # a real link, thus globally unique, and easily found in the atomspace. PredicateNode "name of the attribute, e.g. AV" SomeAtom FloatValue # which is a vector of floats holding the actual av
The above ListLink variant uses more RAM...
My current favorite ideas are the above or something very similar; there are certainly other ways to do things; do the other ways have an equally simple API?