15:00:29 RRSAgent has joined #rdfa 15:00:29 logging to http://www.w3.org/2010/12/09-rdfa-irc 15:00:31 RRSAgent, make logs world 15:00:31 Zakim has joined #rdfa 15:00:33 Zakim, this will be 7332 15:00:33 ok, trackbot; I see SW_RDFa()10:00AM scheduled to start now 15:00:34 Meeting: RDFa Working Group Teleconference 15:00:34 Date: 09 December 2010 15:00:40 Agenda: http://lists.w3.org/Archives/Public/public-rdfa-wg/2010Dec/0032.html 15:00:42 Chair: Manu 15:02:27 ShaneM has joined #rdfa 15:03:45 zakim, are you dead? 15:03:45 I don't understand your question, manu1. 15:03:50 zakim, who is on the phone? 15:03:52 SW_RDFa()10:00AM has not yet started, manu1 15:03:54 On IRC I see ShaneM, Zakim, RRSAgent, Benjamin, tinkster, manu1, ivan, webr3, trackbot, markbirbeck 15:03:59 zakim, dial ivan-voip 15:04:04 ok, ivan; the call is being made 15:04:43 zakim, mute me 15:04:43 sorry, tinkster, I don't know what conference this is 15:04:57 zakim, this is rdfa 15:04:57 ok, manu1; that matches SW_RDFa()10:00AM 15:04:57 zakim, this is 7332 15:04:57 tinkster, this was already SW_RDFa()10:00AM 15:05:00 ok, tinkster; that matches SW_RDFa()10:00AM 15:05:07 zakim, who is on the phone? 15:05:11 On the phone I see tinkster, ??P26, Shane, ??P28, Ivan 15:05:41 zakim, I am ??P28 15:05:41 +Benjamin; got it 15:06:07 zakim, mute me 15:06:07 Benjamin should now be muted 15:06:14 zakim, I am ??p26 15:06:14 +manu1; got it 15:06:25 Knud has joined #rdfa 15:06:46 +Knud 15:07:01 zakim, who is here? 15:07:01 On the phone I see tinkster, manu1, Shane, Benjamin (muted), Ivan, Knud 15:07:03 On IRC I see Knud, ShaneM, Zakim, RRSAgent, Benjamin, tinkster, manu1, ivan, webr3, trackbot, markbirbeck 15:08:01 zakim, code? 15:08:01 the conference code is 7332 (tel:+1.617.761.6200 tel:+33.4.26.46.79.03 tel:+44.203.318.0479), markbirbeck 15:08:59 can't dial in... 15:09:14 of course not. 15:09:24 -Benjamin 15:09:40 +??P44 15:09:47 zakim, i am ? 15:09:47 +markbirbeck; got it 15:09:55 +??P28 15:09:58 zakim, I am ??p28 15:09:58 +manu1; got it 15:10:12 zakim, who is on the phone 15:10:12 I don't understand 'who is on the phone', Benjamin 15:10:24 zakim, who is here? 15:10:24 On the phone I see tinkster, manu1, Shane, Ivan, Knud, markbirbeck, manu1.a 15:10:26 On IRC I see Knud, ShaneM, Zakim, RRSAgent, Benjamin, tinkster, manu1, ivan, webr3, trackbot, markbirbeck 15:10:27 zakim, who is on the phone? 15:10:27 On the phone I see tinkster, manu1, Shane, Ivan, Knud, markbirbeck, manu1.a 15:10:39 zakim, manu1 is benjamin 15:10:39 +benjamin; got it 15:10:46 zakim, who is on the phone? 15:10:46 On the phone I see tinkster, benjamin, Shane, Ivan, Knud, markbirbeck, manu1.a 15:12:20 SCRIBE: ShaneM 15:12:34 Topic: Update on incoming Last Call reviews 15:12:53 Regrets: Steven 15:13:23 -Shane 15:13:37 Manu: Lots of reviews coming in before end of year. 15:13:44 +Shane 15:14:04 s/reviews/reviews of RDFa Core/ 15:14:54 ShaneM has left #rdfa 15:15:00 ShaneM has joined #rdfa 15:15:21 Shane: Aside - PFWG accepted our changes on role. 15:15:31 ShaneM: PFWG accepted out comments on the Role Attribute spec. They are integrated and will be in the last call release next week. 15:15:54 manu1: does anyone object to extending the RDFa Core and XHTML+RDFa reviews to 5 January 2011? 15:16:03 no objections. 15:16:26 Topic: Response to Last Call Comments 15:16:31 manu1: we should start responding to last call comments... we don't really need to wait. 15:17:06 ShaneM: Isn't our plate full with RDFa API? 15:17:58 manu1: Yes... but you (shane) had offered to take the lead on responding. So perhaps we can do it in parallel? Create a draft response to each comment, sent to RDFa working group, if no objections after 5 days, then send on as an official response from the working group. 15:18:25 ... the perfect people to work on these would be Shane and Ivan. 15:18:46 ivan: procedurally this is fine. But there might be issues we can't do on our own. 15:18:58 manu1: sure - in that case they can be punted to the working group for discussion. 15:19:18 ... I don't want us to have a huge collection on 5 January. 15:20:28 http://www.w3.org/2010/02/rdfa/track/products/8 15:20:38 http://www.w3.org/2010/02/rdfa/track/products/9 15:22:03 ivan: some comments have actually multiple issues. 15:22:19 ShaneM: Yes, but not very many... 15:23:01 Process: pick an issue to respond to, send a draft response to the working group marked DRAFT with a 3 to 7 day window to object, if no objections, forward as a formal response to the sender. 15:23:42 ivan: some of these are issues we have already discussed in the working group. Do we need a resolution? 15:23:48 ShaneM: Only if there is a change to the text. 15:24:09 manu1: Sure. Then those would be punted to the working group for a formal resolution. 15:25:15 ACTION: Shane to provide draft responses to RDFa Core and XHTM+RDFa last call comments by 2010-12-16 15:25:15 Created ACTION-40 - Provide draft responses to RDFa Core and XHTM+RDFa last call comments by 2010-12-16 [on Shane McCarron - due 2010-12-16]. 15:25:37 TOPIC: RDF API and RDFa API Review 15:25:39 Topic: Review RDF API and RDFa API Documents 15:26:59 There is danger of rechartering and taking on RDF API and RDFa API. 15:27:21 Worked over the weekend to create two documents that are in good shape to act as basis for the rec-track documents. 15:27:33 process: quick high level review of each document 15:28:43 s/There is danger of rechartering and taking on/We might recharter to take on/ 15:29:05 manu1: Unforutnately, Nathan isn't here right now. I will summarize his work. 15:29:46 http://www.w3.org/2010/02/rdfa/sources/rdf-api/ 15:31:12 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#data-structures 15:31:16 RDF details are pushed into the RDF API. RDFa developers can get at all the data they need, but they don't need to dive down to the graph / triples / nodes level for most things. This would be 'advanced' programming. 15:31:43 RDF API has triples and graphs (at the highest level). 15:32:31 We had some feedback from TimBL that says we really want to view this as a pure graph. 15:32:54 ivan: this means it is possible to have a graph that is not valid RDF? 15:33:23 manu1: That's correct. We dealt with that by saying it is fine that you are doing things wrong - it just may not serialize into a particular format 15:34:07 ... this was the direction we think TimBL wanted us to go. 15:34:24 Closer to the Notation3 model, but not quite as broad. 15:35:03 ivan: This is probably not quite correct, but it is okay to leave it in the doucment for now. It is a possible future issue though. This generalized form is something that would allow literals for subjects, for example. And that is not something that is currently permitted in RDF. 15:35:15 manu1: Yes. This is an attempt to future-proof the API. 15:35:52 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#graphs 15:36:00 ivan: Okay - but this should be very clear in the document (as an editorial note for now). 15:37:14 q+ 15:37:26 ack ivan 15:37:49 Manu summarizes the various methods and techniques... 15:38:54 rdf.prefixes 15:38:57 rdf.terms 15:39:34 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#graph-literals 15:40:50 +[IPcaller] 15:41:13 Zakim, I am IPcaller 15:41:13 ok, webr3, I now associate you with [IPcaller] 15:43:04 q+ 15:43:48 q+ to ask something about the factory methods 15:44:11 -tinkster 15:44:12 Nathan: goal to ensure that it is N3 compatible and future proof. 15:44:45 +tinkster 15:44:56 ack markbirbeck 15:45:09 markbirbeck: is a graph literal a string? 15:45:27 Nathan: no. It serializes to a string. 15:45:42 markbirbeck: Does it point to another graph in the system or does it contain a graph? 15:45:54 Nathan: It contains a graph. 15:45:58 A graph literal is a string in the same sense that an xsd:integer is a string. An integer isn't a string, but it can be serialised to a string. 15:45:59 q+ to point out that we're getting into implementation details 15:48:58 q+ to respond re store 15:49:25 ack Benjamin 15:49:25 Benjamin, you wanted to ask something about the factory methods 15:49:37 markbirbeck: we had discussions about datastore for ages. My point is that the current draft has lost some functionality that we had with the store interface. A store was a collection of many graphs potentially, and we could have queried across them. We can't do that with the current document. 15:50:31 Benjamin: My goal is to create a single RDF triple. There would be lots of code needed to do this. Can't we have a createTriple interface that takes strings instead of nodes? 15:50:42 manu1: We may add convenience methods. 15:51:11 ack [IPCaller] 15:51:11 [IPcaller], you wanted to respond re store 15:51:16 ack manu1.a 15:51:16 manu1.a, you wanted to point out that we're getting into implementation details 15:51:29 zakim, manu1.a is manu1 15:51:29 +manu1; got it 15:52:00 Nathan: the graph was put into the API before I decided to not include the datastore. I went to do it last night, and couldn't make it work properly. It can still go in, just that I didn't have the time. 15:53:27 ... I agree there is no easy way to create a triple in this API at the moment. The reasons are that we are trying to promote interoperability with libraries, and also that the interface would be very complex - needing 9 slots to deal with the various parameters associated with each triple component. 15:53:39 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#rdf-environment-interfaces 15:55:46 q+ 15:56:14 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#rdf-environment 15:56:19 ack ivan 15:56:41 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#idl-def-Profile 15:57:51 function createTriple(string) { var rv; ntriplesParser.parse(string, function(g){rv=g.toArray()[0];}); return rv; } 15:58:57 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#rdf-environment 15:59:09 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#parsing-and-serializing-data 15:59:52 rdf.parseTurtle(xyz) is one way to extend the API 15:59:57 or, we may want something like: 16:00:07 rdf.parse("turtle", query...) 16:00:22 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#data-serializers 16:01:43 hmmm... why does PrefixMap.resolve return a DOMString and not a NamedNode? 16:02:20 it is great ! 16:02:36 Great work, Nathan. :) 16:02:43 yes, great work, Nathan! :) 16:03:06 ty, ty, ty, likewise all - and good q Toby, i wondered too 16:04:32 -tinkster 16:04:42 -benjamin 16:05:10 Topic: RDFa API 16:05:12 http://www.w3.org/2010/02/rdfa/sources/rdfa-api/ 16:05:23 -markbirbeck 16:05:25 bye everyone 16:05:28 * bye bye, need to go * 16:05:31 -Knud 16:06:07 http://www.w3.org/2010/02/rdfa/sources/rdfa-api/#developing-with-the-api 16:06:27 http://www.w3.org/2010/02/rdfa/sources/rdfa-api/#property-groups 16:06:43 http://www.w3.org/2010/02/rdfa/sources/rdfa-api/#projections 16:07:23 var pg = document.getItemBySubject("#ivan"); 16:07:46 document.data.setMapping("foaf", "http://xmlns.com/foaf/0.1/"); 16:07:59 var name = pg.get("foaf:name"); 16:08:07 name === "Ivan Herman"; 16:08:54 var p = document.data.query({"rdf:type": "foaf:Person"}, {"foaf:name": "name", "foaf:age": "age"}); 16:09:00 p.age 16:09:02 p.name 16:10:25 q+ to ask about getElements* methods 16:10:35 http://www.w3.org/2010/02/rdfa/sources/rdfa-api/#document-data 16:10:43 document.data.rdf 16:12:11 document.data.setMapping() 16:13:26 document.curie.setMapping() 16:14:56 you can do this: 16:15:03 document.data.rdf.prefixes 16:15:23 ack shaneM 16:15:23 ShaneM, you wanted to ask about getElements* methods 16:17:59 document.data.setMapping("foaf", "http://...."); 16:18:13 document.getElementsByType("foaf:Person"); 16:18:22 document.data.setMapping("xyz", "http://...."); 16:18:27 document.getElementsByType("xyz:Person"); 16:18:34 document.getElementsByType("http://..."); 16:19:12 http://www.w3.org/2010/02/rdfa/sources/rdfa-api/#the-document-interface 16:20:12 pg.get("foaf:name"); 16:20:32 Document implements DataDocument; 16:21:51 var e = document.getElementsByProperty("foaf:name"); 16:21:54 var elems = document.getElementsByProperty("foaf:name"); 16:22:12 var elems = document.getElementsByProperty("foaf:name", "Ivan Herman"); 16:23:58 Ivan Herman 16:24:10 elems = document.getElementsByProperty("foaf:name", "Ivan Herman"); 16:24:17 elems == 16:24:23 elems[0] == 16:24:51 elems = document.getElementsByProperty("foaf:age", "15"); 16:25:02 elems = document.getElementsByProperty("foaf:name", "member:Ivan"); 16:25:19 elems = document.getElementsByProperty("foaf:name", "Manu") 16:25:31 For getElementsByProperty("foaf:page"), which element is selected in example.com? 16:26:02 tinkster - the is returned. 16:26:07 not the element. 16:26:26 zakim, who is on the call? 16:26:26 On the phone I see Ivan, manu1, Shane, [IPcaller] 16:26:31 we're discussing this right now... 16:26:44 two directions we could have taken: return elements for subject, predicate, object. 16:26:49 or return elements for just the predicate 16:26:52 we took the latter path. 16:26:55 asfasa 16:27:14 getElementsBySubject("c") 16:29:23 [Node, Node, Node] 16:29:30 [[Node, Node, Node], ...] 16:31:34 http://www.w3.org/2010/02/rdfa/sources/rdf-api/#terms--prefixes-and-profiles 16:32:25 problem would be that you'd then have two environments, effectively 16:34:24 I would remove the rdfa ttribute 16:36:13 document.hasFeature("rdf-api") ? 16:36:28 then you MUST use document.rdfa ? 16:38:32 BTW...should just flag up that I prefer the use of "?name"-style syntax in templates. Then you only need one parameter. 16:38:50 the problem with that Mark, is that you can't pull out what you queried... 16:38:53 (That was my main -- maybe only -- disagreement with latest draft.) 16:38:56 versus document.getElementsByType("http://xmlns.com/foaf/0.1/Person") ?? 16:39:05 that's why I chose the two-parameter approach. 16:39:20 so, if I query for foaf:name, how do I also get that value out? 16:39:43 document.data.query{"foaf:age": 15} 16:40:20 The only time you can't get the values back is if you query for a fixed value. 16:40:44 var rs = document.data.query( {"foaf:age": "?age"} ); 16:41:01 assert( rs[0].age === 15 ); 16:41:34 but I don't want to do that... lots of code for something that's pretty simple. 16:41:46 var rs = document.data.query( {"foaf:name": "Manu", "foaf:age": "?age"} ); 16:42:01 I don't follow you...that's less code than two parameters, surely? :) 16:42:17 nope, one speaking w/ Ivan. 16:42:49 Oh...sorry...am I typing into minutes? 16:47:44 q+ to talk about live DOM tie in 16:50:04 - http://www.w3.org/2010/02/rdfa/sources/rdf-api/#rdf-environment 16:50:17 ack shanem 16:50:17 ShaneM, you wanted to talk about live DOM tie in 16:50:24 RDFa-API doesn't /need/ to refer to RDF-API 16:50:27 q+ to agree w/ Nathan more 16:52:22 1+ to respond 16:52:26 q+ to respond 16:52:40 ack manu 16:52:40 manu, you wanted to agree w/ Nathan more 16:52:46 ack [IPCaller] 16:52:46 [IPcaller], you wanted to respond 16:55:33 q+ 16:55:52 doc = xhr.get("http://some.rdfa/document") 16:56:03 doc.getItemsBy* 16:57:45 -Shane 16:58:31 document.data.parse("http://..."); 17:01:35 document.data.store("http://..."); 17:01:53 document.data.query(); 17:02:36 -1store(doca) 17:04:49 lib.load(uri-a); lib.load(uri-b); lib.select("sparql here") 17:07:10 document.data.query({"foaf:age": 15}, {"foaf:name": "name", "foaf:age": "age"}); 17:07:50 var p = document.data.query({"foaf:age": 15}, {"foaf:name": "name", "foaf:age": "age"}); 17:07:52 p.name 17:07:54 p.age 17:08:00 p[1].age 17:08:08 var p = document.data.rdf.query({"foaf:age": 15}, {"foaf:name": "name", "foaf:age": "age"}); 17:14:08 var p = document.data.rdf.query({"foaf:name": "?name", "foaf:age": [ 15, "?age" ]}); 17:14:35 that could work, yes. 17:14:52 but then people need to learn a microsyntax 17:15:18 var p = document.data.rdf.query({"foaf:name": "?name", "foaf:age": function(val) { return val + 20;} }); 17:15:20 :) 17:15:40 Oh yes, I forgot...learning an API is real easy, but somehow microsyntaxes are a bind! ;) 17:15:48 zakim, drop me 17:15:48 Ivan is being disconnected 17:15:50 -Ivan 17:15:55 cheeky, cheeky 17:16:17 I'm not for or against microsyntaxes in principle, but in this context we have a lot of existing microsyntaxes that we can leverage. 17:16:21 17:16:27 prefix:suffic 17:16:33 s/suffic/suffic 17:16:33  17:16:39 arrgh! 17:16:44 anyway... 17:16:46 ?name 17:16:52 They are familiar. 17:17:02 Manu@en 17:17:05 And so on. 17:22:59 -[IPcaller] 17:23:01 SW_RDFa()10:00AM has ended 17:23:02 Attendees were tinkster, Shane, Ivan, Benjamin, Knud, markbirbeck, [IPcaller], manu1 17:23:18 reading back over your comments, Mark. 17:23:54 I don't disagree with you entirely, Mark. 17:24:06 but, I thought that we didn't want to expose RDF-y things to people in the RDFa API? 17:24:21 Why should anyone know that something is a TypedLiteral via the RDFa API? 17:24:38 That requires them to know RDF, which may not be ideal? 17:25:03 "Mark@en" <--- asks the question: Do we want to expose web developers to that? 17:26:26 I agree that we loose specificity by doing that... but is that an acceptable loss? 17:27:05 Microsyntaxes are a bind because they're so many of them - (I note the irony of saying that being a participant in the JSON-LD work) 17:27:25 So, unless we're going to commit to them full-tilt, we may want to stay away from them. 17:27:32 Sorry...I'm not saying that we expose web developers to them. 17:28:03 I'm just saying that there are many useful microsyntaxes already. 17:28:10 true 17:28:18 but only for those that know TURTLE, N3, etc. 17:28:29 and I don't think we're trying to cater to that audience w/ the RDFa API 17:28:35 Yes, but I regard what we're doing as an 'on-ramp' to RDF. 17:28:54 I can use "?name" in a query without knowing RDF. 17:29:05 true 17:29:21 and for some reason I don't have much of a problem w/ that 17:29:29 But if I then start to learn SPARQL or N3 (or even SQL for that matter) what I've learned will transpose. 17:29:50 (SQL uses ?name and a *lot* of people will be familiar with that.) 17:30:02 I do have a problem with combining a query and a mapping. 17:30:07 It's natural to do in SPARQL. 17:30:15 I don't know if it's natural to do for a JavaScript developer 17:30:20 it doesn't feel natural. 17:30:33 It seems simpler to say: You do a query with two items - the query, and a mapping. 17:31:32 rather than, you do a query with one item, which will include both the query and a mapping... if you want to query and map for the same property, use an array where the first item is the query and the second item is the map. If you just want to map, just put a string with a '?' in front of it. 17:33:53 I don't have a problem w/ either approach, but I worry that beginning web developers might. 17:34:16 also, don't forget that we need to define an escape character - '\' 17:34:21 if we use "?" 17:35:06 I don't see it as a query *and* a mapping...I think that's overcomplicating it. 17:35:12 I see it as a *template*. 17:35:26 I think that would very easy for people to understand. 17:35:40 We're creating a template and then asking the engine to populate it. 17:36:10 I think both are potentially easy for people to understand - the question is, which one is easier? Which one will work with a wider audience. 17:36:12 Wherever we have "?x" then the engine can insert values. 17:36:19 (as I don't see technical issues w/ either approach) 17:36:20 Otherwise it just leaves them alone. 17:36:26 ahh, I see. 17:36:36 what you're saying... let me think if that changes my mind. 17:36:44 Actually...I've just changed my own mind! 17:36:49 Mmm... 17:37:04 Have to think a bit more. 17:37:22 I've just changed from having projections (which lose the predicates) to having templates! 17:37:38 I think your template-engine suggestion is good - it does make sense - but isn't it just an implementation detail? 17:37:54 so, you pass in the object that you want? 17:37:57 attributes and all? 17:38:17 No that wasn't what I was after...sorry. :( 17:38:21 you pass in a projection to: document.data.query(projection)? 17:38:30 That was my intention, yes. 17:38:33 but it would nicely, wouldn't it? 17:38:44 ok, now I really have to go, but will think more about all this. 17:38:51 Except you still need to map, if you want to do rs[0].age. 17:39:07 Unless you express "age" as the predicate in the query. 17:39:41 But what I liked about my projection approach is that you are encouraged to map the original predicates to something else. 17:39:49 I.e., something more meaningful. 17:41:07 var rs = document.query( { "foaf:name": "?person", "foaf:knows" : { "foaf:name": "?friend" } } ); 17:41:56 alert(rs[0].name + " is friends with " + rs[0].friend); 17:44:05 afk at the minute - but just thought/realised, do RDFa Profiles not mean that an RDF-API implementation is /required/ ? - leave you with that thought 17:47:12 Hey, didn't someone raise that as a problem once? 17:47:14 ;) 17:50:46 Nathan: The Graph interface should derive from RDFNode, because (a) you can have a graph in any position in a triple, and (b) you want the referenced graph to be live. 17:57:14 (still not here) (a) it still derives from RDFNode so can be in any position (b) referenced graph would still be live, RDFNode.value = live value now, not lexical string, so is instance of Graph 18:00:08 :) 18:00:16 (c) it allows graph literals to have an optional datatype, which they'll probably need 18:00:35 ps: :) re comment about profiles earlier, got a feelign a few key points you've mae have been missed thus far 18:00:45 s/mea/made 18:01:26 w/o profiles RDFa and it's API can run @ DOM level, with Profiles a full RDF Stack is required 19:28:35 Right. Except that with profiles defined using a simple syntax, along the lines of that used in @prefix you also don't need the full RDF stack. 19:29:13 (Not sure how those points "have been missed thus far" though...I've been a bit of a broken record on this one. :( ) 19:30:17 Zakim has left #rdfa