opencog-dev team mailing list archive
-
opencog-dev team
-
Mailing list archive
-
Message #00400
Extensible ClassServer
Hi,
Lately I've been working on another feature request from the Petaverse
guys: rewrite the ClassServer so that it would be possible for
third-parties to extend the type hierarchy (if anyone would like to try
it, the code is available at lp:~gama/opencog/classserver; docs are
available inside the opencog/atomspace/README file).
The code, documentation, examples and cmake integration are pretty much
ready but there's one task left which is to trim the current 'atom
types' hierarchy -- previously defined in the file 'type.script' which
I'm pasting at the end of this message.
I could take a stab and try to split and redistribute the current
hierarchy into the proper modules based on intuition but it's likely
that I would screw up and end up breaking things for others. Besides,
there are plenty of types that I'm unsure whether they should be tied to
the lower level libatomtable or some specific module (for instance,
should WORD_NODE be tied to the nlp module? what about SHAPE_NODE? etc.
etc.).
So I've resorted to asking for everybody's help. :-)
Module "owners" could perhaps list the types that they know they'll use
exclusively; old-timers might know which types were added for a
short-lived experiment or a demo; and those more familiar with the
conceptual opencog model probably know which types will be shared by
multiple modules/agents/applications.
thanks,
--
Gustavo
--------------------------- 8< -----------------------------
//
// Script for automatic Type generation
//
ATOM
NODE <- ATOM
LINK <- ATOM
CONCEPT_NODE <- NODE
WORD_NODE <- NODE
NUMBER_NODE <- NODE
SHAPE_NODE <- NODE
POINT_NODE <- NODE
// Basic Links
ORDERED_LINK <- LINK
UNORDERED_LINK <- LINK
// Basic sets
SET_LINK <- UNORDERED_LINK
SUBSET_LINK <- ORDERED_LINK
PART_OF_LINK <- ORDERED_LINK
LIST_LINK <- ORDERED_LINK
MEMBER_LINK <- ORDERED_LINK
// Boolean Set operations and related ideas.
AND_LINK <- ORDERED_LINK
OR_LINK <- UNORDERED_LINK
NOT_LINK <- UNORDERED_LINK
FALSE_LINK <- ORDERED_LINK
TRUE_LINK <- ORDERED_LINK
HYPOTHETICAL_LINK <- ORDERED_LINK
SCHOLEM_LINK <- ORDERED_LINK
SIMULTANEOUS_AND_LINK <- ORDERED_LINK
CONTEXT_LINK <- ORDERED_LINK
FORALL_LINK <- ORDERED_LINK
EXIST_LINK <- ORDERED_LINK
// Inheritence and association links
INHERITANCE_LINK <- ORDERED_LINK
ROOTED_ORDERED_LINK <- ORDERED_LINK
INSTANCE_LINK <- ORDERED_LINK
ASSOCIATIVE_LINK <- ORDERED_LINK
GENERIC_PROPERTY_LINK <- ORDERED_LINK
SYMBOL_LINK <- ORDERED_LINK
SIMILARITY_LINK <- UNORDERED_LINK
EXT_SIMILARITY_LINK <- SIMILARITY_LINK
MIXED_IMPLICATION_LINK <- ORDERED_LINK
MIXED_INHERITANCE_LINK <- ORDERED_LINK
EXTENSIONAL_IMPLICATION_LINK <- ORDERED_LINK
EXTENSIONAL_INHERITANCE_LINK <- ORDERED_LINK
EXTENSIONAL_EQUIVALENCE_LINK <- ORDERED_LINK
EXTENSIONAL_SIMILARITY_LINK <- ORDERED_LINK
// Proceedure, schema and predicate nodes.
PROCEDURE_NODE <- NODE
GROUNDED_PROCEDURE_NODE <- PROCEDURE_NODE
GROUNDED_PREDICATE_NODE <- PREDICATE_NODE,GROUNDED_PROCEDURE_NODE
GROUNDED_SCHEMA_NODE <- SCHEMA_NODE,GROUNDED_PROCEDURE_NODE
COMPOUND_TERM_NODE <- GROUNDED_PROCEDURE_NODE
SCHEMA_NODE <- PROCEDURE_NODE
SCHEMA_INSTANCE_NODE <- NODE
PREDICATE_NODE <- SCHEMA_NODE
PREDICATE_INSTANCE_NODE <- SCHEMA_INSTANCE_NODE
SATISFYING_SET_LINK <- ORDERED_LINK
APPLICATION_LINK <- ORDERED_LINK
SCHEMA_EXECUTION_LINK <- INHERITANCE_LINK
SCHEMA_EVALUATION_LINK <- SCHEMA_EXECUTION_LINK
EVALUATION_LINK <- ORDERED_LINK
EXECUTION_LINK <- ORDERED_LINK
EXECUTION_OUTPUT_LINK <- ORDERED_LINK
IMPLICATION_LINK <- ORDERED_LINK
VARIABLE_NODE <- NODE
VARIABLE_SCOPE_LINK <- ORDERED_LINK
PREDICTIVE_IMPLICATION <- ORDERED_LINK
TAIL_PREDICTIVE_IMPLICATION <- ORDERED_LINK
SEQUENTIAL_AND_LINK <- ORDERED_LINK
EXTENDED_SIMPLEX_PREDICTOR_NODE <- NODE
EVENTUAL_SEQUENTIAL_AND_LINK <- ORDERED_LINK "EventualSequentialAND"
EVENTUAL_PREDICTIVE_IMPLICATION_LINK <- ORDERED_LINK
"EventualSequentialImplication"
// Older parsing and language handling nodes;
// Commented out, as these are currently unused,
// and are being replaced by newer relex forms.
// Some of these may be revived. See below.
//
// LEXICAL_CATEGORY_NODE <- CONCEPT_NODE
// SYN_SET_NODE <- NODE
// WORD_NET_CONCEPT_NODE <- NODE
PHRASE_NODE <- NODE
// COLLOCATION_NODE <- WORD_NODE
//
// SEMANTIC_SENSE_NODE <- WORD_SENSE_NODE
// SYNTACTIC_SENSE_NODE <- WORD_SENSE_NODE
// WORD_INSTANCE_NODE <- WORD_NODE
// SENTENCE_CONTEXT_NODE <- NODE
// SPECIFIC_ENTITY_NODE <- CONCEPT_NODE
//
// short for "WordReferenceLink"
// WR_LINK <- ASSOCIATIVE_LINK "WRLink"
// WS_LINK <- ASSOCIATIVE_LINK "WSLink"
// WORD_SENSE_CANDIDATE_LINK <- ASSOCIATIVE_LINK
// WSC_BASIC_LINK <- WORD_SENSE_CANDIDATE_LINK "WSCBasicLink"
// WORD_REFERENT_CANDIDATE_LINK <- ASSOCIATIVE_LINK
// WRC_BASIC_LINK <- WORD_REFERENT_CANDIDATE_LINK "WRCBasicLink"
// UNORDERED_ASSOCIATIVE_LINK <- UNORDERED_LINK
// TENSE_LINK <- ORDERED_LINK
// QUANTITY_LINK <- ORDERED_LINK
//
// DISAMBIGUATION_DECISION_LINK <- ORDERED_LINK
// RR_DECISION_LINK <- ORDERED_LINK "RRDecisionLink"
//
// SYNTACTIC_ARGUMENT_RELATION_NODE <- NODE
// SYNTACTIC_ARGUMENT_RELATION_INSTANCE_NODE <- NODE
// SYNTACTIC_LINK_CATEGORY_NODE <- NODE
// SYNTACTIC_LINK_SUBCATEGORY_NODE <- NODE
// TENSE_NODE <- NODE
// NOUN_NUMBER_NODE <- NODE
// WORD_GENDER_NODE <- NODE
// PARSE_NODE <- NODE
//
// SEQUENCE_LINK <- ORDERED_LINK
// SYNTACTIC_LINK <- ORDERED_LINK
// SS_LINK <- ORDERED_LINK "SSLink"
// SAR_WORD_LINK <- ORDERED_LINK "SARWordLink"
// NOUN_NUMBER_LINK <- ORDERED_LINK
// WORD_GENDER_LINK <- ORDERED_LINK
// SEMANTIC_CONTENT_LINK <- CONTAINS_LINK
// PARSE_CANDIDATE_LINK <- ORDERED_LINK
// VARIABLE_VALUE_CANDIDATE_LINK <- ORDERED_LINK
// VARIABLE_VALUE_DEPENDENCY_LINK <- ORDERED_LINK
// QUERY_VARIABLE_LINK <- ORDERED_LINK
// EQUIVALENCE_LINK <- UNORDERED_LINK
//
// HACKY_SYNTACTIC_INFO_NODE <- NODE
// NEW_SENSE_LINK <- ORDERED_LINK
// NEW_SEMANTIC_LINK <- ORDERED_LINK
// FLAG_NODE <- NODE
// XXXX ??? Are these used anywhere ???
DISTINGUISHED_NODE <- NODE
ENTROPY_LINK <- ORDERED_LINK
// FREQUENCY_LINK <- INHERITANCE_LINK
// New relex nodes, added by Linas per names used by Ben
// These are subject to change or deletion pending review.
// Some of the link types may go away.
REFERENCE_LINK <- ASSOCIATIVE_LINK
DOCUMENT_NODE <- CONCEPT_NODE
SENTENCE_NODE <- CONCEPT_NODE
PARSE_NODE <- CONCEPT_NODE
PARSE_LINK <- ASSOCIATIVE_LINK
LINK_GRAMMAR_RELATIONSHIP_NODE <- PREDICATE_NODE
DEFINED_LINGUISTIC_CONCEPT_NODE <- CONCEPT_NODE
DEFINED_LINGUISTIC_RELATIONSHIP_NODE <- PREDICATE_NODE
DEFINED_FRAME_NODE <- CONCEPT_NODE
DEFINED_FRAME_ELEMENT_NODE <- PREDICATE_NODE
FRAME_ELEMENT_LINK <- ORDERED_LINK
// New wordnet-import nodes, added by Linas.
// These are subject to change, pending review.
// The links should almost certainly be replaced by
// a predicate-style construction (where the relation
// is explicitly named)
WORD_SENSE_NODE <- CONCEPT_NODE
WORD_SENSE_LINK <- ASSOCIATIVE_LINK
PART_OF_SPEECH_NODE <- CONCEPT_NODE
PART_OF_SPEECH_LINK <- ORDERED_LINK
LEMMA_NODE <- CONCEPT_NODE
LEMMA_LINK <- ORDERED_LINK
HOLONYM_LINK <- INHERITANCE_LINK
// New word-sense-disambiguation nodes, added by Linas
COSENSE_LINK <- UNORDERED_LINK
// AGISim related links and nodes
AGISIM_SOUND_NODE <- NODE "AGISIMSoundNode"
AGISIM_TASTE_NODE <- NODE "AGISIMTasteNode"
AGISIM_SMELL_NODE <- NODE "AGISIMSmellNode"
AGISIM_SELF_NODE <- NODE "AGISIMSelfNode"
AGISIM_PERCEPT_NODE <- NODE "AGISIMPerceptNode"
AGISIM_VISUAL_PERCEPT_NODE <- NODE "AGIMSIMVisualPerceptNode" // note
AGISIM_PIXEL_PERCEPT_NODE <- NODE "AGISIMPixelPerceptNode"
AGISIM_POLYGON_PERCEPT_NODE <- NODE "AGISIMPolygonPerceptNode"
AGISIM_OBJECT_PERCEPT_NODE <- NODE "AGISIMObjectPerceptNode"
CW_PIXEL_PERCEPT_NODE <- NODE "CWPixelPerceptNode"
CW_COLOR_NODE <- NODE "CWColorNode"
FW_VARIABLE_NODE <- NODE "FWVariableNode"
NM_TEXT_NODE <- NODE
NM_ENTITY_NODE <- NODE
// PB atoms
FEELING_NODE <- GROUNDED_PREDICATE_NODE
GOAL_NODE <- GROUNDED_PREDICATE_NODE
LEARNED_SCHEMA_GOAL_NODE <- GOAL_NODE
SCHEMA_GOAL_IMPLICATION_LINK <- IMPLICATION_LINK
// Second-Life specific atoms:
SL_NODE <- NODE "SLNode"
SL_OBJECT_NODE <- SL_NODE "SLObjectNode"
SL_PET_NODE <- SL_OBJECT_NODE "SLPetNode"
SL_AVATAR_NODE <- SL_OBJECT_NODE "SLAvatarNode"
SL_STRUCTURE_NODE <- SL_OBJECT_NODE "SLStructureNode"
SL_ACCESSORY_NODE <- SL_OBJECT_NODE "SLAccessoryNode"
SL_HUMANOID_NODE <- SL_OBJECT_NODE "SLHumanoidNode"
// Time-related atoms:
AT_TIME_LINK <- ORDERED_LINK
TIME_NODE <- NODE
// Space-related atoms:
SPACE_MAP_NODE <- NODE
// Attention allocation atoms:
HEBBIAN_LINK <- LINK
ASYMMETRIC_HEBBIAN_LINK <- ORDERED_LINK,HEBBIAN_LINK
SYMMETRIC_HEBBIAN_LINK <- UNORDERED_LINK,HEBBIAN_LINK
INVERSE_HEBBIAN_LINK <- ORDERED_LINK,HEBBIAN_LINK
NOTYPE
Follow ups