IRC log of rdfa on 2010-08-12

Timestamps are in UTC.

13:57:35 [RRSAgent]
RRSAgent has joined #rdfa
13:57:35 [RRSAgent]
logging to
13:57:37 [trackbot]
RRSAgent, make logs world
13:57:39 [trackbot]
Zakim, this will be 7332
13:57:39 [Zakim]
ok, trackbot; I see SW_RDFa()10:00AM scheduled to start in 3 minutes
13:57:40 [trackbot]
Meeting: RDFa Working Group Teleconference
13:57:40 [trackbot]
Date: 12 August 2010
13:57:45 [manu]
13:59:13 [manu]
Chair: Manu
13:59:22 [manu]
Regrets: knud
14:00:02 [ivan]
zakim, code?
14:00:02 [Zakim]
the conference code is 7332 (tel:+1.617.761.6200 tel:+ tel:+44.203.318.0479), ivan
14:00:47 [Zakim]
SW_RDFa()10:00AM has now started
14:00:55 [Zakim]
14:01:06 [manu]
zakim, ??P6 is manu
14:01:06 [Zakim]
+manu; got it
14:01:20 [markbirbeck]
markbirbeck has joined #rdfa
14:01:42 [ivan]
zakim, dial ivan-voip
14:01:42 [Zakim]
ok, ivan; the call is being made
14:01:43 [Zakim]
14:02:21 [markbirbeck]
Ivan can't stay away! :)
14:02:25 [markbirbeck]
zakim, code?
14:02:25 [Zakim]
the conference code is 7332 (tel:+1.617.761.6200 tel:+ tel:+44.203.318.0479), markbirbeck
14:02:32 [ivan]
14:03:03 [Zakim]
14:03:08 [markbirbeck]
zakim, i am ?
14:03:08 [Zakim]
+markbirbeck; got it
14:03:49 [Zakim]
14:03:56 [markbirbeck]
zakim, who is here?
14:03:56 [Zakim]
On the phone I see manu, Ivan, markbirbeck, ShaneM
14:03:58 [Zakim]
On IRC I see markbirbeck, RRSAgent, trackbot, Zakim, manu, tinkster1, Benjamin, ivan, tinkster
14:03:58 [ShaneM]
ShaneM has joined #rdfa
14:05:58 [Zakim]
+ +49.631.205.75.aaaa
14:06:28 [Benjamin]
Zakim, aaaa is Benjamin
14:06:28 [Zakim]
+Benjamin; got it
14:07:50 [Zakim]
14:09:57 [tinkster1]
manu: any updates/changes to the agenda?
14:10:04 [tinkster1]
Scribenick: tinkster
14:10:04 [manu]
Scribe: Toby
14:10:20 [manu]
Topic: ISSUE-28: rdfa-api-errors-nathan
14:11:14 [tinkster1]
manu: 2 weeks agao, I tried to fix all the editorial issues that Nathan spotted; accidentally made one non-editorial change.
14:11:23 [tinkster1]
14:12:10 [tinkster1]
... have tried to respond to each issue individually. Waiting on a response from Nathan before we can close the issue. Anybody disagree? Think it needs to stay open?
14:12:34 [manu]
14:12:43 [manu]
14:12:50 [manu]
14:12:56 [manu]
14:14:18 [tinkster1]
... First issue is setMapping - we want to pass in plain strings as often as possible rather than requiring people to create unnecessary object wrappers.
14:15:16 [ivan]
14:15:33 [manu]
ack ivan
14:15:34 [tinkster1]
... Ultimately we want to switch from using DOMStrings to plain Strings.
14:16:44 [manu]
ISSUE: RDFa API should use 'string' instead of 'DOMString' in the WebIDL
14:16:45 [trackbot]
Created ISSUE-42 - RDFa API should use 'string' instead of 'DOMString' in the WebIDL ; please complete additional details at .
14:17:44 [markbirbeck]
14:17:53 [manu]
ack markbirbeck
14:18:27 [tinkster1]
ivan: RDF uses unicode; when you interact with the outside world, you need to pick an encoding.
14:18:42 [Benjamin]
14:18:52 [manu]
q+ to discuss abstract representation
14:18:56 [markbirbeck]
14:18:58 [manu]
ack benjamin
14:19:09 [tinkster1]
markbirbeck: DOMString is basically just a name that binds to native string classes/types depending on the platform. UTF-16.
14:19:28 [markbirbeck]
Quote: "Note: Even though the DOM defines the name of the string type to be DOMString, bindings may use different names. For example for Java, DOMString is bound to the String type because it also uses UTF-16 as its encoding."
14:19:39 [manu]
14:19:47 [tinkster1]
Benjamin: we use DOMString for plain literals and typed literals. Should we make everything UTF-8?
14:19:58 [ivan]
14:20:03 [ivan]
ack manu
14:20:03 [Zakim]
manu, you wanted to discuss abstract representation
14:20:25 [manu]
ack ivan
14:21:04 [tinkster1]
ivan: we should try to be compatible with webapps wg.
14:22:00 [tinkster1]
manu: Another issue in the e-mail is that we need to have a 'type' parameter to the createParser call, so that you can choose which format you want to parse.
14:25:04 [tinkster1]
..., store)
14:27:43 [manu]
14:27:48 [markbirbeck]
Nathan' comment:
14:27:50 [markbirbeck]
> DocumentData has the createParser( type , store ) method, but DataParser
14:27:51 [markbirbeck]
> has no constructor which accepts a type, or any way of setting the type.
14:28:07 [markbirbeck]
Manu replies:
14:28:09 [markbirbeck]
I have added a property called "type" to the Data Parser interface.
14:28:46 [manu]
14:29:45 [tinkster1]
... Is the general agreement that the constructor (a against the factory method) does not need a 'type' parameter?
14:30:39 [tinkster1]
markbirbeck: is the new thing you've added the 'type' property of the DataParser interface?
14:31:45 [tinkster1]
manu: yes, that's the difference; though .type might be redundant - they could just do typeof() on the object.
14:32:49 [tinkster1]
markbirbeck: should we have DataParser.hasFeature('foo')?
14:33:14 [tinkster1]
ivan: then would we need to enumerate loads of different features?
14:34:17 [tinkster1]
markbirbeck: we'd only need to define the 'rdfa' feature and provide a framework for other feature strings to be defined.
14:34:28 [tinkster1]
ivan: I'd be concerned about this.
14:35:07 [manu]
ISSUE: Determine if DataParser interface needs a hasFeature("hcard") or hasFeature("hrecipe") mechanism.
14:35:08 [trackbot]
Created ISSUE-43 - Determine if DataParser interface needs a hasFeature("hcard") or hasFeature("hrecipe") mechanism. ; please complete additional details at .
14:35:33 [manu]
PROPOSAL: Remove 'type' from DataParser interface until ISSUE-43 is resolved.
14:35:43 [manu]
14:35:48 [markbirbeck]
14:35:49 [tinkster1]
14:35:49 [ivan]
14:35:50 [Benjamin]
14:35:59 [tinkster1]
markbirbeck: I agree about avoiding complexity; perhaps we should remove 'type' for now which although simple, is not going to be up to the job.
14:36:08 [ShaneM]
dont care
14:36:10 [manu]
RESOLVED: Remove 'type' from DataParser interface until ISSUE-43 is resolved.
14:36:33 [manu]
14:37:38 [tinkster1]
manu: parser.parse(url) method?
14:38:03 [ivan]
14:38:48 [tinkster1]
... idea is to pull in triples from multiple pages to one store, and do stuff with that.
14:39:03 [tinkster1]
... How to avoid CORS/security issues?
14:39:12 [manu]
ack ivan
14:39:13 [markbirbeck]
14:39:22 [tinkster1]
... This isn't an issue on the tracker, but maybe should be on there.
14:41:04 [tinkster1]
ivan: this is a good feature. The API isn't just for browsers, so we shouldn't let problems that are browser-specific stop us from adding it to the API.
14:41:13 [manu]
ISSUE: Add a mechanism to the RDFa API to parse remote documents and place them into a DataStore.
14:41:14 [trackbot]
Created ISSUE-44 - Add a mechanism to the RDFa API to parse remote documents and place them into a DataStore. ; please complete additional details at .
14:42:05 [manu]
q+ to discuss remote RDFa fetching and CORS.
14:42:08 [manu]
14:42:21 [tinkster1]
markbirbeck: in the first instance, we should copy the XmlHTTPRequest security model.
14:42:32 [manu]
14:42:34 [manu]
14:42:38 [manu]
ack markbirbeck
14:43:07 [manu]
14:43:09 [manu]
ack manu
14:43:09 [Zakim]
manu, you wanted to discuss remote RDFa fetching and CORS.
14:43:32 [tinkster1]
markbirbeck: we should put this method in, and just make it clear that some programming environments will disallow you from using it in some situations.
14:44:12 [tinkster1]
manu: we'll add this to the tracker.
14:44:57 [ivan]
14:45:06 [manu]
ack ivan
14:45:08 [tinkster1]
manu: next issue - how do you get a list of all triples? answer: just call filter() without any arguments. fixed a editorial bug where the subject was non-optional.
14:46:37 [tinkster1]
ivan: does filter() return a new data store containing the triples; or an array?
14:47:11 [tinkster1]
manu: data stores have a foreach method for iterating through them.
14:47:50 [ShaneM]
this sort of patter is very common in javascript these days.
14:47:56 [ShaneM]
14:47:59 [tinkster1]
... having filter() return another data store allows them to be chained together.
14:48:40 [manu], "foaf:name").forEach(function (s, p, o) { doSomething() });
14:48:56 [ivan]
for s,o in graph.triples(None,foaf["name"],None) : do something with s,o
14:49:20 [markbirbeck]
14:49:30 [manu]
q+ to discuss array decompisition
14:49:43 [manu]
ack markbirbeck
14:50:12 [tinkster1]
var graph =; graph.filter(null, "foaf:name").foreach(function (s,p,o){doSomething();});
14:52:05 [tinkster1]
markbirbeck: I do have another proposal I'd like to take to the mailing list, which makes more interesting queries much simpler.
14:52:42 [tinkster1]
... in a programming language, I want a projection, not triples.
14:52:49 [manu]
ack manu
14:52:49 [Zakim]
manu, you wanted to discuss array decompisition
14:53:19 [ivan]
14:53:33 [manu]
ack ivan
14:54:16 [markbirbeck]
14:54:30 [ShaneM]
in perl: while ( my (s, o) = graph->triples(....) ) { some actions on s and o }
14:55:12 [Benjamin]
14:55:17 [manu]
q+ to discuss DataParser.iterate()
14:55:34 [manu]
ack markbirbeck
14:56:31 [tinkster1]
markbirbeck: callbacks are an increasingly popular way of working. we should support them.
14:57:07 [ivan]
14:57:15 [manu]
ack benjamin
14:57:27 [tinkster1]
... the issue is more whether we should be feeding triples into this callback, or a dictionary/hash/associative-array/projection/whatever-you-want-to-call-it.
14:57:56 [manu]
ack manu
14:57:56 [Zakim]
manu, you wanted to discuss DataParser.iterate()
14:58:38 [tinkster1]
In Perl you can do this: ($first, $second, $third) = @somearray
14:58:49 [tinkster1]
That's decomposing the array.
14:58:52 [manu]
you can't do that in ECMAScript
14:59:11 [ivan]
for triple in graph.triple(None, foaf["name"], None) : do something with 't'
14:59:21 [ShaneM]
why does each language binding to the webidl need to be the same? what am I missing here?
14:59:54 [manu]
ack ivan
15:00:41 [manu]
q+ to mention that DataStore is iterable
15:00:56 [tinkster1]
ivan: all I want it a way to get the results of filter as an array.
15:01:02 [manu]
ack manu
15:01:02 [Zakim]
manu, you wanted to mention that DataStore is iterable
15:01:10 [manu]
DataStore [IndexGetter]
15:01:44 [manu]
for t in, "foaf:name") { ... }
15:02:22 [tinkster1]
None = the subject
15:02:29 [markbirbeck]
15:02:34 [manu]
for t in, PREDICATE, OBJECT) { ... }
15:02:36 [Benjamin]
15:02:40 [manu]
q+ to end the call
15:02:46 [manu]
ack benjamin
15:04:48 [manu]
ack manu
15:04:48 [Zakim]
manu, you wanted to end the call
15:07:42 [Zakim]
15:08:58 [ShaneM]
q+ to ask about supporting javascript stuff
15:09:04 [manu]
ack shane
15:09:04 [Zakim]
ShaneM, you wanted to ask about supporting javascript stuff
15:11:51 [ShaneM]
foreach is not restricted to ecmascript
15:14:00 [manu]
for a, b, c in [[1, 2, 3], [4, 5,6], [7, 8, 9]] { print a; print b; print c; };
15:15:16 [ivan]
triple = (s,p,o)
15:15:37 [ivan]
15:16:48 [manu]
15:17:00 [Benjamin]
javascript 1.7 can do this:
15:17:00 [Benjamin]
# for (let [s, o] in list) {
15:17:00 [Benjamin]
# document.write ("Name: " + name + ", Value: " + value + "<br>\n");
15:17:00 [Benjamin]
# }
15:17:14 [Benjamin]
defined in
15:17:51 [manu]
for t in triples { var s = t.subject; var p = t.predicate; ... }
15:18:57 [markbirbeck]
for each t in triples { print t.subject; }
15:19:07 [ShaneM]
+1 - that's how I do it
15:19:33 [Benjamin]
Sorry, that correct in JS 1.7:
15:19:33 [Benjamin]
# for (let [s, o] in list) {
15:19:33 [Benjamin]
# document.write ("S: " + s + ", O: " + o + "<br>\n");
15:19:33 [Benjamin]
# }
15:20:17 [ShaneM]
q+ to discuss unpacking
15:20:41 [ShaneM]
how is t.subject any different than var s=t.subject; s ?
15:21:20 [manu]
ack shanem
15:21:20 [Zakim]
ShaneM, you wanted to discuss unpacking
15:21:57 [ivan]
for t in graph.triple(IRI(http:bla),None,None) : {asdfasf}
15:23:23 [ivan]
zakim, drop me
15:23:23 [Zakim]
Ivan is being disconnected
15:23:24 [Zakim]
15:27:08 [markbirbeck]
var graph =; graph.filter(null, "foaf:name").foreach(function (s,p,o){doSomething();});
15:27:42 [markbirbeck]
var graph =; graph.filter(null, "foaf:name", function (s,p,o){doSomething();});
15:28:48 [manu]
DataStore filter (in optional Object? subject, in optional DOMString? predicate, in optional Object? object, in optional Node? element, in optional RDFTripleFilter filter);
15:30:50 [manu]
15:31:05 [markbirbeck]
15:31:23 [markbirbeck]
{ null, "foaf:name" },
15:31:32 [markbirbeck]
function (s,p,o){doSomething();}
15:31:35 [markbirbeck]
15:32:27 [manu]
graph.filter({"subject": null, predicate: "foaf:name"}, function (s,p,o){doSomething();});
15:33:08 [Benjamin]
that looks nice
15:33:29 [markbirbeck]
graph.filter({"subject": null, predicate: "foaf:name"}, function (t) {doSomething();});
15:33:44 [manu]
graph.filter({"object": "Mark"});
15:33:54 [manu]
graph.filter(None, None, "Mark);
15:35:33 [manu]
graph.filter({"object": "Mark", "xpath": "foo>bar"});
15:35:50 [markbirbeck]
function (t, f) {doSomething();})
15:36:26 [markbirbeck]
15:36:54 [manu]
filter(args, func);
15:37:14 [manu]
func ==> function (triple, args) {}
15:37:39 [manu]
args ==> "subject", "predicate", and "object"
15:39:06 [manu]
filter({"subject" : "#me", "predicate" : "foaf:name", "object": "Benjamin", "foo" : "bar"}, function (triple, args) { print triple.object; print args["foo"] } );
15:40:35 [manu]
15:40:57 [manu]
15:41:59 [manu]
filter({"subject" : "#me", "predicate" : "foaf:name", "object": "Benjamin", "selector" : "#me"}, function (triple, args, element) { print triple.object; print args["selector"]; element.font = "blah" } );
15:43:44 [manu]
filter(args, filter, func);
15:43:50 [manu]
filter(args, func, filter);
15:45:16 [markbirbeck]
filter({"subject" : "#MSFT", "predicate" : "stock:price", "high" : "blue", "low", "red"}, function (triple, args) { if ( triple.object > 27) = args.high; else = args.low; } );
15:46:28 [Benjamin]
RDFTriple createTriple (in Object subject, in Object predicate, in Object object);
15:50:44 [Benjamin]
sorry guys I have to go.
15:50:52 [manu]
no problem, thanks Benjamin :)
15:51:09 [Zakim]
15:59:12 [Zakim]
15:59:13 [Zakim]
16:04:13 [Zakim]
disconnecting the lone participant, ShaneM, in SW_RDFa()10:00AM
16:04:17 [Zakim]
SW_RDFa()10:00AM has ended
16:04:18 [Zakim]
Attendees were manu, Ivan, markbirbeck, ShaneM, +49.631.205.75.aaaa, Benjamin, tinkster
16:04:36 [manu]
trackbot, bye
16:04:36 [trackbot]
trackbot has left #rdfa
16:04:38 [manu]
zakim, bye
16:04:38 [Zakim]
Zakim has left #rdfa
16:16:00 [ShaneM]
ShaneM has joined #rdfa