12:04:31 RRSAgent has joined #sparql 12:04:31 logging to http://www.w3.org/2010/03/25-sparql-irc 12:04:33 RRSAgent, make logs world 12:04:33 Zakim has joined #sparql 12:04:35 Zakim, this will be 77277 12:04:35 ok, trackbot; I see SW_(SPARQLF2F)8:00AM scheduled to start 4 minutes ago 12:04:36 Meeting: SPARQL Working Group Teleconference 12:04:36 Date: 25 March 2010 12:04:41 zakim, this will be SPARQL 12:04:41 ok, LeeF; I see SW_(SPARQLF2F)8:00AM scheduled to start 4 minutes ago 12:05:20 +MIT262 12:07:42 Present: AxelPolleres, bglimm, AndyS, SteveH, LeeF, Ivan, kasei, Souri, MattPerry, pgearon 12:08:08 Agenda: http://www.w3.org/2009/sparql/wiki/F2F3_Agenda 12:08:40 SteveH has joined #sparql 12:11:58 pgearon_ has joined #sparql 12:14:29 scribe: bglimm 12:15:05 Agendum: Process for time permitting features 12:15:13 http://www.w3.org/2009/05/sparql-phase-II-charter.html 12:15:13 http://www.w3.org/2009/sparql/wiki/FeatureProposal 12:15:24 AxelPolleres: some things are marked as time permitting 12:15:34 MattPerry has joined #sparql 12:15:41 ... there is good progress on entailments regimes and property paths 12:16:12 dcharbon2 has joined #sparql 12:16:19 ... we though we can move within the group to consider them as non-removable 12:16:32 PROPOSED: The working group will proceed the time-permitting feature Entailment to Rec 12:16:58 +1 12:17:49 PROPOSED: The working group will intends to take the time-permitting feature "Entailment" through to Rec 12:17:53 +1 12:17:56 +1 12:17:57 +1 12:18:01 +1 12:18:01 Souri has joined #sparql 12:18:28 RESOLVED: The working group will intends to take the time-permitting feature "Entailment" through to Rec 12:18:38 AxelPoelleres: This is for now mainly an internal decision and does not need to be advertised. 12:18:51 ... I think we can do the same for property paths 12:18:59 PROPOSED: The working group will intends to take the time-permitting feature "PropertyPaths" through to Rec 12:19:02 +1 12:19:26 +1 12:19:35 +1 12:19:53 RESOLVED: The working group will intends to take the time-permitting feature "PropertyPaths" through to Rec 12:20:08 AxelPolleres: These were the two easy ones 12:20:23 ... I want to check the progress of the other ones too. 12:20:36 ... Function library made some progress too 12:21:32 ... The comma-select lists seems to be resolved to not have commas 12:21:46 LeeF: That is resolved. 12:22:06 AxelPolleres: Ok, we don't need to address that any more. 12:22:20 ... Then there is absic federated queries 12:22:32 s/absic/basic 12:23:02 LeeF: Eric is writing something up for that. 12:23:11 Syntax feature was not just commas (have put IN,NOT IN to syntax) 12:23:33 ... Andy and I had a short conversation about it. I think we should keep it time permitting, but we may have something for this in the end 12:23:57 AxelPolleres: Lee, can you get a more precise timeline for the feature? 12:24:18 ... Can we put an action on LeeF to ask Eric for his timeline? 12:24:45 LeeF: Eric said he'll have something ready next week. 12:24:59 LeeF: I'll liase with Eric on this. 12:25:05 ACTION: LeeF to liase with Eric on BFQ and try to get a time schedule. 12:25:05 Created ACTION-203 - Liase with Eric on BFQ and try to get a time schedule. [on Lee Feigenbaum - due 2010-04-01]. 12:25:30 AxelPolleres: Any progress on IN and BETWEEN operators? 12:25:54 AndyS: IN is in the grammar, BETWEEN is not 12:26:11 IN is in the grammar, BETWEEN unclear.... no real enthusiasm. 12:26:32 ... I didn't see much enthusiasm for anything more than what we have now 12:27:17 SteveH has joined #sparql 12:27:23 IvanH: Adding features after last call, it is difficult to put them in. So we have to add it now if we want it. 12:28:28 .... if it is just a small feature that goes into one of the existing documents like IN, then it can possibly be added, but adding more ocuments is not really possible. 12:29:02 AndyS: Could we add some documents now and turn it into a note if we run out of time? 12:30:00 AxelPolleres: I just want to get some order into the time permitting features. 12:30:26 ... I want to decide which things go definitely in and which ones we will definitely not in 12:31:16 .... property path and entailment is clearly in, function library is being worked on, but we should push it a bit more 12:31:16 agreement that IN/BETWEEN is in the scope ofTF-Func, I am fine for the moment. 12:31:52 ... anything to add for the time permitting features discussion? 12:32:05 ... Ok, lets go to the update issues 12:32:20 ... The agenda lists several topics that need discussion 12:32:40 ... we want to nail down the syntax during the F2F 12:32:49 ... First: CREATE and DROP 12:33:15 ... CREATE and DROP are currently in the spec. 12:33:21 http://www.w3.org/2009/sparql/docs/update-1.1/Overview.xml is the current draft of the SPARQL Update spec 12:33:46 q+ to ask about SILENT 12:33:49 ?: We decided that we want to be able to create a graph explicitly 12:33:57 s/?/pgearon/ 12:34:02 q+ 12:34:06 RRSAgent, pointer? 12:34:06 See http://www.w3.org/2010/03/25-sparql-irc#T12-34-06 12:34:08 INSERT GRAPH WHERE {} 12:34:31 AxelPolleres: Is that the same as create graph ? 12:35:06 INSERT { GRAPH { } } WHERE { } is equivalent to CREATE GRAPH ? 12:35:44 LeeF: I am not sure it is the same 12:35:55 INSERT { GRAPH { } } WHERE { FILTER(false) } 12:36:13 pgearon: Some implementations might treat it as the same, others might not 12:37:34 LeeF: Difference between my and AndyS is that in Andy's the filter fails the only identity solution, in both cases I think the graph store wouldn't do anything 12:37:35 agreement that "empty insertion" doesn't create graph? 12:37:37 SteveH has joined #sparql 12:37:49 q+ 12:38:10 IvanH: We always agree that creating graphs is useful, so what are we discussing here? 12:38:18 ack LeeF 12:38:18 LeeF, you wanted to ask about SILENT 12:38:48 LeeF: I wanted to discuss whether we want to keep silent for CREATE and DROP 12:38:59 ... from a syntax point of view 12:39:07 ... What does it do? 12:39:19 AxelPolleres: It throws no errors. 12:39:44 LeeF: We need to tighten up the way the spec talks about errors 12:39:51 we have the errors already defined in protocol, BTW, GraphDoesNotExist, GraphAlreadyExists... 12:40:08 q+ on non-silent if the graph exists and and create occurs 12:40:20 LeeF: I am happy about the idea of having SILENT 12:40:55 AxelPolleres: Would we need SILENT also for other update constructs? 12:41:12 LeeF: It is a common thing for CREATE and DROP 12:41:50 As for SILENT in other statements, I wouldn't see any errors except query syntax errors in other statements except CREATE/FROP to be honest, though 12:41:59 pgearon: Implementations at the moment give you an error or not. It would be good if we can configure this. 12:42:21 SteveH: In SQL you can also force it to not raise error for key violations etc 12:42:38 LeeF: Is anybody proposing to add that for other constructors? 12:42:46 AxelPolleres: I don't think so. 12:42:51 LeeF: Lets move on then. 12:42:52 q? 12:43:10 ack Souri 12:43:35 Souri: How do you want to see a store as graph store or quad store? 12:44:27 ... If a query comes in, are we distinguishing between the case when we have an empty graph or the graph just does not exist? 12:44:48 LeeF: If we have drop and create, this implies that we can have empty graphs 12:45:09 ... you can also insert into a graph that does not exist, that will just create the graph 12:45:47 Souri: If a query comes in for an empty graph and the query want to select something it is different from the situation when there is no such graph 12:46:37 q? 12:46:38 ... we don't really know beforehand which graphs are there, there are not really any graphs beforehand 12:47:02 ASK {GRAPH {} } 12:47:04 ? 12:47:18 SELECT ?g { GRAPH ?g {}} 12:47:19 ASK { GRAPH { } } 12:47:46 LeeF: Both queries distinguish this difference 12:47:50 q? 12:47:55 ack AndyS 12:47:59 ack AndyS 12:48:08 AndyS: I think the behaviour is clear in the query spec. 12:48:15 Souri has joined #sparql 12:48:40 ... RDF assumes that if there are no triples, then there is no graph 12:49:25 +q 12:49:37 ... the difference is whether you do data management or not and I think we need a clear model for what we want 12:49:48 I thought we did have an emerging consensus model :) 12:50:15 ... I don't think there is one model that suits all situations 12:51:03 andy: 1 -- all named graphs exist [except RDF has no empty graphs] 12:51:03 andy: 2 -- auto-create: add+remove ... then exists? (sql insert row) 12:51:03 andy: 3 -- fixed dataset (sql create table) 12:51:03 andy: 4 -- explicit add new graphs 12:51:32 I'm not sure that the model that I thought was emerging is captured in those 4 :-) 12:51:58 I hear: 12:51:59 AndyS: There might be even more model 12:51:59 * OPTION 1: all named graphs exist 12:51:59 * OPTION 2: created (explicitly or implicitly) graphs exist (whether empty or not) 12:52:00 * OPTION 3: only graphs with triples in them exist (invalidates CREATE/DROP) = quads 12:52:40 LeeF: Model I heard emerging is that graphs exist as an entity of their own 12:53:03 ... I haven't heard support for explicit dropping of empty graphs 12:53:41 ... System can refuse queries, e.g., they can refuse queries to create a graph if they have just a fixed data set 12:53:46 I had thought we are heading towards Option 2 so far... 12:53:54 AndyS: Implicit graph creation seems important to people 12:54:39 q? 12:54:41 q? 12:55:01 ... It would be best if a processor can decide upfront whether it will reject the query and not generate a runtime error half way through processing a query 12:55:07 SteveH has joined #sparql 12:55:15 ... pure quad stores need some extra triples to decribe graphs for Option 2 to get around that 12:55:27 ack ivan 12:55:27 ivan, you wanted to comment on non-silent if the graph exists and and create occurs 12:55:30 IvanH: I am not sure that there cannot be empty graphs. 12:55:59 q+ ivan 12:56:10 ack pgearon 12:56:11 AndyS: There is just one empty set, so all empty graphs are the same under this view 12:56:53 I liked the suggestion of graph store as set of defaul graph + (name, graph) tuples 12:56:56 q+ ivan to comment on non-silent if the graph exists and and create occurs 12:57:25 pgearon: The fact that RDF does not have an idea about changing graphs, but the way we look at this in update means that graphs can evolve over time 12:57:40 ... from that point of view we can have different empty graphs 12:57:53 zakim, who is here? 12:57:53 SW_(SPARQLF2F)8:00AM has not yet started, sandro 12:57:54 On IRC I see SteveH, Souri, dcharbon2, MattPerry, pgearon, Zakim, RRSAgent, ivan, AndyS, LeeF, AxelPolleres, bglimm, iv_an_ru, karl, sandro, AlexPassant, kasei, trackbot 12:58:27 Present+ dcharbon2, Souri, MattPerry, AlexPassant 12:58:29 ... we are diverging here anyway from RDF because RDF itself does not consider any changes to a graph, but we do 12:59:08 AxelPolleres: Can I interpret this as support for having empty graphs? 12:59:25 ... The fact that we have drop and create also seems to go in this direction 13:00:12 pgearon: it would be odd to assume that everything that was not dropped exists 13:01:09 Test case: SELECT ?g { GRAPH ?g {} } => ? ; add quads (q,s,p,o) ; delete (q,s,p,o) ; SELECT ?g { GRAPH ?g {} } => ? 13:01:16 LeeF: The approach that all named graphs exists worries me a bit because this might prevent two graph stores with the same graphs 13:01:17 s/quads/quad 13:01:26 lee: I'd like us to be supportive of the (unfortunate?) state of the world where the same named graph occurs with different contents in multiple quadstores. 13:01:33 q? 13:01:34 q+ 13:01:56 s/two graph stores with the same graphs/two graph stores with the same graph names with different contents/ 13:02:06 ack Souri 13:02:20 q+ 13:02:24 Souri: If we don't have to explicitly create a graph, that would be more clear conceptually. 13:02:28 q+ to ask souri if graph names are dynamic in RDF2RDB? 13:02:47 q+ to ask whether we can narrow down to 2 options over all 13:02:50 q- 13:02:57 ack dcharbon2 13:02:59 ack dcharbon 13:04:05 dcharbon2: Couldn't we codify that by assuming there is a graph of graphs (like a dataset) nd you can query this extra graph? 13:04:22 "system gaph" seems to be the way to encode empty graph existence in quad stores. 13:04:30 Souri: We do not know which graphs are in the data. 13:05:15 Sandro: Can you not query the data to see which graphs exist? 13:05:29 Souri: We would have to do that for each query. 13:05:38 AlexPassant2 has joined #sparql 13:05:44 q? 13:06:40 Souri: Every query would have to create a corresponding view 13:07:21 souri: [[maybe?]] the set of graphs which exist, in our RDB2RDF approach, is only defined for a particular query 13:07:27 ack AndyS 13:07:27 AndyS, you wanted to ask souri if graph names are dynamic in RDF2RDB? 13:09:04 SteveH: I like the approach that if you remove the last triple, the graph can disappear. 13:09:21 SteveH: A lot of the trivial implementation of sparql are pure quads, where removing the last quad removes the graph. 13:09:40 AndyS has joined #sparql 13:09:58 q+ 13:10:07 SteveH: This ould be implementation defined. 13:10:15 s/ould/would/ 13:10:23 q+ to argue against implementation defined, since it's pretty trivial to go either way 13:10:47 AxelPolleres: This all ends up in the question whether we allow for empty graphs or not 13:11:37 .... you could implicitly create a graph on insert and implicitly drop it when it is empty 13:11:58 Souri has joined #sparql 13:13:54 q- 13:14:05 AxelPolleres: I see 3 ways to go: 1) Having empty graphs (quads only) 2) not having them 3) allow both and service descriptions are used to declare what the store does 13:14:08 q? 13:14:14 ack Axel 13:14:14 AxelPolleres, you wanted to ask whether we can narrow down to 2 options over all 13:14:45 Sandro: A graph that you don't know is not the same as the empty graph 13:15:02 If you are asked to create it, then you know it is empty 13:15:12 q+ 13:15:15 s/If/...If/ 13:15:33 My thoughts are at: http://www.w3.org/2009/sparql/wiki/Lees_Update_Graph_Model 13:15:59 Souri: If we are querying an empty graph is that different from querying something that does not exist? 13:16:13 sandro: think about stores which can sometimes query the web.... what does CREATE mean in that case? I think it means "I know this graph, and it's empty." 13:16:24 ... it gets difficult to distinguish the two situations 13:16:30 q+ if we allow a choice, don't we need to spec what happens in each case? 13:16:42 q+ 13:16:51 ack souri 13:16:53 Can we go around and ask what current implementations do on queries for "non-existinent/non-known" graphs? 13:17:41 pgearon: Systems that want permissions on who can read and write to a graph are complicated when we assume that all possible graphs exist 13:18:03 ... If you have to explicitly create something, then setting permissions would be easier 13:18:31 Sandro: You could do that by setting this on the quad level 13:18:54 seems Paul's use case needs "default" permissions then for implicit creation? 13:19:11 pgearon: I know permissions are outside of the spec, but they are still necessary 13:19:14 q? 13:19:27 ack pgearon 13:19:58 Souri, I think the case that you are concerned about for RDBs can be handled by an engine that posits a universe that contains all possible graphs, many of which are empty -- then any FROM NAMED in a query always refers to an existing graph, and you can just do the natural thing (which is to treat nonexistent graphs as empty). The problem occurs if someone asks this query: SELECT ?g { GRAPH ?g { } } -- what would you _like_ the results of that query to be in the RD 13:21:09 pgearon: If we have create permissions are easy. If we create implicitly it is more difficult 13:21:40 SteveH: You could just have a command for setting permission. I can't see how create makes a real difference 13:21:59 SteveH: setting permission could implicitely create it. 13:22:31 q? 13:22:37 Lee, I agree. The query you mentioned would be a bit difficult to answer. We could return the SELECT distinct FROM all the relational views (needs a UNION). The semantics may be that "these are the non-empty graphs" 13:22:39 AndyS: I see you want CREATE so that you can set permission at creation time, but would you object to also have systems that do it differently? 13:22:43 q+ 13:22:51 ack dcharbon2 13:22:52 ack dcharbon 13:22:53 pgearon: No, but I would like to have CREATE in the language 13:23:05 q+ to ask whether we have "graph created", "graph dropped" in the protocol? 13:24:14 dcharbon2: If the endpoint supports having empty graphs, we would have to define the behaviour in this case, e.g., getting a UR back for an empty but existing graph versus getting an empty answer 13:25:02 AndyS: There could be 2 different definitions, one for systems with bookkeeping and one for systems without 13:25:27 "bookkeeping" 13:25:48 q? 13:25:50 q+ 13:25:51 andy: I like "bookkeeping" functions, which are perhaps optional. 13:26:00 q- 13:26:06 ack ivan 13:26:20 +1 for andy's book keeping concept 13:27:52 IvanH: I don't understand what's happening. A graph has a URI, no data store knows whether that graph is empty or not. We only add a URI to our knowledge, we just add a URI to those graphs we know about, so create is probably not even the right keyword, it is more add 13:27:54 +1 to ivan 13:28:43 sandro: A very safe form of CREATE is where the URI is owned by this quadstore. 13:28:44 q? 13:28:54 ... There is a process of minting a new fresh URI, but normally, you just add an existing URI to the store 13:29:04 sandro, even when it's owned by you, someone else might have asserted triples in it previously, no? 13:29:12 so, maybe just safeER. 13:29:25 perhaps, kasei 13:29:29 ack axel 13:29:29 AxelPolleres, you wanted to ask whether we have "graph created", "graph dropped" in the protocol? 13:29:40 pgearon: I do create a local version of the graph that sits somewhere for a given URI, so there is a difference 13:30:27 AxelPolleres: Renaming CREATE into ADD solves Ivan's concern, but gives a slightly different view. 13:31:14 Can we go around and ask what current implementations do on queries for "non-existinent/non-known" graphs? 13:31:20 AndyS: I have a pure quad store and one where empty graphs can be in the store if it has been mentioned before 13:32:21 SteveH: 4Store has a difference between empty graphs and non-existing graphs (pure quad store), but we hide this difference from users as good as we can 13:32:29 {GRAPH {}} 13:32:38 Perhaps no one wants the answer to SELECT ?g WHERE { GRAPH ?g {} } if we assume all graphs exist - or we'd need to specify that you get nothing back in that case 13:32:51 else - it's an infinite list 13:32:57 what about SELECT * FROM WHERE {} 13:33:05 SteveH: 5store is a pure quadstore so it doesn't distinquish existing from empty. 13:33:30 ^ - non-existing 13:34:10 pgearon: mulgara is quadstore with bookkeeping, so you can query for empty graphs 13:34:27 ... if you select from a graph that does not exist it gives an error 13:35:14 LeeF: same as pgearon. If you specify a graph that is not in the graph store, then it's an error 13:36:24 dcharbon2: Stores I know of mostly don't have bookkeeping 13:36:55 Souri: Oracle has a triple store, no named graphs support 13:37:40 ... queries for non-existing graphs return empty results, we are planning to support named graphs 13:39:22 ... for security, we thought about having certain namespaces that are allowed for inserts, like private datasets for users 13:39:54 AxelPolleres: In that model if you ask for a model that does not exist would that give an error 13:40:02 Souri: Yes. 13:40:53 ... if you don't have the privildges to see it, then it is an error 13:41:08 ... we say it doesn't exist 13:42:42 Greg: My new store is a quad store with no bookkeeping, my old one had support for empty graphs 13:43:00 AxelPolleres: It seems we have a clear undecided situation 13:43:23 I don't really understand the full question that Axel is asking :) 13:43:25 a clear win for punting to the service description! 13:43:39 ... it seems we should allow for both cases 13:44:15 ... one problem that could arise in the spec is that the update behaviour differs for the two cases 13:44:28 IvanH: I am worried about allowing both options 13:44:41 we could define select ?g where { graph ?g {} } to be empty... but then we need to figure out how to clean up bookkeeping systems... I'm leaning toward defining this to be empty 13:44:43 ... interoperability is limited then 13:44:49 I see a problem for "no bookkeeping" implementations with this sequence of statements: CREATE ; ASK FROM NAMED { GRAPH { } } -- a no bookkeeping impl would return FALSE, right? 13:44:55 Did I get this right? on query { GRAPH {}} where is "unknown": andy : false; steve: false; paul : error; lee: error; david: false; matt: don't deal with named graphs yet, but prefer false ; greg: both 13:45:04 i don't see how we can include a CREATE statement and still have the spec bless this returning FALSE 13:45:22 IvanH: Some systems give error, while others give an empty answer. That's not good 13:45:41 q+ 13:46:01 q? 13:46:28 axel - right for me - I also have an impl that can return true (empty graphs exist) 13:46:36 What about: SELECT COUNT(*) WHERE { GRAPH { ?x ?y ?z } } ? 13:47:05 AxelPolleres, I'm sorry, I don't know if that's right for me - I need more context of the full query (incl. RDF dataset) 13:47:10 dcharbon2: A select for empty graphs could either return an infinite list or an empty answer 13:48:03 THat one is NOT asking for empty graphs {GRAPH ?G {} } 13:48:44 SELECT * {GRAPH ?G {} } 13:48:51 so, really... got the query wrong - query for all empty should return empty, otherwise it's an infinite list 13:49:05 ASK {GRAPH {} } 13:50:11 AndyS: This shows the difference between a dataset and a graph store 13:50:22 CREATE ; ASK FROM NAMED { GRAPH { } } 13:51:02 Souri has joined #sparql 13:51:10 LeeF: Should be true, but requires bookkeeping 13:51:58 SteveH: Create affects the graph store and asks is for the datasets 13:52:22 CREATE ; ASK { GRAPH { } } 13:53:17 LeeF: Here the query does not define a dataset, so the implemenation decides on the default dataset 13:54:16 LeeF: What would the update spec say for this? 13:54:49 SteveH: Graph stores and datasets are different things 13:55:16 q+ 13:55:20 q- 13:55:57 q? 13:56:02 LeeF: I think there needs to be some relationship between the graph store and the datasets 13:56:12 AndyS, if it's already true, then I'm in agreement with you :) 13:56:37 http://www.w3.org/TR/rdf-sparql-query/#namedGraphs 13:56:57 kasei: section 8.2.2 of the spec means that you have to return true or an error 13:57:27 SteveH: I am happy to return an error from a quad store 13:57:46 Sandro: Would you also be happy to support bookkeeping? 13:58:18 SteveH: No, I removed that from my last store because it is so much extra effort that I don't want it. Too many indexes. 13:58:55 q+ 13:58:57 q+ to wonder if his update proposal makes the quad store people unhappy 13:59:00 AxelPolleres: It seems we have 2 issues 1) bookkeeping yes or no 2) difference between datasets and graph stores 13:59:04 2 issues floating around ... i) bookkeeping yes/no and ii) dateaset vs. graphstore 13:59:39 SteveH: I read section 8.2.2. and I can't see it says anything about the { } pattern 13:59:59 AndyS: There is an explicit algebra operator that deals with that section 5.2.1 14:00:01 q? 14:00:09 Zakim, ack me 14:00:09 I see kasei, LeeF on the speaker queue 14:00:13 http://www.w3.org/TR/rdf-sparql-query/#defn_evalGraph 14:00:30 LeeF: Maybe we can just agree on specific details of the update language. 14:00:37 http://www.w3.org/2009/sparql/wiki/Lees_Update_Graph_Model 14:00:46 ... it seems we need to make a decision on ii) 14:01:06 ... I wonder whether the stuff on the wiki page does not satisfy anyones requirements 14:01:28 3rd bullet is troublesome to me 14:01:51 q+ 14:01:52 "A SPARQL Update operation is performed in the context of a GraphStore" 14:02:08 (and haven't properly read the email yet - sorry) 14:02:09 q- 14:02:15 ack LeeF 14:02:15 LeeF, you wanted to wonder if his update proposal makes the quad store people unhappy 14:02:30 AxelPolleres: Lets wrap up because the break is coming up. 14:02:50 LeeF: The wiki page mainly reflects my view. 14:03:42 q+ 14:04:04 ... I can't see that the ASK query should be allowed to return false by the spec 14:04:27 sandro: we could say "empty graphs MAY be implicitely deleted". 14:04:45 +1 to sandro's suggestion 14:04:53 +1 to sandro's suggestion 14:04:59 +1 14:05:00 +1 14:05:09 +1 14:05:23 -0 14:05:27 :-) 14:05:44 +1 14:06:00 can someone else take over scribing on MIT side? 14:06:01 +1 14:06:27 lee: not the best solution for interoperability, but maybe the best we can do. 14:06:28 For clarification: when? during update or immediately after whole request done (multiple oerations)? 14:25:14 Souri has joined #sparql 14:39:28 scribenick: pgearon 14:39:35 scribe: paul gearon 14:39:48 discussing http://www.w3.org/2009/sparql/wiki/Lees_Update_Graph_Model 14:39:59 ... asa a proposal to move forward. 14:40:23 LeeF: would like to have consensus on the wiki page http://www.w3.org/2009/sparql/wiki/Lees_Update_Graph_Model and work this into the spec 14:40:25 q? 14:40:32 q- 14:40:43 zakim, clear the q! 14:40:43 I don't understand 'clear the q!', LeeF 14:40:47 q+ 14:40:58 ack AndyS 14:41:13 AndyS: like the proposal on the wiki, but nervous about point 3 14:41:35 prop 3 links dataset and graph store 14:41:57 LeeF: removed this point 14:43:14 http://www.w3.org/2009/sparql/wiki/index.php?title=Lees_Update_Graph_Model&oldid=1995 14:43:29 PROPOSED: Close ISSUE-20 via adoption http://www.w3.org/2009/sparql/wiki/index.php?title=Lees_Update_Graph_Model&oldid=1995 in SPARQL Update 14:43:38 +1 14:43:41 +1 14:43:41 +1 14:43:46 +1 14:43:49 +1 14:43:53 +1 14:43:53 +1 14:44:04 +0 (I guess it's good enough, but I wish I understand the semweb implications better) 14:44:25 +1 14:45:25 SteveH: points out that different order of loading data can lead to different results. Not sure if this is a significant enough use case to be a problem for us 14:45:38 +1 14:45:52 +1 14:45:52 q+ to add sd: extension proposal 14:46:03 RESOLVED: Close ISSUE-20 via adoption http://www.w3.org/2009/sparql/wiki/index.php?title=Lees_Update_Graph_Model&oldid=1995 in SPARQL Update, no objections, Sandro abstaining 14:46:41 ISSUE-20: RESOLVED: Close ISSUE-20 via adoption http://www.w3.org/2009/sparql/wiki/index.php?title=Lees_Update_Graph_Model&oldid=1995 in SPARQL Update, no objections, Sandro abstaining 14:46:42 ISSUE-20 Graphs aware stores vs. quad stores for SPARQL/update (empty graphs) notes added 14:46:46 AxelPolleres: wants to have an sd flag to indicate if implementations always preserve empty graphs 14:46:48 trackbot, close ISSUE-20 14:46:48 ISSUE-20 Graphs aware stores vs. quad stores for SPARQL/update (empty graphs) closed 14:48:11 q? 14:48:14 ack AxelPolleres 14:48:14 AxelPolleres, you wanted to add sd: extension proposal 14:48:33 not going to add sd: at the moment 14:49:23 q+ 14:50:04 Ivan: concerned about SILENT on CREATE, but spec is already clear 14:50:41 ack kasei 14:51:05 kasei: SILENT on DROP is different in that different implementations may or may not have errors on a DROP without SILENT 14:51:32 AxelPassant: this is similar to CREATE, and depends on the implementation. SILENT will always cover the user 14:51:45 greg: CREATE/DROP is not necessarily a noop on graph stores that drop empty graphs immediately, but could be an error note should be made in the spec. 14:52:56 paul: It's an ERROR in all implementations if you CREATE when the graph isn't empty. 14:53:40 I'm ambivalent about CREATE GRAPH vs. ADD GRAPH 14:53:41 reponse to Souri: are we covered for calling CREATE on graphs which already exist and have data 14:54:20 ADD is as bad - may presume GET deref 14:54:52 INSERT GRAPH ? 14:55:35 CREATE isn't perfect, but ADD is worse. OBTAIN? PREPARE? BEGIN? OPEN? 14:55:48 Ivan: concerned that CREATE is used when we are simple referring to a graph that already exists (even if it's just conceptually) 14:55:50 STORE? REMEMBER? HOLD? 14:56:37 USING? 14:57:38 INSERT GRAPH ; INSERT { } ; DELETE { } ; DELETE GRAPH 14:57:51 INSERT GRAPH , no? 14:58:14 INSERT { GRAPH ..} WHERE ... is too close 14:59:24 q? 14:59:34 q? 14:59:41 q+ 15:00:20 http://lists.w3.org/Archives/Public/public-rdf-dawg/2010JanMar/0539.html 15:00:48 AxelPolleres: do we need certain syntactic constructs in the language, or do we want to change them (INSERT/CREATE and DELETE/DROP) 15:00:53 Origin: Difference between CREATE / DROP are graph mgt ; INSERT / DELETE are data manipulation 15:01:08 q? 15:01:54 Sandro: what is the use case for creating a graph in the store? 15:03:17 LeeF: application developers often create graphs knowing that triples will not be available for it for some time (eg a week) 15:03:26 Sando: so CREATE sounds like a reasonable name 15:03:36 Ivan: still unhappy with CREATE 15:03:47 q+ 15:04:09 Ivan: since the concept of the "graph" continues to exist whether it is in the local store or not 15:04:15 q+ 15:04:21 q? 15:04:39 ack sandro 15:05:18 ack AndyS 15:05:24 sandro: read CREATE as "create storage for" 15:06:27 q? 15:06:28 AndyS: LeeF is emphasizing the local storage of the data, the other approach is more about the entire web 15:06:42 ack AlexPassant 15:07:23 INSERT GRAPH ; INSERT { } ; DELETE { } ; DELETE GRAPH 15:07:30 betehess has joined #sparql 15:07:58 qck me 15:08:01 ack me 15:08:08 guest: Alexandre Bertails, W3C 15:08:16 AlexPassant: the CREATE operation is about referring to the graph as being expressed locally, as opposed to being elsewhere on the web 15:08:56 Souri has joined #sparql 15:09:23 Axel: do we still want CLEAR? 15:09:28 pgearon: not only CREATE actually but any SPARUL operations 15:09:47 q+ 15:11:06 AndyS: CREATE/DROP explicitly for book keeping operations. DELETE/INSERT are for data 15:11:19 ack kasei 15:11:53 OPTION 1: keep with CREATE/DROP/INSERT/DELETE 15:12:14 OPTION 2: INSERT/DELETE GRAPH INSERT/DELETE pattern 15:12:31 OPTION 3: INSERT DROP GRAPH INSERT/DELETE pattern 15:12:36 q+ 15:12:48 ack dcharbon2 15:13:42 dcharbon2: if CREATE scoped, then across a federation this makes more sense, since you're creating on an individual server 15:13:47 +1 to dcharbon2 scope-oriented view 15:13:58 dcharbon2: Create is always within some scope. A federated end-point might do the create in the right place. Otherwise, it's creating a local version. 15:14:04 +1 dcharbon2 15:14:04 +1 - ultimate is scope = web 15:14:45 LOAD INTO :) 15:14:52 :D 15:15:00 Souri has joined #sparql 15:15:03 Ivan: if you're considering a foreign graph, then your local assertion of a graph is referring to the foreign graph and bringing it in locally. In this case the graph is not be "created" 15:15:20 LeeF: It is creation, just in a scope 15:15:21 q+ to (seriously) ask ivan whether that is not LOAD 15:15:47 pgearon has left #sparql 15:15:49 ack dcharbon2 15:15:57 ack dcharbon 15:15:58 ack dcharbon 15:15:58 ack AxelPolleres 15:15:59 AxelPolleres, you wanted to (seriously) ask ivan whether that is not LOAD 15:16:09 pgearon has joined #sparql 15:16:43 q+ 15:17:05 q+ to suggest endpoints SHOULD reject creates for which a LOAD is possible and they dont have write access 15:17:54 Axel: could use LOAD to handle Ivan's usecase. LOAD could create an error if the data does not exist 15:17:57 q+ 15:18:42 AndyS1 has joined #sparql 15:18:50 ack sandro 15:18:50 sandro, you wanted to suggest endpoints SHOULD reject creates for which a LOAD is possible and they dont have write access 15:19:51 q+ to say I don't see any way that the Update spec. can't embrace local copies that are likely divergent from authoritative copies 15:20:19 ack Souri 15:20:23 q+ 15:20:30 q+ 15:20:36 ack LeeF 15:20:36 LeeF, you wanted to say I don't see any way that the Update spec. can't embrace local copies that are likely divergent from authoritative copies 15:20:51 q- 15:20:53 sorry, souri should go first. 15:21:19 sandro: Let's advise people to only CREATE for URIs for which they are authoritative. 15:21:21 +q to ask if we need to revisit the need to create/delete graphs 15:21:36 pgearon, you mean q+ 15:21:42 q+ to suggest that text for CREATE makes clear that CREATE creates a local copy? 15:21:49 AndyS has joined #sparql 15:22:24 cannot we say in the spec that the scope of SPARUL is LOCAL by default ? i.e. all operations apply on local copies of the graphs 15:22:59 Souri: CREATE is creating a "fragment" of the data in a local store 15:24:40 ack Souri 15:24:47 +1 to scope view - too much like web-in-a-box if scope only state of the web 15:25:12 ack pgearon 15:25:12 pgearon, you wanted to ask if we need to revisit the need to create/delete graphs 15:26:06 What about INSERT { GRAPH {} } 15:26:07 ? 15:26:46 ack AxelPolleres 15:26:46 AxelPolleres, you wanted to suggest that text for CREATE makes clear that CREATE creates a local copy? 15:26:49 What does DELETE { GRAPH } do? 15:27:12 I am fine with option 1 (for now, implicitly meaning local scope) 15:27:18 dcharbon2, nothing as far as I can tell - the template doesn't "generate" any triples, so there's nothing to remove from anywhere 15:28:11 CREAT GRAPH? 15:28:30 pgearon: OPTION 4: No CREATE, DROP 15:28:38 OPTION 4: drop create/drop alltogether? 15:29:03 I'm mildly in favour of not having CREATE 15:29:26 dcharbon: could design for bookkeepingless systems 15:30:03 +0.5 to option 4 15:30:15 OPTION 1: keep with CREATE/DROP/INSERT/DELETE 15:30:16 OPTION 2: INSERT/DELETE GRAPH INSERT/DELETE pattern 15:30:16 OPTION 3: INSERT DROP GRAPH INSERT/DELETE pattern 15:30:16 OPTION 4: Drop CREATE/DROP alltogether 15:30:31 OPTION 5: Add/DROP/INSERT/DELETE 15:30:51 ADD implies LOAD to me 15:30:57 me too 15:31:06 is ADD really ADD GRAPH ? 15:31:20 ivan: yes. 15:33:03 +1 / -1 / -1 / maybe, need more time to consider / -1 15:33:17 +1 / -1 / -1 / 0 15:33:32 -1/-1/1/maybe/1 15:33:39 +1 / -1 / -1 / +0.5 / -1 15:33:47 0.5 / 0 / 0 / 0 / 0 15:33:48 +1 / -1 / -1 / 0 / 0 15:33:49 0 / -1 / -1 / +1 / -1 15:33:50 0 / 0 / 0 / +1 / 0 15:33:53 +0 / -1 / -1 / +0.5 / -1 15:33:55 0.5/-1/-1/+1/-1 15:34:01 +1/0/0/0/+1 15:34:02 +0 / -1 / -1 / -0 / +0 15:34:11 +1 / 0 / -1 / 0 / 0 15:34:57 0/0/0/0 15:35:07 0 15:35:29 0x01FFFF--FF 15:36:16 q+ 15:37:30 option 1 15:37:36 0 15:37:36 option 1 15:37:40 option 1 15:38:01 option 1 15:38:05 1 15:38:06 STRAWPOLL: 1 (prefer Option 1)/5 (prefer Option 5 )/0 (don't care between those two 15:38:07 1 15:38:13 option 1 15:38:21 0 (but need to mention the scope in the spec. for both imo) 15:38:26 1 is "CREATE GRAPH", 5 is "ADD GRAPH" 15:38:47 option 5 15:38:56 Option 4: DROp -> CLEAR 15:38:58 CLEAR == DROP GRAPH 15:39:04 DELETE WHERE { GRAPH { ?s ?p ?o } } 15:39:39 1 15:39:51 AxelPolleres: Clear preference for Option 1 over Option 5 15:40:22 Souri has joined #sparql 15:40:36 PROPOSED: mark CREATE/DROP at risk 15:41:16 +1 15:41:23 not now...? 15:41:52 paul: already in the spec. 15:42:06 ACTION: Lee and AxelPolleres to solicit feedback from community regarding CREATE/DROP upon publication of next Update working draft 15:42:07 Could not create new action (failed to parse response from server) - please contact sysreq with the details of what happened. 15:42:07 Could not create new action (unparseable data in server response: local variable 'd' referenced before assignment) - please contact sysreq with the details of what happened. 15:42:22 suptopic: Keep CLEAR? http://lists.w3.org/Archives/Public/public-rdf-dawg/2010JanMar/0539.html 15:42:49 +q 15:42:58 ack kasei 15:42:58 q- 15:43:04 we're now talking about http://lists.w3.org/Archives/Public/public-rdf-dawg/2010JanMar/0539.html 15:43:07 ACTION: Lee and AxelPolleres to solicit feedback from community regarding CREATE/DROP upon publication of next Update working draft 15:43:07 Could not create new action (failed to parse response from server) - please contact sysreq with the details of what happened. 15:43:07 Could not create new action (unparseable data in server response: local variable 'd' referenced before assignment) - please contact sysreq with the details of what happened. 15:43:34 q? 15:43:39 q+ 15:43:48 ack pgearon 15:43:49 q+ 15:44:05 ack Souri 15:44:39 is CLEAR identical to DELETE WHERE { GRAPH { ?s ?p ?o } } ? 15:44:50 LeeF, yes 15:45:03 q? 15:45:08 thanks. I don't care whether or not we keep CLEAR :) 15:45:46 q? 15:45:52 ack SteveH 15:46:32 SteveH: no longer things that DELETE to be a good idea, since it reads like the removal of the graph rather than the contents 15:47:36 CLEAR graph graph ? 15:47:40 Souri: can CLEAR be applied to multiple graphs? 15:48:01 LeeF: Consensus in group to keep CLEAR syntax as is. 15:48:26 pgearon: was this like the recent email which referred to multiple graphs (in a LOAD command) 15:48:41 There's also the question of the CLEAR [default graph] syntax: http://lists.w3.org/Archives/Public/public-rdf-dawg/2010JanMar/0538.html 15:48:43 subtopic: delimiters / separators 15:48:45 see http://lists.w3.org/Archives/Public/public-rdf-dawg/2010JanMar/0538.html 15:48:50 AxelPolleres: we will keep CLEAR (for the moment) 15:49:01 http://lists.w3.org/Archives/Public/public-rdf-dawg/2010JanMar/0538.html 15:49:01 I put optional separators in grammar to check there is no clash problems. 15:49:06 sandro: Why no "DELETE FROM" as in SQL? Answer from Lee: because in SPARQL, "FROM" means stuff..... 15:49:18 This is not an opinion. 15:50:14 SteveH: easy to mistype a query such that it is ambiguous for a human to determine what it means 15:50:25 Nice to have when one line, several operations -- nuisence multi line 15:50:30 I'm quite happy to have operations in SPARQL Update have a terminating character 15:51:02 SteveH: would like compulsory separators, but violently opposed to making them optional 15:51:13 +q 15:51:50 CLEAR DELETE DATA { } 15:52:55 -q 15:53:05 Now have "CLEAR DEFAULT" , not just CLEAR 15:53:43 q+ 15:53:46 http://www.w3.org/2009/sparql/docs/sparql-grammar-11.html 15:54:42 Souri has joined #sparql 15:54:52 CLEAR DEFAULT DELETE DATA { } - but draft combined grammar 15:54:56 s/but/by/ 15:55:06 DFT in the grammar should be 'DEFAULT' 15:56:14 CLEAR 15:56:16 DEFAULT 15:56:21 ELETE DATA { } 15:59:00 +q to ask SteveH why he's so opposed to an optional separator 15:59:06 ack me 15:59:14 this is a command line issue? 15:59:32 Ivan: doesn't see why CLEAR DEFAULT DELETE DATA ... is ambiguous 15:59:51 Are we saying cmd line is exactly same as HTTP request body? May be different. 15:59:55 OPTION 1: ";" Obligatory 15:59:55 OPTION 2: no separators 15:59:55 OPTION 3: ";" optional (steve objects) 16:00:28 OPT 3 does not work on command line BTW 16:00:37 option 1 16:01:07 q+ 16:01:11 ack pgearon 16:01:11 pgearon, you wanted to ask SteveH why he's so opposed to an optional separator 16:01:13 ack AndyS 16:02:17 separator has problems as well 16:02:22 SteveH: optional separators makes it much harder for people to learn, since if they only ever see the separator, then they will get confused when it is not used 16:02:50 example: See CLEAR DEFAULT -- now unclear (cmd line example) 16:03:36 sandro: would like to see a separator and not a terminator (to avoid "separating" a null command) 16:03:40 Souri has joined #sparql 16:04:00 sandro: lets do semicolon terminator like in SQL -- may be necessary as terminator on command line, but optional as terminator in API. 16:04:37 option 1 16:04:44 0 16:04:46 +1 / -1 / -Inf 16:04:53 option 1 16:04:57 option 1 16:04:57 1 16:04:59 1 16:04:59 opt 2 16:05:04 option 2 16:05:04 Option 1 16:05:05 option 1 16:05:06 option 1 (';' as terminator) 16:05:12 option 3 (sorry steve) 16:05:16 (can live with opt 1 as sep) 16:05:18 Option 2 16:06:08 Souri has joined #sparql 16:07:13 are we talking about a command line or about an interactive query shell type thing? 16:07:43 Souri has joined #sparql 16:08:34 q+ 16:08:38 Let us not spec cmd line usage 16:08:38 Option 1: 7 Option 2: 3 Option 3: 1 16:09:51 in SQL-92, ';' is a terminator 16:10:41 ";" as separator seems to be agreeable to everyone. 16:10:50 terminator? 16:11:00 ack Souri 16:11:03 PROPOSED: semicolons are a required separator. (we're not talking about whether they are allowed as terminators as well.) 16:11:22 q+ 16:11:47 lee: why no ";" as terminator? because people want to be able to leave off a trailing ";". 16:12:01 ack AndyS 16:14:20 I prefer terminator, but may go with separator 16:14:24 Need (';' | ) to terminate 16:14:35 +1 to AndyS 16:14:37 +1 16:15:31 why? 16:15:32 update := atomicupdate | update ';' atomicupdate 16:15:52 That fixes cmd line (which I don't care if diff systems do diff things anyway) 16:16:04 update := atomicupdate | update ';' atomicupdate | 16:17:01 "that" refers to (';' | ) 16:17:40 why not sandro's? 16:17:54 PROPOSED: semicolons are a required separator, and either ";" or terminates 16:17:56 SteveH: likes Andy's suggestion since it handles having a ; at the end or not, for both protocol and a command line 16:18:46 PROPOSED: semicolons are a required separator, and either ";" or terminates (and empty-string is an acceptable command) 16:18:59 q? 16:19:02 +1 16:19:05 +1 16:19:07 +1 16:19:09 +1 16:19:10 +1 16:19:11 +1 16:19:12 +1 16:19:13 +1 16:19:24 +0.5 (need to check it works!) 16:19:37 's fine with me 16:19:46 RESOLVED: semicolons are a required separator for update operations, and either ";" or terminates (and empty-string is an acceptable command) 16:19:47 +1 16:21:42 subtopic: datasets and update 16:21:43 http://lists.w3.org/Archives/Public/public-rdf-dawg/2010JanMar/0616.html 16:25:51 the fundamental thing here seems the base assumption: "I'd _like_ to be able to say that the RDF Dataset is a subset of the Graph Store, but given that the Graph Store defines a single unnamed 16:25:51 graph whereas the RDF Dataset allows me to craft a default graph as the merge of multiple graphs, I don't know how to formally specify this subset relationship." 16:26:03 Minor: reads as INSERT ... FROM which is, to me, odd. Maybe can live with. 16:27:15 Think single FROM clause rule is way too clever. 16:27:34 SteveH: observes that it's strange that INSERT/DELETE would be affected by a "FROM" 16:28:21 WITH g1 INSERT { x y z } DELETE { a b c } WHERE { ... } 16:28:24 SteveH: How about WITH is for the INSERT/DELETE and FROM is for the WHERE. 16:28:54 q+ 16:29:18 SteveH: What about moving FROM to the top? 16:29:27 Prefer FROM only applies to WHERE. 16:29:30 LeeF: Not a strong feeling; diverges from what Query does 16:29:38 AxelPolleres: thinks there's an alternative to the base assumption 16:29:53 ... presumes this would only apply to the WHERE part 16:30:41 then prefer no WITH at all or WITH applies only to INSERT, DELETE (based on separation of concepts) 16:30:56 AxelPolleres: gets back to conversation at the beginning, re: graphstore-vs-dataset 16:31:22 AndyS, I would be OK with FROM/FROM NAMED applying only to WHERE and no WITH at all, but still think having 2 distinct concepts of a default graph for the operation is confusing 16:31:53 LeeF - good point. 16:44:41 AndyS has joined #sparql 17:11:14 AndyS, can you begin scribing following this break? 17:21:31 Souri has joined #sparql 17:29:52 Mattperry has joined #sparql 17:29:58 dcharbon2 has joined #sparql 17:38:49 ericP has joined #sparql 17:39:19 bglimm has joined #sparql 17:39:52 Chair: LeeF 17:40:25 AndyS1 has joined #sparql 17:40:33 AxelPolleres has joined #sparql 17:40:38 For ericP: http://www.openjena.org/ARQ/service.html 17:40:58 SteveH has joined #sparql 17:41:05 tx AndyS1 17:41:18 scribenick: AndyS 17:41:32 scribenick: AndyS1 17:41:37 ... for some reason 17:41:44 Souri has joined #sparql 17:41:48 LeeF: update continues 17:42:02 an additional thing people brought up was the LOAD LOAD vs LOAD issue (which might imply other shortcuts like that as well)... in case we get there 17:42:08 report from Boston lunch discussions 17:42:24 pgearon: multiple load issue 17:43:22 keyword WITH - introducing FROM could be along side WITH - layered appraoch 17:43:36 ... explicit GRAP => use named graph 17:43:50 ... else FROM / FROM NAMED 17:43:55 ... else WITH 17:44:01 ... else default 17:44:09 s/GRAP/GRAPH/ 17:44:23 Lee, others: confusing 17:44:48 q+ 17:45:02 ack AxelPolleres 17:45:17 ack AxelPolleres 17:45:53 AxelPolleres: alternative FROM only for WHERE not INSERT DELETE 17:46:13 q+ 17:46:33 LeeF: confusing even though no lex order (Steve point) 17:46:36 ack AndyS 17:47:11 q+ AndyS 17:47:15 ack AndyS 17:47:49 AndyS: I find it slightly odd to use FROM to constrain the INSERT/DELETE template because of the case of multiple FROMs 17:48:17 LeeF: compromise design 17:48:49 So do we need to change scope for default graph in update part? 17:49:05 What I want to say is that the decoupling dataset and graphstore is confusing anyways from one point of view. 17:50:36 q? 17:52:16 AndyS: What if unadorned triple patterns in INSERT/DELETE templates went against the Graph Store's default graph, and FROM only controlled the default graph for the query pattern? 17:52:27 LeeF: Think it's still a little weird because there are distinct default graph concepts, but I can live with it 17:52:33 AndyS: error case of union FROM is confusing to me 17:53:14 AndyS: do see value of setting dft graph for WHERE part 17:54:03 INSERT { GRAPH { x y z } } DELETE { GRAPH { a b c } } WHERE FROM { ... } 17:54:16 WITH INSERT { x y z } DELETE { a b c } WHERE { ... } 17:54:35 Alt: either WITH or FROM not both 17:54:57 pgearon: common use pattern 17:55:10 ... operations on a single graph 17:55:13 INSERT { GRAPH { x y z } } DELETE { GRAPH { a b c } } WHERE FROM { ... } 17:55:49 WITH INSERT { x y z } DELETE { a b c } FROM WHERE { ... } 17:56:03 now what happens when i put this in the protocol with default-graph-uri=g3 17:56:46 my understnding is that default-graph-uri= only overwrites FROM 17:57:09 what principle is that understanding based on, AxelPolleres? 17:57:22 IvanH: the above example reads confusing to me because of the DELETE { ... } FROM part 17:57:54 leeF, same as in query, isn't it? 17:58:00 query doesn't have with 17:58:14 i don't see any principle that would make me think that default-graph-uri doesn't also override WITH 17:58:17 or override WITH instead 17:58:20 pgearon: value DRY 17:58:30 (Dont Repeat Yourself) 17:58:57 LeeF, but protocol has default-graph-uri= which corressponds to FROM, which I suggest to just keep 17:59:35 LeeF: now tending INS DEL effect real dft graph. 18:01:23 I think the proposal is useful, exactly because it allows to insert/modify based on querying graphs possibly external to the graphstore. 18:01:31 q? 18:01:33 q+ 18:01:41 ack AxelPolleres 18:01:43 ack AxelPolleres 18:01:48 q+ 18:02:03 sandro: The confusion in DELETE { ... } FROM ... WHERE ... is pretty bad. 18:02:33 LeeF: if no spec - graph store = impl decision c.f. query 18:02:56 ack Souri 18:03:02 could where come first? so, FROM... WHERE... DELETE { ... } 18:03:31 dcharbon2's suggesting is interesting 18:03:35 *suggestion 18:03:42 Souri: WITH clause: common use case update is on a graph that is also the WHERE part 18:03:54 FROM... WHERE ... INSERT .... DELETE ... 18:04:22 DELETE ... INSERT ... probably 18:04:55 FROM... WHERE... WITH... INSERT... DELETE... 18:05:05 If we chnage order, FROM => USING maybe 18:05:39 the proposal on the comments list was more along the lines: SELECT ... FROM ... WHERE ... INSERT ... DELETE 18:05:53 Souri: SQL is declare the thing to change then WHERE data 18:05:58 ... i.e. allowing SELECT i.e. query parts together with updates 18:05:59 to me, CONSTRUCT foo and INSERT foo are very similar ideas, and having them be so different is pretty weird to me 18:06:01 q+ 18:06:08 ack AndyS1 18:06:12 ack AndyS 18:06:25 q+ 18:06:33 ack me 18:06:48 ack AxelPolleres 18:07:02 Souri: SQL has a returning clause for return results from a DML statement 18:08:31 I've recently been getting requests to return multiple result sets using an XML format that Mulgara had prior to SPARQL 18:08:58 LeeF: general sentiment on whether order of works is like SQL? like query? 18:10:01 obvious question is... if we allow SELECT ... FROM ... WHERE ... INSERT ... DELETE then why not CONSTRUCT ... FROM ... WHERE ... INSERT ... DELETE ? 18:10:34 Ivan: given CONSTRUCT go that way 18:10:35 I've just checked, DELETE is always before INSERT (sorry about any confusion up to now) 18:11:01 LeeF: what about souri's idea of WITH xor FROM ? 18:11:16 ... WITH is shortcut for GRAPH everywhere 18:11:48 SteveH: protocol interactions 18:11:59 q? 18:12:53 interactions with protocol is e.g. if in the protocol someone uses e.g. default-graph-uri 18:13:22 q+ 18:13:27 ack pgearon 18:13:31 AndyS: suggest default-graph + FROM in update => error 18:13:45 ... unlike query 18:14:17 ... overide can chnage a two different grah update now be a one graph update 18:15:00 LeeF, we do 18:15:06 for security, only access one graph 18:15:12 same here 18:15:17 q+ 18:15:25 INSERT T1 DELETE T2 FROM G1 { ... } 18:15:34 T1 and T2 act on the Graph Store's default graph 18:15:46 and the query pattern queries G1 as its default graph 18:15:46 missing WHERE? 18:16:09 INSERT T1 DELETE T2 FROM G1 WHERE { ... } 18:16:43 LeeF: hearing consensus around the above 18:18:00 AndyS: deafult-graph-uri= is whole request = many operations, some with FROM , some with WITH, some with none. 18:18:54 * If you use default-graph-uri, the request can't use WITH or FROM at all 18:19:12 * If you don't use default-graph-uri, then each operation within the request can use WITH or FROM/FROM NAMED, but not both 18:19:28 q+ 18:19:33 ack AndyS 18:19:35 q+ 18:19:55 ack Souri 18:20:35 q+ to ask about just ... adding [with] [delete] [insert] at the end of a query - with support for select, construct and ask for returning values 18:20:51 q+ to ask why interaction of WITH with FROM (NAMED) is a problem *at all* 18:21:26 ack kasei 18:22:04 WITH FROM INSERT P1 WHERE P2 = FROM INSERT {GRAPH P1} WHERE {GRAPH P2} 18:22:09 kasei: seems very strange to forbid default-graph-uri overriding FROM in the case of a single update operation 18:22:11 ... so what? 18:22:17 ack dcharbon 18:22:17 dcharbon, you wanted to ask about just ... adding [with] [delete] [insert] at the end of a query - with support for select, construct and ask for returning values 18:23:23 dcharbon: query-ish thing followed by updates 18:23:42 [query] update-clause 18:24:28 dcharbon2: suggests-- [optional SPARQL result clause] [optional SPARQL dataset clause] SPARQL query pattern [optional SPARQL modifiers] [optional WITH] [optional DELETE template] [optional INSERT tempalte] 18:24:49 ack AxelPolleres 18:24:49 AxelPolleres, you wanted to ask why interaction of WITH with FROM (NAMED) is a problem *at all* 18:24:49 ack AxelPolleres 18:24:58 q+ to ask for clarification 18:26:43 ack AndyS 18:26:43 AndyS, you wanted to ask for clarification 18:27:59 q+ 18:29:04 AndyS: We haven't really talked about solution modifiers with update 18:29:16 AndyS: does this let us return results based on the post-update state of the store? 18:29:19 LeeF: No, not really 18:29:33 so, one thing that puzzles me: if I want to ask a SELECT query to the endpoint's *graphstore* instead of the *default dataset*, I will just use the "update" protocol operation instead of the "query" operation? 18:29:36 q- 18:29:37 IvanH: but you could chain multiple operations together with the subsequent one being the one to return something about the state of the graph store after update 18:29:51 AxelPolleres: good point 18:30:37 It's subversive... too subversive or abusive? 18:30:44 q+ 18:30:50 AndyS: issue with multiple SELECT in one request (mix CONSTRUCT and SELECT) 18:32:21 ack AxelPolleres 18:32:43 AxelPolleres: mixes query on dataset and query on graph store 18:33:03 scribenick: AndyS 18:33:07 q+ 18:33:13 ack kasei 18:33:16 ivan: assumed treated uniformly 18:33:51 kasei: why query on graph store? why not endpoint makes dataset as query 18:35:23 AxelPolleres: dft graph for Q can be different from dft from update ? 18:36:15 we have both "default graph" and "unnamed graph" in Update. 18:37:30 LeeF: do we want to include results to update other than success/failure 18:37:51 ... or givenb where we are now and our lifecycle do we stick to current posn 18:38:08 I think, if we leave querying out of update, we spare the problem of unifying the dataset and graphstore. 18:38:08  18:39:14 Feeling is stick to current update with success/failure only (time concerns) 18:39:39 PROPOSED: SPARQL Update requests return either success or failure only 18:39:46 +1 18:39:54 +1 18:39:58 RESOLVED: SPARQL Update requests return either success or failure only, no abstentions or objections 18:39:58 +1 (given time constraints) 18:40:00 q+ 18:40:05 +1 18:40:06 ack AlexPassant 18:41:53 q+ to ask, didn't we at some point have a suggestion on the table that payload for protocol has number of added/deleted triples (or was that just in some implementation) 18:42:15 ack AxelPolleres 18:42:15 AxelPolleres, you wanted to ask, didn't we at some point have a suggestion on the table that payload for protocol has number of added/deleted triples (or was that just in some 18:42:16 we're not ruling out having various error messages; we're ruling out requring query results as part of an update operations. 18:42:19 ... implementation) 18:43:21 ARC2 does that as well re. number of added triples 18:43:39 right, Alex, that's where I saw it 18:43:56 would be costly for one of my impls to test if triple existed everythime 18:44:16 ivan has changed the topic to: http://www.w3.org/2009/sparql/wiki/F2F3_Agenda 18:44:32 LeeF: want subgroup to meet and make concrete proposal for WITH/FROM/default-graph-uri= 18:44:42 ... inc pgearon, LeeF 18:44:59 ... SteveH, AndyS 18:45:20 AxelPolleres: I'm using ARC2 in lots of apps but never used that feature (success / failure is generally enough) 18:45:26 should we action someone to answer to http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2010Mar/0000.html along the lines of the Resolution? 18:45:32 (but don't want to slow things down) 18:45:42 ACTION: Lee to coordinate with Paul, Steve, and Andy to form a coherent proposal re: datasets, FROM, FROM NAMED, WITH, default-graph-uri, and named-graph-uri 18:45:43 Created ACTION-206 - Coordinate with Paul, Steve, and Andy to form a coherent proposal re: datasets, FROM, FROM NAMED, WITH, default-graph-uri, and named-graph-uri [on Lee Feigenbaum - due 2010-04-01]. 18:46:00 ACTION: AxelPolleres to respond to http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2010Mar/0000.html 18:46:00 Sorry, couldn't find user - AxelPolleres 18:46:05 ACTION: Axel to respond to http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2010Mar/0000.html 18:46:05 Created ACTION-207 - Respond to http://lists.w3.org/Archives/Public/public-rdf-dawg-comments/2010Mar/0000.html [on Axel Polleres - due 2010-04-01]. 18:47:34 i can scribe 18:47:36 LeeF: more update via protocol 18:47:39 scribenick: kasei 18:48:20 LeeF: anybody run into issues with protocol? 18:48:28 ivan: how does it handle semicolons? 18:48:42 LeeF: just part of the http request body 18:48:53 q+ 18:48:58 betehess_ has joined #sparql 18:48:59 ack AxelPolleres 18:49:23 AxelPolleres: with implicit dropping, wouldn't see a response indicating that the drop happened. 18:49:30 dcharbon2: correct 18:49:59 LeeF: we'll still have to define what happens if several operations succeed and some others fail 18:50:24 pgearon: since only returning sucess/failure, probably just fail 18:50:46 LeeF: gets into concurrency/atomicity issues 18:51:02 this is http://www.w3.org/2009/sparql/track/issues/26 18:51:16 pgearon: not sure about atomicity. would like to recommend group of statements be done atomically where possible. 18:51:33 ... for systems that don't support atomic operations, still should work. so atomicity should be defined as SHOULD. 18:51:34 +1 to SHOULD be atomic 18:51:41 +1 as well 18:51:58 dcharbon2: if we want transactional, statements should be ordered based on syntax. 18:52:08 pgearon: yes. will need to guarantee execution order. 18:52:18 sandro: don't want to rule out eventually consistent systems. 18:52:28 ... SHOULD may not be the right wording. 18:52:43 pgearon: was expecting an indication in the service description indicating this. 18:53:15 sandro: SHOULD in strict interpretation is do it unless there's a good reason not to. 18:53:23 ... not sure being distributed is a good reason. 18:53:29 q+ 18:53:36 ack AndyS 18:53:58 sandro: but, yeah, I guess being distributed is a good reason. 18:54:06 AndyS: would like to say SHOULD. two cases. 1: person doing update sees consistent state of the world. 18:54:36 ... 2: eventually consistent, but person doing update might not see consistency. 18:54:50 pgearon: for those systems that are able to do it, needs to be service description support. 18:55:05 sandro: ok, understanding distributed is a good reason not to do it. 18:55:36 AndyS: should just use SHOULD, not over-interpret how people implement their systems. 18:56:02 sandro: implementors might interpret that as shouldn't be doing distributed systems. 18:56:20 LeeF: hearing concensus. can we close ISSUE-26? 18:56:34 sandro: I think we should include some text saying: FOR EXAMPLE, eventually-consistent stores are fine. 18:57:54 PROPOSED: Close ISSUE-26 by noting that update requests SHOUDL be processed atomically and that SPARQL update provides no other transactional mechanisms 18:58:07 s/SHOUDL/SHOULD/ 18:58:11 +1 18:58:15 +1 18:58:17 +1 18:58:18 PROPOSED: Close ISSUE-26 by noting that update requests SHOULD be processed atomically and that SPARQL update provides no other transactional mechanisms 18:58:20 +1 18:58:21 + 18:58:23 +1 18:58:28 +1 18:58:31 +1 18:58:32 +1 18:58:38 +1 18:58:43 RESOLVED: Close ISSUE-26 by noting that update requests SHOULD be processed atomically and that SPARQL update provides no other transactional mechanisms, no abstentions or objections 18:58:49 q+ 18:59:00 LeeF: ISSUE-19 18:59:04 ack ivan 18:59:08 issue-19? 18:59:08 ISSUE-19 -- Security issues on SPARQL/UPdate -- OPEN 18:59:08 http://www.w3.org/2009/sparql/track/issues/19 18:59:20 ivan: what do we do about HTTP PATCH? 18:59:33 LeeF: need chimezie to be involved in that discussion. 18:59:52 ivan: spec says must use HTTP POST. might we allow PATCH? 19:00:59 ISSUE: Does HTTP PATCH affect either the SPARQL Protocol or the SPARQL Uniform etc. HTTP etc. Protocol? 19:00:59 Created ISSUE-56 - Does HTTP PATCH affect either the SPARQL Protocol or the SPARQL Uniform etc. HTTP etc. Protocol? ; please complete additional details at http://www.w3.org/2009/sparql/track/issues/56/edit . 19:01:01 -> http://tinyurl.com/yfjdc3s 19:01:15 issue-56: http://tools.ietf.org/html/rfc5789 19:01:15 ISSUE-56 Does HTTP PATCH affect either the SPARQL Protocol or the SPARQL Uniform etc. HTTP etc. Protocol? notes added 19:01:35 LeeF: don't want to spend time on this now. will follow up later. 19:01:36 -> http://tools.ietf.org/html/rfc5789 PATCH RFC on Patch 19:01:55 ... Next: Security in SPARQL Update. 19:02:36 SteveH: my concerns is around making the endpoint perform HTTP requests. 19:02:45 LeeF: did we address that in SPARQL 1.0 Query? 19:03:07 SteveH: sort of waved at. some people do it with FROM, but not everyone does this. 19:03:09 q+ to say that covered by any processor can reject a request in query 19:03:27 ... we require explicitly saying you want that feature at endpoint startup. 19:03:27 ack AndyS 19:03:27 AndyS, you wanted to say that covered by any processor can reject a request in query 19:03:28 ack me 19:03:59 AndyS: you can just refuse the query if you don't want to make the request. 19:04:08 ... obligated to write a security section for the Update doc. 19:04:34 ... usually will implement inside a container that affects this. no one single model. 19:04:51 LeeF: does anyone think we need to do more than just a security section in the document? 19:05:01 ivan: anything more than that will be too much given our timeline. 19:05:40 LeeF: hoping to give advice in the spec. get a list of issues that are important. 19:05:56 ... let's list some of the things we know are important. 19:06:06 * loading external data (LOAD ) 19:06:24 ** (related: overflowing your internal store with loaded data) 19:06:44 * similar: interpreting FROM/FROM NAMED as HTTP request 19:07:00 * access control 19:07:02 ... just as in Query 19:07:02 and multiple LOADs gives an escalation attack 19:07:53 * chain authorization to foreign servers? 19:08:14 LOAD is a flexible pivot 19:08:52 * extension functions (applies to both query and update) 19:10:10 ISSUE-19: Group consensus to address security considerations in SPARQL Update via Security Considerations informative text in Update spec. 19:10:10 ISSUE-19 Security issues on SPARQL/UPdate notes added 19:10:30 LeeF: Concurrency (ISSUE-18) 19:10:46 Appendix A in update doc should be updateded with that list! 19:11:12 http://www.w3.org/2009/sparql/track/issues/18 19:11:19 ... any proposals for locking or other concurrency facilities? 19:11:42 pgearon: I lumped it together with atomicity issues. 19:12:00 LeeF: covered by previous atomicity discussion. 19:12:31 ... our system rejects updates if you try to update an old version of data (pass in the version of data you think you're updating) 19:12:49 dcharbon2: some people will never need such features. 19:13:08 PROPOSED: Close ISSUE-18 noting the atomicity recommendation in the resolution to ISSUE-26 and noting no plans to add any explicit mechanism for concurrency 19:13:19 +1 19:13:25 +1 19:13:30 +1 19:13:32 +1 19:13:35 RESOLVED: Close ISSUE-18 noting the atomicity recommendation in the resolution to ISSUE-26 and noting no plans to add any explicit mechanism for concurrency, no abstentions or objections 19:13:40 +1 19:14:46 kasei: Consider in protocol making use of HTTP 204 Accepted For Processing ? 19:15:15 s/204/202/ 19:15:41 pgearon: what happens if you load half a document and run into an error? 19:16:09 sandro: that's just a kind of error ('your data is now corrupt') 19:16:48 LeeF: now passed the agenda items scheduled through 10:00 this morning. 19:17:28 LeeF: Moving on to test suite. 19:17:37 ... sent overview on how tests were done in DAWG. 19:17:39 topic: testing 19:18:00 ... super manifest listing manifests which described in RDF the tests. 19:18:14 ... each tests gave info on seting up, running, and evaluating results of the test. 19:18:19 ... syntax tests were just the query. 19:18:39 ... eval tests had data in default (and any named) graph(s), the query, and expected results. 19:19:01 ... additional semantics for things like required ordering. 19:19:38 ... asked people to return results in EARL. ericP put together system to put results in a database, generate readable reports. 19:19:57 ... every test was characterized by facets of query language it was testing. 19:20:24 ... when failing test X, attribute failure to the proper part of the language. 19:21:00 ericP: we were clever in figuring out what features each query used, not sure about taking that into account on grading the results. 19:21:40 LeeF: for update, need to start with a dataset, an update request, and expected results. 19:21:54 ... expected results are success/failure and a state of the graphstore after the update. 19:22:10 ... need to decide if we'll use the same manifest/vocab approach. 19:22:32 ... ericP had suggested the use of TriG for serializing quads. 19:22:55 ... then need to start collecting tests. 19:23:03 http://swobjects.svn.sourceforge.net/viewvc/swobjects/trunk/tests/sparul/ 19:23:11 q+ 19:23:18 http://swobjects.svn.sourceforge.net/viewvc/swobjects/trunk/tests/sparul/ -> SWObjects SPARUL tests 19:23:20 ack SteveH 19:23:31 SteveH: support for using TriG. 19:23:50 bglimm: don't know how to parse that. 19:24:04 ... if existing tools can't parse it... 19:25:02 ... using OWL API. can parse turtle. 19:25:20 While TriG is great it's not a spec and some details need to be worked out. And it's not a superset of N-Quads 19:25:58 SteveH: could develop framework to turn TriG into HTTP updates 19:26:05 q+ 19:26:06 q+ to mention that maybe we need someone to first put forth a version of http://www.w3.org/2001/sw/DataAccess/tests/README.html for us 19:26:06 SteveH, did I get that right? 19:26:29 kasei, not just Trig, the whole thing 19:26:36 bglimm: not able to run dawg tests right now. 19:26:56 SteveH, could you scribe what you said? 19:27:26 SteveH: maybe we could colaboratively develop a test harness, which reads the manifests, and judges pass/fail 19:27:39 ericP: in trig all the individual pieces come together in a single document. parsing burden is probably less than bookkeeping burden. 19:27:57 ivan: don't want to put too much burden on implementors. 19:28:44 LeeF: at some point tradeoff with our time and effort in producing a good test suite. 19:28:50 ... this was a source of pain the first time around. 19:29:26 ericP: will be asking a lot less of people this time even with TriG than we did last time with 1.0. 19:29:33 q+ 19:29:44 ack AndyS 19:29:45 TriG would be used for dataset and before/after graphstore, yes? anything else? 19:29:46 sandro: TriG only brings together the data, though? not the results or other pieces? 19:29:59 LeeF: correct. 19:30:08 AndyS: don't see that TriG adds much. 19:30:19 ... not all toolkits will have support. 19:30:19 q+ 19:31:06 ivan: RDFa test suite, you submitted the URLs for different convertors. tool could run whole test suite. 19:31:22 ... sent off data to various distillers, got results and ran SPARQL queries against them and checked with expected result. 19:31:39 I *think* that this is what resulted out of that work of Michael Hausenblas for RDFa: http://ld2sd.deri.org/corrib/ 19:31:41 ... each test has HTML file, and what results of SPARQL query should look like. entirely automatic. yes/no for each test. 19:31:56 ... worked well, but requirements are much simpler than for SPARQL's case. 19:32:17 ... setup was very simple. 19:32:19 but he said to me that it is kinda alpha at the moment (stable mid-end 2010) 19:32:24 q? 19:33:04 ivan: all tests we have for 1.0 are valid for 1.1, so starting a new testing framework would be lost time. 19:33:21 ack SteveH 19:33:27 +1 on reusing current framework 19:33:52 SteveH: agree with ericP that going to TriG is easier. 19:33:59 ... current manifest is really complicated. 19:34:02 q? 19:34:27 AndyS: hearing proposal to flatten manifest files. 19:35:02 LeeF: implementors are going to need to write new code anyway to support update tests. 19:35:24 ivan: but we're going to add tests to Query also. 19:35:36 -> http://swobjects.svn.sourceforge.net/viewvc/swobjects/trunk/tests/test_SPARUL.cpp?view=markup SPARUL tests 19:36:00 ack AxelPolleres 19:36:15 ivan: how many implementors are going to be upset at having to make big changes to testing infrastructure? 19:36:46 AxelPolleres: trig sounds like good idea for results of update. 19:37:20 ... do we need something in protocol to dump the graphstore? 19:39:13 ivan: readapting rdfa framework for sparql would make it alpha-quality code. 19:39:33 pgearon: in favor of leaving things as they are. queries will work the same way. update is almost the same. 19:40:16 ... different datastructure for supporting update. will be a major change to test suite to work with that. 19:40:25 ack LeeF 19:40:25 LeeF, you wanted to mention that maybe we need someone to first put forth a version of http://www.w3.org/2001/sw/DataAccess/tests/README.html for us 19:41:29 LeeF: suggest we need couple of people to re-cast existing DAWG test document to describe how we'll do update tests. maybe service descriptions. 19:41:43 ... until we do that we can't start collecting test cases. 19:41:57 ... need volunteers. 19:42:05 *crickets* 19:42:44 ... otherwise will move to CR without any way to tell if features are properly implemented. 19:42:53 ... bad for all sorts of reasons. 19:43:26 AxelPolleres: looking for somebody to update dawg test doc and/or people to maintain manifests and tests cases. 19:43:49 LeeF: can do it by committee if we get some basic work done. first is the dawg test doc. needs to handle update test cases. 19:44:05 ... in ideal world we'd have test editors. 19:44:16 I can do a first shot 19:45:08 ACTION: AxelPolleres to recast http://www.w3.org/2001/sw/DataAccess/tests/README.html into SPARQL WG space and update to handle SPARQL Update test cases by April 13, 2010 19:45:08 Sorry, couldn't find user - AxelPolleres 19:45:15 ACTION: Axel to recast http://www.w3.org/2001/sw/DataAccess/tests/README.html into SPARQL WG space and update to handle SPARQL Update test cases by April 13, 2010 19:45:15 Created ACTION-208 - Recast http://www.w3.org/2001/sw/DataAccess/tests/README.html into SPARQL WG space and update to handle SPARQL Update test cases by April 13, 2010 [on Axel Polleres - due 2010-04-01]. 19:46:33 pgearon: Axel can get in touch with me about changes needed for update syntax. Have existing thoughts on the changes. 19:47:34 LeeF: not sure what SD testing looks like. protocol we have existing work we can build on. 19:47:52 ... HTTP Update Protocol testing probably has to be similar to protocol+update testing. 19:48:03 ... entailment similar to query testing. 19:48:17 ivan: if we wanted to be formal, entailment would involve the OWL tests. 19:48:50 q? 19:48:56 bglimm: could manually translate OWL tests into SPARQL queries. 19:49:23 ivan: not testing inference engines. SPARQL should consider them correct. 19:49:34 ... have to test relation of those inference engines to SPARQL. 19:49:46 bglimm: you wouldn't get that with the OWL tests. 19:50:03 ivan: right. that's not our job. 19:50:20 ... test mechanism should be simple to show that the inference does happen. 19:50:44 bglimm: can use same format as query tests. maybe more results. 19:51:37 AxelPolleres: how are non-deterministic queries treated? 19:52:05 LeeF: there were test cases for REDUCED. bits in manifest to indicate to use reduced semantics. 19:52:22 ... don't know how that would apply to SAMPLE, for example. maybe we could come up with something. 19:52:36 AxelPolleres: if results aren't completely ordered, not sure what we do. 19:53:10 ... small enough test cases could list all possible results. 19:54:35 LeeF: tomorrow's plan: query issues, not exists vs. minus 19:54:41 ... propose we go with not exists 19:54:56 ... property path issues 19:55:01 betehess_ has joined #sparql 19:55:02 ... entailment issues 19:55:07 ... SD issues and testing 19:55:48 AndyS1 has joined #sparql 20:06:50 Adjourned. 20:41:11 AndyS has joined #sparql 20:45:53 pgearon has joined #sparql 23:13:52 AxelPolleres has joined #sparql 23:59:31 AxelPolleres has joined #sparql