00:02:38 Ooh, someone has "The Ultimate Experinece" online 00:03:30 only 3 more hours on these fonts. yay. 00:04:01 let me know if you get them to work 00:04:24 you didn't get any of em working? 00:04:39 I sorta stopped after I had that big computer mess. 00:04:42 Went to work on other things. 00:04:57 became a carpenter 00:05:04 lol 00:05:13 aaah, in-jokes 00:05:20 (semi-serious, actually. we're putting shelves in Ben's room today.) 00:05:29 iOoh 00:06:13 Heh, iOoh. What happens at Apple conferences. 00:06:43 heh, heh 00:07:49 sbp has changed the topic to: In Japan, they call him Bath-Toy-Morbus-Man 00:08:37 tomch has quit (Read error: 104 (Connection reset by peer)) 00:09:01 Hmm... that's one of my crummier topics, but the original joke was just hillarious 00:09:09 tomch (~lambda@modem-2965.monkey.dialup.pol.co.uk) has joined #swhack 00:11:27 ooh, Hey Joe is on a weirdal polka session 00:12:34 I like the "Happening for Lulu" version 00:12:57 Hendrix was so sick of playing it by then :-) 00:13:08 Weird Al plays it much faster, tho 00:13:11 remind me never to trust you 00:13:38 heh. not quite sure how you can compare the two... 00:14:37 Hi all. Can anyone suggest where a copy of the copyright-expired version of _Robert's Rules of Order_ can be found? The Gutenberg Project does not yet appear to have it. Please /msg lilo. Thanks. 00:14:44 if you really want to listen to a good Hendrix cover... 00:14:52 ... try SRV's Little Wing 00:16:01 SRV's? 00:16:31 Stevie Ray Vaughan 00:18:04 heh: http://www.esmerel.com/wagons/rob/rules.html 00:20:12 ooh, lilo's gonna credit me for finding it 00:20:28 argh, where did you find it? 00:20:48 * Morbus prints out some gamegrene.com advertisements for a gaming con tomorrow. 00:22:26 thanks to aq and AaronSw for coming up with them so swiftly, and CMHunter and aq and sbp and hicham and others for trying so hard :) appreciated everybody 00:22:35 Heh, heh. 00:22:58 *chuckle* 00:23:03 whooo 00:23:14 so come on now, what's the answer? :-) 00:23:33 With ads: http://www.bartleby.com/176/ 00:23:42 sans ads: http://www.constitution.org/rror/rror--00.htm 00:24:10 ah, I gave him the Bartleby one 00:24:21 I gave him the constitution.org one 00:24:32 didn't try the c.org one - stupid, stupid, stupid! 00:25:07 ha!: "However, the modifications and enhancements to this work are Copyright © 1996 Constitution Society." 00:25:17 but the modifications aren't on that page 00:25:27 lilo and i went over this already 00:25:42 "Robert's Rules of Order Revised by General Henry M. Robert 1915 Version, Public Domain" 00:25:49 i think they're just copying the htmlization 00:26:04 Hmm... but the modifications are in that work, right? 00:27:54 * AaronSw plays that vaughn version 00:28:09 EOW fast approaches 00:29:02 FAQs for my IRC style guide: 00:29:09 Q: Isn't this the most pointless document in the world? 00:29:15 A: No, that's the N3 style guide. 00:29:23 Q: How come you violate these rules? 00:29:40 A: When I volate them it's for experimentation and research. When you violate them it's out of ignorance. 00:32:28 rules: no channel name in topic. do /me right. 00:32:39 name, not : 00:33:06 all-caps, colors and bold are ANNOYING 00:34:02 bye all 00:34:05 [EOW] 00:34:11 c'ya 00:34:48 nice style guide :-) 00:39:22 GabeW (~Gabe@12-236-237-100.client.attbi.com) has joined #swhack 00:42:58 2 more hours on the fonts! 00:43:29 heh, heh 00:44:11 i'm wondering if i should go with suitcase or not. 00:44:11 i like doing my own handling. 00:44:38 I'm sure that you do 00:44:58 That way the smallpox viruses get into the plane cabin intact 00:45:04 i just hope it allows me a decent amount of control. 00:45:44 sbp has changed the topic to: One hour and fifty-eight minutes to go on the fonts! 00:46:26 one hour and fifty eight minutes? 00:46:26 oh right. 00:47:25 AARONSW WHAT DO U MEAN THAT ALL CAPS4%AREC45ANNOYING??? 00:47:34 eheh 00:47:44 xchat colors suck 00:48:11 3C4OLORS 8ARE 13COOL 00:48:20 yeah, kinda of a pain 00:48:45 mIRC does them so much better. 00:48:59 3WOO 4HOO 00:49:16 woowo 00:49:28 I'm so important 00:52:47 Arrgh. On close inspection, every single one of these urls seems to be to the Constitution Society's version, which is under a copyright and a (mildly) restrictive license. 8) 00:53:26 If anyone knows where I can find a copy of the 1915 Public Domain version of Robert's Rules of Order, without 'Revised' on it, let me know 8) 00:53:33 lilo sucks 00:53:37 die scumbag 00:53:46 Ash_ has changed the topic to: http://lilofree.net 00:53:49 Regardless, thanks to everyone for their help! 00:53:51 This is a WALLOPS message for the Open Projects Network. These messages contain non-critical comments and announcements and detailed server admin information. To turn them off, turn off user mode 'w'. On most clients: '/mode -w'. Thanks. 00:53:55 heh, I feel a KLINE coming on for Ash... 00:54:14 Hmm... http://www.google.com/search?q=%22Robert%27s+Rules%22+-revised 00:54:36 Ash_ has changed the topic to: http://lilofree.net/ || O NOE I DNOT KNOW HOW TO UES TEH GOOGAL!@%$ 00:54:48 sbp: nope 00:55:22 ooh, that's gonna get #swhack obliterated from TEH face of OPN 00:56:27 Ash_ has changed the topic to: http://www.lilofree.net/ || O NOE I DNOT KNOW HOW TO UES TEH GOOGAL!@%$ 00:58:46 Will somebody explain why I actually find that quite amusing? 00:59:20 tomch: What's quite amusing? 00:59:44 Ash_: Ash_. 00:59:55 Hmm. 00:59:56 Dunno. 01:01:11 [[[ 01:01:11 [8:56] one more thing.. when i send an email out from my workstation, is there a way to remove the workstation name from the email address? 01:01:11 [8:56] ie.. the name is always ply@system1.domain.com.. i want to be ply@domain.com 01:01:12 [8:58] ply has left the channel 01:01:12 [9:00] yeah. 01:01:13 [9:00] but you were impatient. 01:01:17 [9:00] bitch. 01:01:17 [9:00] i got me laundry and me dishes, f00. 01:01:19 [9:01] woo. 01:01:23 ]]] 01:01:23 - #sendmail 01:08:41 oierw` (~mathew@pcp994425pcs.goosck01.sc.comcast.net) has joined #swhack 01:10:10 Ash_ has quit ("hail satan") 01:10:21 .google "* +" 01:10:21 no results found. 01:13:31 hehe 01:15:13 28.7 of 61.3 01:15:13 man oh man 01:15:16 ;) 01:15:52 oierw` (~mathew@pcp994425pcs.goosck01.sc.comcast.net) 01:15:52 goosck01? 01:15:58 you mean, there's more than one cock on your goose? 01:16:12 i didn't think roosters and geese could mate, let alone orgy 01:26:23 oierw has quit (Read error: 110 (Connection timed out)) 01:27:08 oierw` has quit (Read error: 104 (Connection reset by peer)) 01:28:15 oierw` (~mathew@pcp994425pcs.goosck01.sc.comcast.net) has joined #swhack 01:31:05 half done the fonts. whoo! 01:33:27 :) 01:33:49 *hmm* 01:33:59 9 minuites ahread of schedule 01:34:08 heh, heh 01:34:15 not that he's counting 01:34:20 re-assessment time 01:34:21 :-) 01:41:49 GabeW has quit ("Client Exiting") 02:08:00 Morbus has quit (No route to host) 02:09:27 tomch has quit (Read error: 104 (Connection reset by peer)) 02:09:52 tomch (~lambda@modem-2965.monkey.dialup.pol.co.uk) has joined #swhack 02:12:35 wow. these things are loud :p 02:12:42 * oierw` is in the wrong channel 02:12:45 *oops* 02:16:37 heh 02:41:18 Gotta run 02:44:22 tomch has quit ("()") 13:58:30 * sbp waves 16:18:55 tomch (~lambda@modem-3736.panther.dialup.pol.co.uk) has joined #swhack 16:52:55 hello sbp 16:53:55 how am i mysterious? 17:16:58 You're the mysterious oierw¬ 17:17:06 oierw` is now known as oierw 17:17:12 s/¬/!/ 17:17:16 i understand i'm the mysterious oierw 17:17:20 but what makes me mysterious? 17:17:34 your mysteriousness makes you mysterious :-) 17:17:46 heh, actually, I know more about you than most of the other lurkers in here 17:18:08 yes, you do :) 17:18:19 you've seen me think 17:18:29 heh, heh. Quite scary 17:18:59 actually, only deus_x and eikeon are really quiet in here 17:19:20 oh, and tansaku 17:19:41 * sbp wonders why talli has named himself "barstool" 17:19:51 is he waiting for someone to sit on him? 17:19:53 tomch has quit (Killed (NickServ (Ghost: thc!~lambda@modem-3519.porcupine.dialup.pol.co.uk))) 17:20:22 tomch (~lambda@modem-3519.porcupine.dialup.pol.co.uk) has joined #swhack 17:40:36 Seth (~seth@12-230-243-179.client.attbi.com) has joined #swhack 17:41:51 .google Guido Python Style Guide 17:41:52 Guido Python Style Guide: http://www.python.org/doc/essays/styleguide.html 17:42:34 Hey Seth. How's the API coming along? 17:44:11 fairly well ... slowley but it's looking good ... has a solid theoritical background 17:44:39 but im still at the 'hello world' level as far as function 17:44:50 cool 17:45:00 will the source be publically available etc.? CVS? 17:45:31 yep ... its will be opensource python code ... ill probably get a sourcefourge .. or what would you recommend? 17:46:25 Hmm... I haven't used CVS personally for any of the APIs that I've worked on, but it's probably a good thing if you can find an account. As for using SF, they've been having a few problems lately, and I don't know if I'd bother with the registration etc. personally 17:47:23 hmmm ... well what would you recommend ... the w3c stuff is not avail to me i dont think 17:47:48 Well, for Eep, I just made the files and a .tar.gz available 17:48:04 i.e. just bunged the whole lot into a publically readable directory 17:48:37 but how can you get others to contribute .. that, of course, is my real motive for publishing the source code 17:48:58 well, you say "yo, Fred, come help me on my code!" 17:49:10 I see your point about CVS making it easier 17:49:18 hmmm... yeah guess that would work 17:49:35 but if you had an SF account, I wouldn't go to the trouble of signing up just to help :-) 17:50:18 is it a whole lot of trouble to sign up at SF ? 17:50:58 dunno; but any trouble is too much trouble, and last time I signed up I wasn't too impressed 17:51:02 things may have changed since then 17:51:18 it wasn't too bad, but I just don't like registration procedures for working on code 17:52:31 i see .. well i would make an exception then and just had deliver the code to your mailbox 17:52:40 had=hand 17:53:05 well, there's nothing to stop you from putting it in SF CVS and on another site, AFAIK 17:53:15 so perhaps that's the best solution - the best of both worlds 17:54:49 the methods are going to be stuff like http://robustai.net/mentography/methods1.html 17:55:43 though for 'gress' im thinking of just calling it 'nextArrow' ... so people dont need to learn my goofy names 17:55:48 heh, this is going to take some reading :-) 17:56:02 sean, it's real dumb simple 17:56:21 ever played with turtle graphics? 17:56:49 yeah, ages and ages ago 17:57:21 so you move a turtle around a space with commands .. go forward 2 .. turn 180 .. stuff like that 17:57:38 yep, I recall 17:57:51 with this api you move a turtle (called the attention pointer) around the fabric of arrows and nodes 17:58:01 ah, neat 17:58:20 on thing about it is that you can never get the turtule off of the graph ... its closed :)) 17:58:44 will it be able to do the equivalent of log:semantics to suck in other graphs? 17:59:26 the api will come with the ability to read and write Semenglish and xml\rdf ... thoese make new graphs 17:59:37 actually, apologies, but I have to go. I'll be back in about an hour 17:59:53 well thanks for the interest :)) 18:03:45 tomch has quit (Read error: 110 (Connection timed out)) 18:28:20 Seth has quit () 18:35:11 Seth (~seth@12-230-243-179.client.attbi.com) has joined #swhack 19:04:42 * sbp waves 19:05:47 for "first arc", do you mean the first predicate in alphabetical order of the URIs? 19:05:53 and what about bNode labels? 19:06:12 I guess all will be clear when the API's online :-) 19:07:26 actually yes .. but im not sure whether the sequence will be alphabetical ... might just be the order that the predicate labels were defined in the system ... but one could sort those and give them new id, making them almost alphabetic 19:08:19 cool. how many of the jace/vance/gress/sym methods have you currently implemented? 19:08:58 and what other capibilities will it have? will it be able to: read NTriples/Notation3/SemEnglish, XML RDF etc., query, infer, implement builtins, merge documents? 19:09:29 well the implementation of some of these are gonna be but simple ... those you mention are just adding something to the indexes 19:10:10 i keep rewriting the code ... just started again this morning ... my fingers are still very far behind 19:10:36 if you want it to read n3, you might need to implement that yourself 19:10:45 would it be possible to look at what you've done already? 19:10:59 in return, I'll send you another RDF API that I started hacking on this morning (if you like) 19:11:24 maybe tomorrow .. id be embarassed to show it now 19:11:29 :-) 19:12:04 I find that every time I write an RDF API, the design gets better 19:12:28 good .. thats the way its supposed to be 19:12:32 but your approach seems different to the others: somewhat akin to traversing XML documents through the DOM 19:13:01 actually this api is something that i wrote about 20 years ago on the apple-ii in 6502 machine language ... 19:13:22 i just recently convinced myself that it is but simple to do it now in python ... i love python :) 19:13:30 heh, me too :-) 19:13:42 20 years ago? wow, talk about previous art 19:14:07 do you still have the files for the original? 19:14:38 * sbp has heard the old Apple][ mentioned quite a few times 19:14:41 makes it simple ... all the methods still work ... gress,vance, sym, jace, ment, say etc ... i just need to retrieve them from memory and translate them to the new python data structure 19:15:08 right 19:15:21 i got a 5 1/5 floppy that hasnt been read for 20 years and no apple ][ to read it on 19:15:21 I guess that you're storing things as quads? 19:15:28 are you using built in list structures, or some kind of class? 19:15:36 (or both) 19:15:54 ugh 19:16:19 (both) 19:16:27 mostly its all done in lists 19:16:33 and dictionaries 19:16:46 havent totally defined the class structure yet 19:16:53 cool - that's how I've just been doing it (subclassing UserList) 19:17:19 what is your UserList structure? 19:18:01 UserList is defined in the Python stdlib. it's just a wrapper for [] 19:18:14 I can send you the code... hang on a sec. 19:18:38 i just go 19:18:43 graph=[] 19:19:03 then graph.append('g0') 19:19:16 graph.append([]) 19:19:21 makes my first graph 19:19:45 * sbp sends 19:19:46 the identity of that graph is 'g0' 19:20:07 some day that will be an integer stead of a literal 19:20:22 right, well I subclass UserList, so I have class Store(UserList.UserList) 19:20:36 then I overwrote append so that it doesn't add a triple that's already in the store 19:20:42 and extend to use the new append 19:20:53 and now I'm adding some query and filtering functions 19:20:57 er.. methods, rather 19:21:21 anyway, the test is at the bottom of the code that I just sent you 19:22:11 I'm aiming for a very small but flexible API this time - not dependent on quads or triples 19:22:31 theoretically, Eep was triple oriented but could probably take a quad extension 19:22:46 (Eep was the API that I derived this new code from) 19:23:41 wow .. thanks .. looks like i can learn a lot from this 19:23:51 no problem 19:24:20 my structure might be a little more complex .. its designed to make the nagigating real fast and simple 19:24:24 I'll probably hook up the Yapps Notation3 parser to it... 19:24:50 Hmm... the pointer in your thing reminds me of Befunge :-) 19:25:16 .google Befunge 19:25:17 Befunge: http://www.catseye.mb.ca/esoteric/befunge 19:25:20 if befunge was comprised of triples rather than little character functions 19:25:33 befunge is a 2 dimensional obfuscated programming language 19:26:02 that's just what the pointer thing reminds me of... that and the DOM 19:26:07 .google XML DOM 19:26:07 XML DOM: http://www.w3.org/DOM 19:26:30 you might want to look at some of the methods in Python's DOM module 19:27:02 .google Python "xml.dom" site:python.org 19:27:02 Python "xml.dom" site:python.org: http://www.python.org/doc/current/lib/module-xml.dom.html 19:27:49 i think its different 19:28:09 probably. I'm just engaging in free association :-) 19:28:22 with mentography you got an object called 'attention' that you just move around on a fabric 19:28:42 you dont need to process expressions that are returned by functions 19:29:33 right. in befunge though, you have the file pointer which moves about on the file... so that's a similarity, but of course the similarity ends there since a mentography is a set of triples, not functions :-) 19:29:44 so, what are you going to be doing with the API? 19:29:55 I mean, what taks will it be able to fulfill? 19:30:10 s/taks/tasks/ 19:30:23 it can read and write 19:30:34 what file format? 19:30:37 and it displays frames that are user friendly 19:31:22 when you see an instance of something that you want to make another one of, 19:32:04 you see a button where you click on it, the system pops up a questionair with all the fields filled out from the kb 19:32:30 you change the things you want .. and click the thingy into the semantic cloud 19:32:36 a GUI interface? will you be using TKInter for that? 19:32:41 yep 19:32:50 cool 19:33:21 and i want to attach it to some kind of p2p decentralized cloud to distribute stuff to my friends 19:33:38 sounds like semplesh :-) 19:34:05 probably is ... is semplesh got a alpha out yet? 19:34:22 yep; let me get the URI... 19:34:37 http://cvs.plesh.net/semplesh/ 19:35:24 so what do i get if i download and install it? 19:36:08 Hmm... do you have a CVS client? if not, you can get the .tar.gz 19:36:17 the tarball: http://cvs.plesh.net/semplesh/semplesh.tar.gz?tarball=1 19:36:41 but what do i get for my effort .. i mean how developed is this now .. and why no action for 6 weeks ? 19:37:21 oops, actually, you want http://cvs.plesh.net/infogami/infogami.tar.gz?tarball=1 19:37:43 well, the RDF API bit of it is practically done and all working 19:37:59 we're just deliberating on the network code, which is very difficult 19:38:01 any gui? 19:38:10 so we have the RDF sorted, and now we're onto the P2P :-) 19:38:14 no GUI, nope 19:38:56 aaron told me he was gonna use stid for the 4th attribute of the tuple 19:39:06 is that still the way? 19:39:32 yeah, I think he still does: class Assertion (_Node): 19:40:15 is the api you just sent the same a infonagi ? 19:40:27 no, the API that I just sent is a derivative of Eep 19:40:40 Eep was something that started independently of infogami 19:40:55 then Aaron merged some of it into infogami, and I'm also trying to develop it further 19:41:21 between us all (i.e. along with mnot et al.) there are quite a few RDF API approached 19:41:27 s/approached/approaches/ 19:41:33 but still used the same api 19:41:43 and I presume that we'll do a survival of the fittest thing 19:41:51 who used the same API? 19:42:04 well... Hmm... let me draw an ASCII art diagram 19:43:09 rdfapi(old infogami)----->new infogami 19:43:09 / 19:43:09 Eep-----------\ 19:43:09 \-----------------new api(that I just sent to you) 19:43:39 and later, the good bits of the new API that I'm working on will probably get folded info infogami 19:43:55 are they all based on: 19:43:58 SUBJECT, PREDICATE, OBJECT, FORMULA = 0, 1, 2, 3 19:44:04 flat list ? 19:44:13 nope 19:44:18 well, Eep is to some extent 19:44:31 think of Eep as the kind of experimental development branch of infogami 19:44:46 infogami is more object oriented than either Eep or the SWAP stuff 19:45:01 although the new API evolved from Eep is slightly more object oriented, as you've seen for yourself 19:45:20 the point is that they each have different purposes 19:46:01 Eep was just a quick experimental thing that just grew and grew. infogami is stable code for a big P2P project. the new API is a black box thing for a couple of other projects that I hope to be working on (PyB, diff, and annotations) 19:46:09 but they all use a flat list .. is that right? ... i mean this is not a tree of lists ? 19:46:45 well, infogami has nodes, assertions, and stores 19:47:11 three separate lists ? 19:47:18 no, nodes aren't lists 19:47:33 what are nodes? 19:47:40 and neither are assertions or stores, although stores have some of the list methods 19:47:40 data structure wise 19:47:48 for example, you can compare lengths, append, etc. 19:47:51 nodes are classes 19:48:05 they store a symbol, and a type 19:48:25 so the type will be one of URI, EXIVAR, or UNIVAR 19:48:39 and the symbol will be either a URI or a local name 19:48:39 i havent wrapped my mind around the idea that every node in a graph would be a class 19:48:56 well, an instance of the Node class 19:49:06 why wouldn't it be? i.e., what else would it be? 19:49:14 unless you used a kind of (Value, Type) listy 19:49:27 which is what the SWAP stuff uses, and what SWIPT (my first RDF API) used 19:49:33 so every node in your graph is actually an active object .. it would show up in the class browser? 19:49:33 AFAIK 19:49:42 yeah 19:50:01 but () is an instance of a tuple, when you think about it 19:50:02 well that is what i cant wrap my mind around 19:50:10 why not? lists are things too 19:50:19 it's just that we're customizing them 19:50:39 hmmm ... 19:50:43 so when i say 19:50:48 graph=[] 19:51:04 graph is an object 19:51:24 >>> graph = [] 19:51:25 >>> type(graph) 19:51:25 19:51:25 >>> 19:51:43 well is a list an object? 19:51:49 er, both 19:51:56 er, yes, that is :-) 19:52:06 >>> print graph.__class__ 19:52:06 19:52:06 >>> 19:52:35 ok, silly me, im new to object programming ... never wrote a whole system in it 19:53:10 so, when you think about it, a "node" in an RDF system is a node. when you use a list for it, you're just adapting a good existing construct 19:53:20 thing is that every node in my system is not an object 19:53:31 what are nodes in your system then? 19:53:43 if they're not objects, how do they exist? 19:54:20 you see them as something like 19:54:28 graph[1][1] 19:54:47 right, so if I did print graph[1][1], what would it give me? 19:55:10 a literal? a tuple? some other instance? 19:55:13 is would list out the entire node 19:55:25 right, but what is that node? 19:55:48 its one level of the tree down from graph 19:57:01 but what *is* it? I mean, if the node is some URI like http://www.w3.org/, is that the literal "http://www.w3.org/", or a tuple ("http://www.w3.org/", URI), or some other thing like Node("http://www.w3.org/")? 19:57:35 is's a list of lists of identities and tuples 19:58:00 O.K., but what is the identity? 19:58:15 ill send you the code and you can critique it ... it's just not in a good place right now 19:58:17 IOW, what is the nature of the smallest indivisible unit of your API? 19:58:21 cool! 19:58:31 an identity integer 19:58:44 * sbp is rather curious to find out :-) 19:58:47 the high order parts of it give you the type of identity 19:59:06 id=800000000000000 19:59:08 ah, and the integer is mapped to a URI etc. in a dictionary, I suppose? 19:59:18 id=id+1 19:59:25 gives me the next id 19:59:35 you can do id += 1 19:59:54 nid = node id might start at 8000000000000000 20:00:10 pid = property id .. might start at 9000000000000000 20:00:23 so given the id i can tell what kind of object im talking about 20:00:49 aha, like address registers 20:00:53 the db in mysql just has the id .. not the uri .. which i treat as just literals 20:01:22 there like subjective identifiers .. very reliable internally ... meaningless externally 20:02:05 exteranlly i just read and write rdf 20:04:04 so back to your q about alphabetic 20:04:51 if you sort the node id's and property id's by their label literals and rebuild your file, then everything would output in alpha order 20:05:25 but I suppose you'll be stepping through in numerical id order? 20:05:49 yeah why not 20:09:55 so the attention pointer is always pointing at a statement? 20:11:04 Hmm... so if you have some guy :X with two emails and a name, you can gress through the emails, and sym to the name? 20:11:08 yes, it always points to an arrow ... cant't get off an arrow .... the things in it's universe are (graph, node, arrow) 20:11:32 yep .. you got it :) 20:12:12 vance fails if the arrow points out of the graph into the literal space 20:12:24 Hmm... I'm not sure that I get vance yet 20:12:41 so I guess vance would be for if the guy had a cousin, and that cousin had a cousin 20:12:46 vance moves attn from the arrow to the object of the arow 20:12:53 ah, I see 20:13:09 kind of like dereference 20:13:19 so instead of acting upon the nodes with the subject of the current statement, you move to those that have the subject that is the object of the old statement 20:13:26 and jace? 20:13:50 ah, that just steps through all of the nodes 20:13:53 jace moves you to other nodes in the same graph ... fails when there are no more 20:13:58 all of the subject, rather... 20:14:08 yep 20:14:17 bnodes included 20:14:40 what ment and say? 20:14:45 s/what/what about/ 20:15:21 say is the output ... usually just says the current arrow in Semenglish 20:15:37 human friendly display 20:15:52 and ment? 20:16:17 ment ... might be renamed 'toGraph' .. goes to the node which contains the graph which the arrow in inside 20:16:29 in=inside 20:16:37 no in=is 20:17:02 * sbp isn't sure that he got that 20:17:42 there is a method called 'toGraph' which moves attn to the node which contains the arrow 20:17:59 in formula talk that would be 20:18:17 move to the node { ..... } 20:18:29 O.K. 20:18:49 Hmm... and you're doing this as lists rather than dictionaries? 20:18:50 if i said 20:19:14 { A r B } called C. 20:19:23 and attention was on 20:19:26 A r B 20:19:39 toGraph would move attn to C 20:20:00 but there is a problem there between mentography and n3, that would need to be dealt with 20:20:19 ooh, got it 20:20:41 Hmm... I wonder if this could be modelled more efficiently with a Dict. Let's give it a go... 20:21:02 the graph is all contained in the lists .. which is really a 3 level tree of lists 20:21:28 right. Well, Aaron had a similar idea to this 20:21:31 then there are dictionaries to associate the objects in that list to the outside world of literals 20:21:36 i.e. a subject oriented store 20:21:48 so you'd do { 'x': { 'y': ['z'] } } 20:22:20 and then to step through the predicates (arcs) of node 'x', you'd do graph['x'].keys() 20:22:31 no the dictionary out_in would just associate the external name\uri to the internal identity 20:22:48 {'called' : 8000000000000 } 20:23:05 ah, but here I'm using the dictionary for the store too 20:23:25 well i though about that and rejected it .. not sure why 20:24:02 .time EST 20:24:02 Apr. 20, 2002 4:24 pm US/Eastern 20:24:05 on thing is that you can't change data in a dictionary without rewriting the whole key\value pair 20:24:18 .time pst 20:24:19 Apr. 20, 2002 1:24 pm US/Pacific 20:24:23 good point 20:25:11 also i didnt know u could put a dictionary in a dictionary .. can you? 20:25:19 yep, you sure can 20:25:45 but then can you add to the nested dictioary ? 20:26:44 yep 20:26:55 here's a function I just wrote (haven't tested it yet):- 20:26:59 def add(graph, triple): 20:26:59 s, p, o = triple 20:26:59 if s in graph.keys(): 20:26:59 if p in graph[s]: graph[s][p] += o 20:26:59 else: graph[s][p] = [o] 20:26:59 else: graph[s] = { p: [o] } 20:28:49 bet it dont work 20:29:12 ah, it did:- 20:29:13 [[[ 20:29:14 graph = {} 20:29:14 triples = [ 20:29:14 ('x', 'y', 'z'), ('p', 'q', 'r'), ('p', 'q', 's'), ('x', 'z', 'r') 20:29:14 ] 20:29:16 for triple in triples: add(graph, triple) 20:29:18 print graph 20:29:20 ]]] 20:29:22 gives: {'x': {'y': ['z'], 'z': ['r']}, 'p': {'q': ['r', 's']}} 20:29:41 not bad for a one minute hack :-) 20:30:13 hey, tha's cool! 20:31:32 now, for your program, you'll have to have a pointer for the current subject, and a pointer for the predicate position 20:32:12 there is just one object .. it always points to an arrow 20:33:03 yep, but when you know the arrow, you've also got to know the subject and the object, right? unless you have a different id for each predicate (which in your system you probably do) 20:33:09 but yes it has an index into the (graph, node, predicate, arrow) 20:33:22 index=pointer 20:34:01 yep each predicate has a different id .. but that same predicate in another node would have the same id 20:34:30 O.K., so I've written a combined gress/sym 20:34:36 [[[ 20:34:37 subject = 'x' 20:34:37 for predicate in graph[subject].keys(): 20:34:37 for object in graph[subject][predicate]: 20:34:37 print subject, predicate, object 20:34:37 ]]] 20:34:48 which gives (for the graph above):- 20:34:48 x y z 20:34:48 x z r 20:35:55 at(x) say sym say 20:36:03 that what it looks like to me 20:36:57 ah, pretty much so. I think it's more like at(x), then { gress say } until fail then { sym say } until fail 20:37:04 and loop... 20:37:28 I just need to figure out how to make a pointer 20:37:43 I suppose that a pointer can be the s, p, o signature... ah 20:37:44 at(x) ((say gress ing) sym ing) 20:38:22 ing = repeat then ok 20:38:58 so that operation would output the entire node 20:40:48 repeat then O.K.? 20:41:36 actually ing = then repeat 20:42:07 if logic is fail it repeats ... otherwise it execuites onward in the clause 20:42:56 it implements the 'ing' in English .... like in keep doing something till you can't anymeore 20:43:42 say gress ing 20:43:50 would say all the arrows on a predicate 20:44:33 ((say gressing) syming) 20:44:46 says all the arrows on all the predicates on a node 20:45:33 we dont need no stinking loops 20:46:17 actually you dont even need the parenthesis 20:46:25 say gressing syming 20:46:29 works too 20:46:52 but it better to do 20:46:58 say gressing syming ok 20:47:14 cause that will return ok steak of fail 20:50:27 here we go:- 20:50:27 [[[ 20:50:27 def at(graph, s): 20:50:27 return s, graph[s].keys()[0], graph[s][graph[s].keys()[0]][0] 20:50:27 def gress(graph, pointer): 20:50:27 s, p, o = pointer 20:50:29 if len(graph[s][p]) == 1: return 0 20:50:31 elif (len(graph[s][p])-1) > graph[s][p].index(o): 20:50:33 return s, p, graph[s][p][graph[s][p].index(o)+1] 20:50:35 else: return 0 20:50:37 def say(pointer): 20:50:39 print pointer 20:50:41 ]]] 20:52:05 on the graph above... 20:52:05 {'x': {'y': ['z'], 'z': ['r']}, 'p': {'q': ['r', 's']}} 20:52:05 we run... 20:52:05 pointer = at(graph, 'p') 20:52:05 say(pointer) 20:52:05 if gress(graph, pointer): 20:52:07 pointer = gress(graph, pointer) 20:52:09 say(pointer) 20:52:12 and get... 20:52:13 ('p', 'q', 'r') 20:52:15 ('p', 'q', 's') 20:52:36 Um... 20:53:08 yeah, but I haven't written a tokenizer for your new language yet :-) 20:53:23 im just using shlex 20:53:33 yet alone an interpreter 20:53:38 hey, sean, your good at this 20:53:57 shlex? 20:54:54 yeah it's in the distribution 20:54:57 from shlex import * 20:55:23 ooh, so it is 20:55:49 x=shlex() 20:55:55 x.getword() 20:56:01 cool, a little simple lexical scanner 20:56:02 works great for tokenizing 20:56:12 look who wrote it 20:56:13 s/little simple/simple little/ 20:56:37 woops 20:56:53 ah, Eric Raymond 20:57:00 x.get_token() 20:58:50 here's sym:- 20:58:50 def sym(graph, pointer): 20:58:50 s, p, o = pointer 20:58:50 if len(graph[s]) == 1: return 0 20:58:50 elif (len(graph[s].keys())-1) > graph[s].keys().index(p): 20:58:50 return (s, graph[s].keys()[graph[s].keys().index(p)+1], 20:58:52 graph[s][graph[s].keys()[graph[s].keys().index(p)+1]][0]) 20:58:54 else: return 0 20:59:09 running... 20:59:09 pointer = at(graph, 'x') 20:59:10 say(pointer) 20:59:10 while gress(graph, pointer): 20:59:10 pointer = gress(graph, pointer); say(pointer) 20:59:10 while sym(graph, pointer): 20:59:12 pointer = sym(graph, pointer); say(pointer) 20:59:14 while gress(graph, pointer): 20:59:16 pointer = gress(graph, pointer); say(pointer) 20:59:20 gives:- 20:59:22 ('x', 'y', 'z') 20:59:24 ('x', 'z', 'r') 20:59:26 quite nice, I suppose 20:59:43 i cant believe how fast you are with this 20:59:54 of course, these should be *methods* of a graph class, but oh well 21:00:13 heh, real time programming feedback :-) 21:00:47 oh, and I should be storing more things as variables... "graph[s][graph[s].keys()[graph[s].keys().index(p)+1]][0]" is just a little bit ugly... 21:01:30 actually, let me rewrite those two lines 21:05:36 sorry, bad connection... 21:05:38 O.K.:- 21:05:40 p = graph[s].keys()[graph[s].keys().index(p)+1] 21:05:42 return s, p, graph[s][p][0] 21:05:44 gives the same result, just neater 21:06:10 sean, your running circles aroud me 21:06:22 *chuckle* Just writing vance now 21:07:09 this *should do it:- 21:07:09 def vance(graph, pointer): 21:07:09 s = pointer[2] # new subject is old object 21:07:09 if s not in graph.keys(): return 0 21:07:09 else: return s, graph[s].keys()[0], graph[s][graph[s].keys()[0]][0] 21:07:17 lemme test it 21:07:44 ugh, I'll have to change the test graph a bit 21:09:17 here we go:- 21:09:18 [[[ 21:09:18 pointer = at(graph, 'x') 21:09:19 say(pointer) 21:09:19 while vance(graph, pointer): 21:09:19 pointer = vance(graph, pointer); say(pointer) 21:09:20 ]]] 21:09:22 prints out:- 21:09:26 {'x': {'y': ['p'], 'z': ['r']}, 'p': {'q': ['r', 's']}} 21:09:27 ('x', 'y', 'p') 21:09:28 ('p', 'q', 'r') 21:10:28 ah, now jace is a bit different because it's predicate oriented. It can be done by just sorting out all the predicate into one big list or something 21:10:54 jace is node oriented ... moves through all the nodes in a graph 21:10:57 but there you go. that's my little demonstration of how you *could* probably use dictionaries if you wanted to 21:11:06 oh, of course! 21:11:12 sorry, I misread it a little 21:11:18 in that case, jace is pretty simple... 21:11:21 * sbp works on it 21:11:38 do you have all his in a python file? ... dont want to loose it 21:12:01 yep: I'll send it over to you 21:12:13 cool, id like that :) 21:13:06 one good thing about these methods, is that they will end up with exactly the same resust regardless of what kind of data structure you choose to use 21:16:05 makeshift jace:- 21:16:06 def jace(graph, pointer): 21:16:06 s, p, o = pointer 21:16:06 if len(graph.keys()) == 0: return 0 21:16:06 elif (len(graph.keys())-1) > graph.keys().index(s): 21:16:06 return at(graph, graph.keys()[graph.keys().index(s)+1]) 21:16:08 else: return 0 21:16:14 code to run it:-0 21:16:18 s/0// 21:16:18 print 'jace test' 21:16:18 pointer = at(graph, 'x') 21:16:20 say(pointer) 21:16:22 while jace(graph, pointer): 21:16:24 pointer = jace(graph, pointer); say(pointer) 21:16:26 result:- 21:16:28 jace test 21:16:30 ('x', 'y', 'p') 21:16:32 ('p', 'q', 'r') 21:16:34 :-) 21:16:49 wow .. does all you stuff work the first time ? 21:17:02 heh, not always :-) 21:17:07 (if only...) 21:17:31 O.K., that's pretty much done, so I'll send it over to you 21:17:51 great! 21:18:32 sent 21:18:36 got it 21:18:46 wow, that was quick. Ah, technology... 21:19:09 you should be able to just run $ python sethapi.py 21:19:27 now all i got to do is figure out why i had planned on using a more complex structure .. but even so i bet i can use some\most of your code 21:20:07 well, I'm not sure what the best approach would be, but it just struck me that using Aaron's dictionary hierarchy might *work*, and it does seem to have done 21:20:20 yep 21:20:23 whether that's the most efficient route or not is another question... 21:20:37 hey would these methods work on the infonagi api? 21:20:52 nope, since it doesn't use this kind of structure 21:21:21 oh, unless you mean the methods in general... 21:21:22 i dont mean the exact code .. but the methods should still work .. should work regardless of your data structure 21:21:40 right. in which case, yes, it should be possible, but probably more difficult than the scant lines above 21:22:00 yep prolly much more 21:22:44 with the structure im working on .. gress,sym,jace are just an additions to subscripts 21:22:58 BTW, I think guido wrote something about this... Aaron pointed me to it. Something for doing transitive closure, perhaps 21:23:21 aha: http://www.python.org/doc/essays/graphs.html 21:23:49 it's a path finding thing 21:24:02 i saw that ... but its not labeled graphs ... dont think i can use it 21:24:21 well, the thing that I did above is just a slight extension of that 21:25:16 http://www.pythonpros.com/arw/kjbuckets/kjbuckets.html is another .. also cant use cause dont do labels 21:25:27 (BTW, the "give a pointer or 0" thing is a bit tacky: you'll want to re-write that) 21:25:39 ah, DanC showed Tim that 21:26:00 actually, that's an almost perfect module for many RDF APIs :-) 21:26:23 what's 'that' ? 21:26:29 kjBuckets 21:26:55 i couldn figure out how to use it .. but im dumb 21:27:24 I don't think that anyone's actually used it in an RDF API yet... 21:28:56 thing i like about python , is if you get something right, hyou can rewrite the class as a C++ and make it super fast 21:29:29 Hmm... I don't think I've ever rewritten any Python as C++ yet, but I'll take your word for it :-) 21:29:37 have you heard about pyrex? 21:29:43 nope 21:29:45 yeah: good glass 21:30:07 ah, http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/version/Doc/About.html 21:30:16 cool, deltab 21:32:11 so will pyres write the c++ code, given the python module? 21:32:27 C, not C++ 21:34:25 i got to go ... hey sean, thanks a lot :)))))) 21:34:34 no problem at all. thanks for chatting 21:34:54 see you soon 21:34:56 Seth has quit () 22:25:36 oierw has quit ("hmm.")