00:00:07 Ah good. 00:00:12 Cool! http://adbusters.org/campaigns/july4/debate/comments.html 00:00:18 * sbp just wrote up many of his songs, in HTML form, as you can tell... 00:00:21 specifically: http://adbusters.org/campaigns/july4/debate/comments.html?id=3715 00:00:34 but not online! except for that one... 00:00:48 oh, this is your deeley 00:00:53 isn't it hosted on your box? 00:00:59 The logs? 00:01:09 I've been composing songs like that while I walk back from school... quite fun. 00:01:17 I need to produce one for an adbusting movie. 00:01:41 cool 00:01:55 have you written any of the down? Except the /x75 one 00:02:03 No, not really. 00:02:14 They're very much spontaneously improvised. 00:02:36 It's fun tho, the lyrics and rhyming work out surprisingly well 00:02:41 even tho you can't stop and rewind. 00:04:24 * sbp comes up with a convoluted chord sequence... I just can't get it to fit the pattern that I know it should fit 00:05:54 Bm7 Am7(V) GMaj/GMaj7 x 00:05:56 fill in the x! 00:06:23 After learning intervals in music class I can sort of read that! :) 00:06:29 So did you mess any with rdfapi? 00:06:38 I sent a letter to www-archive about it 00:07:14 Ah, I see. 00:07:23 Yes, I realized the comma bug as I woke up this morning. ;) 00:07:44 What else was there... oh yes, equivalence and repr 00:08:29 how do you feed in bNodes??? 00:08:39 Just call Node() 00:08:43 err nod() 00:08:47 err node() 00:08:48 sorry 00:08:48 node() 00:08:55 and feed it what? 00:09:00 Nothing. 00:09:05 It'll return a blank node 00:09:09 http://lists.w3.org/Archives/Public/www-archive/2001Oct/0024 00:09:16 > I'm still not sure how it manages to decode the literal back into a u'' literal, seeing as how there is no reverse function. 00:09:20 Why would you need it to reverse? 00:09:25 Ahh, for output? 00:09:28 yeah 00:09:30 I'll add that... 00:10:19 O.K., so say I was feeding in a triple... I could send it triple.store('x', 'y', ???) 00:10:35 how would I feed it in nothing where the "???" is to get a blank node? 00:10:52 and, what happens when I want to feed in _:b and _:b: labelling the nodes? 00:11:08 store.triple('x', 'y', rdfapi.node()) 00:11:45 so, for :x :y _:b . :y :x _:b . what would I do? 00:12:07 b = rdfapi.node() 00:12:17 store.triple('x', 'y', b) 00:12:23 store.triple('y', 'x', b) 00:12:34 but in practice, I can't do that when parsing an NT document into the store 00:12:50 well, I can, but it'll be tricky 00:13:00 I'll have to create a list of label/node values 00:13:16 Yes, same with output. 00:13:28 Just use a dictionary to do it. 00:13:41 label2Node['b'] = node() 00:14:01 store.triple(label2Node[nodeID], 'a','b') 00:14:44 Why should I define useful namespaces in in the API itself? 00:14:50 wouldn't it be better to make that a separate file? 00:15:14 dunno, just thought it would be neat 00:15:37 I took out the one I did define because I didn't use it. 00:15:40 Feel free to make a file of them for me. 00:15:44 O.K. 00:20:04 * sbp makes NTriples.py RDF API "compliant" 00:20:12 Yay! :) 00:24:51 Boston rocks: http://www.nat.org/camera/dsc03097-800x600.jpg 00:26:03 so... '' is a URI, u'' is a literal? 00:26:07 Yep. 00:26:16 Bijan helped me come up with that trick. 00:26:23 is there a function to convert '' to u''? 00:26:27 in Python 00:26:41 Hmm... let me check... 00:26:46 Hehe, Wes Felter: "I was surprised that the BMW salesman just handed me the keys and told me to bring it back by 6." - Hehe, Wes Felter: "I was surprised that the BMW salesman just handed me the keys and told me to bring it back by 6." 00:26:55 Oops, I meant http://wmf.editthispage.com/discuss/msgReader$5989 00:29:10 * sbp goes looking for the function 00:29:42 sbp, unicode('foo') 00:29:54 >>> unicode('foo') 00:29:54 u'foo' 00:30:06 yep, just got it at the same time :-) 00:30:15 and you can encode as UTF-8... neat 00:30:22 Wes: "I can tell that it would be easy to accumulate speeding tickets in any of these cars." :) 00:33:04 ugh, are you really sure you want to lose the bNode names? 00:33:16 Why is it so important to keep them? 00:33:34 Just indirect to objects thru a dictionary. 00:33:34 aw... it's not 00:33:55 Want me to create a simple function to do it for you? 00:35:31 nodeid2node_map = {} 00:35:32 def nodeid2node(nodeid): 00:35:32 if not nodeid2node_map.has_key(nodeid): 00:35:33 nodeid2node_map[nodeid] = rdfapi.node() 00:35:33 return nodeid2node_map[nodeid] 00:36:34 i've already done that 00:36:42 So why's it so hard? 00:36:46 I'm doing an output function now 00:37:03 Oh... I was going to do that in __repr__... 00:37:09 Well, it just goes the other way 00:37:16 reverse the direction of the dictionary. 00:38:08 yep 00:38:18 * sbp is doing other things at the same time, sorry... 00:38:28 what future do you predict for this API? 00:38:41 I mean: why bother, etc.? Gameplan? 00:38:43 I hope to use it in all my apps, which will eventually take over the world. 00:39:04 > I know, I know: it's an RDF 1.0 API. But is there any chance of a Quad class too? 00:39:04 Umm, it's emphatically not an RDF 1.0 API... and they already are effectively quads. 00:39:10 aha, that's reason enough for me to port my code over 00:39:26 :-) 00:39:41 ah, but they're tacky quads: with statement IDs. I meant quads with contexts 00:39:47 pents, then... 00:39:54 What do you think store() does? 00:40:04 I'm still thinking of the best way to do it though... 00:40:11 Next up is to implement N3 and RDF/XML parsing and them make a cwm-style command-line app. 00:41:49 Want me to do the N-Triples output then? 00:42:38 sbp? 00:42:49 No, I'm doing it now you big lunatic 00:43:00 OK, just asking. :) 00:43:59 ugh, this is a pain in the butt. O.K., when you have a dictionry, can you do for x in dictionary, and what does that return for x? 00:44:26 You probably want for x in dict.keys() 00:44:42 ah, yes, probably 00:44:53 I started this last night and I got this far: 00:44:54 output = '( ' 00:44:54 for t in self.tripleList: 00:44:54 output += '\n\t{ <%s> <%s> <%s> }' % (t.subject.uri, t.predicate.uri, t.object.uri) 00:44:54 output += '\n)' 00:44:54 return output 00:45:10 where self is a store 00:45:31 I've got:- 00:45:31 def printnt(self): 00:45:32 x = '' 00:45:32 self.bNodes = {} 00:45:32 for triple in self.tripleList: 00:45:32 for term in triple: 00:45:34 if not term.uri: bNodes[term] = self.generatelabel(term) 00:45:36 def generatelabel(self): 00:45:38 for bNode in self.bNodes('keys'): 00:46:17 Huh? 00:46:45 oops 00:46:49 s/bNodes/self.bNodes 00:47:14 I'm not sure for term in tripleList will work? 00:47:16 er, and I meant .keys 00:47:40 I meant "for term in triple" 00:49:05 I think it's simpler than that -- whenever you encounter a node that isn't in the dict, just generate a random label for it. 00:49:15 or rather increment the last label 00:49:49 no, because if you match two nodes, then you have to generate the same label for them 00:50:06 Right, which is why you check that it's not in the dit 00:50:08 err dict 00:50:25 but you won't have a dict 00:50:50 Why not... 00:51:16 if not hasattr(t.subject, 'uri') and t.subject not in dict.keys(): 00:51:41 dict[t] = 'a' + str(nodeNum + 1) 00:51:53 ... repeat for preducate, object ... 00:53:31 on second thought, you can do the output function for me :-) 00:53:50 Heheh. I'll write an example you can convert to something more appropriate. :) 00:54:23 well, I've written the NTriples parser, but I have no way of telling if it has worked or not 00:55:03 OK... let me write the __repr_ func... just a sec 00:57:41 how do I get it to print an exception to file? 00:57:53 try: x.parsen(sys.argv[1]) 00:57:54 except: print ??? 00:58:01 look in logicerror.com/archiverProxy-code 00:58:37 search for 'errors.txt' 01:00:23 traceback.print_exception doesn't work... 01:01:05 really? 01:01:12 OK, finished the basic N-Triples stuff, should I upgrade? 01:01:18 Example output: 01:01:18 ( 01:01:19 { } 01:01:19 { _:a1 } 01:01:19 ) 01:01:53 yeah, please 01:03:05 code is really ugly 01:03:18 File "ntriples.py", line 78, in run 01:03:18 try: x.parsen(sys.argv[1]) 01:03:18 File "ntriples.py", line 33, in parsen 01:03:18 f = open(fn, 'r'); self.parse(f); f.close() 01:03:18 File "ntriples.py", line 38, in parse 01:03:19 self.parsent() # Parse self.document into self.quads 01:03:21 File "ntriples.py", line 53, in parsent 01:03:23 self.appendq(line) 01:03:25 File "ntriples.py", line 65, in appendq 01:03:27 if not self.bNodes[bNode]: self.bNodes[bNode] = rdf.node() 01:03:29 KeyError: a 01:03:30 OK, it's uploaded 01:05:09 ... and tests.. 01:09:19 01:09:40 how do I get it to print out? 01:09:42 I have x 01:09:53 x = rdf.Store() 01:09:57 I fed some junk in 01:10:01 print x 01:10:03 I want to print that junk out 01:10:06 ah, neat 01:10:11 very neat :-) 01:10:15 :-) 01:10:52 File "ntriples.py", line 84, in run 01:10:52 try: print x 01:10:52 File "rdfapi.py", line 165, in __repr__ 01:10:52 sub = '<'+t.subject.uri+'>' 01:10:52 TypeError: cannot add type "None" to string 01:11:15 Hmm... 01:11:22 it's in rdfapi, so it's your problem :-) 01:11:27 my end works just fine... ahem 01:11:27 How is it getting None as uri? 01:11:40 bNodes have none as a URI 01:11:49 s/none/None/ 01:12:01 They're not supposed to... 01:12:20 what?! 01:12:20 class Node: 01:12:20 nodeList = {} 01:12:20 01:12:20 def __init__(self, uri=None): 01:12:34 OK, fixed. 01:12:40 * AaronSw uploads 01:13:16 Done. 01:14:00 hooray! 01:14:00 ( 01:14:00 { _:a1 <#b> } 01:14:00 { } 01:14:00 { <#g> _:a1 } 01:14:01 { <#j> <#k> <#l> } 01:14:03 { _:a1 _:a1 _:a1 } 01:14:05 { <#p> <#q> } 01:14:07 { <#t> } 01:14:09 ) 01:14:11 Cool! 01:14:14 Pff: make it output proper NTriples, Aaron... 01:14:27 ah, your bNode output isn't working 01:14:27 Yes, that's a job for the ntriples.py module ;) 01:14:31 the input data is:- 01:14:40 _:a <#b> "c" . 01:14:40 "d" "e" "f". 01:14:40 <#g> "h" _:i . 01:14:40 <#j> <#k> <#l> . 01:14:40 _:m _:n _:o . 01:14:40 <#p> <#q> "\"r" . 01:14:42 01:14:44 "\"s" <#t> "" . 01:14:48 # iophfeia gjpao 01:14:48 Oh, I see the bug. 01:15:57 Fixed in 1003627044 01:17:11 Heh: sbp finds that "a" is too long for rdf:type? Sigh ... 01:17:40 :-) 01:18:26 once again, I get: ( 01:18:26 { _:a1 <#b> } 01:18:26 { } 01:18:26 { <#g> _:a1 } 01:18:26 { <#j> <#k> <#l> } 01:18:27 { _:a1 _:a1 _:a1 } 01:18:29 { <#p> <#q> } 01:18:31 { <#t> } 01:18:33 ) 01:18:38 Did you get the right version? 01:18:46 1003627044 01:18:59 Then the bug is in your code now. :) 01:20:24 ugh 01:20:40 URI so I can look it over? 01:21:33 er... it doesn't have one 01:21:43 I know... 01:24:19 I'm pretty sure it's a problem in RDF API 01:24:28 self.bNodes: {'n': , 'o': , 'a': , 'm': , 'i': } 01:24:55 Umm, that would indicate the bug is in your code 01:25:01 Note that all of those are the same node instance! 01:25:12 gprmgpmrh 01:25:40 I have:- 01:25:41 try: a = self.bNodes[bNode] 01:25:41 except: self.bNodes[bNode] = rdf.node() 01:26:24 The try should probably be replaced with: 01:26:26 that should generate a new node, shouldn't it? 01:26:31 if not a in self.bNodes.keys() 01:26:47 Ah, you never reset 'a' do you! 01:26:47 s/a/bNode 01:27:01 a is just a bit of crud: I don't use a 01:27:38 I've changed it, with same result 01:28:00 if not bNode in self.bNodes.keys(): 01:28:00 self.bNodes[bNode] = rdf.node() 01:28:03 * AaronSw tries to follow your code... 01:28:09 hit refresh 01:28:23 elif term[:2] == '_:': # Term is an unlabelled node: bNode 01:28:31 Doesn't that get the _last_ two chars in term? 01:28:46 Oh, never mind. 01:29:07 it gets all but the first two 01:29:30 I hope :-) 01:30:13 Oh, i see the bug... it was in my code 01:30:43 aha! 01:31:19 Use this code: 01:31:20 if (not Node.nodeList.has_key(value) # Node hasn't been interned... 01:31:20 and value is not None): # ... and it's not blank ... 01:31:20 Node.nodeList[value] = Node(value) # ... so do it now. 01:31:26 Hmm... I'll upload it... 01:31:49 thanks 01:32:08 OK: 1003627984 is uploaded 01:32:26 Sorry about that -- the code was thinking None was a URI. 01:33:05 File "ntriples.py", line 74, in run 01:33:06 try: x.parsen(sys.argv[1]) 01:33:06 File "ntriples.py", line 27, in parsen 01:33:06 f = open(fn, 'r'); self.parse(f); f.close() 01:33:06 File "ntriples.py", line 32, in parse 01:33:06 self.parsent() # Parse self.document into self.quads 01:33:08 File "ntriples.py", line 47, in parsent 01:33:10 self.appendt(line) 01:33:12 File "ntriples.py", line 60, in appendt 01:33:14 self.bNodes[bNode] = rdf.node() 01:33:16 File "rdfapi.py", line 95, in node 01:33:18 return Node.nodeList[value] # Now return the node 01:33:20 KeyError 01:34:10 Oops... 01:35:06 OK, try 1003628181 01:35:39 1003627044 is online 01:36:14 Oops, forgot to hit save. Try now. 01:36:57 hooray" 01:36:58 ( 01:36:59 { _:a1 <#b> } 01:36:59 { } 01:36:59 { <#g> _:a2 } 01:36:59 { <#j> <#k> <#l> } 01:36:59 { _:a3 _:a4 _:a5 } 01:37:01 { <#p> <#q> } 01:37:03 { <#t> } 01:37:05 ) 01:37:22 ugh: why aren't you outputting as NTriples? Would it be that difficult? 01:37:43 Fine... do you want it in a context? 01:37:56 nope, just spew it out 01:38:38 s/'\n\t{ %s %s %s }'/'%s %s %s .' 01:38:44 Yep, I'm on it. 01:38:48 same with () 01:38:54 :-) 01:39:51 OK... 01:40:13 Fixed in 1003628484 01:42:29 cool:- 01:42:30 _:a1 <#b> . 01:42:30 . 01:42:30 <#g> _:a2 . 01:42:30 <#j> <#k> <#l> . 01:42:31 _:a3 _:a4 _:a5 . 01:42:33 <#p> <#q> . 01:42:35 <#t> . 01:42:46 logster, off 16:36:28 logster has joined #swhack 16:36:28 topic is: € <-- The universal logo: stick it on your TV, magazines and newspapers. 16:36:28 Users on #swhack: logster BenSw|away AaronSw 16:36:40 Hello. 16:37:14 Hmm, time to paste in what logster missed: 16:37:15 cool:- 16:37:15 _:a1 <#b> . 16:37:15 . 16:37:15 <#g> _:a2 . 16:37:16 <#j> <#k> <#l> . 16:37:17 _:a3 _:a4 _:a5 . 16:37:19 <#p> <#q> . 16:37:21 <#t> . 16:37:46 http://infomesh.net/2001/10/ntriples/ 16:37:46 not a bad bit of hacking, that 16:37:47 Not bad at all. 16:37:47 One comment, if I may: It might be better if instead of subclassing, your class had a link to a store. That way variables won't stomp on each other. 16:37:47 So instead of: 16:37:48 class NTriples(rdf.Store): 16:37:50 It'd be just NTriples: 16:37:52 and the __init__ would take a store=Store() option 16:37:54 ah, good idea 16:37:56 def __init__(self): 16:37:57 sbp has joined #swhack 16:37:58 rdf.Store.__init__(self) 16:38:00 store = Store() 16:38:02 eh? 16:38:04 def __init__(self, store=rdf.Store()) 16:38:06 self.store = store 16:38:08 would be all you need 16:38:10 but then I'd need to change stuff too... 16:38:12 Yes, you'd need to change all store variables to self.store variables. 16:38:14 s/self.triple/self.store.triple 16:38:16 I don't have a self.triple... you mean tripleList? 16:38:18 no, I mean self.triple, and yes, you do 16:38:20 Oh, right. 16:38:22 yes, yes, carry on ;) 16:38:24 :-) 16:38:26 updated 16:38:28 I worked on a kind of meta API... I was very tired, so it didn't come out right 16:38:30 but the basic premise is that there are NAry relationships 16:38:32 and Terms 16:38:34 you just set the arity, and the datatype, and away you go! 16:38:36 Ooh, cool... so it'd work for TM too 16:38:38 TM? 16:38:40 Topic Maps 16:38:42 Turing Machines? 16:38:44 ah 16:38:46 well, it'd work for all extensions of RDF ever, hopefully 16:38:48 I don't see that. 16:38:50 well, you have terms, and you have relationships. What else is there 16:38:52 ? 16:38:54 Hmm, well perhaps... 16:38:56 yep, perhaps 16:38:58 * sbp is still quite shocked at how short your RDF API is 16:39:00 Heheh. 16:39:02 really: it's a bit surreal 16:39:04 once you format it a bit better, strip out all the crap... 16:39:06 Format: how so... 16:39:08 ? 16:39:10 it'll be shorter than the NTriples parser :-) 16:39:12 I need to stip out those commented bits. 16:39:14 well, I have a kind of style guide... 16:39:16 Well I don't hve the GNU gunk yet. 16:39:18 yeah 16:39:20 I was trying for Morbusy code shui but I'm not quite there 16:39:22 Where's your style guide? I'm going for Guido-style. 16:39:24 nah 16:39:26 nah to what? 16:39:29 *** rillian (Snak@00-30-65-2e-ae-5f.bconnected.net) has joined the channel 16:39:30 I read Guido style this morning 16:39:32 Python Style Guide: http://python.sourceforge.net/peps/pep-0008.html 16:39:34 Hi rillian 16:39:36 still looking for that CD? 16:39:38 well, what's next? Query engine? 16:39:40 Yep, that... and n3 and rdf/xml parsers 16:39:42 ooh, great fun 16:39:44 * rillian waves 16:39:46 Actually, first I need to do equivalence 16:39:48 * sbp waves 16:39:50 equivalence? 16:39:52 AaronSw: debian boot stuff? trying again now 16:39:54 you need a better function for putting triples in the store too 16:39:56 think I found the parts I need 16:39:58 Cool, rillian 16:40:00 you'll end up with duplicates as it is, I reckon 16:40:03 equivalence: so you can do triple == triple 16:40:04 What's wrong with duplicates? 16:40:06 they're messy, and it doesn't mean anything to repeat a triple in RDF 16:40:08 It does here tho, because triples are nodes 16:40:10 ah, good point 16:40:12 I'm still shocked at how short your code is! I thought you'd have written MBs of data by now... and I still don't get bits of what you've done 16:40:15 feel free to ask questions 16:40:17 I need to tersify the code a bit and add more comments 16:40:19 deltab, you awake? How do I check to see if object is of type x or any of its subclasses? 16:40:21 you need to write a manual! 16:40:23 why does Node have a nodeList dictionary? 16:40:25 Hmm... so I can keep track of all extant nodes. 16:40:27 Not sure if it's really necessary. 16:40:29 Oh, wait, nodeList keeps track of the URI->node mapping 16:40:31 It's a way to 'intern' the nodes 16:40:33 intern? 16:40:35 Yeah, so that we don't have two nodes that represent the same uri 16:40:37 that's why there's lower-case node 16:40:39 it returns a node if there's already one with that uri 16:40:41 ah... 16:40:43 * sbp counts 57 lines, in a stripped down version 16:40:45 Of my code? Wow. 16:40:47 Hmm... this is odd: 16:40:49 Traceback (most recent call last): 16:40:51 File "rdfapi-tests.py", line 29, in ? 16:40:53 print store 16:40:55 File "rdfapi.py", line 157, in __repr__ 16:40:57 nodeIdMap[t.subject] = 'a' + `nodeIdNum` 16:40:59 TypeError: unhashable instance 16:41:01 * sbp compresses Aaron's code even more 16:41:03 Oh dear! 16:41:05 51 lines 16:41:07 Why does python claim my class is unhashable when I give it a __eq__ method? 16:41:09 * AaronSw asks #python 16:41:11 *** yoda_ (yoda@c930384-a.hlndpk1.il.home.com) has joined the channel 16:41:13 *** yoda_ is now known as BenSw 16:41:15 ha, 49 lines! 16:41:17 no __repr__, though 16:41:19 Hi Ben 16:41:21 Heheh... what do you think I should do with it? 16:41:23 Hello 16:41:25 do with what? 16:41:27 ok, off to try the linux re-install. wish me luck 16:41:29 *** rillian has quit IRC (debian!) 16:41:31 ah, 48 lines 16:41:33 thank you, ";" 16:41:35 Why don't you move __repr__ into ntriples.py as a serialize command 16:41:37 I could do 16:41:39 but why should my code be messy when yours can? 16:41:41 :-) 16:41:43 O.K., I'll move it 16:41:45 So what do you have agains the Py style guide? 16:41:47 nothing, really 16:41:49 I just follow it 16:41:51 like not mixing tabs with spaces, eh Aaron? :-) 16:41:53 Hey! I don't mix them for _indentation_ 16:41:55 fine 16:41:57 added to http://infomesh.net/2001/10/ntriples/ 16:41:59 you can take out __repr__ now 16:42:01 OK, now you get to clean up that awful code ;) 16:42:03 aw, damn it 16:42:05 * AaronSw goes thru and does a code clean up 16:42:09 * AaronSw replaces header blurb with: 16:42:11 """An experimental RDF API which extends RDF 1.0 in a number of ways.""" 16:42:13 I wonder if the vanilla version actually works? 16:42:15 yes! 16:42:17 wow 16:42:19 Size: 1.60 KB (1,639 bytes) 16:42:21 Heh. That's pretty cool. 16:42:23 mind if I send it to www-archive? 16:42:25 No problem... 16:42:27 Arg! I don't think I've archived many of these versions... I hope I got all the important ones. 16:42:29 I need CVS. 16:42:31 I have some versions 16:42:33 * sbp sends 16:42:35 so, what are you going to call it? 16:42:37 What? The API? I dunno... 16:42:39 Oh, in the n-triples serialization you need to convert data: URIs back into literals 16:42:41 Is rdfapi a bad name you think? 16:42:43 http://lists.w3.org/Archives/Public/www-archive/2001Oct/0025 16:42:45 Thanks. 16:42:47 a bad name: yes 16:42:49 it's not really a name, it's a description! 16:42:51 it needs a really cool name 16:42:53 I like CWM, and Llyn 16:42:55 RDF API is like, "huh?" 16:42:57 low-marketability 16:42:59 Yeah, I agtree. 16:43:01 Arty-Plesh ;) 16:43:03 BTW, tav said that he really hated the name plesh. 16:43:05 "mesh" would be better 16:43:07 he he he 16:43:09 tav only said that 'cause it's going to take over the world! 16:43:11 Heheheh. So you like it then? 16:43:13 tav: 16:43:15 [[[ 16:43:17 so, on that note, dataplesh is a good step forward. i also like the 16:43:19 "meaning" behind it. but, frankly, it's a shit name ;p 16:43:21 try saying "plesh" a few times. and as much as i have tried, the name 16:43:23 simply doesn't grow on you. 16:43:25 i really wouldn't want to stand up to a crowd and start talking to them 16:43:27 about the "plesh". and i talk to crowds about many strange things... 16:43:29 ]]] 16:43:31 yeah, I agree, sadly 16:43:33 Really? Hmm... 16:43:35 you need to go into naming-mode 16:43:37 Well, I better wait until tav comes back so he doesn't shoot it down again. 16:43:39 well, you can start thinking of stuff 16:43:41 you need to think of two things now 16:43:43 one for dataplesh, one for RDF API 16:43:45 Yep. 16:43:47 how about, infomesh, and SWIPT! Oh, hang on... 16:43:49 I dunno, I've been saying 'dataplesh' to everyone I know for the past week or so without any strange looks. 16:43:52 they've probably been humouring you 16:43:54 lol 16:43:56 "oh, Aaron's off on another one of his crazy schemes to take over the world" 16:43:58 That's actually a relatively new thing for me. 16:44:00 intermesh! 16:44:02 no... 16:44:04 Noah suggested I call it a dataplash. 16:44:06 yuck 16:44:08 that's worse than dataplesh 16:44:10 Then, he said, the stuff you dropped into it could be called splashes ;) 16:44:12 if this actually does become in the least bit successful, people are going to look through these logs and go "Hmm..." 16:44:15 In a what-were-they-smoking kind of way? 16:44:17 then again, if you don't think of a decent name, it's not going to be successful, so it won't matter 16:44:19 yeah, probably 16:44:21 for the record, then: nothing 16:44:23 Heh, well the World Wide Web was an awful name and it succeeded 16:44:25 Tim should have gone with infomesh 16:44:27 * AaronSw just imagines Semantic Web historians pouring thru years of IRC logs... heh, heh 16:44:29 mwahahah! 16:44:31 wow, Semantic Web historians... that'll be a rare breed of people 16:44:33 Think so? 16:44:35 yeah. "Betamax historians" 16:44:37 such a pessimist... 16:44:39 Betamax apparently kicked ass! 16:44:41 It's still in use, you know. 16:44:43 All the television stations use it. 16:44:45 there's a 50/50 chance of the SW being as successful as we all hope, I reckon, same as there was with the WWW 16:44:48 which makes the chances of them both succeeding: 25/75 16:44:50 No, that's not true. 16:44:52 1/2 * 1/2 16:44:54 Since one of them has already happened, it's back to 50/50 16:44:56 erm... 16:44:58 Probabilities are fun like that. 16:45:00 stupid probabilities 16:45:02 what's the probability that probabilities are probably useless? 16:45:04 * AaronSw giggles 16:45:06 have you finished with the XRDF parser yet? 16:45:08 Oh, I'm still cleaning up the code. 16:45:10 * AaronSw assumes XRDF => XML/RDF 16:45:12 Names for the RDF API: Raptor, Zephyr, Pogo, Cludgy, Vanilex, Wumple, Bob 16:45:14 Heheh. 16:45:16 When we were trying to name N-Triples Dan Connoly exlaimed in frustration, "Just call it Jojo or Fred or something." 16:45:19 lol 16:45:21 Who named it N-Triples? 16:45:23 I forget... it was a combination of two people... you'll have to check the logs 16:45:25 * sbp won't: doesn't want to become an SW historian 16:45:27 Heheh. 16:45:29 Ah, how about "*The* RDF API"? 16:45:31 with "The" in big bold red animated flashing wavy glittery noisy letters? 16:45:33 *The* RDF API: Terse and Complex 16:45:35 Hehehe. 16:45:37 We might get sued by the W3C. 16:45:39 For disturbing the peace or something... 16:45:41 Using RDF in conjuction with the tag! 16:45:43 The RDF API in (Monty) Python 16:45:45 TRAMP 16:45:47 LOL 16:45:49 * AaronSw adds that to the docstring 16:45:51 lol 16:45:53 """TRAMP: The RDF API in (Monty) Python 16:45:55 An experimental RDF API in which RDF 1.0 is modified and mangled 16:45:57 into an unrecognizable bit of higly terse and powerful code.""" 16:45:59 perfect! 16:46:01 still, perhaps it could be... nameless? An unnamed parser 16:46:03 Whoo! After tersification it is exactly 101 lines -- I better stop! 16:46:05 * sbp finds a version from 2001-10-07 16:46:07 101: neat 16:46:09 upload? 16:46:11 * AaronSw runs unit tests... 16:46:13 "but we feel "? 16:46:15 Where's that from? 16:46:16 sbp has quit 16:46:17 rdfapi.txt - 1003631225 16:46:19 I'm still fixing bugs! 16:46:21 it puts http://infomesh.net/2001/10/08/swipt/rdfstore.txt to shame 16:46:23 I meant: why "we"? 16:46:25 Where'd I use we? 16:46:27 "but we feel"! 16:46:29 Note that this API extends RDF 1.0 in a number of ways. Obviously, 16:46:31 it can be used as merely an RDF 1.0 API, but we feel that the 16:46:33 extentions added here are important and useful, but they will 16:46:35 likely not be compatible with other RDF 1.0 APIs. 16:46:37 and ugh @ "but", "but" 16:46:39 I use "we" sometimes when writing up a project. Dunno why 16:46:41 Yeah, I took that all out. 16:46:43 And replaced it with the TRAMP bit. 16:46:45 heh, heh, really? 16:46:47 Yep. 16:46:49 gutterslut is a better word, but it's too long to get an acronym out of 16:46:51 LOL 16:46:53 from "The Faculty" 16:46:55 that's definitely a highly rated phenomic word 16:46:57 Heh 16:46:59 aw, upload, upload! 16:47:01 I've still got this weird bug... 16:47:03 put it in a jar, feed it lettuce... 16:47:05 Ah, think I've got it. 16:47:07 How do I test if a Python object is a member of a class or any of its subclasses? 16:47:09 deltab responds isinstance() 16:47:11 Ooh, so close... 16:47:13 Wooh! it works 16:47:15 OK, 1003634831 is up 16:47:17 it's up sbp 16:47:19 great, just got it 16:47:21 . 16:47:23 oops... 16:47:25 ok, fixed -- 1003635039 16:47:27 upload? 16:47:29 yep -- 1003635218 16:47:31 * AaronSw adds test case for it. 16:47:33 ah, that's better 16:47:35 higly? 16:47:37 pah 16:47:39 fixed in next rev 16:47:41 :-) 16:47:43 http://www.eros-os.org/pipermail/e-lang/2001-October/005793.html 16:47:45 [[[ 16:47:47 C: 2673 16:47:49 Perl: 1361 16:47:51 C++: 1020 16:47:53 PHP: 740 16:47:55 Java: 726 16:47:57 Python: 403 16:47:59 Unix Shell: 246 16:48:01 Tcl: 190 16:48:03 SQL: 124 16:48:05 ]]] 16:48:07 Yeah, saw that from Zooko.com, you? 16:48:09 It gets worse for Python later on... :( 16:48:11 yeah... 16:48:13 Wow, Mean Mr. Mustard's sister used to be named Shelly! Heh! 16:48:15 * AaronSw is listening to Anthology 3 16:48:17 which we just got 16:48:19 I have two pendingL http://uri.net/urn-nid-status.html 16:48:21 The songs on there are incredibly different. 16:48:23 I have Anthology 2... want anothology 3 16:48:25 Yeah, we have 1 and 2, I think. 16:48:27 what do you think about http://lists.netsol.com/cgi-bin/wa?A2=ind0109&L=urn-ietf&D=1&T=0&O=D&F=&S=&P=247 16:48:29 heh: and whatever happened to "tag:"? 16:48:31 Yeah, really.... 16:48:33 I think it's pretty useless, really... what'd you use it for? 16:48:35 It'd need to know quantification, which makes it effectively the same as _:foo except less clear 16:48:37 I used it for anonymous predicates in XRDF 16:48:39 well, I used anon: 16:48:41 aha: http://www.ietf.org/internet-drafts/draft-kindberg-tag-uri-01.txt 16:48:43 What's XRDF? 16:48:45 XML RDF 16:48:47 Ah... that might be somewhat useful... 16:48:49 Jeremy is using _:foo for his stuff since it's clearly disjoint with URIs. 16:48:51 you know my take on resources and URIs... 16:48:53 Umm... no? 16:48:55 I thought it changed with the weather. ;) 16:48:57 if you exist, you're a resource. if you're a resource, you can have a URI 16:48:59 Oh, yes. Of course. 16:49:01 It can have a URI, certainly... we're just too lazy to give it one. 16:49:03 That's how my RDF API works. 16:49:05 If you want to give an anon node a .uri property, go ahead! 16:49:07 since they're scoped to the store anyway, I don't particularly care 16:49:09 * sbp wrote a really short NTriples parser somewhere... where'd it go? 16:49:11 * AaronSw wonders whether to hook up the yapps parser or clean up sbp's ntriples code 16:49:13 yapps parser 16:49:15 aha:- 16:49:17 import sys, re; d, argv = [], sys.argv 16:49:19 t = r'[ \t]*(<[^>]+>|_:[^\s]+|\"(?:\\\"|[^"])*\")' 16:49:21 r = re.compile(t+t+t+r'[ \t]*.[ \t]*', re.S).findall 16:49:23 def y(t): 16:49:25 for x in range(len(t)): 16:49:27 if t[x][0] == '<': t[x] = (t[x][1:-1], 'URI') 16:49:29 elif t[x][0] == '_': t[x] = (t[x][2:], 'ANON') 16:49:31 elif t[x][0] == '"': t[x] = (t[x][1:-1], 'LIT') 16:49:33 return t 16:49:35 if __name__ == "__main__": 16:49:37 f = open(argv[1], 'r'); s = f.read(); f.close() 16:49:39 for t in r(s): d.append(y([t[0], t[1], t[2]])) 16:49:41 print str(d) 16:49:43 aw, do mine! 16:49:45 Heheh. This should be quick. 16:49:47 what should? 16:49:49 this yapps thing 16:49:51 ah 16:49:53 URI? 16:49:55 For what? 16:49:57 the yapps thing 16:49:59 It's in SWAP -- it's rdfn3_yapps.py 16:50:01 it's DanC's new n3 parser 16:50:03 yeah, I know about that! he did it ages ago. I mean, your hooking up of yapps with TRAMP 16:50:05 Well I'm still writing that! 16:50:07 develop it online! 16:50:09 Ehm... ok 16:50:11 Hmm... what eats sinks? 16:50:13 carrots 16:50:15 lol, what?! 16:50:17 carrots, they eat sinks. when you're not looking: they creep into the kitchen 16:50:19 and you wake up in the morning: "oh, some bugger's stolen my sink!". But really it was the carrots 16:50:21 they're like that, y'know 16:50:23 I didn't know that. 16:50:25 well now you do. Use it wisely, my friend 16:50:27 OK. 16:50:29 OK, it's at kitchen.txt 16:50:31 I should've named it carrots but it's too late now. 16:50:33 cool 16:50:35 Hmm... RESOURCE=RDFSink.SYMBOL # @@misnomer 16:50:37 from notation3.py 16:50:39 Hmm... 16:50:41 *** sbp is sean@pC1s13a07.client.global.net.uk (Sean B. Palmer) 16:50:43 *** on channels: #validator #swhack @#humanml @#sbp #dotgnu #rdfig 16:50:45 *** on irc via server carter.openprojects.net ([127.0.0.1] Northern California, US) 16:50:46 deltab has joined #swhack 16:50:47 * sbp sends more junk to www-archive 16:50:49 heheh 16:50:51 http://lists.w3.org/Archives/Public/www-archive/2001Oct/0026 16:50:53 Ah, cool. 16:50:55 Thanks. 16:50:57 np 16:50:59 Gotta run 16:51:01 Heheh @ Useful Advice For RDF API Designers, Part 1 16:51:03 c'ya 16:51:05 ah, yeah, I thought you'd like that 16:51:07 I was going to send it to www-archive, but nah... 16:51:09 Ah twell... 16:51:11 We'll have to hide that as an easter eg 16:51:13 err egg 16:51:15 ;) 16:51:17 :-) 16:51:19 c'ya 16:51:21 c'ya 16:51:23 * AaronSw wonders what tav will think when we use TRAMP as our foundation! 16:51:25 "What kind of a name is that?!" 16:51:27 A funny one. :) 16:51:29 *** sbp has quit IRC (Ping timeout for sbp[pC1s13a07.client.global.net.uk]) 16:51:31 * AaronSw watches Paul McCartney on VH1... he really can't sing anymore. 16:51:33 *** rillian (Snak@00-30-65-2e-ae-5f.bconnected.net) has joined the channel 16:51:35 *** rillian has quit IRC (night all) 16:51:37 *** Does this mean you're really back? 16:51:39 *** BenSw is now known as BenSw|working 16:51:41 * AaronSw goes to install memory in his servers 17:16:31 * AaronSw disconnects 18:04:40 sbp has joined #swhack 18:11:34 sbp has quit 18:50:56 * AaronSw reconnects 19:00:58 Brian McBride: "****ing BT: I'm offline can't quote the exact words" 19:08:04 sbp has joined #swhack 19:08:24 * sbp has some really cool song snippets; need to sequence them together 19:15:08 Oh, hello there... 19:15:14 Let me upload my parser kit for you. 19:15:14 Hi 19:16:19 Hmm... some of the bits have a different rhythm to the others 19:16:20 Let me know what you think of it. 19:16:53 - http://blogspace.com/rdf/kitchen.txt 19:17:14 Parses N3 and XRDF via the SWAP toolkit. 19:18:29 heh, heh: """Turns an RDFSink carrot into a TRAMP node.""" 19:19:10 very concise, but of course, SWIPT did something similar, only less advanced 19:19:19 how so? 19:19:20 OK, gotta go back to taking apart the sukkah 19:19:25 bbiab 19:19:32 sukkah? bbiab? 19:19:39 be back in a bit... 19:19:49 Perhaps Google can help with sukkah 19:20:54 Hmm... http://www.sukkot.com/ 19:23:13 ah: http://www.ou.org/about/judaism/sukkah.htm 19:24:49 you really have to temporarily live in it? 19:24:58 Man, there's so much I don't know about Judaism 19:26:54 following from Al's rant on ER: we could come up with some subset of RDDL, that we could do XRDF/EARL =XSLT=> RDDL/EARL 19:27:37 then the link could be human and machine readable. Dunno. The ER thread confuses me in a sense, because there is so much work being repeated, and some things not being said clearly, and other things being said too clearly 19:29:47 I mean, there have been about 5 emails of discussion about putting into the body of an HTML page. What's that all about? IF you're going to do it, just do it: write a module, create a namespace. Don't expect people to be happy about serving it as text/html (William F. Hammond!), don't expect people to implement it on a wide scale until they are 110% satisfied that it will benefit them (financially?), don't expect tools to process it unless 19:31:09 Of course, HTML is odd that way. Architecturally, it's absolutely terrible, it could be retrofitted onto SGML, and the only reason to retrofit it onto XML is to process it with XSLT. And it is retrofitting: HTML moves (moved) faster than those technologies 19:32:32 People write what they want done with it, rather than what they mean; it's an inescapable fact. You either hack about with the world's quakiest document architecture, or you wait and contribute to the new one, which probably won't be any better (aren't I the cynic?) 19:32:36 "don't expect tools to process it unless" - what? 19:33:10 oops, it must have been chopped off, here's a paste: "don't expect tools to process it unless you write them yourself. But it can be done. HTML was built that way" 19:33:15 Hi deltab :-) 19:34:46 * AaronSw returns 19:35:04 temporarily live: no just eat meals in it and optionally sleep 19:35:26 HTML will always be hacked. It doesn't matter how good it is really, because it's never going to be perfect for all uses. You have to make sure that it's extensible, and that extensions don't bugger things up too badly 19:35:29 aha 19:36:34 how this relates to EARL: there's no way we're going to mandate a link from HTML to "EARL" in any official capacity, because there's no way to make that link official. We can only ever hack it 19:36:58 Nah, use the tag 19:37:04 which isn't a bad thing necessarily, but it requires consensus, and that's a difficult thing to get, especially when you have people with different agenda's around 19:37:05 that's what us RSS folks are doing 19:37:10 is a perfect example of a terrible hack 19:37:12 especially now that Mozilla supports it. 19:37:19 Have you played with kitchen at all? Does it work for you? 19:37:34 you RSS folks also forgot that classes and properties are disjoint, so that doesn't particularly sway me 19:37:50 Kitchen: no, I'll certainly take your word for it 19:37:59 Heheh. 19:38:02 to both 19:38:04 :-) 19:38:46 We have good names on the project! Edd was the one who proposed the class/property thing and danbri helped push it thru, as I recall. 19:39:19 : why develop an inextensible linking mechanism that uses tokens, and requires consensus, then hack in a profile attribute, not define how it should be used, and then mess things up totally by declaring that some joint properties have different meanings. Aaaargh! 19:39:30 pushed it through: yuck 19:40:18 so isn't architecturally sound... but what's it used for? rel="stylesheet". Ta da, it works. That's all that matters for HTML 19:42:34 Correction, according to , danbri did not vote for the proposal. 19:43:21 so we can say, "sure, use some set of elements defining a link to an EARL report"... but we can't expect anyone to take us seriously; even if we create the proper XHTML m12n family for it, or whatever 19:44:09 Why not? You're the onl one who won't take it seriously. 19:44:31 Nobody else cares about architectural soundness -- they just want it to work. 19:45:32 what I mean is, it won't even work. Where are the tools? My whole point *is* that no one cares about architectural soundness, and that HTML has thrived because of that 19:45:44 well, not my whole point; much of it 19:46:31 Mozilla is a tool, it works. Same with iCab. 19:46:42 yeah? 19:48:01 yeah yeah? 19:48:14 I mean, so what? 19:48:20 * AaronSw really needs to go plan his trip.... 19:48:27 So just do it and stop whining. 19:48:55 trip? 19:49:16 Yeah, I'm putting together a budget proposal for going to http://conferences.oreilly.com/p2p/ 19:49:21 neat 19:49:30 budget proposal: to whom? 19:49:40 Parents. 19:50:01 * AaronSw tries to think of funding agencies that'd help pay for trip to W3C Plenary... 19:50:46 the W3C? :-) 19:51:08 Yeah... 19:57:56 c'ya 19:59:05 c'ya 20:01:14 sbp has quit 20:59:29 rillian has joined #swhack 21:00:02 hi rillian 21:00:31 hey aaron 21:00:37 you don't have a tibook do you? 21:00:42 Indeed, I do. 21:00:52 ah. congrats :) 21:00:57 :-) 21:01:10 do you have an XF86Config I could crib from? 21:01:26 I just used whatever came with my fink install. 21:01:45 sbp has joined #swhack 21:01:47 you don't run linux then? 21:02:03 Oh, no, I just run an X Server from Mac OS X. 21:02:03 nope 21:02:11 Hi sbp. 21:02:19 Hi :-) 21:02:43 does the rootless thing work ok? 21:03:02 Well, it worked great the first time I tried it and now I can't get it to start up again. :-( 21:03:06 heh, heh: inconsistent chopping/diareses in my paste to ERT of the #swhack chat logs means that there is a bit which just reads " pushed it through: yuck" with no background 21:03:36 Heheheh. 21:03:55 Oh, there's a rootless upgrade out... let me install... 21:04:29 AaronSw: drat. Anyway, I can't get X (under linux) to work. it launches all the way to the X cursor, then quits without an error message 21:04:43 Weird. 21:04:50 indeed 21:05:15 I would guess since I get recognizable video that it's not the config file 21:05:24 but I can't seem to find anything else that's out of order 21:06:11 What's the error message? 21:06:31 ...quits without an error message 21:06:46 Oh, sorry -- I read that as "with an error message" 21:10:29 Heheh: 21:10:29 munged-Beatles: "Good evening and welcome to swhackers." 21:10:33 You know my URN, you know my URN... 21:10:37 Look up my URL... 21:12:35 lol @ munged-Beatles: "Good evening and welcome to swhackers." 21:12:47 sbp has changed the topic to: Good evening and welcome to swhackers 21:13:05 heh, URN... 21:14:41 poor EARL... wonder what to do about it 21:16:01 * AaronSw looks around for $1526 to pay for conference expenses :-( 21:16:11 we really need implementations => we really need a stable specification => we really need me to write a stable specification very, very quickly => we need the work on TPDL to be done => damn 21:16:35 Heh. 21:16:46 we also need me to document the schema properly this time; it's clear that no one can follow the RDF Schema, although it's absolutely perfect for defining the language 21:16:59 Hmmph. 21:17:09 the problem is, I expected people to learn RDF Schema... heh, heh! 21:17:35 Just write an RDF Schema -> Human Readable translater 21:17:41 lol! 21:18:33 trouble is, I start documenting it, and get bored quite quickly. It feels to me like I'm needlessly repeating work... 21:19:22 I could just produce an EARL 1.0 schema, and say: here it is, use it, resistance is futile 21:19:22 See, that translator could then be used by other projects too. 21:19:31 Yep, that might be best. 21:19:38 Along with a lot of examples. 21:19:51 Aha! I know the solution: 21:19:55 creating an RDF Schema => XHTML translator would be more complex than doing the entire EARL work 3 times over 21:20:04 I did write a short implementation in XSLT 21:20:10 But so much more rewarding. ;) 21:20:15 Here's the ticket; Just make Bob B. Bobbington do the work for you! 21:20:19 lol! 21:20:25 good idea 21:20:58 If people ask why it isn't done, just say "Talk to Bob about it. Shoo, shoo!" 21:21:12 lol, and cool reference to the Dilbert quote 21:21:25 Hmm... I wouldn't feel so bad writing an EARL schema if it didn't fuck with the ATR output too much 21:21:43 ATR? 21:22:01 Chris has worked for ages on making that produce decent EARL, and has been *very* patient with me. I would have given up ages ago 21:22:10 ATR - Accessibility Tool Reviewer 21:22:28 What's it written in? 21:22:33 I owe him, and yet if we change EARL, it'll be more work for him to do! Aaaargh! 21:22:36 it's in C 21:22:58 Chris Lilley? 21:23:05 I started on a Python port, but CGI... shudder 21:23:10 Chris Ridpath 21:23:21 Don't know 'im. 21:23:32 * AaronSw can't imagine folks doing CGIs in C... ick. 21:23:45 he didn't do a CGI: it's a Win32 app 21:23:51 I tried to port it to CGI... 21:23:54 Ah. 21:26:58 your unique date idea was a good one, but its screwy in that data datatypes... tricky to implement 21:27:13 Huh? 21:27:20 I mean, I can't even get the ASP form to output correct dates (I could do, I suppose) 21:27:41 _:a earl:testSubject ; earl:date "2001-05-17" . 21:29:47 Hmm, the airport for the next plenary is CEQ. 21:30:00 CEQ? 21:30:42 Cannes, France - Mandelieu 21:31:04 uh huh 21:32:54 Hmm, none of the travel sites seem to have flight data... 21:35:45 * AaronSw tries the Heliport. 21:35:59 JCA 21:36:10 how do I say that two properties overlap? 21:36:19 er... I meant, two classes 21:36:35 I could declare an intersection, but I don't want to use it 21:36:44 What do you mean? How can properties overlap? 21:36:51 I meant: classes 21:36:53 Oh, I see... classes. 21:37:00 Isn't it assumed that they overlap? 21:37:13 Unless you say otherwise. 21:37:20 Why do you want to say this? 21:37:22 :Dog :Cat 21:37:29 they don't overlap 21:37:42 "CatDog, CatDog, this is a show about a little CatDog." 21:37:45 :Person :Male 21:37:46 they do 21:38:06 I'll just do an intersection 21:38:06 Why do you need to specifically state that they do? 21:38:16 in EARL 1.0:- 21:38:17 earl:Person a rdfs:Class; 21:38:17 rdfs:subClassOf earl:Assertor . 21:38:17 earl:operator 21:38:17 rdfs:range earl:Operator . 21:38:17 [ daml:intersectionOf (earl:Operator earl:Person) ] . 21:38:21 intersections can be empy. 21:38:41 true 21:39:22 Hmm... that's a mess. Lemme do it in prose 21:39:36 An Assertor is the class of things that make EARL assertions 21:39:50 A Person is a person: an assertor may be a parson 21:39:52 person 21:40:11 A machine is a machine: an assertor may also be a machine 21:40:19 rillian has quit 21:40:24 A person cannot be a machine 21:40:33 A machine can have an operator 21:40:50 Operator is the class of things that operate a machine 21:41:04 can a machine operate a machine? 21:41:27 I suppose so, but I'm not sure it'd be a useful distinction for your app. 21:42:13 so far, we have: :Assertor daml:disjointUnionOf (:Person :Machine) . :operator rdfs:domain :Machine; rdfs:range :Operator . 21:42:32 This is crazy -- it's cheaper to fly to France than Hawaii. 21:42:39 makes sense 21:42:45 Why? 21:42:49 more flights, more airports 21:42:58 not much further away 21:43:12 No, just to Nice, France. 21:43:18 One airport. 21:43:44 but I mean, there isn't a limit that people must go to Nice airport ot get to France 21:43:54 True. 21:43:54 but if they want to go to Hawaii, I'll bet they have to go to Honolulu 21:46:22 Hmm... I say that all people and machines are assertors... that can't be right 21:46:47 I mean, some people are assertors, some machines are assertors 21:47:04 and is "Assertor" American English? 21:48:09 I've never heard the word before, but i'd expect so... 21:48:09 dunno, but it is a word: http://www.dict.org/bin/Dict?Form=Dict2&Database=*&Query=Assertor 21:48:18 [[[ 21:48:19 Assertor \As*sert"or\, n. [L., fr. asserere.] 21:48:19 One who asserts or avers; one who maintains or vindicates a 21:48:19 claim or a right; an affirmer, supporter, or vindicator; a 21:48:19 defender; an asserter. 21:48:19 21:48:21 The assertors of liberty said not a word. --Macaulay. 21:48:23 21:48:25 Faithful assertor of thy country's cause. --Prior. 21:48:27 ]]] 21:48:42 The assertors of liberty said [assertor was] not a word. --Macaulay. 21:48:51 tav has joined #swhack 21:48:52 :-) 21:48:55 Hi tav 21:49:03 Wooh, is tav back? 21:49:07 potential spellings for assertor are: assorter, assentor, assorted, assorters, assentors, asserted, asserts, aggressor, assaulter, ascertain 21:49:13 tav?! 21:50:52 :Assertor rdfs:subClassOf [ daml:disjointUnionOf (:Person :Machine) ] . [ daml:intersectionOf (:Assertor :Machine) ] . [ daml:intersectionOf (:Assertor :Person) ] . 21:50:56 but that's so verbose... 21:51:02 oh shoot disk full 21:51:03 there has to be a neater way of doing it 21:51:07 hello 21:51:10 hi 21:51:52 ah, that'll have to do 21:52:16 This can't be good: /dev/disk0s5 19639008 19973264 -334256 101% / 21:53:17 heh! 21:53:39 * AaronSw frantically closes windows 21:53:54 * AaronSw disconnects 22:01:55 * AaronSw reconnects 22:08:59 logster, grep \$ 22:09:03 I'm logging. Sorry, nothing found for '\$' (internally: "\") 22:09:52 ? 22:09:59 logster, grep \\$ 22:10:01 I'm logging. I found 78 answers for '\\$' (showing 0...4) 22:10:02 0) 2001-10-21 03:53:55 r = re.compile(t+t+t+r'[ \t]*.[ \t]*', re.S).findall 22:10:03 1) 2001-10-21 03:53:55 t = r'[ \t]*(<[^>]+>|_:[^\s]+|\"(?:\\\"|[^"])*\")' 22:10:04 2) 2001-10-21 01:38:38 s/'\n\t{ %s %s %s }'/'%s %s %s .' 22:10:05 3) 2001-10-21 01:14:44 "\"s" <#t> "" . 22:10:06 4) 2001-10-21 01:14:40 <#p> <#q> "\"r" . 22:10:34 logster, grep \$$ 22:10:43 I'm logging. Sorry, nothing found for '\$$' (internally: "\") 22:10:43 grepit! 22:11:09 * AaronSw looks for $6098 :-( 22:11:11 logster, grep internally: "\" 22:11:14 I'm logging. Sorry, nothing found for 'internally: "\"' 22:11:18 try under the sofa 22:11:30 Yeah, tried that... 22:11:33 :-) 22:30:23 * AaronSw disconnects 23:22:48 sbp has quit 23:23:09 rillian has joined #swhack 23:41:47 rillian has quit