This is an automatically generated IRC chat log made by the logger bot from the Semantic Web Interest Group IRC chat at irc://irc.freenode.net/rdfig (also known as server irc.freenode.net channel #rdfig if that URI does not work for you).
NOTICE: #rdfig logs are being turned off 2004-12-03. Please
switch to the new and
shiny #swig channel for Semantic Web Interest Group chat.
Change your client to #swig and enjoy the new experience.
Or read the latest #swig logs
to see what you've been missing :)
Semantic Web Interest Group Logs > 2001 > 2001-12 > 2001-12-08 (Latest) (Search)
00:00:01 <bijan> DanC, mercury is the language for you.
00:00:07 <dmiles> it transitions between both very smoothly
00:00:47 * bijan plans to use porting CWMclone as his learning project for mercury.
00:01:12 <DanC> holy cow! the picture of bwm's P3P schema is HUGE!
00:01:13 <DanC> $ ~/scripts/showdot p3pFig.dot
00:01:14 <DanC> dot: warning, canvas size (16831,1360) exceeds PDF limit (3240)
00:01:14 <DanC> (suggest setting a bounding box size, see dot(1))
00:01:38 <dmiles> i started a mercury port for sigma bijan.. man i spent 4 hours .. i just renamed alot of my predicvates and made surte the prolog modules where loaded
00:01:50 <dmiles> or was that eclipse?
00:01:54 <bijan> Hmm. ok, for this to be useful, i'd better handle the default namespace.
00:02:15 <bijan> dmiles, that's interesting. I would have expected a bit more in sortin gout declarations.
00:02:40 <dmiles> sorry, it was eclipse i did..
00:02:57 <dmiles> eclipse is a VERY cool
00:03:06 <bijan> So I gathered.
00:03:37 <dmiles> mercury uses an altranate syntax right?
00:03:38 <DanC> ghostview could hardly handle the .ps file; trying .svg in Amaya...
00:04:00 * DanC is away: family time
00:04:26 <bijan> I have to say, my compile_n3_rule is pretty...horky.
00:05:00 <bijan> I'm sure there's a cleaner way :)
00:05:13 <sbp> .google horky
00:05:13 <xena> horky: http://www.palmserver.cz/clanek.phtml?show=303
00:05:37 <bijan> Well, as they say, argue not with that which works, unless someone else wrote it and you don't have to use it
00:05:57 <sbp> :-)
00:06:48 <bijan> Hmm. My inference engine code is around 60 lines so far :)
00:07:16 <bijan> Smaller than RDFstore.query() alone.
00:07:27 <bijan> Heck, it might be smaller than query's *argument* list :)
00:08:23 <bijan> Hmm. sean, here's your next challenge: write a metacircular intepreter for N3.
00:10:00 <sbp> A what? :-)
00:10:25 <bijan> An N3 interpreter in N3.
00:10:43 <sbp> oh, I've been wondering about that
00:11:04 <sbp> actually, I was wondering when CWM will have enough built-ins to parse NTriples
00:11:52 <bijan> Hmm. Ok, need to add a read from file thing.
00:12:23 <sbp> already has it
00:12:32 <sbp> [ is os:environ of "TARGET" ] .
00:12:32 <bijan> No, I meant for mine :)
00:12:37 <sbp> Oh :-)
00:12:48 <bijan> I'm still entering the n3 lines by hand into the REPL.
00:12:52 <sbp> (the above gets a variable from the os env...)
00:12:58 <bijan> Well, I don't have to do it all that often :)
00:12:58 <sbp> n3 by hand? that's not good
00:13:15 <sbp> but it really sounds like you've made an awful lot of progress in such a short time. Bit scary, actually
00:13:18 <bijan> Well, when you only have 4 or so lines for testing, and can copy and paste, it's not so bad.
00:13:47 <bijan> Well, it's all in the libraries...
00:13:50 <bijan> :)
00:13:56 <bijan> And sample code...
00:14:03 <bijan> And books.
00:14:06 <bijan> And chat sessions.
00:15:47 * bijan hacking out all the experimental stuff.
00:27:16 * edd loads his palm up with airplane reading
00:33:09 <timbl> DanC, the regression test *did* catch the "already" bug when I just tried it. Weird.
00:38:08 <sbp> Ooh, CWM for namespace management works!
00:40:14 * timbl understands .. forgot to check in swap/test/roadmap ... checked in
00:42:28 <sbp> er... namespace management: using CWM to filter out terms from schemata, mix them all about, and prepare a nice little summary
00:43:09 <sbp> I modularized my namespace, so that I have lots of different terms all starting with the same "namespace". In other words, you can have swn:this and swn:that, and they might not necessarily be related
00:43:33 <edd> sbp: that sounds interesting. eric van der vlist has got a little schema/namespace crawler idea going on in his head right now. not sure of the details but he seems very enthuasiastic about it
00:43:38 <sbp> but it's still useful to have schemata that only define a certain set of related terms. The problem then is how to manage it, and bring it all toether...
00:43:58 <sbp> EricV has a crawler idea? Hmm...
00:44:14 <sbp> em had a namespace trawling thing going, too
00:46:41 <timbl> I'm not quite sure why you would have lots of unrelated terms in hte same namespace.
00:47:40 <dmiles> had quick question about namespavces.. http://216.39.172.56/_/engine/java_assert.xml <- is assertion elelmnetn qautomaticaly expected to be part of sigma:_ ?
00:47:40 <sbp> why not? It saves having to use countless prefixes, and it's easier to manage. Also, there are no limits on what a document can talk about
00:48:44 <sbp> On the SW, you can still relate terms, but why not do so properly (by putting them in a list, or calling them members of a certin class), rather than leaving people to infer that all terms starting with a certain prefix are in some way related?
00:49:36 <sbp> dc-registry (I think) had a good discussion about this, fairly recently
00:49:47 <dmiles> <sigma:assert><assertion/></sigma:assert> <- is <assertion> automaticaly assumed to be <sigma:assertion> ?
00:50:27 <edd> dmiles: no
00:50:29 <dmiles> oh n/m my question is silly the right answer is no?
00:50:32 <dmiles> ah
00:50:37 <sbp> ta da: http://www.jiscmail.ac.uk/cgi-bin/wa.exe?A2=ind0111&L=dc-registry&P=1924
00:51:09 <dmiles> can i set a scope withing an elelmtn framework?
00:51:26 <dmiles> (instead of by the whole document)\
00:51:27 <edd> you can set the default namespace
00:51:48 <sbp> <sigma:assert xmlns="blargh:"><assertion/></sigma:assert>
00:52:36 <dmiles> ok good.. /me going to fix that then
00:53:36 <dmiles> <sigma:assert xmlns:sigma="http://localhost" xmlns="sigma:"> <- is this leagal ?
00:54:04 <edd> no
00:54:22 <edd> the value of thje xmlns attribute must be a URI
00:55:27 <dmiles> could you give me a qiuick example with the above?
00:55:32 <edd> dmiles: take a look at http://www.xml.com/pub/a/1999/01/namespaces.html for a quick primer
00:56:00 <edd> example:
00:56:22 <edd> <assert xmlns="http://your_sigma_namespace_uri/"><assertion/></assert>
00:56:28 <edd> will probably do what you want.
00:57:00 <edd> note that the xmlns affects the containing element too
00:57:19 <dmiles> excelent.. so no need to sigma: in front of everything
00:57:48 <edd> quite.
00:58:38 <dmiles> certain elements that are contained will be rom other namespaces ...
00:58:53 <dmiles> (which i am sure is fine)
00:59:01 <dmiles> rom/from
00:59:07 <edd> yes, use prefixes for those
01:16:49 * sbp uploads SWN to the Web...
01:17:50 <sbp> Now for the XSLT... the "fun" part
01:18:28 <dmiles> is this legal? http://216.39.172.56/tsts/daml/assert001.xml
01:18:52 <dmiles> i am workin gon the imperitve test suite
01:23:05 <sbp> nope, it's not legal XML
01:23:07 <sbp> daml:oneOf and oneOf don't match
01:23:38 <dmiles> ok fixed
01:24:57 <sbp> still not correct: xmlns="sigma_ml"
01:25:08 <dmiles> i was hoping that was realtive
01:25:22 <dmiles> how can i say "a file on this server?"
01:25:30 <sbp> point to it by its URI
01:25:39 <dmiles> ok.. i see
01:26:41 <dmiles> ok there
01:28:26 <dmiles> i hope i can just find a test suite instead of writting on from scratch
01:29:01 <dmiles> ell that isnt even an assertion.. i just through up there
01:29:07 <dmiles> err threw
01:29:10 <sbp> that's fine now...
01:32:47 <edd_> edd_ is now known as edd
01:45:02 <dmiles> oh thats like last years version :)
01:49:09 <dmiles> wierd .. i forgot kifbot was part of tomcat ;:)
01:50:06 <sbp> demo?
01:55:09 <dmiles> [off that was asserted in the first line of the test ]
02:04:04 * mnot wonders if anyone has looked at draft-mealling-sls-01; it seems to overlap SW somewhat
02:06:50 * sbp tries it
02:08:09 <sbp> yeah, those XML bits seem like obvious candidates for a move to RDF
02:08:44 <mnot> also just the problem domain in general; it's all about contextualisation, etc.
02:27:07 <edd-lap> good. cellphone dialin from laptop works.
02:46:24 * timbl checks in faster cwm - printout speedup
02:57:11 * sbp updates through CVS
02:58:08 <sbp> Hmm... nothing in yet
02:58:42 <timbl> Repository revision: 1.7 /w3ccvs/WWW/2000/10/swap/llyn.py,v
02:58:51 <timbl> also needs new thing.py
02:59:14 <sbp> O.K. (always takes about 10 minutes or so)
03:01:32 * sbp is still hacking on SWN... works, but I want to make it stable
03:08:05 <dmiles> Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
03:08:39 <timbl> Well, I can access the source XML and also hte source of the stylesheet swn.xsl
03:08:52 <sbp> But the combination doesn't work?
03:09:15 <timbl> Now it does.
03:09:25 <dmiles> the Access denied is a property change in the dom parser on IE
03:09:37 <sbp> It renders as XML+XSLT=>XHTML?
03:10:05 <dmiles> (its not webserver related)
03:10:09 <sbp> Heh, this doesn't sound like a big success for the concept :-)
03:11:03 <sbp> I want to provide XML RDF as the representation of the namespace, but have people able to read it. I figured that XSLT would be the "perfect" solution... gprmgh
03:11:13 <dmiles> timbl: your ussing win2k ?
03:12:58 <timbl> works now - what did u fix?
03:13:09 <sbp> I actually didn't change anything
03:13:18 <sbp> Not on the server, anyway...
03:15:09 <sbp> WorksForMe in both IE6 and Mozilla 0.9.6, but those are pretty recent
03:15:44 <sbp> I got someone to test it in IE5.1 (Mac), and it just displayed the XSLT as if it were XHTML...
03:17:04 <sbp> ugh, I may as well chump it
03:17:06 <sbp>http://purl.org/net/swn
03:17:07 <dc_rdfig> A: http://purl.org/net/swn from sbp
03:17:55 <sbp> A:|SWN: Terms for the Semantic Web
03:17:56 <dc_rdfig> titled item A
03:18:38 * timbl has been logging wireless signal and noise level every 10sec to catch dropouts. Results? no dropouts
03:18:47 <sbp> A:Pre-release - quite experimental in that it uses XML RDF + XSLT at the moment to display information about the terms
03:18:47 <dc_rdfig> commented item A
03:18:48 * timbl so much for th eexperiment
03:19:08 <sbp> the answer is to keep logging it, then :-)
03:23:11 <sbp> A:The interesting thing is how it uses CWM to keep track of and manage the terms in the namespace/vocabulary. The relevant files are in [http://infomesh.net/swns/|the swns directory]
03:23:12 <dc_rdfig> commented item A
03:34:23 <sbp> A:This was meant to be a "fix" for what goes at the end of the namespace; XML RDF for the machines (should be served as application/rdf+xml), and a transformation into XHTML for the humans. What could be better?
03:34:23 <dc_rdfig> commented item A
03:37:02 <timbl> The "fix" sounds good to me.
03:38:00 <sbp> The only problem is that (for a while at least) many browsers are buggy in their XSLT support
03:39:08 <sbp> Well, the other problem is a lack of a MIME type for RDF, but that's in the capable hand of RDF Core
03:41:26 * sbp remembers the term "by following the links across the Semantic Web..." and gets CWM to follow the isDefinedBy arcs
03:41:32 <sbp> s/term/phrase/
03:42:35 <timbl> Yes, check.n3 follows isDefinedBy arcs.
03:43:40 <timbl> I wondered about having some simple rule that if you are looking for a query term there is a isDefinedBy arc from either subject or predicate, that you follow th elink.
03:44:48 <timbl> wondered whether you could build a system a bit like access-limited logic with provable intersting properties.
03:45:10 <timbl> It relies on each thing having a home and things which refe to it mentioning hte home.
03:45:44 <sbp> so, when it finds an assertion that it wants to prove (but cannot), it automatically follows any isDefinedBy arcs, adds what it finds to the store, and includes that in the query? A sort of --superthink
03:45:57 <timbl> that sort of thing.
03:46:37 <sbp> well, a home is any object of an isDefinedBy arc: it surely doesn't matter if you have to get multiple files?
03:46:39 <timbl> --think=hsTyUg=(g,h)z
03:48:01 <timbl> no, it does matter if you have multiple arcs. There is a question as to whether you get any sense of definable useful results.
03:48:52 <timbl> I couldn't think of a property the system would guarantee.
03:49:06 * timbl find his head is done for today
03:49:11 <sbp> :-)
03:49:18 * timbl heads off
03:49:28 <sbp> c'ya Tim, thanks for chatting
03:49:30 <timbl> timbl is now known as tim-gone
03:49:37 <tim-gone> cu
03:51:02 * sbp meanwhile creates a file that follows the isDefinedBy links in http://purl.org/net/swn and gets the documentation (labels and comments) from what it finds
03:53:29 <sbp> A:To those who doubt this method, [http://infomesh.net/swns/swn-get-doc.n3|swn-get-doc.n3] is a very simple Notation3 rules file that will follow the rdfs:isDefinedBy links on the hub page, and get the documentation for the terms
03:53:29 <dc_rdfig> commented item A
03:54:45 <sbp> A:Try also: the [http://infomesh.net/swns/swn-get-doc-out.n3|result]. Use: cwm swn-get-doc.n3 --think --purge > result.n3
03:54:45 <dc_rdfig> commented item A
04:00:00 * sbp updates it for extensibility, and to get more terms
04:02:19 * sbp adds swn-get-info.n3 to the mix
04:03:51 <sbp> .time
04:03:53 <xena> 2001/12/08 04:03:56.4709 Universal
04:04:15 <sbp> Hmm... my clock my be getting slow
04:05:42 <sbp> s/my be/may be/
04:18:10 <sbp> A:[http://infomesh.net/swns/stuff.html|stuff.html] is a general introduction to some of the files, and what they are supposed to do
04:18:11 <dc_rdfig> commented item A
04:19:26 <sbp> A:It (and many more indexes like it) should probably be maintained as Notation3, with a Notation3 => XHTML conversion defined!
04:19:26 <dc_rdfig> commented item A
04:25:33 <sbp> A:done: [http://infomesh.net/swns/stuff.n3|stuff.n3]; but no automatic conversion into XHTML yet
04:25:34 <dc_rdfig> commented item A
04:26:42 <sbp> Hmm... ":Filter" is a bit tacky: should define N3Filter in SWN, and then use that... But it probably wouldn't be of much utility, anyway
04:32:36 <sbp> Gotta run
04:35:42 <DanC> phpht. My wife is working on an ad for a race that my dad is running... she wanted me to install powerpoint, but I'm fed up with fighting her windows box,
04:35:48 <DanC> so I installed debian on another disk.
04:36:03 <DanC> Bad news: killustrator, sodipodi, and sketch all suck.
04:36:05 * edd has found the presentation module of openoffice to be quite good
04:36:17 <DanC> we couldn't draw simple white text on a dark background.
04:36:35 <DanC> we sorta could in sketch, but not with decent fonts.
04:36:45 <DanC> how did you install openoffice?
04:37:30 <DanC> killustrator crashed when we tried to print-preview. We couldn't get its font-color settings to work.
04:37:35 <DanC> kpresenter likewise.
04:37:43 <edd> i downloaded openoffice from openoffice.org web site
04:37:50 <DanC> we couldn't figure out how to draw text with sodipodi at all.
04:37:51 <edd> there's .debs under development but not done yet, afaik
04:39:01 * edd must go now and start the long journey to orlando
04:39:01 <edd> goodnight
06:00:14 * tansaku looks around for danbri
06:00:27 <tansaku> hi all
06:01:52 <tansaku> hmm, maybe everyone is asleep ...
08:01:11 <tav> tav is now known as tav`
14:05:49 <dmiles> sbp: your still here?
14:06:01 <dmiles> (at this hour)
14:15:25 <sbp> Sorry; yes, I'm here
14:15:26 <sbp> .time
14:15:27 <xena> 2001/12/08 14:15:30.9631 Universal
14:23:18 * sbp adds a profile schema to SWN; so easy with the tools!
15:57:10 * chaals waves
16:05:41 * chaals slaps chaals around a bit with a large trout
16:42:27 * chaals waves
16:51:25 * chaals waves to Sean
16:51:34 <danbri> hey sean!
16:51:35 <sbp> Hi there, chaals
16:51:38 <sbp> Hi DanBri
16:52:08 * danbri engrossed in making Yet Another RDF API (in Ruby :)
16:52:25 * sbp trying to work out how to do :p :q :r, :s . => (:r :s) string:concatenation :x . in CWM...
16:52:41 <sbp> YARA?
16:53:04 <sbp> I suppose I have to install ruby now :-)
16:53:25 <sbp> .google Ruby programming language download
16:53:25 <xena> Ruby programming language download: http://www.ruby-lang.org/en
16:54:21 <danbri> Not sure how easy an install it is for Windows, but for linux only took a couple mins
16:54:40 <sbp> It'll probably only a take a few hours
16:54:59 * chaals helpfully suggests upgrading to OS X...
16:55:02 * chaals ducks
16:55:24 <danbri> oh, file download is pretty small too
16:56:11 <sbp> Ruby on CygWin: http://www.os.rim.or.jp/~eban/
16:56:22 <danbri> neat
16:56:26 * sbp will upgrade as soon as chaals send him the money :-)
16:56:34 * danbri realises his API needs a leeeetle more thought...
16:56:38 * chaals starts holding breath
17:02:16 * chaals stops holding breath and decides to offer Sean a linux CD ;-)
17:02:39 * tansaku looks around for danbri
17:02:39 <danbri> <tansaku> hi all
17:02:44 * sbp would need to partition drive; yucky stuff
17:02:48 <danbri> hi tansuka
17:02:56 <tansaku> hi danbri
17:03:26 <danbri> still looking for me? :)
17:03:31 * danbri was indeed asleep at the time
17:03:46 <tansaku> I can't get into it like I wanted now, but I wanted to discuss some stuff with you
17:04:18 <danbri> sure... grab me when you've more time if you prefer. just curious!
17:04:30 <tansaku> I kind of worked out you were a big guy in the RDF field
17:04:43 * danbri blushes
17:04:55 <sbp> he may appear to be, but I was quite surprised that in real life he's only 3' 7"
17:04:55 <danbri> there's a bunch of those types around here :)
17:05:05 <tansaku> I'm working on this thing called NeuroGrid, which is all about adjusting meta-data over time in response to how people use it
17:05:16 * danbri nods
17:05:29 <mhg> hi, i was wondering if anyone knows jena pretty well...
17:05:40 <tansaku> I'm kind of under the weather now, and it's 2am, so I won't try and explain it in detail right now
17:05:51 <tansaku> but I have a link - http://www.neurogrid.net/meta-data/NeuroGridMetaData.html
17:05:58 <danbri> jena: bwm can be found here sometimes (Brian McBride)
17:06:04 <danbri> ah, that saves me googling...
17:06:10 <danbri>http://www.neurogrid.net/meta-data/NeuroGridMetaData.html
17:06:10 <dc_rdfig> B: http://www.neurogrid.net/meta-data/NeuroGridMetaData.html from danbri
17:06:23 * sbp attampts to install Ruby
17:06:32 <mhg> is he the only one that knows jena well? i'm sure my question is simple, i just didnt find anything about it in Jena's docs
17:06:37 <danbri> B:|NeuroGrid Metadata
17:06:37 <dc_rdfig> titled item B
17:06:44 <danbri> B:Use Cases for Meta-Data Interaction
17:06:44 <dc_rdfig> commented item B
17:06:50 <tansaku> I mean you can find general stuff about NeuroGrid at http://www.neurogrid.net/ somewhat predictably
17:07:10 <danbri> a bunch of people know Jena pretty well. Always worth asking here or try the jena-dev@yahoogroups.com list (or its archives)
17:07:16 <danbri> ask away...
17:07:44 <tansaku> danbri: the thing I wanted to ask you about was about representing the usage information in different ways
17:07:52 <danbri> B:See also main [NeuroGrid site|http://www.neurogrid.net/]
17:07:52 <dc_rdfig> commented item B
17:08:03 <tansaku> AaronSw was telling me about somethings being legal and some not
17:08:28 <danbri> legal... in which jurisdiction?
17:08:42 <tansaku> anyway, if you get a chance to read the final part of the NeuroGrid meta-data thing, then I'd be keen to chat some more, but I'm going to pass out fairly soon, so I better go
17:08:43 * danbri should probably take a look at the web pages a bit for context...
17:08:59 <tansaku> legality ... I guess we'd have to ask AaronSw
17:09:06 <danbri> OK, I'll take a look... ping me here or on #infoanarchy some time. hope you feel better...
17:09:28 <tansaku> cool - I'll catch up with you sometime in the next couple of days
17:09:51 * tansaku staggers off to wrap a flannel round his forehead and eat some noodles
17:10:03 <sbp> one whole crash later...
17:13:24 <mhg> wow, so much riff raff just to sign up for this group.... *sigh*
17:17:31 <danbri> which, the yahoo thing?
17:17:49 <mhg> yeah
17:18:46 <mhg> keeps telling me my password is invalid, i just signed up for the account a minute ago, i think i still remember it...stupid yahoo
17:31:53 <sbp> Ruby seems to have installed
17:32:31 <danbri> cool
17:32:42 * danbri seems to have messed up his ruby program
17:34:13 <sbp> neat, the version you sent to www-archive works
17:34:25 <sbp> bummer about the current version :-0
17:34:33 <sbp> s/:-0/:-)/
17:35:23 <sbp> you're storing nodes as subjects, and then listing all of the PO combinations?
17:35:46 <danbri> I'm just changing it, actually...
17:36:35 <danbri> what I _was_ doing: maintain two hashtable/dictionary thingies. One called 'fwd pointer', the other 'back pointer'; their keys 's | p' and 'p | o' respectively, their values just lists of Node.
17:36:55 <danbri> that's enough to answer some common queries quickly, and all queries eventually.
17:37:19 <sbp> that's quite neatly optimized
17:37:34 <danbri> But I figure I want my Graph.ask(template_statement) method to return a graph or at least an array of statements...
17:38:02 <danbri> ...and I run into some comments Leigh Dodds made about our earlier (java) version; the one I worked on w/ Libby that ended up in Inkling...
17:38:16 <danbri> ie. I find myself reconstructing statements, so might as well be storing references to them
17:39:00 <danbri> optimised: its a pattern Guha suggested years ago, the older mozilla used same thing for on-disk storage in BerkeleyDB (with a few optimisations)
17:39:42 <danbri> So I think I'll switch to storing statements instead of nodes. They're only refs anywhay and I'm not worried about persistence etc...
19:10:35 <chaals> chaals is now known as chaalZzz
19:12:16 <tim-gone> re how to do :p :q :r, :s . => (:r :s) string:concatenation :x . Put the string:concatenation on the LHS of the rule. Bultins only work there. Eg { :x :p :y. (:x :y) str:concatenation :s} log:implies { :x log:outputString :s}
19:14:04 * chaalZzz assumes sbp reads the logs - he left.
19:14:56 * tim-gone types the answer in while reading the question, and so missed the absence of the questioner. He may read the logs.
19:20:31 <tim-gone> I should put in the doc that functions only apply on the LHS.
19:22:37 <chaalZzz> Yep. You could even put an example use case ;-)
19:26:19 <chaalZzz> 'night folks
19:32:07 <bijan> So, danbri, if I were writing SemantiChimp in Ruby, I'd despartely want the ability to so a simply "get all triples that match (X, Y, Z)
19:32:10 <danbri>http://lists.w3.org/Archives/Public/www-archive/2001Dec/0050.html
19:32:11 <dc_rdfig> C: http://lists.w3.org/Archives/Public/www-archive/2001Dec/0050.html from danbri
19:32:31 <bijan> It'd *be nice* to have conjunctive queries, of course.
19:32:32 <danbri> C:|danbri's Ruby-RDF experiments
19:32:32 <dc_rdfig> titled item C
19:33:01 <danbri> yeah... though that's kinda harder to code...
19:33:35 <danbri> I'm trying to find some simple APIs that'll do for a lot of webmaster-y stuff, and lets query-language-like interfaces come along later
19:34:00 <bijan> Well, one is more likely to be able to hack a custon set lib than poke around inside a rdf lib.
19:34:10 <bijan> I don't know *why* this would be so, but it seems to be :)
19:34:31 <danbri> Though you're right, I remember Libby saying when she moved from building apps with a nodes'n'arcs Java API to building apps with the simple Squish query language, she said her productivity went up a bunch...
19:34:40 <bijan> Yep.
19:34:57 <bijan> Sometimes, you just want the whole match :)
19:35:03 <bijan> For a lot of things actually.
19:35:15 <bijan> Converting from Plain RDF/XML to RSS1.0, for example.
19:35:32 <danbri> plain rdf/xml?
19:35:42 <bijan> I.e., no typed nodes.
19:36:06 <bijan> Lots of descriptions :)
19:36:15 <danbri> I've never heard that expression before!
19:36:21 <bijan> I just made it up!
19:36:24 <danbri> oh, syntactically you mean...
19:36:29 <danbri> aha
19:36:35 <bijan> Yes.
19:37:10 <bijan> Actually, to work right with a lot of RSS1.0 processers, you need to be a bit finicky about source arrangement.
19:37:18 <bijan> Whereas an rdf processor won't care a bit.
19:37:38 <danbri> oh, layout of the RDF-as-XML... right...
19:38:00 <bijan> Yes.
19:38:06 <danbri> That's reasonable, the spec is written as a syntactic profile of RDF/XML, though there's a (perhaps unarticulated) expectation that processors at the XML level will fade away...
19:39:02 <bijan> I prefer to think of it working at two levels as both an XML application and as an RDF application.
19:39:26 <danbri> It does, quite nicely for the most part.
19:39:51 <bijan> Yep.
19:40:08 <danbri> So back w.r.t. APIs... does cwm have something along lines of: "
19:40:08 <danbri> who = g.ask(Statement.new( nil,foaf_livesIn,Node.getLiteral("Bristol")))
19:40:22 <danbri> ...or for cwm, you have to interact via N3?
19:40:48 <bijan> Well, there's RDFStore.query(...)
19:40:49 <danbri> ...that fragment is snippet from the Ruby experiment. It passes in a partial statement and pulls out the statements that match it in the store
19:40:52 <bijan> But I never figured it out.
19:41:02 <bijan> So generally I go via N3.
19:41:06 <bijan> As does everyone else :)
19:41:13 <danbri> ...and then you'd likely throw away all but the subjects of those statements
19:41:33 <bijan> CWM doesn't do a particualrly good job of exposing the triplestore to python level programmatic manipulation.
19:41:34 <danbri> How's your CWMClone thing looking?
19:42:02 * danbri wonders what a 'particularly good job' would look like...
19:42:09 <bijan> Ok, didn't you hear? I've got rule compiling working and successful ran the forwardchainer on a few compiled rules.
19:42:12 <bijan> Well, that's the point, eh?
19:42:23 <danbri> I've got at least 3 flavours of API in mind...
19:42:56 <danbri> (i) something like my 'ask()' above, a single method that gets passed a statement (with bits nil'd out), and returns the portion of the graph that matches
19:42:58 <bijan> There's two bits, what the triplestore looks to a programmer and what a triplestore needs to supply to work well with n3/progreammers.
19:43:29 <danbri> (ii) something more mozilla like, with graph->GetSources(node, propertyname) facilities for pottering around the graph from scripts
19:44:04 <danbri> (iii) a node-centric API that overloads the perl/python/ruby object system to make RDF properties appear to be attributes or methods of a programmatic object, eg doc.dc_title()
19:44:12 <bijan> You mean pointer chasing for II?
19:44:12 <danbri> and (iv) query level stuff, N3, squish etc...
19:44:25 <bijan> iii sounds like orchard.
19:44:49 <bijan> And I don't see the difference between i and iv
19:44:54 <bijan> My reading:
19:44:55 <danbri> not really, that'd be an implementation technique... More, just a style of API (with similar backend implementation to the others)
19:45:13 <bijan> i&iv unification/relational query
19:45:21 <bijan> ii semantic net
19:45:26 <bijan> iii frame like
19:45:27 <danbri> (i) is a single statement, ie. something easy I can implement (ii) needs fancier query engine, and notion of named-blanks common accross multiple statements
19:45:50 <danbri> framelike/orchardlike: yup...
19:46:51 <danbri> i: is I guess yeah simple subset of iV. You can (eg. libby's Inkling) implement iV over top of (i) if that's the only interface accessible, though its expensive
19:46:52 <bijan> Hm. You should really really check out kjbuckets.
19:47:16 <bijan> Not just to use, but it build a simple relational algebra processor on top some graph & set primatives.
19:47:28 <danbri>http://www.chordate.com/kjbuckets/
19:47:29 <dc_rdfig> D: http://www.chordate.com/kjbuckets/ from danbri
19:47:46 <danbri> D:|kjbuckets, as recommended by bijan
19:47:47 <dc_rdfig> titled item D
19:47:55 <danbri> D:" it build a simple relational algebra processor on top some graph & set primatives"
19:47:55 <dc_rdfig> commented item D
19:48:31 <bijan> D:[Here|http://www.chordate.com/kjbuckets/relalg.py], in fact. Gadfly (the pure python, in memory, SQL engine) is also built on it. Fun stuff.
19:48:31 <dc_rdfig> commented item D
19:49:31 <bijan> D:*Computing With Logic* does the same with Datalog (indeed, the last chapter provide a fairly complete relational query language processor in Prolog; rather useful).
19:49:32 <dc_rdfig> commented item D
19:49:50 <danbri> D:Cool, looks like a nice eg to learn from
19:49:52 <dc_rdfig> commented item D
19:53:26 <bijan> Composition
19:53:27 <bijan> with notation G1*G2 produces the graph containing (s1,d2) whenever there is an arc (s1,d1) in G1 and an arc (d1,d2) in G2}.
19:53:36 <bijan> >>> G1 = kjGraph([(0, 1), (1, 2), (3, 0), (3, 4), (2, 3)])
19:53:36 <bijan> >>> G2 = kjGraph([(4, 0), (0, 1), (1, 2), (3, 1), (2, 0)])
19:53:36 <bijan> >>> G1*G2
19:53:36 <bijan> kjGraph([(0, 2), (1, 0), (3, 1), (3, 0), (2, 1)])
19:53:41 <bijan> I *think* I understand that :)
19:55:22 <bijan> Once you have i, you can use these higher level operations, I think, to get to iv.
19:56:15 <bijan> How exactly, errrr....is an exercise left to the interchatulor.
19:56:25 <danbri> is there a nice list somewhere of what I have to implement?
19:56:28 <danbri> doh!
19:56:45 <bijan> Well, that's what I was suggesting would be good to figure out :)
19:56:57 <bijan> And have to implement *for what*?
19:57:16 <danbri> ah, ok, thought initially you were talking in terms of taste / beauty...
19:57:24 <bijan> Nope.
19:57:26 <danbri> "for what", why the Semantic Web of course.
19:57:28 * danbri ducks
19:57:38 <bijan> Not concrete enough.
19:57:47 <danbri> gotta run (food; movie) back later.
19:57:53 <danbri> The Semantic Web (alpha release?)
19:57:58 <bijan> Nope.
19:58:06 <bijan> A more reasonable target is "to support n3".
19:58:13 <bijan> Which is, at least, concrete :)
19:58:46 <danbri> er, how about simple conjunctive query over RDF content, w/ no provenance/reificatio, rdf containers fiddliness, or datatyping magic
19:58:56 <bijan> That's reasonably concrete :)
19:59:06 <danbri> (but no mention of rules, which n3 evokes)
19:59:10 <bijan> Yep.
19:59:21 <danbri> That's the subset of rdf query that everyone (except me :) seems to have implmeneted
19:59:34 * danbri heads off
21:12:39 <sbp> I realised that a fragURI is really just a QName with its structure defined by the URI RFC
21:13:06 <bijan> sbp, check the logs for tbl's answer to your earlier question.
21:13:13 <sbp> And without having a QName as a base. That's pretty sucky now that I think of it in those terms... URIs for namespace bases!
21:13:16 * sbp checks logs
21:14:38 <sbp> Hmm... I know that the functions only apply on the LHS. I meant, I have an arbitrary number of objects, and I want to put them into a list
21:14:58 * tim-gone finds he alwyas spots questions about cwm after the asker has left.
21:15:00 <sbp> :a :b :c , :d , ... :z . => (:d ... :z) .
21:15:06 <sbp> heh, hi Tim
21:16:15 <tim-gone> Ah... you have a set of objects, you say? How do you know? At some point you know that the set is exactly the set for which a formula syas something about one of its members.
21:16:36 <tim-gone> So what we need and don't have really is to make an arbitray ordering of such things.
21:16:46 <tim-gone> To make a list for output.
21:17:03 <sbp> exactly - it's missing, and I spent ages trying to work it out :-)
21:17:09 <tim-gone> However, that said, it is IMHO wise to keep them unordered for as long as you can.
21:17:41 <sbp> well, the scenario is this...
21:17:42 <tim-gone> (The long way DanC would do in a flash woudl be to order them by URI order and build a list with first and last but I think it woul dbe tedious and not scale)
21:18:18 <sbp> I might have a known subject and predicate ":Blargh rdfs:label", and then a set of objects. I just want to concatenate the objects. That's it :-)
21:18:51 <tim-gone> [[[BTW, danbri wanted store access methods and llyn has store.any(template) and store.each(template) ]]]
21:19:07 <bijan> Oh right.
21:19:25 <tim-gone> Templates are quads with None as wildcard.
21:19:26 <sbp> yeah, I played about with list ordering functions for quite a while: I actually got CWM to construct (what appeared to be) an infinite list, i.e. it didn't stop in the time that I gave it
21:19:53 <tim-gone> Oh, yo may have had the version of cwm which would loop forever on some things!
21:19:59 <tim-gone> tim-gone is now known as tim
21:20:34 <sbp> I have the latest version. Perhaps it wasn't a forever loop... I was using a combination of () as pred, and first/rest to construct a huge list
21:21:42 <tim> It was probably very very slow. Because you tend to end up with N^2 notes that x must be after y for every x,y and so on.
21:22:43 <tim> To show that x is immediately followed by y in an ordered list, you have to show the formula notIncldes any z such that x < z < y. And notIncldues is costly recursive call to the query engine.
21:23:15 <sbp> Why doesn't notIncludes take universally quantified variables?
21:23:44 <tim> Give an example so I can see the scope of the univ qu.
21:23:54 <sbp> erm... hang on a sec
21:24:45 <sbp> argh, I'll have to get my old version out of CVS... sorry
21:25:38 <tim> I guess the answer will be thet you are saying "for all x, F notIncludes { foo bar x} => G(x)" which is true for an infinite number of x and so not useful.
21:25:48 <sbp> [[[
21:25:48 <sbp> { :F a :Target; log:includes { :x a rdfs:Class; rdfs:comment :z };
21:25:49 <sbp> log:notIncludes { :x rdfs:label :r } .
21:25:49 <sbp> :x log:uri :p .
21:25:49 <sbp> ("<li><a href=\"" :p "\">" :p "</a> - " :z) string:concatenation :q }
21:25:49 <sbp> log:implies { :Result_a6 log:outputString :q } .
21:25:50 <sbp> ]]]
21:26:37 <sbp> well, it should check to see if it's the same :x that satisfies the log:includes context, surely? So it will be finite
21:26:51 <sbp> { :F a :Target; log:includes { :x a rdfs:Class; rdfs:comment :z };
21:26:51 <sbp> log:notIncludes { :x rdfs:label :r } .
21:26:51 <sbp> :x log:uri :p .
21:26:51 <sbp> ("<li><a href=\"" :p "\">" :p "</a> - " :z) string:concatenation :q }
21:26:51 <sbp> log:implies { :Result_a6 log:outputString :q } .
21:26:55 <sbp> oops, sorry...
21:27:21 <tim> Well, in your case it will get the :x from the first line, but it will never bind r, so it will be left able to
21:27:44 <sbp> ah, of course! r needs to be []
21:27:48 <tim> ... make up any value of r which it doesn't do.. It probably, for some value of chatty= outputs a "rats"message.
21:28:05 * sbp should set chatty more often
21:28:56 <sbp>http://lists.w3.org/Archives/Public/www-archive/2001Dec/0051
21:28:56 <dc_rdfig> E: http://lists.w3.org/Archives/Public/www-archive/2001Dec/0051 from sbp
21:29:06 <sbp> E:|Re: resource ambiguities
21:29:06 <dc_rdfig> titled item E
21:30:11 <tim> Yes, you can use []. You can also use { this log:forSome :r. :x rdfs:label :r :r a :fooLabel } The thing has to be exit. qua'd in that formula - you can't inherit it from above as you can with includes (because of the "not").
21:30:13 <sbp> E:Sean goes on another tirade about meaning of QNames etc., especially in W3C specifications
21:30:13 <dc_rdfig> commented item E
21:30:51 <sbp> ah, forSome will be useful where I have to repeat terms, yes...
21:32:34 * sbp makes the modifications to rdfstoxhtml.n3
21:33:13 <sbp> oh, that's funny... I already have it in there:-
21:33:14 <sbp> [[[
21:33:14 <sbp> { :F a :Target; log:includes { :x a rdfs:Class; rdfs:comment :z };
21:33:14 <sbp> log:notIncludes { :x a rdfs:Class; rdfs:label [] } .
21:33:15 <sbp> ]]]
21:33:35 <sbp> but it doesn't work. Ugh
21:37:01 <sbp> E:Well, a mild/polite tirade. But important things are broken
21:37:01 <dc_rdfig> commented item E
21:50:21 <sbp> Hmm... "pop" and "append" as built-ins? { (:x :y :z) :pop [ :result ?a; :list ?b ] } log:implies { ?a a :Result . ?b a :List } . => :z a :Result (:x :y) a :List . and { (:x :y) :append [ :item :z; :result ?a ] } log:implies { ?a a :List } . => (:x :y :z) a :List .
21:51:11 * sbp wonders what the nominal equivalents would be
21:52:21 <sbp> :in and :notIn would be cool too { :b :notIn (:x :y :z) } log:implies { :Test a :Success } .
21:54:30 <tim> E: "Goto 1" is not a loop, as it is a different URI, more directly grounded each time, until you get to things you know.
21:54:30 <dc_rdfig> commented item E
21:56:05 <sbp> That makes good sense
21:58:31 <bijan> sbp, on your N3 rough guide you say:
21:58:35 <bijan> Notation3 is the stripped down plain text RDF format
21:58:46 <bijan> But that's just not true, and is, in fact, misleading.
21:58:49 <sbp> do I? Oh man, that's not good
21:59:06 * bijan is on a campaign to rid the web of all such descriptions of n3 :)
21:59:17 <tim> Hmmm ... the thing above doesn't work, even though the document in question containes something declared as a class with a comment but no label?
21:59:22 <sbp> then again, RDF Core defined NTriples as having a MIME type of text/plain
21:59:40 <bijan> Hmm. my objection is the "stripped down" part :)
21:59:46 <sbp> yes, it doesn't detect that, AFAICT
22:00:03 <sbp> I meant stripped down in syntactic sugar/verbosity
22:00:20 <tim> text/plain? <> a :sigh.
22:00:24 <deltab> it's not *plain* text
22:00:33 <bijan> It has *more* sugar, in a lot of ways :)
22:00:52 <sbp> text/plain: honestly! That's what they said. I should get a reference at this point...
22:00:58 <tim> well, you can call NTriples plain text, but that ain't gonna help any machine much.
22:01:35 <sbp> "The Internet Media Type / MIME Type of N-Triples is text/plain " - http://www.w3.org/TR/rdf-testcases/
22:01:52 <sbp> it's in TR space, you can't change it now! :-)
22:01:53 <tim> maybe calling it application/notation3 ;ntriples would be more like it
22:02:16 <sbp> I somewhat hope that RDF Core will define a +rdf suffix, in a similar way to +xml
22:02:22 <tim> We have process for changing things....
22:02:49 <sbp> Of course :-) But you can't change the dated version, can you?
22:02:52 * tim isn't sure what +rdf would do
22:03:10 <tim> No, but http://www.w3.org/TR/rdf-testcases/ isn't the dated version
22:03:37 * sbp makes a note of http://www.w3.org/TR/2001/WD-rdf-testcases-20011115/
22:03:53 <sbp> +rdf would just say that this is a serialization of the RDF model
22:04:10 <sbp> Hmm... perhaps the suffix is perfectly useless
22:04:50 <bijan> Acch. If only python had :before and :after methods!
22:05:06 <tim> The +xml flag tells you you can parse it as XML even if you don't understand the semantics. would +rdf tell you that you can understand the semantics even if you can't parse it? ;-)
22:05:09 <sbp> but the rigmorale of having to go through MIME registration process is a bit of a joke anyway. Languages should be able to evolve smoothly, which MIME types do not really allow for (unless you shove in parameters all over the place)
22:05:37 <sbp> heh, heh! O.K. perhaps not :-)
22:07:18 <sbp> notation3; ntriples makes sense, since an N3 parser can grok NTriples, but not vice versa. But is application/notation3 registered?
22:10:53 <bijan> Ok, I actually basically understand RDFStore.query
22:11:05 <bijan> At least a first cut understanding.
22:11:48 <bijan> Except for the Lists stuff. Completely opaque to me.
22:13:38 <bijan> Hmm. And I know clearly get that RDFStore isn't really an RDFStore but an N3Store :)
22:24:49 <bijan> sean, amaya horks on your cwm page.
22:25:30 <sbp> Fine, I'll fix it... what was the problem this time? An entity in the wrong place caused it to crash the OS?
22:25:44 <bijan> line 116, char 6: not well-formed
22:25:52 <bijan> Heh. Amaya's not *that* bad.
22:26:13 <sbp> Amaya is a decent editor, but a terrible browser
22:26:15 <bijan> As I'm sure you recall my prior Amaya evangalization routine, I won't repeat it :)
22:26:25 <bijan> Hmm. It's not *terrible*.
22:26:29 <bijan> It' kinda sucks for forms.
22:26:46 <bijan> I'm experimenting wtih annotea, so it's the only game in town.
22:26:50 <sbp> no, it's terrible. Sorry, it just is :-) But it wasn't really meant for browsing, AFAIK
22:27:10 <bijan> Hmm. Why do you think it's *terrible*. It seems to render plenty of pages just fine.
22:27:19 <sbp> For editing, it's classy; the only thing that I know of that can produce clean(ish) XHTML, and ported for plenty of OS'
22:29:36 * bijan doesn't understand sbp's world, but perhaps that's just as well.
22:31:51 <sbp> I would say that it is :-)
22:32:14 * bijan is annotating http://dev.w3.org/cvsweb/~checkout~/2000/10/swap/llyn.py?rev=1.7&content-type=text/x-cvsweb-markup
22:32:31 <sbp> there, valid XHTML: http://validator.w3.org/check?uri=http%3A%2F%2Finfomesh.net%2F2001%2Fcwm%2F&charset=%28detect+automatically%29&doctype=Inline
22:32:50 <bijan> Works dandy now, thanks.
22:32:59 <sbp> np
22:33:06 <bijan> I retract my prior slanderous, if accurate, annotation.
22:33:26 <sbp> what was that?
22:33:33 <bijan> That your document was broken :)
22:33:48 <bijan> Which is was.
22:33:50 <bijan> But now it's not :)
22:36:32 <sbp> aha
22:36:59 <bijan> So it used to have an annotation stating that it is broken.
22:37:04 <bijan> But now it doesn't :)
22:39:04 <sbp> Oh, I love this: "failed to read the annotation index"
22:40:53 <bijan> Hmm. I have no idea if I'm posting these annotations correctly :)
22:41:10 <sbp> "Contacting annotest.w3.org"
22:41:11 <sbp> still contacting...
22:42:09 <sbp> Gpgmpmgprmgpgh
22:42:13 * sbp tries another page
22:42:41 <sbp> ah, it works there
22:44:25 <sbp> oh neat, chumpster annotates pages for you
22:44:46 <bijan> Hmm?
22:45:39 <sbp> honest
22:47:08 <bijan> What's chumpster?
22:49:01 <bijan> Aha! Now I have it configured.
22:51:23 <bijan> Damn. I failed to load the annoation index too.
22:52:00 <bijan> Annotea really needs better feedback.
22:53:44 <bijan> Well, my annotations are there.
22:53:58 <bijan> Somewhat.
22:54:39 <bijan> Yep.
23:02:13 * sbp makes another RDF business card for the Semantic Web
23:02:53 <bijan> I wonder if there's access mucking that would need to be done...
23:03:40 <bijan> sean, did you manage to browse any of my llyn.py annotations?
23:04:09 <sbp> nope, but I'll try again in a second...
23:05:30 <sbp> ta da: http://purl.org/net/sbp/info
23:06:56 * sbp tries the annotations
23:07:03 <sbp> Amaya: failed to load the annotation index
23:09:44 <sbp> Instead of using "@prefix : <#> ." all of the time, it would be good to use a "tag:" URI instead, IMO
23:09:54 * sbp waves to mnot
23:10:44 <mnot> howdy
23:10:54 <bijan> Yes, me too.
23:13:54 <sbp> you fail to load it, or are of the same opinion?
23:15:13 <mnot> apropos of nothing: has anyone played with node-based APIs for working with RDF, instead of statement-based APIs like redland, 4RDF?
23:15:16 <sbp> lol @ http://www.isi.edu/webscripter/bibtex.o.daml#URL
23:15:26 <bijan> I fail to load.
23:15:35 <danbri> node-based: yup...
23:15:38 <bijan> I can get at the annotations through the web based query engine.
23:16:43 <sbp> man, this DAML stuff is both cool and awful at the same time. Almost all of them use rdf:ID... terrible! And daml:imports is a bit bogus...
23:16:44 <mnot> any examples? I've been playing with a python-based one that seems to be a natural; nodes->objects, predicates->properties, etc.
23:16:47 <danbri> for node-based in perl, see http://ilrt.org/discovery/2001/06/rdfperl/current/t/memtest.pl
23:16:55 <mnot> cool - thanks
23:17:16 <danbri> I'm fed up with Perl so starting over in Ruby, experimentally...
23:17:30 <sbp> Eek, even JimH uses ID in the beer ontology
23:17:34 <danbri> in my experience node-based is likely to make it easier to teach folk rdf...
23:17:44 <bijan> Hmm. What's teh diff?
23:17:57 <mnot> that's what I was thinking. Especially when there's a clean object model like Python's...
23:18:04 <danbri> your code has less 'rdf words' and more 'content words'. Forzample:
23:18:09 <sbp> and I love the ".daml" everywhere
23:18:10 <danbri> print "\n[ $channel ] \nTitle: ", rss_title $channel,
23:18:10 <danbri> "\nDescription: ", rss_description $channel, "\n";
23:18:19 <danbri> print sprintf ("publisher: %s \nrights: %s ",
23:18:19 <danbri> dc_publisher $channel, dc_rights $channel);
23:18:20 <danbri> ...all content words, no RDF words
23:18:41 <danbri> not sure about 'clean' oo model; the overloading I'm doing is a bit grubby :)
23:18:53 <sbp> oh thankfully, a well maintained Schema (AFAICT): http://www.daml.org/cgi-bin/hyperdaml?http://www.daml.org/2001/08/baseball/baseball-ont
23:19:06 <bijan> Hmm.
23:19:11 <danbri> hmm?
23:19:52 <bijan> Er...I'm not entirely sure I'm clear on the diff *per se*. Or rather on "node vs. statement"
23:20:10 <bijan> I mean, is a node suppost to be an alternative representation of a statement?
23:20:55 <mnot> alternate interface
23:20:56 <danbri> oh... OK the idea is that a bunch of code will be based around objects of type 'node' that stand for the blobs in the blobs-n-arcs graphs. You'd ask a blob about its properties. Rather than the kinds of API that are about calling methods on a 'graph' object
23:21:15 <bijan> So, *not* a statement, but a node :)
23:21:24 <danbri> er, yes
23:21:35 <bijan> I.e., not node.subject, pred, obj
23:21:58 <bijan> Ok, that's somewhat clearer I guess.
23:21:59 <danbri> unless the node happened to be of rdf:type statement, I guess...
23:22:13 <danbri> code snippet above not clear?
23:22:19 <danbri> (perl)
23:22:26 <bijan> Not in the tiniest.
23:22:31 * bijan doesn't read a lick of perl.
23:22:38 <danbri> excellent! I confused bijan :)
23:22:51 <danbri> If we write dc_publisher $channel
23:22:58 <bijan> Hmm. "confused" isn't quite the right word :)
23:22:59 <danbri> ...we're doing $channel->dc_publisher()
23:23:16 <danbri> where dc_publisher() is a method on $channel, an object of type Node in Perl
23:23:35 <bijan> Yes, yes, I get it. Like orchard/groves what have you.
23:23:46 <danbri> So, that's all we mean node-centric...
23:24:00 <bijan> Right.
23:24:00 <danbri> probly
23:24:40 <danbri> its somewhat vulnerable to the direction that properties happen to have been named in, though
23:25:00 <mnot> yes. it's primarily write-orientied IMHO
23:25:09 <bijan> Yes, I was about to ask :)
23:25:14 <danbri> interesting; I thought the opposite
23:25:22 <mnot> example: http://test.mnot.net/sparta/SpartaTest.py
23:26:19 <mnot> (just playing)
23:26:51 <danbri> the reason I wasn't sure about using it for write was w.r.t. cardinality; if you do it twice, are you overwriting or adding a new triple...
23:26:56 <bijan> Hmm. Querying will prolly feel odd to a statement oriented fellow like me.
23:26:59 <danbri> (guess daml stuff comes in handy there?)
23:27:05 <bijan> Er..?
23:28:13 <mnot> yeah, haven't gotten there yet. just returning the first match now; will have to deal with that (control by attributes, maybe, or just lists for values)
23:28:20 <danbri> cardinality of properties... if you know a person only ever has one s:mother property, setting a value for that twice would over-write rather than add info on a 2nd mother. DAML+OIL has vocab for cardinality, that's all
23:28:35 <danbri> also: print "bob's wife's phone", bob.person_wife.contact_phone
23:28:46 <danbri> ...if he had two wives?
23:29:56 <bijan> Dear Sir/Madam, Please forgive us if we're inconveniecing you with this
23:29:56 <bijan> email, but it was brought to our attention that you may have keen
23:29:56 <bijan> interest in relocating - possibly even purchasing property in the Sunny
23:29:57 <bijan> South of Spain.
23:29:59 <mnot> if bob lives in Utah...
23:30:07 <bijan> Dan, you been spreading rumors about me again?
23:30:32 * danbri feigns innocence, again
23:30:38 * bijan is in the giggles over "Sunny South of Spain"
23:31:26 <danbri> the Ss?
23:32:21 <mnot> hmm... bob.person_wife[predicate=object].contact_phone for however you want to select the wife, perhaps
23:32:39 <mnot> or if person_wife is a daml:list, just use [0] etc.
23:32:55 * danbri dunno; there is a list somewhere (yahoogroups) with some folk talking about 'RDFPath', looking at similar approach
23:33:17 <mnot> hmm
23:33:26 <bijan> Hmm, indeed.
23:34:22 <mnot> well, if anyone wants to play, the source is in the same path as Sparta.py. It's based on 4RDF despite the problems (can't get redland up with python yet)
23:35:17 * danbri playing with Ruby for a bit; when I'm next in a Python mood I'll have a play :)
23:35:45 <mnot> are you liking ruby?
23:36:11 <danbri> yes, it's perly enough but not too perly
23:36:42 <AaronSw> Ruby! Dear, oh dear..
23:38:18 * danbri wonders what AaronSw's grumbling about
23:38:45 <bijan> TMPWTDI
23:39:16 <danbri> P?
23:39:17 <AaronSw> .acronym TMPWTDI
23:39:27 <bijan> Too Many Perl Ways To Do It
23:39:31 <AaronSw> Oh, xena's not here.
23:52:44 <tim> I don't see why one has to chose between providing statements as objects and nodes as objects.
23:53:26 <bijan> Er..hmm. Did anyone say *have* to? :) I think it's just *whether* you do and what you emphasize.
23:53:46 <bijan> Tim, are you annotea capable?
23:53:55 <tim> But in python, people seem to want to write s=doc.dc_title and i don't see any neat way to make it work with namespaces.
23:54:10 <tim> I have a reaosnably recent amaya.
23:54:35 <bijan> But are you set up with the annotea test server at w3c and have successfully read remote annotations fromit?
23:54:49 <tim> I think i did once.
23:54:54 * tim checks
23:54:56 <bijan> i started annotating llyn.py but neither sbp nor I can get at them :)
23:56:00 <sbp> Tim, BTW, your sniffing mechanism now breaks when I run it on a DAML file with "xmlns =" in it (non canonicalized)
23:57:00 <mnot> tim2: I did it in a way similar to n3; e.g., world.registerNS('dc', 'url-for-dc'), then foo.dc_title = "foo"
23:57:02 * sbp changes to "rdf:RDF" but finds another error
23:57:20 <tim2> I see.
23:57:48 <tim2> So the string dc_title really is a string and really is taken part at runtime.
23:57:53 <tim2> Fair enough.
23:58:08 * bijan sometimes wonders if importing xml namespaces in every sundry language is really such a good idea.
23:58:19 <tim2> I was assuming that node.property would get you a list of values.
23:58:31 <mnot> yes
23:58:34 * tim2 doesn't
23:58:36 <tim2> :)
23:58:40 <mnot> he
23:58:43 <mnot> heh
23:59:01 <bijan> tim2, you're always confident that it's a *terrible* idea? Whew! :)
23:59:06 <tim2> It is a good excercise for any language
23:59:31 <tim2> For some, you get really interestingresults.
23:59:42 <tim2> Others don't work.
The IRC chat here was automatically logged without editing and contains content written by the chat participants identified by their IRC nick. No other identity is recorded.
Alternate versions:
and
Text
Provided by Dave Beckett. Hosted by Useful Information Company.