-  Please address comments to or to or join us in open development at downloads licenseUrl version 0.023 revised 05/20/2002 5:00 PM status now works with httpBot.py ... thanks dltab :)) lastProgress added sayGraphServer() which returns output rather than printing priorProgress wrote and tested first version of say,sayBal, and sayGraph' inProgress trying to figure out how to make it a http server which will respond to html forms nextToDo1 nextToDo2 thinkingAbout0 changeing Arrow -> Object thinkingAbout1 compound subjects with grammar enlosing in parenthesis (Seth Russell)' s Seth Russells*Copyright (C) 2001 Seth Russell. GNU GPL 2s0.022Niiiswakecsr&tZ'dddZdZdZdZdZdZd Zd Z d Z d Z d Z dZ dZdZdZdZdZ dZdZ"dZ.dZ>edZKedZYdZ]dddZpedZedZedZeed Zeed!Z d"Z!d#Z"d$Z#$d%Z$3d&Z%:d'Z&Bd(Z'Td)Z(Xd*Z)\d+Z*gd,Z+ld-Z,wd.Z-d/Z.d0Z/d1Z0d2Z1d3Z2RS(4NsIsnobodycs'*||_+||_3d|_9d|_Ad|_Bd|_Cd|_Dd|_ Ed|_ Fd|_ Gd |_ Hd |_ Id |_Md|_N|idjo^P|i|_Q|i|_R|i |_S|i |_T|i |_U|i |_n[g|_`d |_ad |_bd |_cd |_hh|_lh|_pg|_t|id y|i|iz|i|i{|i d||i!|if|_"d|_t#SdS(Nsohsii iiieiF#i')i/i5isUrGraphsownedBysok($sMyNamesselfsownedBysOwnersLogicserrors graphIdFixs nodeIdFixs open3IdFixs arrowIdFixslexIdFixs open6IdFixs numberIdFixs actionIdFixs open9IdFixsPDSsgraphIdsnodeIdsarrowIdslexIdsnumberIdsactionIdsgraphss attnGraphsattnNodes attnPredicates attnArrowslexicons associationssmemStacksgroGraphsgroNodes groPredicatesgroArrowsmemosNone(sselfsMyNamesownedBy((sbot.pys__init__'sJ                        cs&|i|i|i|ifSdS(N(sselfs attnGraphsattnNodes attnPredicates attnArrow(sself((sbot.pysAttnscs/|i|i|i|if|ifSdS(N(sselfs attnGraphsattnNodes attnPredicates attnArrowsLogic(sself((sbot.pys dispAttnLogicscs-d|_|i|iSdS(Ni(sselfs attnGraphs firstNodesAttn(sself((sbot.pys firstGraphs  cs}|idt|ijo$|id|_tSn,|id7_|id|_tSdS(Nisfailsok( sselfs attnGraphslensgraphss firstGraphsLogicsfails firstNodesok(sself((sbot.pys nextGraphs      cs:t|id|_|i|iSdS(Ni(slensselfsgraphss attnGraphs firstNodesAttn(sself((sbot.pys lastGraphs cs8dddf\|_|_|_|iSdS(Ni(sselfsattnNodes attnPredicates attnArrowsAttn(sself((sbot.pys firstNodes$cs|idt|i|ijo$|id|_tSnA|id7_ddf\|_|_ d|_t SdS(Nisfailisok( sselfsattnNodeslensgraphss attnGraphs firstNodesLogicsfails attnPredicates attnArrowsok(sself((sbot.pysjaces'    csOt|i|id|_ddf\|_|_|iSdS(Nii(slensselfsgraphss attnGraphsattnNodes attnPredicates attnArrowsAttn(sself((sbot.pyslastNodes cs/ddf\|_|_|iSdS(Ni(sselfs attnPredicates attnArrowsAttn(sself((sbot.pysfirstPredicatescs|idt|i|i|ijo2ddf\|_|_d|_tSn+|id7_d|_d|_t SdS(Niisfailsok( sselfs attnPredicateslensgraphss attnGraphsattnNodes attnArrowsLogicsfailsok(sself((sbot.pyssyms.    csGt|i|i|id|_d|_|iSdS(Nii(slensselfsgraphss attnGraphsattnNodes attnPredicates attnArrowsAttn(sself((sbot.pys lastPredicates' csl|tjo!t|i|i|idjod|_tSnt |djo^|tjo t}n>|i i |o|i |}nd|_t Sn |}|id|_xY|idjoE|i|i|i|id|joPn|iqW|idjo tSnt SdS(NisoksNotThingsfaili(spropertysNoneslensselfsgraphss attnGraphsattnNodesLogicsoks thingTypesidslexiconshas_keysfailsfirstPredicates attnPredicatessym(sselfspropertysid((sbot.pyssymTos*4        , cs d|_|iSdS(Ni(sselfs attnArrowsAttn(sself((sbot.pys firstArrows cs|idt|i|i|i|ijo#d|_d|_tSn|id7_d|_t SdS(Niisfailsok( sselfs attnArrowslensgraphss attnGraphsattnNodes attnPredicatesLogicsfailsok(sself((sbot.pysgresss5    cs{|tjo)|i|i|i|i|itjod|_t Snt |djo^|tjo t}n>|i i |o|i |}nd|_tSn |}|id|_x`|idjoL|i|i|i|i|id|joPn|iqW|idjo t SntSdS(NsoksNotThingsfaili(sobjectsNonesselfsgraphss attnGraphsattnNodes attnPredicates attnArrowsLogicsoks thingTypesidslexiconshas_keysfails firstArrowsgress(sselfsobjectsid((sbot.pysgressTos*<        3 csBt|i|i|i|id|_ |iSdS(Ni(slensselfsgraphss attnGraphsattnNodes attnPredicates attnArrowsAttn(sself((sbot.pys lastArrows.cs |ii|o|i|}n|i|}|ii|o?|i|}|dd|ddf\|_|_ n3|i |||i|i fg|i|<ddf\|_ |_ |i SdS(Nii(sselfslexiconshas_keyscalledsids newNodeIds associationssas attnGraphsattnNodesgroNodes attnPredicates attnArrowsAttn(sselfscalledsasid((sbot.pysat s/"cs2!|ii|i|i|i|ifdS(N(sselfsmemStacksappends attnGraphsattnNodes attnPredicates attnArrow(sself((sbot.pysmemscsm"%t|idjo.&|ii\|_|_|_|_n (d|_)d|_ *t SdS(Nisremem but nothing on memStacksoh( slensselfsmemStackspops attnGraphsattnNodes attnPredicates attnArrowserrorsLogicsoh(sself((sbot.pysremem"s .  cs./t|i|i|i|i|itijof0|i|i|i|i|i\|_|_1ddf\|_|_2d|_ 3t Sn5d|_ 6t SdS(Nisoksfail( stypesselfsgraphss attnGraphsattnNodes attnPredicates attnArrowstypess TupleTypesLogicsoksfail(sself((sbot.pysvance.s84   cs>?|tjo A|id7_B|iSnXC|ii|oE|i|Sn0H|id7_I|i|i|<J|iSdS(Ni(scalledsNonesselfsgraphIdslexiconshas_key(sselfscalled((sbot.pys newGraphId>scsKM|tjo O|id7_P|iSnXQ|ii|oS|i|Sn0V|id7_W|i|i|<X|iSdS(Ni(scalledsNonesselfsnodeIdslexiconshas_key(sselfscalled((sbot.pys newNodeIdKscsY\tSdS(N(sNone(sself((sbot.pys newArrowIdYsscs]`|ddjo|ddjp|ddjo|ddjoancd|d}d|||}e|ii|ogt|Sn0j|id7_k|i|i|<l|iSdS(Nis"is'i(svalues parseTypeslanguagesliteralsselfslexiconshas_keyslexId(sselfsvalues parseTypeslanguagesliteral((sbot.pysnewLexId]sGcspvd|_w|tjox|ii|oz|ii|i|o{|i|}|t|djo+}d|d|_~d|_ t Sn|i|}|i|d|_ |i d|_ tSn(d|d|_d|_ t Snn|i|}|iig|ii|t|id |_ |g|i|<|i|d |_ tSdS( NssGraphsAttempt to groGraph called "s4" but that name is already used, and is not a Graph.sohisfailsB" which name is already used, yet is not associated with anything.isok(sselfserrorscalledsNoneslexiconshas_keys associationssids thingTypeslogicsohs attnGraphs firstNodesLogicsfails newGraphIdsgraphssappendslensgroNodesok(sselfscalledsid((sbot.pysgroGraphps2        cs|i|}|ii|o|i|}xe|D]Z}t|t i jo|d|i jo'|d|_ d|_ tSnqEWn|i|i ig|i|i i|t|i|i d|_ ddf\|_|_|ii|o'|i|i|i |i fn#||i |i fg|i|<|id|_ tSdS(Niisfailisok(sselfs newNodeIdscalledsids associationsshas_keysassnsistypestypess TupleTypes attnGraphsattnNodesLogicsfailsgraphssappendslens attnPredicates attnArrows groPredicatesok(sselfscalledsassnsisid((sbot.pysgroNodes& -  '"  cse|tjo{|i|i|iig|i|i|iit|i|i|iit|itSn|i |i ||i|i|id}|i|if}|i |i|od|_tSn|itotttg|i|i|i|id<||i|i|i|id<||i|i|i|id<tSn|i|i|iig|i|i|ii||i|i|ii|t|i|i|id|_d|_|id|_tSdS(Nisfailiiisok(spropertysNonesselfsgraphss attnGraphsattnNodesappendsgroArrowsoksmemsatsidspropertyLocationsrememssymTosLogicsfails attnPredicateslens attnArrow(sselfspropertyspropertyLocationsid((sbot.pys groPredicates6!!!      .%% !!!'   cs|tjo|i|i|i|iit|i|i|i|iit|i|i|i|iitt|i|i|i|id|_ d|_ t Sn|i |i ||i|i|id}|i|if}|i|i|od|_ tSn|ito||i|i|i|i|i d<||i|i|i|i|i d<t|i|i|i|i|i d<t Sn|i|i|i|ii||i|i|i|ii||i|i|i|iitt|i|i|i|id|_ d|_ t SdS(Nisokisfailii(sobjectsNonesselfsgraphss attnGraphsattnNodes attnPredicatesappendslens attnArrowsLogicsoksmemsatsidsobjectLocationsrememsgressTosfail(sselfsobjectsseqsobjectLocationsid((sbot.pysgroArrows4(((.      ,,, (((. cs7|i||i||i|dS(N(sselfsgroNodessubjects groPredicates predicatesgroArrowsobject(sselfssubjects predicatesobjectsgraphsseq((sbot.pysgroscs|i|i|i|id}|tjo tSn|i|i |d}|G|i  x) |i o dG |i q~W H |i dS(Niis,(sselfsgraphss attnGraphsattnNodes attnPredicates predicateIdsNonesfailsmems associationsspredicateTokens sayObjectsgresssremem(sselfspredicateTokens predicateId((sbot.pyssays%   cs|i|i|i|i|i}|tjo tSngt |t i joF|i |i o|in|itSn|GdS(N(sselfsgraphss attnGraphsattnNodes attnPredicates attnArrowsobjectsNonesfailstypestypess TupleTypesmemsvancessayTopicsrememsok(sselfsobject((sbot.pys sayObjects(    csb|i|i|id}|tjo tSn |i|d}!|G"t SdS(Nii( sselfsgraphss attnGraphsattnNodestopicIdsNonesfails associationss topicTokensok(sselfstopicIds topicToken((sbot.pyssayTopics  cs$%|io &tSn'|i(|i)H*|i+dG,|i-x)-|io.dG/|iqcW1|idS(Ns ( sselfsifEmptyPredicatesoksmemssayTopicsfirstPredicatessayssymsremem(sself((sbot.pyssayBal$s     cs]34|i|i|i|idtjo5d|_6tSn7d|_8tSdS(Nisoksfail( sselfsgraphss attnGraphsattnNodes attnPredicatesNonesLogicsoksfail(sself((sbot.pysifEmptyPredicate3s ,   csc:;|i<|i=|i>x">|io?|iq0W@|idS(N(sselfsmems firstNodessayBalsjacesremem(sself((sbot.pyssayGraph:s   csBCtitif}Dtdd}E|t_F|iG|iHtdd}Id}Jx|DJ]}K||}quWL|iM|SdS(Nstemp.txtswsrs( ssyssstdinsstdouts saveStreamssopensfsselfssayGraphsclosesssi(sselfsss saveStreamssfsi((sbot.pyssayGraphServerBs      csDTU|ii}Vx%|DV]}W|dG|dGHqWdS(Nii(sselfs associationssitemssasi(sselfsasi((sbot.pysshowAssociationsTs csDXY|ii}Zx%|DZ]}[|dG|dGHqWdS(Nii(sselfslexiconsitemssasi(sselfsasi((sbot.pys showLexiconXs csH\]|i|id}^dG|G|i|GH_|i|i|id}`dG|G|i|GHa|i|i|i|id}bdG|G|i|GHc|i|i|i|i|i }d|i|i|i|i|i d}e|i|i|i|i|i d}fdG|GdG|GdG|GHdS( Nisgraph=snode=s predicate=isobject=s stId=s seq=( sselfsgraphss attnGraphsgIdssymbalOfsattnNodesnIds attnPredicatespIds attnArrowsobjectsstIdsseq(sselfsgIdsseqsobjectspIdsstIdsnId((sbot.pysshowAttn\s%(,,csZgh|ii}ix4|Di])}j|d|joj|dSnqWkdSdS(Niis(sselfslexiconsitemssksisid(sselfsidsisk((sbot.pyssymbalOfgs  cslm|in|io|i|i|idGp|i|idGHq|ird|_sx2s|idjot|iu|i qpWv|i dS(Nisok( sselfsmemssavememossymbalOfsgraphss attnGraphs firstNodesLogicsshowNodesjacesremem(sself((sbot.pys showGraphls     cswx|iydGz|i|i|i|idG{|i|i|idG||iGH}|i~d|_x2|idjo|i |i qW|i dS(Ns isok( sselfsmemssymbalOfsgraphss attnGraphsattnNodesAttnsfirstPredicatesLogics showPredicatessymsremem(sself((sbot.pysshowNodews %   csdG|i|i|i|i|idG|i|i|i|idG|i|i|i|idGH|idS(Ns ii(sselfssymbalOfsgraphss attnGraphsattnNodes attnPredicates showObjects(sself((sbot.pys showPredicates ,#$cs|i|id|_x|idjodG|i|i|i|i|i|i dG|i|i|i|i|i dG|i|i|i|i|i G|i GH|i q/W|i t SdS(Nsoks i(sselfsmems firstArrowsLogicssymbalOfsgraphss attnGraphsattnNodes attnPredicates attnArrows showPlacesgresssrememsNone(sself((sbot.pys showObjectss   3*1 csM|i|i|i|if}||ijo dSndSdS(Ns<---s(sselfs attnGraphs attnPredicatesattnNodes attnArrowsxsmemo(sselfsx((sbot.pys showPlaces! cs+|i|i|i|if|_dS(N(sselfs attnGraphs attnPredicatesattnNodes attnArrowsmemo(sself((sbot.pyssavememoscsti}|i}|i}|i}|i}t|djo tSn2|djo!|i |||dSn|SdS(Ns Punctuations.sok( sshlexsinputs get_tokenssubjects predicatesobjectsterminals tokenTypesoksselfsgro(sselfsterminals predicatesinputsobjectssubject((sbot.pys readInputs  (3s__name__s __module__s__init__sAttns dispAttnLogics firstGraphs nextGraphs lastGraphs firstNodesjaceslastNodesfirstPredicatessyms lastPredicatessymTos firstArrowsgresssgressTos lastArrowsatsmemsrememsvancesNones newGraphIds newNodeIds newArrowIdsnewLexIdsgroGraphsgroNodes groPredicatesgroArrowsgrossays sayObjectssayTopicssayBalsifEmptyPredicatessayGraphssayGraphServersshowAssociationss showLexiconsshowAttnssymbalOfs showGraphsshowNodes showPredicates showObjectss showPlacessavememos readInput(((sbot.pyswake&s` `                $#!            cst|tdjo dSn|io dSn|io dSnh|ddjp|ddjo dSn8|d d jo|dd jo d Snd SdS(NsasNotTokensDigitssSymbalis"s'sLiteralissUris Punctuation(stypescalledsisdigitsisalnum(scalled((sbot.pys tokenTypes    % % c st|tdjo dSn|djp |djo dSnddddddd d d d f }|tt|d SdS(NisNotThingiɚ;sGraphsNodes3unusedsArrowsLexs6unusedsNumbersPrograms9unusedi(stypesids thingTypessintsstr(sids thingTypes((sbot.pys thingTypes   '( s__doc__s __author__s __license__s __version__stypessshlexssyssfailsoksohswakes tokenTypes thingType( s __license__s tokenTypes __author__ssysswakesshlexs __version__stypess thingType((sbot.pys?s