Semantic Web Interest Group IRC Chat Logs for 2001-12-08

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: RDF Resource Description Framework Metadata and Text

Provided by Dave Beckett. Hosted by Useful Information Company.