You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
|
Feb
(19) |
Mar
(1) |
Apr
(9) |
May
(4) |
Jun
(15) |
Jul
(9) |
Aug
(11) |
Sep
(3) |
Oct
(3) |
Nov
(2) |
Dec
(13) |
2011 |
Jan
(1) |
Feb
|
Mar
(6) |
Apr
(2) |
May
(3) |
Jun
|
Jul
(3) |
Aug
(3) |
Sep
(3) |
Oct
(2) |
Nov
(5) |
Dec
(1) |
2012 |
Jan
(5) |
Feb
(2) |
Mar
(1) |
Apr
|
May
(5) |
Jun
(13) |
Jul
(18) |
Aug
(7) |
Sep
(1) |
Oct
(21) |
Nov
(2) |
Dec
(6) |
2013 |
Jan
(12) |
Feb
(3) |
Mar
|
Apr
(22) |
May
(1) |
Jun
|
Jul
(4) |
Aug
(2) |
Sep
(7) |
Oct
(1) |
Nov
(7) |
Dec
(1) |
2014 |
Jan
(4) |
Feb
|
Mar
(4) |
Apr
|
May
(13) |
Jun
(8) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(9) |
Dec
(1) |
2015 |
Jan
(5) |
Feb
(2) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Rob V. <rv...@do...> - 2010-02-22 11:50:53
|
Alexander The Turtle specification simply states that anything in brackets is a URI which may be relative to the Base URI of the document. If the text enclosed in the brackets is a valid URI then it's valid syntax. A valid URI is anything that conforms to the syntax given in RFC3986 [1] so <ex:thing> is a valid URI since it conforms to the URI syntax. Rob Vesse [1] http://labs.apache.org/webarch/uri/rfc/rfc3986.html From: Alexander Sidorov [mailto:ale...@gm...] Sent: 22 February 2010 09:55 To: rv...@do... Subject: Re: [dotNetRDF-bugs] CreateUriNode Hi Rob, Turtle syntax allows to use brackets only for full uris. Compare: 1. ex:thing a ex:uri 2. <http://lablabla/ex#thing> a <http://lablabla/ex@uri> As I know, syntax <ex:thing> is incorrect for turtle (and it looks logically correct). And I agree with the second part of your message. Regards, Alexander 2010/2/21 Rob Vesse <rv...@do...> Hi Alexander It's desirable from a API perspective to separate the creation of URI Nodes from URIs and via QNames. This is because it's effectively impossible to distinguish QNames and URIs since they may look identical as strings e.g. @prefix ex: <http://example.org/> ex:thing a ex:uri . <ex:thing> a <ex:uri> . This produces two very different Triples since the ex:thing and ex:uri in the first triple are converted to URIs using the appropriate prefix while in the second triple ex:thing and ex:uri are actual URIs since their syntax is valid for URIs even if the scheme is unknown. Plus Turtle is just one of the many RDF syntaxes we support and I don't really want to add special cases into the API for this. If I have the method behave differently depending on the format of the string this makes it awkward when other developers implement their own IGraph implementations since I can't guarantee that they will also honour the string formats my implementations support. Having separate methods for creating from URIs and QNames keeps the API clean and simple and has better behaviour guarantees for methods with regards to extensibility. Thanks for your thoughts, Rob Vesse _____ From: "Alexander Sidorov" <ale...@gm...> Sent: Sunday, February 21, 2010 2:10 AM To: dot...@li... Subject: [dotNetRDF-bugs] CreateUriNode Hello! IGraph.CreateUriNode(string) tells the namespace is not set in NamespaceMapper when I try to add, for example, value http://mynamespace#name. And that's okay. But it also doesn't work if I change my value to <http://mynamespace#name. So I have to create Uri instance and add the value using another CreateUriNode method overload that takes Uri object parameter. It's a bit inconvenient. It would be nice if CreateUriNode method would understand turtle Uri syntax, won't it? Regards, Alexander |
From: Rob V. <rv...@do...> - 2010-02-22 11:45:02
|
Hi Alexander 2 & 4 - Ok I see your points here. I have adjusted the API so that it takes IEnumerable<Triple> instead as of revision 626 5 - It would be better to parse the query but Virtuoso's SPARQL syntax is so complex and extended that it is impractical to do so. I have an idea for a way that might give more accurate query type detection in some (but still not all) cases but I probably won't implement that for the next release since it'll require some reworking of my SPARQL parser. 6 - From a licensing point of view I'm thinking that the Lesser GPL would be suitable for commercial licensing. The Lesser GPL allows you to use the library as-is in a commercial product and doesn't require you to open source your code or allow users to redistribute your code (obviously they can still redistributed dotNetRDF as it's still free software). If you change the library directly then you are required to publish the changed library under the LGPL but if you are just building stuff on top of the library then that code can stay closed source. In order to grant you such a license there will be a nominal license fee since it is my intention that the library remain under the full GPL - I'm discussing with colleagues what this fee should be. Or we may decide to move to a different license such as the BSD license which would make it easier for people to use the API in commercial products. With regards to RDFa support there is an RDFa parser in the repository which will be part of the next release which will hopefully be in the next two weeks or so. There is also an updated HtmlWriter class which embeds the RDFa representing the Triples it is displaying in an HTML table. Basically I have done everything I wanted to do for the next release but there have been some serious issues with Virtuoso 6 support which are due to bugs in Virtuoso 6 and it's ADO.Net provider which I have been trying to resolve with the help of my contacts at OpenLink. Until I can confirm that their fixes work with the latest versions of my code I can't do an official release. Rob Vesse From: Alexander Sidorov [mailto:ale...@gm...] Sent: 22 February 2010 09:18 To: rv...@do... Cc: dotNetRDF Bug Report tracking and resolution; dot...@li... Subject: Re: [dotNetRDF-bugs] Bugs, problems, ideas, questions Hi Rob, 2. It is unreal for me to load graph, modify it and then save, because my graph may be very and very big. What I just need is to delete or add some triples, that's why I use Update graph method. 4. I'm not sure if I understood you right... but it looks like you don't need to implement one more overload: you just need to change List to IEnumerable. Generally it is a good approach to use the lowest type in hierarchy you can (GoF book tells a lot about it). And if you are buffering triples in lists, changin UpdateGraph method signature to IEnumerable won't change you code logic as List implements IEnumerable. I agree that overhead is not so much, but nevertheless I don't see any reason to keep List variables there: UpdateGraph method implementation doesn't need any functionality except IEnumerable provides. 5. Yes, it would be better to parse the query and check it more accurate. 6. The one reason is that I want to use dotnetRDF in my commercial project. Also I wanted to implement RDFa publishing tool. But I read in your twitter that you have the same plans too (haven't you started?). So we could make it together. But as I said, first of all, I need the ability to use this code at commercial project. Regards, Alexander 2010/2/21 Rob Vesse <rv...@do...> Hi Alexander Thanks for reporting the bugs and contributing your ideas. 1 - I have fixed this as suggested as of revision 625 2 - The UpdateGraph is intended primarily for use internally by the API, it happens to be a public method since it's an interface method. It's designed to combine the two operations since from an IO point of view there operations are typically achieved via the same mechanism. It's intended use is for persisting changes to Graphs as they happen, if you are making a fixed number/predetermined changes to a Graph then it's typically best to load it using the LoadGraph() method, change it then persist it back to the store using the SaveGraph() method. 3 - I have altered the implementation of the UpdateGraph method in all existing IGenericIOManager implementations so they accept null arguments for either list as of revision 625 4 - UpdateGraph uses lists since as I said wrt point 2 it's designed primarily for internal usage. Where it's used internally we're buffering triples that are to be added/removed in lists and then persisting them in a bulk operation for efficiency purposes. I may add an additional overload in the future which accepts IEnumerable<Triple> but I don't really see the need. With the example you gave why not just use the SaveGraph() method instead - I assume you're adding to an existing Graph and want to preserve what's already in the Graph in Virtuoso? Creating a list doesn't really have that much overhead associated with it, typically the triples are stored in a dictionary/hash table anyway. Converting an enumerable to a list doesn't actually use that much memory since you aren't physically copying the triples you're only creating copies of the references to the triples (total overhead roughly 2/4 bytes per triple - depends on whether you're running 32/64 bit system) 5 - Fix is applied as of revision 625 - the fix is still slightly unsatisfactory since what if the query is something like ASK WHERE {?select ?p ?o} that will be flagged as a select query when it is not. 6 - I will get back to you about licensing, I have another similar question from another user and I need to look into compatibility of different licenses before I can answer your question. Is there any particular reason why you don't like the GPL? Rob Vesse _____ From: "Alexander Sidorov" <ale...@gm...> Sent: Saturday, February 20, 2010 8:57 PM To: dot...@li... Subject: [dotNetRDF-bugs] Bugs, problems, ideas, questions Hello! 1. VirtuosoManager.LoadNode method doesn't work correctly with queries that contain OPTIONAL clause. Such queries return DbNull for result sets at which optional variables are not set. I have just added one more "else if" and it works nice: else if (n is DBNull) { temp = null; } 2. Why not to split UpdateGraph method to AddToGraph and RemoveFromGraph methods? I think it would be more convenient for most usecases. 3. Method UpdateGraph (at least in VirtuosoManager) throws exception when removals variable is null. That's why I have to pass empty list to make my addition-only UpdateGraph call work. I think it would be nice to make this query work with additions or/and removals equal to null. 4. Why does method UpdateGraph has List<Triple> but not IEnumerable<Triple> parameters? It is inconvenient, for example, when I would like to save graph's triples: Graph graph = new Graph(); RdfXmlParser parser = new RdfXmlParser(); parser.Load(graph, fileName); this._virtuosoManager. UpdateGraph(graphUri, graph.Triples.ToList(), new List<VDS.RDF.Triple>()); I have to create the list and it makes my code less efficient (imagine big graph). 5. VirtuosoManager.Query method contains the following code: else if (results.Rows.Count == 1 && results.Columns.Count == 1) { //Single Row and Column implies ASK/DESCRIBE/CONSTRUCT results I have some SELECT-queries that return one variable and sometimes one result. And because of the previous code my results are lost (because I expect my variable, but not variable called Result. I think it would be nice to make simple check (just search ask, describe or construct words in the query) to determine is this SELECT-query or not. 6. Is there any way to get dotnetRDF library (only library) without any GPL dependencies under BSD or similar license? That's all for today :) Regards, Alexander |
From: Alexander S. <ale...@gm...> - 2010-02-22 10:07:28
|
Hello! SparqlResult doesn't support choosing element by index. As I understand the reason for that is using Dictionary as results storage (and dictionary doesn't guarantee any order). Replacing Dictionary by List could solve this problem (but maybe bring some new :) ). I think such a functionality would be useful (and I think performance would be better). Regards, Alexander |
From: Alexander S. <ale...@gm...> - 2010-02-22 09:17:39
|
Hi Rob, 2. It is unreal for me to load graph, modify it and then save, because my graph may be very and very big. What I just need is to delete or add some triples, that's why I use Update graph method. 4. I'm not sure if I understood you right... but it looks like you don't need to implement one more overload: you just need to change List to IEnumerable. Generally it is a good approach to use the lowest type in hierarchy you can (GoF book tells a lot about it). And if you are buffering triples in lists, changin UpdateGraph method signature to IEnumerable won't change you code logic as List implements IEnumerable. I agree that overhead is not so much, but nevertheless I don't see any reason to keep List variables there: UpdateGraph method implementation doesn't need any functionality except IEnumerable provides. 5. Yes, it would be better to parse the query and check it more accurate. 6. The one reason is that I want to use dotnetRDF in my commercial project. Also I wanted to implement RDFa publishing tool. But I read in your twitter that you have the same plans too (haven't you started?). So we could make it together. But as I said, first of all, I need the ability to use this code at commercial project. Regards, Alexander 2010/2/21 Rob Vesse <rv...@do...> > Hi Alexander > > Thanks for reporting the bugs and contributing your ideas. > > 1 - I have fixed this as suggested as of revision 625 > > 2 - The UpdateGraph is intended primarily for use internally by the API, it > happens to be a public method since it's an interface method. It's designed > to combine the two operations since from an IO point of view there > operations are typically achieved via the same mechanism. It's intended use > is for persisting changes to Graphs as they happen, if you are making a > fixed number/predetermined changes to a Graph then it's typically best to > load it using the LoadGraph() method, change it then persist it back to the > store using the SaveGraph() method. > > 3 - I have altered the implementation of the UpdateGraph method in all > existing IGenericIOManager implementations so they accept null arguments for > either list as of revision 625 > > 4 - UpdateGraph uses lists since as I said wrt point 2 it's designed > primarily for internal usage. Where it's used internally we're buffering > triples that are to be added/removed in lists and then persisting them in a > bulk operation for efficiency purposes. I may add an additional overload in > the future which accepts IEnumerable<Triple> but I don't really see the > need. > > With the example you gave why not just use the SaveGraph() method instead - > I assume you're adding to an existing Graph and want to preserve what's > already in the Graph in Virtuoso? > > Creating a list doesn't really have that much overhead associated with it, > typically the triples are stored in a dictionary/hash table anyway. > Converting an enumerable to a list doesn't actually use that much memory > since you aren't physically copying the triples you're only creating copies > of the references to the triples (total overhead roughly 2/4 bytes per > triple - depends on whether you're running 32/64 bit system) > > 5 - Fix is applied as of revision 625 - the fix is still slightly > unsatisfactory since what if the query is something like ASK WHERE {?select > ?p ?o} that will be flagged as a select query when it is not. > > 6 - I will get back to you about licensing, I have another similar question > from another user and I need to look into compatibility of different > licenses before I can answer your question. Is there any particular reason > why you don't like the GPL? > > Rob Vesse > > ------------------------------ > *From*: "Alexander Sidorov" <ale...@gm...> > *Sent*: Saturday, February 20, 2010 8:57 PM > *To*: dot...@li... > *Subject*: [dotNetRDF-bugs] Bugs, problems, ideas, questions > > > Hello! > > 1. VirtuosoManager.LoadNode method doesn't work correctly with queries that > contain OPTIONAL clause. Such queries return DbNull for result sets at which > optional variables are not set. I have just added one more "else if" and it > works nice: > else if (n is DBNull) > { > temp = null; > } > 2. Why not to split UpdateGraph method to AddToGraph and RemoveFromGraph > methods? I think it would be more convenient for most usecases. > > 3. Method UpdateGraph (at least in VirtuosoManager) throws exception when > removals variable is null. That's why I have to pass empty list to make my > addition-only UpdateGraph call work. I think it would be nice to make this > query work with additions or/and removals equal to null. > > 4. Why does method UpdateGraph has List<Triple> but not IEnumerable<Triple> > parameters? It is inconvenient, for example, when I would like to save > graph's triples: > > Graph graph = new Graph(); > RdfXmlParser parser = new RdfXmlParser(); > parser.Load(graph, fileName); > > this._virtuosoManager. > UpdateGraph(graphUri, *graph.Triples.ToList()*, new > List<VDS.RDF.Triple>()); > > I have to create the list and it makes my code less efficient (imagine big > graph). > > 5. VirtuosoManager.Query method contains the following code: > > else if (results.Rows.Count == 1 && results.Columns.Count > == 1) > { > //Single Row and Column implies ASK/DESCRIBE/CONSTRUCT > results > > I have some SELECT-queries that return one variable and sometimes one > result. And because of the previous code my results are lost (because I > expect my variable, but not variable called Result. I think it would be nice > to make simple check (just search ask, describe or construct words in the > query) to determine is this SELECT-query or not. > > 6. Is there any way to get dotnetRDF library (*only library*) without any > GPL dependencies under BSD or similar license? > > That's all for today :) > > Regards, > Alexander > > |
From: Rob V. <rv...@do...> - 2010-02-21 15:49:28
|
Hi Alexander It's desirable from a API perspective to separate the creation of URI Nodes from URIs and via QNames. This is because it's effectively impossible to distinguish QNames and URIs since they may look identical as strings e.g. @prefix ex: <http://example.org/> ex:thing a ex:uri . <ex:thing> a <ex:uri> . This produces two very different Triples since the ex:thing and ex:uri in the first triple are converted to URIs using the appropriate prefix while in the second triple ex:thing and ex:uri are actual URIs since their syntax is valid for URIs even if the scheme is unknown. Plus Turtle is just one of the many RDF syntaxes we support and I don't really want to add special cases into the API for this. If I have the method behave differently depending on the format of the string this makes it awkward when other developers implement their own IGraph implementations since I can't guarantee that they will also honour the string formats my implementations support. Having separate methods for creating from URIs and QNames keeps the API clean and simple and has better behaviour guarantees for methods with regards to extensibility. Thanks for your thoughts, Rob Vesse ---------------------------------------- From: "Alexander Sidorov" <ale...@gm...> Sent: Sunday, February 21, 2010 2:10 AM To: dot...@li... Subject: [dotNetRDF-bugs] CreateUriNode Hello! IGraph.CreateUriNode(string) tells the namespace is not set in NamespaceMapper when I try to add, for example, value http://mynamespace#name. And that's okay. But it also doesn't work if I change my value to <http://mynamespace#name. So I have to create Uri instance and add the value using another CreateUriNode method overload that takes Uri object parameter. It's a bit inconvenient. It would be nice if CreateUriNode method would understand turtle Uri syntax, won't it? Regards, Alexander |
From: Rob V. <rv...@do...> - 2010-02-21 15:37:54
|
Hi Alexander Thanks for reporting the bugs and contributing your ideas. 1 - I have fixed this as suggested as of revision 625 2 - The UpdateGraph is intended primarily for use internally by the API, it happens to be a public method since it's an interface method. It's designed to combine the two operations since from an IO point of view there operations are typically achieved via the same mechanism. It's intended use is for persisting changes to Graphs as they happen, if you are making a fixed number/predetermined changes to a Graph then it's typically best to load it using the LoadGraph() method, change it then persist it back to the store using the SaveGraph() method. 3 - I have altered the implementation of the UpdateGraph method in all existing IGenericIOManager implementations so they accept null arguments for either list as of revision 625 4 - UpdateGraph uses lists since as I said wrt point 2 it's designed primarily for internal usage. Where it's used internally we're buffering triples that are to be added/removed in lists and then persisting them in a bulk operation for efficiency purposes. I may add an additional overload in the future which accepts IEnumerable<Triple> but I don't really see the need. With the example you gave why not just use the SaveGraph() method instead - I assume you're adding to an existing Graph and want to preserve what's already in the Graph in Virtuoso? Creating a list doesn't really have that much overhead associated with it, typically the triples are stored in a dictionary/hash table anyway. Converting an enumerable to a list doesn't actually use that much memory since you aren't physically copying the triples you're only creating copies of the references to the triples (total overhead roughly 2/4 bytes per triple - depends on whether you're running 32/64 bit system) 5 - Fix is applied as of revision 625 - the fix is still slightly unsatisfactory since what if the query is something like ASK WHERE {?select ?p ?o} that will be flagged as a select query when it is not. 6 - I will get back to you about licensing, I have another similar question from another user and I need to look into compatibility of different licenses before I can answer your question. Is there any particular reason why you don't like the GPL? Rob Vesse ---------------------------------------- From: "Alexander Sidorov" <ale...@gm...> Sent: Saturday, February 20, 2010 8:57 PM To: dot...@li... Subject: [dotNetRDF-bugs] Bugs, problems, ideas, questions Hello! 1. VirtuosoManager.LoadNode method doesn't work correctly with queries that contain OPTIONAL clause. Such queries return DbNull for result sets at which optional variables are not set. I have just added one more "else if" and it works nice: else if (n is DBNull) { temp = null; } 2. Why not to split UpdateGraph method to AddToGraph and RemoveFromGraph methods? I think it would be more convenient for most usecases. 3. Method UpdateGraph (at least in VirtuosoManager) throws exception when removals variable is null. That's why I have to pass empty list to make my addition-only UpdateGraph call work. I think it would be nice to make this query work with additions or/and removals equal to null. 4. Why does method UpdateGraph has List<Triple> but not IEnumerable<Triple> parameters? It is inconvenient, for example, when I would like to save graph's triples: Graph graph = new Graph(); RdfXmlParser parser = new RdfXmlParser(); parser.Load(graph, fileName); this._virtuosoManager.UpdateGraph(graphUri, graph.Triples.ToList(), new List<VDS.RDF.Triple>()); I have to create the list and it makes my code less efficient (imagine big graph). 5. VirtuosoManager.Query method contains the following code: else if (results.Rows.Count == 1 && results.Columns.Count == 1) { //Single Row and Column implies ASK/DESCRIBE/CONSTRUCT results I have some SELECT-queries that return one variable and sometimes one result. And because of the previous code my results are lost (because I expect my variable, but not variable called Result. I think it would be nice to make simple check (just search ask, describe or construct words in the query) to determine is this SELECT-query or not. 6. Is there any way to get dotnetRDF library (only library) without any GPL dependencies under BSD or similar license? That's all for today :) Regards, Alexander |
From: Alexander S. <ale...@gm...> - 2010-02-21 02:10:29
|
Hello! IGraph.CreateUriNode(string) tells the namespace is not set in NamespaceMapper when I try to add, for example, value http://mynamespace#name. And that's okay. But it also doesn't work if I change my value to <http://mynamespace#name. So I have to create Uri instance and add the value using another CreateUriNode method overload that takes Uri object parameter. It's a bit inconvenient. It would be nice if CreateUriNode method would understand turtle Uri syntax, won't it? Regards, Alexander |
From: Alexander S. <ale...@gm...> - 2010-02-20 20:57:52
|
Hello! 1. VirtuosoManager.LoadNode method doesn't work correctly with queries that contain OPTIONAL clause. Such queries return DbNull for result sets at which optional variables are not set. I have just added one more "else if" and it works nice: else if (n is DBNull) { temp = null; } 2. Why not to split UpdateGraph method to AddToGraph and RemoveFromGraph methods? I think it would be more convenient for most usecases. 3. Method UpdateGraph (at least in VirtuosoManager) throws exception when removals variable is null. That's why I have to pass empty list to make my addition-only UpdateGraph call work. I think it would be nice to make this query work with additions or/and removals equal to null. 4. Why does method UpdateGraph has List<Triple> but not IEnumerable<Triple> parameters? It is inconvenient, for example, when I would like to save graph's triples: Graph graph = new Graph(); RdfXmlParser parser = new RdfXmlParser(); parser.Load(graph, fileName); this._virtuosoManager. UpdateGraph(graphUri, *graph.Triples.ToList()*, new List<VDS.RDF.Triple>()); I have to create the list and it makes my code less efficient (imagine big graph). 5. VirtuosoManager.Query method contains the following code: else if (results.Rows.Count == 1 && results.Columns.Count == 1) { //Single Row and Column implies ASK/DESCRIBE/CONSTRUCT results I have some SELECT-queries that return one variable and sometimes one result. And because of the previous code my results are lost (because I expect my variable, but not variable called Result. I think it would be nice to make simple check (just search ask, describe or construct words in the query) to determine is this SELECT-query or not. 6. Is there any way to get dotnetRDF library (*only library*) without any GPL dependencies under BSD or similar license? That's all for today :) Regards, Alexander |
From: Alexander S. <ale...@gm...> - 2010-02-19 16:47:24
|
Hello! 1. VirtuosoManager.LoadNode method doesn't work correctly with queries that contain OPTIONAL clause. Such queries return DbNull for result sets at which optional variables are not set. I have just added one more "else if" and it works nice: else if (n is DBNull) { temp = null; } 2. Why not to split UpdateGraph method to AddToGraph and RemoveFromGraph methods? I think it would be more convenient for most usecases. 3. Method UpdateGraph (at least in VirtuosoManager) throws exception when removals variable is null. That's why I have to pass empty list to make my addition-only UpdateGraph call work. I think it would be nice to make this query work with additions or/and removals equal to null. 4. Why does method UpdateGraph has List<Triple> but not IEnumerable<Triple> parameters? It is inconvenient, for example, when I would like to save graph's triples: Graph graph = new Graph(); RdfXmlParser parser = new RdfXmlParser(); parser.Load(graph, fileName); this._virtuosoManager.UpdateGraph(graphUri, * graph.Triples.ToList()*, new List<VDS.RDF.Triple>()); I have to create the list and it makes my code less efficient (imagine big graph). 5. VirtuosoManager.Query method contains the following code: else if (results.Rows.Count == 1 && results.Columns.Count == 1) { //Single Row and Column implies ASK/DESCRIBE/CONSTRUCT results I have some SELECT-queries that return one variable and sometimes one result. And because of the previous code my results are lost (because I expect my variable, but not variable called Result. I think it would be nice to make simple check (just search ask, describe or construct words in the query) to determine is this SELECT-query or not. 6. Is there any way to get dotnetRDF library (*only library*) without any GPL dependencies under BSD or similar license? That's all for today :) Regards, Alexander |
From: Alexander S. <ale...@gm...> - 2010-02-19 16:26:24
|
From: Rob V. <rv...@do...> - 2010-02-18 11:11:25
|
Hi Aleksandr This is now fixed and your test case added. The main problem with JSON is that the formats are fully standardised so some implementations do things slightly differently from others. Have applied your fixes so should be compatible with most implementations now. Thanks again, Rob Vesse dotNetRDF Lead Developer ================================================================ Developer Discussion & Feature Request - dot...@li... Bug Reports - dot...@li... User Help & Support - dot...@li... Website: http://www.dotnetrdf.org User Guide: http://www.dotnetrdf.org/content.asp?pageID=User%20Guide API: http://www.dotnetrdf.org/api/ ================================================================ From: Aleksandr A. Zaripov [mailto:za...@tp...] Sent: 17 February 2010 05:22 To: dot...@li... Subject: [dotNetRDF-bugs] JsonParser bug Hi RdfJsonParser and SparqlJsonParser have bug in parsing literal. Default sparql endpoint of virtuoso returns them with "xml:lang" attribute, but in this parsers waits for only "lang" token. It seems to me, that line 251 of RdfJsonParser should be else if (token.Equals("lang") || token.Equals("xml:lang")) and line 508 of SparqlJsonParser else if (token.Equals("lang") || token.Equals("xml:lang")) The example of ontology attached to this mail. Query should be like select distinct ?comment where { ?s rdfs:comment ?comment } Thanks, Alexander A. Zaripov za...@tp... |
From: Rob V. <rv...@do...> - 2010-02-12 13:30:45
|
Aleksandr I have confirmed that your fix does appear to work with some unit tests of my own. This bug also uncovered some bugs in the Turtle & N3 tokenisers handling of escapes and long literals which I am now fixing (most of the fixes are already committed) Thanks again, Rob Vesse From: Rob Vesse [mailto:rv...@do...] Sent: 12 February 2010 09:34 To: 'dotNetRDF Bug Report tracking and resolution' Cc: za...@tp... Subject: Re: [dotNetRDF-bugs] Chars escaping bug Hi Aleksandr You are probably right about that, do you have some test cases I can use to confirm that your fix works as expected? Thanks, Rob Vesse From: Aleksandr A. Zaripov [mailto:za...@tp...] Sent: 12 February 2010 08:00 To: dot...@li... Subject: [dotNetRDF-bugs] Chars escaping bug Hello There are bug with literal nodes, which contain multiline strings (eg. "\r\n"). The code in BaseWriterContext class (lines 391-394) does not works correctly. The string if (value.Contains("\\n")) value = value.Replace("\\n", "\\\\n"); should be if (value.Contains("\"")) value = value.Replace("\"", "\\\""); but I think that the more universal solution is value.Replace("\\", "\\\\"); С уважением, Зарипов Александр za...@tp... |
From: Rob V. <rv...@do...> - 2010-02-12 13:13:09
|
Hi Yes you need some escapes of specific escapable characters as well as escaping backslashes. I've added your test case to my unit tests and it appears to work fine. I will add in the overload of the constructor you wanted, one thing to be aware of is that I'm having a lot of issues with Virtuoso support at the moment which I am attempting to get fixed with the help of the people at OpenLink so currently the Virtuoso support in the library in the repository is partially broken. Thanks, Rob From: Aleksandr A. Zaripov [mailto:za...@tp...] Sent: 12 February 2010 12:33 To: Rob Vesse Subject: HA: [dotNetRDF-bugs] Chars escaping bug Hi After some experiments I understand, that the value.Replace("\\", "\\\\"); is not correct solution because it don't cover case with \". But the first solution works fine. So, I attach example ontology, which should not be successfully inserted without this fixes: if (value.Contains("\"")) value = value.Replace("\"", "\\\""); if (value.Contains("\n")) value = value.Replace("\n", "\\n"); if (value.Contains("\r")) value = value.Replace("\r", "\\r"); if (value.Contains("\t")) value = value.Replace("\t", "\\t"); p.s. Could you overload the constructor VirtuosoManager(String connectionString). A need to specify some parameters except of server, port, user, etc. С уважением, Зарипов Александр za...@tp... -----Исходное сообщение----- От: Rob Vesse [mailto:rv...@do...] Отправлено: Пт, 12.02.2010 15:33 Кому: 'dotNetRDF Bug Report tracking and resolution' Копия: Aleksandr A. Zaripov Тема: RE: [dotNetRDF-bugs] Chars escaping bug Hi Aleksandr You are probably right about that, do you have some test cases I can use to confirm that your fix works as expected? Thanks, Rob Vesse From: Aleksandr A. Zaripov [mailto:za...@tp...] Sent: 12 February 2010 08:00 To: dot...@li... Subject: [dotNetRDF-bugs] Chars escaping bug Hello There are bug with literal nodes, which contain multiline strings (eg. "\r\n"). The code in BaseWriterContext class (lines 391-394) does not works correctly. The string if (value.Contains("\\n")) value = value.Replace("\\n", "\\\\n"); should be if (value.Contains("\"")) value = value.Replace("\"", "\\\""); but I think that the more universal solution is value.Replace("\\", "\\\\"); С уважением, Зарипов Александр za...@tp... |
From: Rob V. <rv...@do...> - 2010-02-12 10:05:33
|
Hi Aleksandr You are probably right about that, do you have some test cases I can use to confirm that your fix works as expected? Thanks, Rob Vesse From: Aleksandr A. Zaripov [mailto:za...@tp...] Sent: 12 February 2010 08:00 To: dot...@li... Subject: [dotNetRDF-bugs] Chars escaping bug Hello There are bug with literal nodes, which contain multiline strings (eg. "\r\n"). The code in BaseWriterContext class (lines 391-394) does not works correctly. The string if (value.Contains("\\n")) value = value.Replace("\\n", "\\\\n"); should be if (value.Contains("\"")) value = value.Replace("\"", "\\\""); but I think that the more universal solution is value.Replace("\\", "\\\\"); С уважением, Зарипов Александр za...@tp... |
From: Aleksandr A. Z. <za...@tp...> - 2010-02-12 08:00:01
|
Hello There are bug with literal nodes, which contain multiline strings (eg. "\r\n"). The code in BaseWriterContext class (lines 391-394) does not works correctly. The string if (value.Contains("\\n")) value = value.Replace("\\n", "\\\\n"); should be if (value.Contains("\"")) value = value.Replace("\"", "\\\""); but I think that the more universal solution is value.Replace("\\", "\\\\"); С уважением, Зарипов Александр za...@tp... |
From: Robert V. <rv...@vd...> - 2010-02-06 16:29:18
|
Hi Alexander Thanks for the bug report, I have applied the first fix as-is and the second fix I have done by just changing the branch to an else instead, Ive also made some other changes to improve the Virtuoso support based on feedback from my contact at OpenLink Can you confirm for me that the fixes work for your queries? Revision 575 or higher has the fixes Also can you send me the test queries (and data if applicable) that produced the bug so I can add some additional test cases to my test suite Thanks, Rob Vesse _____ From: Aleksandr A. Zaripov [mailto:za...@tp...] Sent: 05 February 2010 17:26 To: dot...@li... Subject: SPAM-LOW: [dotNetRDF-bugs] VirtuosoStorage bug report Hello. During my work with dotNetRDF for my science reseaches about Semantic Web I found some bugs in Query method of the VirtuosoManager class (I check out the revision #572). The first bug is that the code in the lines 677-683 does not return anything. I guess that should add lines like rset.AddResult(res); finalResult = rset; below line 683. The second bug is that if SPARQL query returns 1 row and more than 1 column it will be ignored. I guess, that this queries should be processed by the code in lines 692-717 (like queries, which returns multiple rows). So, I offer to change the line 690 to else if (results.Rows.Count > 1 || results.Columns.Count > 1) or may be other solution for this place. Diff file is attached to this mail. Best regards, Alexander A. Zaripov, Tomsk Polytechnic University za...@tp... No virus found in this incoming message. Checked by AVG - www.avg.com Version: 8.5.435 / Virus Database: 271.1.1/2671 - Release Date: 02/06/10 07:35:00 |
From: Rob V. <ra...@ec...> - 2009-10-02 13:05:40
|
Version 0.1.1 Alpha of the Library was released this past week and includes among other things the following improvements: . General Improvements o Many minor bug fixes and optimisations o Improved in-memory storage for Nodes and Triples which facilitates the Parser improvements . Parsing Improvements o All parsers are now around 20x faster o Added parsers for RDF/JSON and TriG o Support for parsing directly from Strings with format auto-detection . Serialization Improvements o All NTriple type writers are around 200x faster o Added an additional RDF/XML writers which is around 80x faster (old serializers for this are still quite slow) o Added writers for RDF/JSON and TriG o Support for writing to any TextWriter rather than just to a StreamWriter . Storage Improvements o Support for Talis Platform o Support for Virtuoso Universal Server o Revised Store format offers improved read speeds and improved write speeds in some situations . ASP.Net Integration o Added some SPARQL Handlers allowing for the easy integration of SPARQL Endpoints into websites o Added some Resource lookup Handlers allowing for easy integration of linked data publishing into websites You can download the latest versions from http://www.dotnetrdf.org and there is now a User Guide located at http://www.dotnetrdf.org/content.asp?pageID=User%20Guide Rob Vesse dotNetRDF Lead Developer ================================================================ Developer Discussion & Feature Request - dot...@li... Bug Reports - dot...@li... User Help & Support - dot...@li... Website: http://www.dotnetrdf.org API: http://www.dotnetrdf.org/content.asp?pageID=API Intellisense API: http://www.dotnetrdf.org/api/ ================================================================ |