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: Penny, C. <Chr...@ds...> - 2014-01-13 06:04:07
|
UNCLASSIFIED Hi All, It appears as though the fragment part (# onwards) of the graphs BaseUri is not being saved to the Fuseki server. Below is a quick example to demonstrate what I mean. private void graphURIFragmentProblemExample(string fusekiTripleStore) { //Setup graph IGraph graph = new Graph(); graph.BaseUri = new Uri("http://test.com/test#graph1"); graph.NamespaceMap.AddNamespace("data", UriFactory.Create("http://test.com/test#")); //Create nodes and a tuple IUriNode subject1Node = graph.CreateUriNode("data:subject1"); IUriNode object1Node = graph.CreateUriNode("data:object1"); IUriNode subject2Node = graph.CreateUriNode("data:subject2"); IUriNode object2Node = graph.CreateUriNode("data:object2"); IUriNode predicateNode = graph.CreateUriNode("data:predicate"); graph.Assert(new Triple(subject1Node, object1Node, predicateNode)); graph.Assert(new Triple(subject2Node, object2Node, predicateNode)); //Print out local graph System.Console.WriteLine("Printing local graph"); CompressingTurtleWriter writer = new CompressingTurtleWriter(); var sw = new System.IO.StringWriter(); writer.Save(graph, sw); Console.WriteLine(sw.ToString()); //Save graph to triplestore FusekiConnector store = new FusekiConnector(new Uri(fusekiTripleStore)); store.SaveGraph(graph); //Query store for all data, including the graph it belongs to StringBuilder sb = new StringBuilder(); sb.Append("select ?graph ?subject ?predicate ?object"+Environment.NewLine); sb.Append("where" + Environment.NewLine); sb.Append("{" + Environment.NewLine); sb.Append("GRAPH ?graph" + Environment.NewLine); sb.Append("{" + Environment.NewLine); sb.Append("?subject ?predicate ?object" + Environment.NewLine); sb.Append("}" + Environment.NewLine); sb.Append("}" + Environment.NewLine); Object results = store.Query(sb.ToString()); SparqlResultSet rset = (SparqlResultSet)results; //Print results System.Console.WriteLine("Printing query results"); foreach (SparqlResult r in rset) { System.Console.WriteLine(r.ToString()); } } Output: Printing local graph @base <http://test.com/test#graph1>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. @prefix xsd: <http://www.w3.org/2001/XMLSchema#>. @prefix data: <http://test.com/test#>. <http://test.com/test#subject1> <http://test.com/test#object1> <http://test.com/test#predicate>. <http://test.com/test#subject2> <http://test.com/test#object2> <http://test.com/test#predicate>. Printing query results ?graph = http://test.com/test , ?subject = http://test.com/test#subject1 , ?predicate = http://test.com/test#object1 , ?object = http://test.com/test#predicate ?graph = http://test.com/test , ?subject = http://test.com/test#subject2 , ?predicate = http://test.com/test#object2 , ?object = http://test.com/test#predicate As can be seen, the #graph1 component of the graph's URI hasn't been bound to the ?graph variable of the query (although it is present in the local graph object). Additionally, I tried doing the above with Apache-Jena components. Using s-query to execute following query confirms the missing fragment from the graph URI: Command line: ${JENA_HOME}/s-query --service ${FUSEKI_SERVER}/query --query ${TURTLE_HOME}/query.arq Where query.arq contains the query: select ?g ?s ?p ?o where { GRAPH ?g { ?s ?p ?o . } } The results are as follows (note the missing #graph1): { "head": { "vars": [ "g" , "s" , "p" , "o" ] } , "results": { "bindings": [ { "g": { "type": "uri" , "value": "http://test.com/test" } , "s": { "type": "uri" , "value": "http://test.com/test#subject1" } , "p": { "type": "uri" , "value": "http://test.com/test#object1" } , "o": { "type": "uri" , "value": "http://test.com/test#predicate" } } , { "g": { "type": "uri" , "value": "http://test.com/test" } , "s": { "type": "uri" , "value": "http://test.com/test#subject2" } , "p": { "type": "uri" , "value": "http://test.com/test#object2" } , "o": { "type": "uri" , "value": "http://test.com/test#predicate" } } ] } } In an attempt to eliminate Fuseki as a souce of the problem I inserted the same triples into the same graph using Apache-Jena: Command line: ${JENA_HOME}/s-put ${FUSEKI_SERVER}/data http://test.com/test#graph1 named_graph_bug_example.ttl Where "named_graph_bug_example.ttl" contains the following content: PREFIX data: <http://test.com/test#> data:subject1 data:predicate data:object1 . data:subject2 data:predicate data:object2 . Rerunning the original command now shows the new tuples in a graph with the correct URI (alongside the old tuples): { "head": { "vars": [ "g" , "s" , "p" , "o" ] } , "results": { "bindings": [ { "g": { "type": "uri" , "value": "http://test.com/test" } , "s": { "type": "uri" , "value": "http://test.com/test#subject1" } , "p": { "type": "uri" , "value": "http://test.com/test#object1" } , "o": { "type": "uri" , "value": "http://test.com/test#predicate" } } , { "g": { "type": "uri" , "value": "http://test.com/test#graph1" } , "s": { "type": "uri" , "value": "http://test.com/test#subject1" } , "p": { "type": "uri" , "value": "http://test.com/test#predicate" } , "o": { "type": "uri" , "value": "http://test.com/test#object1" } } , { "g": { "type": "uri" , "value": "http://test.com/test#graph1" } , "s": { "type": "uri" , "value": "http://test.com/test#subject2" } , "p": { "type": "uri" , "value": "http://test.com/test#predicate" } , "o": { "type": "uri" , "value": "http://test.com/test#object2" } } , { "g": { "type": "uri" , "value": "http://test.com/test" } , "s": { "type": "uri" , "value": "http://test.com/test#subject2" } , "p": { "type": "uri" , "value": "http://test.com/test#object2" } , "o": { "type": "uri" , "value": "http://test.com/test#predicate" } } ] } } It's entirely possible that I've misunderstood how to set a graph's URI in dotnetRDF, but it looks like there may be another problem here. Let me know if you need any more information. Regards, Chris. IMPORTANT: This email remains the property of the Department of Defence and is subject to the jurisdiction of section 70 of the Crimes Act 1914. If you have received this email in error, you are requested to contact the sender and delete the email. |
From: Eugen F <feu...@ya...> - 2013-12-22 13:26:54
|
When using store manager(query/update endpoint) with custom sparql queries it always performs parsing because SparqlConnector _skipLocalParsing is always false(UI code skips parsing, but the connector enforces it). Maybe it's better for the connector to catch parsing error and default to no parsing (same as UI/manager code). |
From: Rob V. <rv...@do...> - 2013-11-19 11:07:27
|
Stefan >From the error messages you have shown this appears to be caused by the network configuration of your environment and network. Why queries should work and updates not is unclear to me, it would be helpful if you could provide HTTP traces as described in the User Guide - https://bitbucket.org/dotnetrdf/dotnetrdf/wiki/HowTo/Debug%20HTTP%20Communic ation.wiki – as without these there isn't anything for us to investigate Thanks, Rob p.s. This is a subscription based list, I have moderated your email through but please subscribe via https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs to ensure you see any further responses. From: Stefan Scheglmann <sc...@un...> Reply-To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Date: Tuesday, 19 November 2013 10:31 To: <dot...@li...> Subject: [dotNetRDF-bugs] ERROR: The requested URL could not be retrieved SPARQL Update SesameHttpProtocolConnector > Hi, > > currently i am playing around with dotnetrdf from within Fsharp, using a > sesame store as backend. > First, i initialized the connection to the server as follows: > let sescon = > SesameHttpProtocolConnector(„192.168.0.1:8080/openrdf-sesame","test") > The domain was not set in the resolve.conf file of the server. > For querying this works fine, but as soon as i try to use a SPARQL Update > like: > sescon.Update("INSERT DATA {<http://example.org/ns#jim> > <http://www.w3.org/1999/02/22-rdf-syntax-ns#Type> > <http://example.org/ns#person>}“) > i always get an the following RDFStorageException . > > A HTTP error occured while updating the Store. Store returned the following > error message: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" > "http://www.w3.org/TR/html4/loose.dtd"> > <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; > charset=iso-8859-1"> > <TITLE>ERROR: The requested URL could not be retrieved</TITLE> > <STYLE > type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-ser > if}PRE{font-family:sans-serif}--></STYLE> > </HEAD><BODY> > <H1>ERROR</H1> > <H2>The requested URL could not be retrieved</H2> > <HR noshade size="1px"> > <P> > While trying to process the request: > <PRE> > POST /openrdf-sesame/repositories/test/statements HTTP/1.1 > Accept: */* > Content-Type: application/x-www-form-urlencoded > Host: 141.26.24.134:8080 > Content-Length: 52 > Expect: 100-continue > Proxy-Connection: Keep-Alive > </PRE> > <P> > The following error was encountered: > <UL><LI><STRONG> > Invalid Request > </STRONG></UL><P> > Some aspect of the HTTP Request is invalid. Possible problems: > <UL> > <LI>Missing or unknown request method > <LI>Missing URL > <LI>Missing HTTP Identifier (HTTP/1.0) > <LI>Request is too large > <LI>Content-Length missing for POST or PUT requests > <LI>Illegal character in hostname; underscores are not allowed > </UL> > <P>Your cache administrator is <A > HREF="mailto:ad...@un...">ad...@un...</A>. > <BR clear="all"> > <HR noshade size="1px"> > <ADDRESS> > Generated Tue, 19 Nov 2013 09:06:01 GMT by cache (squid/2.7.STABLE5) > </ADDRESS> > </BODY></HTML> > After looking into the sesame-logs and some trial and error, i came up with > the following solution. > Luckily i could easily get a domain name for my server, setting the domain in > the resolve.conf and instantiating the connection using the domain-name then > works. > SesameHttpProtocolConnector("http://sesame.example.org:8080/openrdf-sesame","t > est“) > But this might cause problems if you are not able to get a proper domain name > and do not want to run your own DNS. > Maybe someone should look into this. > > Greets > Stefan > > > -- > Stefan Scheglmann > WeST Research Group > University of Koblenz-Landau > Universitaetsstrasse 1 > D-56070 Koblenz > Tel.: + 49 261 287 2718 > Fax: + 49 261 287 100 2718 > sc...@un... > http://west.uni-koblenz.de <http://west.uni-koblenz.de/> > > ------------------------------------------------------------------------------ > Shape the Mobile Experience: Free Subscription Software experts and > developers: Be at the forefront of tech innovation. Intel(R) Software > Adrenaline delivers strategic insight and game-changing conversations that > shape the rapidly evolving mobile landscape. Sign up now. > http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk___ > ____________________________________________ dotNetRDF-bugs mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Stefan S. <sc...@un...> - 2013-11-19 10:31:34
|
Hi, currently i am playing around with dotnetrdf from within Fsharp, using a sesame store as backend. First, i initialized the connection to the server as follows: let sescon = SesameHttpProtocolConnector(„192.168.0.1:8080/openrdf-sesame","test") The domain was not set in the resolve.conf file of the server. For querying this works fine, but as soon as i try to use a SPARQL Update like: sescon.Update("INSERT DATA {<http://example.org/ns#jim> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Type> <http://example.org/ns#person>}“) i always get an the following RDFStorageException . A HTTP error occured while updating the Store. Store returned the following error message: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <TITLE>ERROR: The requested URL could not be retrieved</TITLE> <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE> </HEAD><BODY> <H1>ERROR</H1> <H2>The requested URL could not be retrieved</H2> <HR noshade size="1px"> <P> While trying to process the request: <PRE> POST /openrdf-sesame/repositories/test/statements HTTP/1.1 Accept: */* Content-Type: application/x-www-form-urlencoded Host: 141.26.24.134:8080 Content-Length: 52 Expect: 100-continue Proxy-Connection: Keep-Alive </PRE> <P> The following error was encountered: <UL><LI><STRONG> Invalid Request </STRONG></UL><P> Some aspect of the HTTP Request is invalid. Possible problems: <UL> <LI>Missing or unknown request method <LI>Missing URL <LI>Missing HTTP Identifier (HTTP/1.0) <LI>Request is too large <LI>Content-Length missing for POST or PUT requests <LI>Illegal character in hostname; underscores are not allowed </UL> <P>Your cache administrator is <A HREF="mailto:ad...@un...">ad...@un...</A>. <BR clear="all"> <HR noshade size="1px"> <ADDRESS> Generated Tue, 19 Nov 2013 09:06:01 GMT by cache (squid/2.7.STABLE5) </ADDRESS> </BODY></HTML> After looking into the sesame-logs and some trial and error, i came up with the following solution. Luckily i could easily get a domain name for my server, setting the domain in the resolve.conf and instantiating the connection using the domain-name then works. SesameHttpProtocolConnector("http://sesame.example.org:8080/openrdf-sesame","test“) But this might cause problems if you are not able to get a proper domain name and do not want to run your own DNS. Maybe someone should look into this. Greets Stefan -- Stefan Scheglmann WeST Research Group University of Koblenz-Landau Universitaetsstrasse 1 D-56070 Koblenz Tel.: + 49 261 287 2718 Fax: + 49 261 287 100 2718 sc...@un... http://west.uni-koblenz.de |
From: Rob V. <rv...@do...> - 2013-11-18 11:35:26
|
Hi All Just prior to the weekend we released dotNetRDF 1.0.2 which is a minor bug fix release, it fixes the following important bugs: * CORE-378 OOM when parsing large RDF/XML inputs * VIRT-383 In some cases Virtuoso transactions are not cleaned up * Portable Class Library builds were not included in NuGet packages The release is available via all the usual avenues dotNetRDF website [1], SourceForge [2], BitBucket [3], CodePlex [4] and NuGet Thanks as always to everyone who submitted bug reports and code contributions, Regards, Rob Vesse [1] http://www.dotnetrdf.org/content.asp?pageID=Download [2] http://sourceforge.net/projects/dotnetrdf [3] http://bitbucket.org/dotnetrdf/dotnetrdf/downloads [4] http://dotnetrdf.codeplex.com |
From: Rob V. <rv...@do...> - 2013-10-10 16:03:32
|
Hi All We're pleased to announce the long overdue release of dotNetRDF 1.0.1, this is available through all the usual channels (SourceForge [1], CodePlex [2], BitBucket [3], Project Website [4]) and via NuGet packages This is primarily a maintenance and bug fix release with some minor new features such as Portable Class Library builds and Stardog 2.0 support. You can read the blog post for this release at [5]. Thanks as always to everyone who reported bugs, submitted patches or otherwise helped out with the release Best Regards, Rob Vesse [1] http://sourceforge.net/projects/dotnetrdf [2] http://dotnetrdf.codeplex.com [3] https://bitbucket.org/dotnetrdf/dotnetrdf/downloads [4] http://www.dotnetrdf.org/content.asp?pageID=Download [5] http://www.dotnetrdf.org/blogitem.asp?blogID=76 |
From: Rob V. <rv...@do...> - 2013-09-18 00:44:47
|
Matthias Do you have a specific example query that reproduces the problem? Looking at the code we already escape code points above 127 into their \u escaped form so the query texts we send should be entirely within the Latin 1 range (aka ISO-8859-1), so it's possible that either we are escaping them incorrectly or Sesame is unescaping incorrectly. One possibility is that you are using characters that can't be encoded in a single UTF-8 byte so they are being encoded as a surrogate pair in UTF-8 (I.e. two bytes) which could be breaking our encoding or Sesame's decoding. If you can provide an example query then I can reproduce the exact circumstances and investigate further, I have an (old) existing test for UTF-8 in queries to Sesame which demonstrates that it does work correctly at least for characters that can be represented as a single UTF-8 byte. I've added a new test case with some Chinese characters and that functions correctly for me so having an example that fails for you is necessary for me to debug further. Also it would be useful to know what version of Sesame you are communicating with I.e. what version of the Sesame software is the server running? Rob On 9/12/13 3:23 PM, "Rob Vesse" <rv...@do...> wrote: >Matthias > >Thanks for reporting this, filed as CORE-374 [1] > >I'm currently in the midst of relocating countries (and continents) so >likely won't get to this in the next couple of weeks but will aim to have >it fixed in early October and released as part of the 1.0.1 release > >Thanks, > >Rob > >[1]: http://dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=374 > >On 9/12/13 2:21 AM, "Schwalbe, Matthias (SQAS 1)" ><mat...@cr...> wrote: > >>Oops, >> >>Found out I should use Copy and Paste with more care: >>Fixed pastes in original mail further down. >> >>Thanks >> >>Matthias Schwalbe >>IT Services >>+41 44 333 86 10 (*413 8610) >> >>From: Schwalbe, Matthias (SQAS 1) >>Sent: Donnerstag, 12. September 2013 09:47 >>To: 'dot...@li...' >>Cc: Fichtner, Johann (SQAS 32) >>Subject: Encoding problem with SesameHttpProtocolVersion6Connector and >>Update(...) >> >>Hi Rob, >> >>There is a (simple) problem with SesameHttpProtocolVersion6Connector (and >>potentially other Connectors) >>in calls to both the synchronous and asynchronous versions of the >>Update(...) function. >> >>The SPARQL update queries get encoded in url encoded web form format: >>httpRequest.ContentType = "application/x-www-form-urlencoded"; >> >>The character set used by: >>builder.Append(HttpUtility.UrlEncode(this.EscapeQuery(sparqlUpdate))); >> >>UrlEncode(...) is utf-8, but the default format for decoding >>application/x-www-form-urlencoded, >>according to WEB documentation, is iso8859-1 which leads to garbled >>literal texts. >>This happens once text in the query uses characters outside the Latin >>character range, e.g. Chinese >>character, accented letters, umlauts. >> >>The simplest way to fix this would be to explicitly also state the >>character encoding used: >>httpRequest.ContentType = "application/x-www-form-urlencoded; >>charset=utf-8"; >> >>This character set it always used by UrlEncode(...) >> >>Thanks a lot >> >>sincerely yours >> >>PS: I used the latest (yesterday) dotNetRdf build from NuGet >> >>Matthias Schwalbe >>CREDIT SUISSE AG >>CREDIT SUISSE | IT Services, SQAS 1 >>Uetlibergstr. 231 (A/B+ZN) | 8070 Zürich | Switzerland >>Phone +41 44 333 86 10 >>mat...@cr... | www.credit-suisse.com >> >> >>------------------------------------------------------------------------- >>- >>---- >>How ServiceNow helps IT people transform IT departments: >>1. Consolidate legacy IT systems to a single system of record for IT >>2. Standardize and globalize service processes across IT >>3. Implement zero-touch automation to replace manual, redundant tasks >>http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clkt >>r >>k >>_______________________________________________ >>dotNetRDF-bugs mailing list >>dot...@li... >>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > > > > > >-------------------------------------------------------------------------- >-- >-- >How ServiceNow helps IT people transform IT departments: >1. Consolidate legacy IT systems to a single system of record for IT >2. Standardize and globalize service processes across IT >3. Implement zero-touch automation to replace manual, redundant tasks >http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktr >k >_______________________________________________ >dotNetRDF-bugs mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > |
From: Rob V. <rv...@do...> - 2013-09-12 22:23:55
|
Matthias Thanks for reporting this, filed as CORE-374 [1] I'm currently in the midst of relocating countries (and continents) so likely won't get to this in the next couple of weeks but will aim to have it fixed in early October and released as part of the 1.0.1 release Thanks, Rob [1]: http://dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=374 On 9/12/13 2:21 AM, "Schwalbe, Matthias (SQAS 1)" <mat...@cr...> wrote: >Oops, > >Found out I should use Copy and Paste with more care: >Fixed pastes in original mail further down. > >Thanks > >Matthias Schwalbe >IT Services >+41 44 333 86 10 (*413 8610) > >From: Schwalbe, Matthias (SQAS 1) >Sent: Donnerstag, 12. September 2013 09:47 >To: 'dot...@li...' >Cc: Fichtner, Johann (SQAS 32) >Subject: Encoding problem with SesameHttpProtocolVersion6Connector and >Update(...) > >Hi Rob, > >There is a (simple) problem with SesameHttpProtocolVersion6Connector (and >potentially other Connectors) >in calls to both the synchronous and asynchronous versions of the >Update(...) function. > >The SPARQL update queries get encoded in url encoded web form format: >httpRequest.ContentType = "application/x-www-form-urlencoded"; > >The character set used by: >builder.Append(HttpUtility.UrlEncode(this.EscapeQuery(sparqlUpdate))); > >UrlEncode(...) is utf-8, but the default format for decoding >application/x-www-form-urlencoded, >according to WEB documentation, is iso8859-1 which leads to garbled >literal texts. >This happens once text in the query uses characters outside the Latin >character range, e.g. Chinese >character, accented letters, umlauts. > >The simplest way to fix this would be to explicitly also state the >character encoding used: >httpRequest.ContentType = "application/x-www-form-urlencoded; >charset=utf-8"; > >This character set it always used by UrlEncode(...) > >Thanks a lot > >sincerely yours > >PS: I used the latest (yesterday) dotNetRdf build from NuGet > >Matthias Schwalbe >CREDIT SUISSE AG >CREDIT SUISSE | IT Services, SQAS 1 >Uetlibergstr. 231 (A/B+ZN) | 8070 Zürich | Switzerland >Phone +41 44 333 86 10 >mat...@cr... | www.credit-suisse.com > > >-------------------------------------------------------------------------- >---- >How ServiceNow helps IT people transform IT departments: >1. Consolidate legacy IT systems to a single system of record for IT >2. Standardize and globalize service processes across IT >3. Implement zero-touch automation to replace manual, redundant tasks >http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktr >k >_______________________________________________ >dotNetRDF-bugs mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Schwalbe, M. (S. 1) <mat...@cr...> - 2013-09-12 09:22:07
|
Oops, Found out I should use Copy and Paste with more care: Fixed pastes in original mail further down. Thanks Matthias Schwalbe IT Services +41 44 333 86 10 (*413 8610) From: Schwalbe, Matthias (SQAS 1) Sent: Donnerstag, 12. September 2013 09:47 To: 'dot...@li...' Cc: Fichtner, Johann (SQAS 32) Subject: Encoding problem with SesameHttpProtocolVersion6Connector and Update(...) Hi Rob, There is a (simple) problem with SesameHttpProtocolVersion6Connector (and potentially other Connectors) in calls to both the synchronous and asynchronous versions of the Update(...) function. The SPARQL update queries get encoded in url encoded web form format: httpRequest.ContentType = "application/x-www-form-urlencoded"; The character set used by: builder.Append(HttpUtility.UrlEncode(this.EscapeQuery(sparqlUpdate))); UrlEncode(...) is utf-8, but the default format for decoding application/x-www-form-urlencoded, according to WEB documentation, is iso8859-1 which leads to garbled literal texts. This happens once text in the query uses characters outside the Latin character range, e.g. Chinese character, accented letters, umlauts. The simplest way to fix this would be to explicitly also state the character encoding used: httpRequest.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; This character set it always used by UrlEncode(...) Thanks a lot sincerely yours PS: I used the latest (yesterday) dotNetRdf build from NuGet Matthias Schwalbe CREDIT SUISSE AG CREDIT SUISSE | IT Services, SQAS 1 Uetlibergstr. 231 (A/B+ZN) | 8070 Zürich | Switzerland Phone +41 44 333 86 10 mat...@cr... | www.credit-suisse.com |
From: Schwalbe, M. (S. 1) <mat...@cr...> - 2013-09-12 07:59:41
|
Hi Rob, There is a (simple) problem with SesameHttpProtocolVersion6Connector (and potentially other Connectors) in calls to both the synchronous and asynchronous versions of the Update(...) function. The SPARQL update queries get encoded in url encoded web form format: httpRequest.ContentType<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System:4.0.0.0:b77a5c561934e089/System.Net.WebRequest/property:ContentType:String> = "application/x-www-form-urlencoded"; The character set used by: builder.Append<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:4.0.0.0:b77a5c561934e089/System.Text.StringBuilder/Append(String):System.Text.StringBuilder>(HttpUtility<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Web:4.0.0.0:b03f5f7f11d50a3a/System.Web.HttpUtility>.UrlEncode<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Web:4.0.0.0:b03f5f7f11d50a3a/System.Web.HttpUtility/UrlEncode(String):String>(this.EscapeQuery<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://dotNetRDF:0.9.0.0:6055ffe4c97cc780/VDS.RDF.Storage.BaseSesameHttpProtocolConnector/EscapeQuery(String):String>(sparqlUpdate))); UrlEncode(...) is utf-8, but the default format for decoding application/x-www-form-urlencoded, according to WEB documentation, is iso8859-1 which leads to garbled literal texts. This happens once text in the query uses characters outside the Latin character range, e.g. Chinese character, accented letters, umlauts. The simplest way to fix this would be to explicitly also state the character encoding used: httpRequest.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; This character set it always used by UrlEncode(...) Thanks a lot sincerely yours PS: I used the latest (yesterday) dotNetRdf build from NuGet Matthias Schwalbe CREDIT SUISSE AG CREDIT SUISSE | IT Services, SQAS 1 Uetlibergstr. 231 (A/B+ZN) | 8070 Zürich | Switzerland Phone +41 44 333 86 10 mat...@cr...<mailto:mat...@cr...> | www.credit-suisse.com<http://www.credit-suisse.com> |
From: Rob V. <rv...@do...> - 2013-08-13 23:08:42
|
Hi Alan I'm afraid I don't have specific examples of using dotNetRDF with Open Calais output. Can you show the code you have tried and the error messages you get? Without these I can't really help you any further. Regards, Rob Vesse From: "Jackson, Alan" <Ala...@We...> Reply-To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Date: Tuesday, August 13, 2013 9:19 AM To: "dot...@li..." <dot...@li...>, "dot...@li..." <dot...@li...> Subject: [dotNetRDF-bugs] OpenCalais to dotNetRDF examples > Hello, > > I am hoping that you can help. I am looking for some examples on taking > output from OpenCalais to pass in as input into dotNetRDF. Invariable, I get > errors about either guess the wrong format type, or complaining at the URI > being invalid in the output from OpenCalais. > > Do you have any examples that I can work from? > > I looked at this forum question, but I am not looking to have to store the > OpenCalais output to a temp file. > > http://stackoverflow.com/questions/2671325/opencalais-parse-rdf-in-net > > > Alan > M:Ala...@We... <mailto:Ala...@We...> > P: 610.701.3073 > > > CONFIDENTIALITY: This email and attachments may contain information which is > confidential and proprietary. Disclosure or use of any such confidential or > proprietary information without the written permission of Weston Solutions, > Inc. is strictly prohibited. If you received this email in error, please > notify the sender by return e-mail and delete this email from your system. > Thank you. > > ------------------------------------------------------------------------------ > Get 100% visibility into Java/.NET code with AppDynamics Lite! It's a free > troubleshooting tool designed for production. Get down to code-level detail > for bottlenecks, with <2% overhead. Download for free and get started > troubleshooting in minutes. > http://pubads.g.doubleclick.net/gampad/clk?id=48897031&iu=/4140/ostg.clktrk___ > ____________________________________________ dotNetRDF-bugs mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Jackson, A. <Ala...@We...> - 2013-08-13 16:32:33
|
Hello, I am hoping that you can help. I am looking for some examples on taking output from OpenCalais to pass in as input into dotNetRDF. Invariable, I get errors about either guess the wrong format type, or complaining at the URI being invalid in the output from OpenCalais. Do you have any examples that I can work from? I looked at this forum question, but I am not looking to have to store the OpenCalais output to a temp file. http://stackoverflow.com/questions/2671325/opencalais-parse-rdf-in-net Alan M:Ala...@We...<mailto:Ala...@We...> P: 610.701.3073 CONFIDENTIALITY: This email and attachments may contain information which is confidential and proprietary. Disclosure or use of any such confidential or proprietary information without the written permission of Weston Solutions, Inc. is strictly prohibited. If you received this email in error, please notify the sender by return e-mail and delete this email from your system. Thank you. |
From: Tomasz P. <tom...@gm...> - 2013-07-29 19:11:40
|
Oh and by the way any idea why the decoding fails on TeamCity but works fine on my machine? If fails on line 938 [1]. I guess the percent sign is to blame but I'm baffled... Thanks, Tom [1] https://bitbucket.org/dotnetrdf/dotnetrdf/src/b099e6120b29a9a0a83a1425c1fae6e73f81aa18/Testing/unittest/Core/BasicTests1.cs?at=default#cl-938 On Mon, Jul 29, 2013 at 9:05 PM, Tomasz Pluskiewicz <tom...@gm...> wrote: > All right. > > I will fix the hyphen encoding. > > Regarding spaces and multiple encodings I was just wondering whether > the intention was to implement the HttpUtility to be compatible with > the System one or more standards compliant. I understand that the > latter is intuitively more desirable but it's not so simple. If so I > guess it should remain as is but the fact should be clearly > documented. > > Tom > > On Mon, Jul 29, 2013 at 6:47 PM, Rob Vesse <rv...@do...> wrote: >> Comments inline: >> >> On 7/28/13 7:32 PM, "Tomasz Pluskiewicz" <tom...@gm...> >> wrote: >> >>>Hi Rob >>> >>>I've noticed a problem with a portable library test on TeamCity: >>>http://ci.dotnetrdf.org/viewLog.html?buildId=432&tab=buildResultsDiv&build >>>TypeId=bt2#testNameId1576347966166389640 >>> >>>I've been trying to crack this and for that I am refactoring this code >>>so that there are some actual assertions and I've noticed some >>>discrepancies between VDS.RDF.HttpUtility and System.Web.HttpUtility >>>UrlEncode method: >>> >>>1. The portable code encodes the hyphen sign, which System class leaves >>>intact >>>2. The portable code encodes spaces as %20 and System class encodes >>>spaces as + >>>3. The portable code leaves % intact and System class encodes % and %20 >>>Are these differences by design? >> >> Hyphen sign should probably be left alone, may be an error in the range of >> characters considered safe. >> >> While since that code was touched, 2 is better behavior because space as + >> is not strictly speaking a valid URL encoding and is more an archaic >> behavior or old browser and servers, %20 for spaces should be the norm. >> >> As for 3 that is trickier, URL encoding and decoding is very error prone >> if done multiple times. I thing my implementation left already percent >> encoded terms encoded (or at least if they looked like already encoded >> things) whereas the System implementation just re-encodes things if run >> multiple times. >> >> Rob >> >>> >>>Regards, >>>Tom >>> >>>-------------------------------------------------------------------------- >>>---- >>>See everything from the browser to the database with AppDynamics >>>Get end-to-end visibility with application monitoring from AppDynamics >>>Isolate bottlenecks and diagnose root cause in seconds. >>>Start your free trial of AppDynamics Pro today! >>>http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktr >>>k >>>_______________________________________________ >>>dotNetRDF-bugs mailing list >>>dot...@li... >>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >> >> >> >> >> >> ------------------------------------------------------------------------------ >> Get your SQL database under version control now! >> Version control is standard for application code, but databases havent >> caught up. So what steps can you take to put your SQL databases under >> version control? Why should you start doing it? Read more to find out. >> http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk >> _______________________________________________ >> dotNetRDF-develop mailing list >> dot...@li... >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop |
From: Tomasz P. <tom...@gm...> - 2013-07-29 19:05:49
|
All right. I will fix the hyphen encoding. Regarding spaces and multiple encodings I was just wondering whether the intention was to implement the HttpUtility to be compatible with the System one or more standards compliant. I understand that the latter is intuitively more desirable but it's not so simple. If so I guess it should remain as is but the fact should be clearly documented. Tom On Mon, Jul 29, 2013 at 6:47 PM, Rob Vesse <rv...@do...> wrote: > Comments inline: > > On 7/28/13 7:32 PM, "Tomasz Pluskiewicz" <tom...@gm...> > wrote: > >>Hi Rob >> >>I've noticed a problem with a portable library test on TeamCity: >>http://ci.dotnetrdf.org/viewLog.html?buildId=432&tab=buildResultsDiv&build >>TypeId=bt2#testNameId1576347966166389640 >> >>I've been trying to crack this and for that I am refactoring this code >>so that there are some actual assertions and I've noticed some >>discrepancies between VDS.RDF.HttpUtility and System.Web.HttpUtility >>UrlEncode method: >> >>1. The portable code encodes the hyphen sign, which System class leaves >>intact >>2. The portable code encodes spaces as %20 and System class encodes >>spaces as + >>3. The portable code leaves % intact and System class encodes % and %20 >>Are these differences by design? > > Hyphen sign should probably be left alone, may be an error in the range of > characters considered safe. > > While since that code was touched, 2 is better behavior because space as + > is not strictly speaking a valid URL encoding and is more an archaic > behavior or old browser and servers, %20 for spaces should be the norm. > > As for 3 that is trickier, URL encoding and decoding is very error prone > if done multiple times. I thing my implementation left already percent > encoded terms encoded (or at least if they looked like already encoded > things) whereas the System implementation just re-encodes things if run > multiple times. > > Rob > >> >>Regards, >>Tom >> >>-------------------------------------------------------------------------- >>---- >>See everything from the browser to the database with AppDynamics >>Get end-to-end visibility with application monitoring from AppDynamics >>Isolate bottlenecks and diagnose root cause in seconds. >>Start your free trial of AppDynamics Pro today! >>http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktr >>k >>_______________________________________________ >>dotNetRDF-bugs mailing list >>dot...@li... >>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > > > > > > ------------------------------------------------------------------------------ > Get your SQL database under version control now! > Version control is standard for application code, but databases havent > caught up. So what steps can you take to put your SQL databases under > version control? Why should you start doing it? Read more to find out. > http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk > _______________________________________________ > dotNetRDF-develop mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop |
From: Rob V. <rv...@do...> - 2013-07-29 17:29:45
|
Comments inline: On 7/28/13 7:32 PM, "Tomasz Pluskiewicz" <tom...@gm...> wrote: >Hi Rob > >I've noticed a problem with a portable library test on TeamCity: >http://ci.dotnetrdf.org/viewLog.html?buildId=432&tab=buildResultsDiv&build >TypeId=bt2#testNameId1576347966166389640 > >I've been trying to crack this and for that I am refactoring this code >so that there are some actual assertions and I've noticed some >discrepancies between VDS.RDF.HttpUtility and System.Web.HttpUtility >UrlEncode method: > >1. The portable code encodes the hyphen sign, which System class leaves >intact >2. The portable code encodes spaces as %20 and System class encodes >spaces as + >3. The portable code leaves % intact and System class encodes % and %20 >Are these differences by design? Hyphen sign should probably be left alone, may be an error in the range of characters considered safe. While since that code was touched, 2 is better behavior because space as + is not strictly speaking a valid URL encoding and is more an archaic behavior or old browser and servers, %20 for spaces should be the norm. As for 3 that is trickier, URL encoding and decoding is very error prone if done multiple times. I thing my implementation left already percent encoded terms encoded (or at least if they looked like already encoded things) whereas the System implementation just re-encodes things if run multiple times. Rob > >Regards, >Tom > >-------------------------------------------------------------------------- >---- >See everything from the browser to the database with AppDynamics >Get end-to-end visibility with application monitoring from AppDynamics >Isolate bottlenecks and diagnose root cause in seconds. >Start your free trial of AppDynamics Pro today! >http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktr >k >_______________________________________________ >dotNetRDF-bugs mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Tomasz P. <tom...@gm...> - 2013-07-28 18:33:41
|
Hi Rob I've noticed a problem with a portable library test on TeamCity: http://ci.dotnetrdf.org/viewLog.html?buildId=432&tab=buildResultsDiv&buildTypeId=bt2#testNameId1576347966166389640 I've been trying to crack this and for that I am refactoring this code so that there are some actual assertions and I've noticed some discrepancies between VDS.RDF.HttpUtility and System.Web.HttpUtility UrlEncode method: 1. The portable code encodes the hyphen sign, which System class leaves intact 2. The portable code encodes spaces as %20 and System class encodes spaces as + 3. The portable code leaves % intact and System class encodes % and %20 Are these differences by design? Regards, Tom |
From: Rob V. <rv...@do...> - 2013-05-07 22:48:05
|
Hi All Some of you may already have seen the announcement via other channels but dotNetRDF 1.0.0 has finally been released as of yesterday. It is available via all the normal channels website, SourceForge, BitBucket, CodePlex and NuGet. You can view the full release announcement on our blog at http://www.dotnetrdf.org/blogitem.asp?blogID=75 Highlights of this release include a variety of performance and bug fixes but also some minor new features: * Full support for the W3C Candidate Recommendation for Turtle (Feb 19th 2013) * New instance mode for simplified Configuration API usage * New ReadWriteSparqlConnector for connecting to arbitrary triple stores which provide both a Query and Update endpoint I personally would like to reiterate a huge thank you to both our developers and everyone in the community who has contributed to the project in any shape or form. You guys have helped make dotNetRDF what is today and grow from an academic side project to the de factor standard for developing RDF and SPARQL applications on the .Net Platform. Thanks for all your contributions and I hope many of you will continue to contribute as we move forward with dotNetRDF, we have some cool new features planned which we hope to start getting in your hands soon! Rob Vesse |
From: Rob V. <rv...@do...> - 2013-04-29 16:44:22
|
Hi What version of dotNetRDF are you using? If you can't find TreeIndexedTripleCollection then you are likely using a significantly out of date version of dotNetRDF since that was added back in 0.7.1 (July 2012) and we are currently on 0.9.0 (Jan 2013) dotNetRDF's source is now in Mercurial (https://bitbucket.org/dotnetrdf/dotnetrdf/) so it is possible you are also looking at the old SVN source Rob ps This mailing list is subscription based, if you intend on sending more messages please subscribe to the mailing list properly per the instructions that the mailing list system would have sent you when your message was held for moderation originally From: Jimay <jim...@gm...> Reply-To: 290105757 <290...@qq...>, dotNetRDF Bug Report tracking and resolution <dot...@li...> Date: Friday, April 26, 2013 6:13 PM To: dotnetrdf-bugs <dot...@li...> Subject: [dotNetRDF-bugs] need open TreeIndexedTripleCollection.cs > Hello, > > Thanks for your project. I am so glad when I find the files. But when I learn > about it through "hello world" project, it need the file > 'TreeIndexedTripleCollection.cs ' to new Graph(). I can't find the file even > in the source dotNetRdf. > > Please help me! > > > > > Dr. Jimay Li, Associate Professor > College of Information Sciences, Beijing Language and Culture University > email: lj...@bl...; jim...@gm... > Telephone: 86-10-82303673 > Address: #15 Xueyuan Road, Haidian District, Beijing 100083 China > ------------------------------------------------------------------------------ > Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only > SaaS-based application performance monitoring service that delivers powerful > full stack analytics. Optimize and monitor your browser, app, & servers with > just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! > http://p.sf.net/sfu/newrelic_d2d_apr__________________________________________ > _____ dotNetRDF-bugs mailing list dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Jimay <jim...@gm...> - 2013-04-27 01:14:18
|
Hello, Thanks for your project. I am so glad when I find the files. But when I learn about it through "hello world" project, it need the file 'TreeIndexedTripleCollection.cs ' to new Graph(). I can't find the file even in the source dotNetRdf. Please help me! Dr. Jimay Li, Associate Professor College of Information Sciences, Beijing Language and Culture University email: lj...@bl...; jim...@gm... Telephone: 86-10-82303673 Address: #15 Xueyuan Road, Haidian District, Beijing 100083 China |
From: Rob V. <rv...@do...> - 2013-04-12 21:49:48
|
I have now fixed the brute force generator and added unit tests specifically for it so as to verify that it does generate all possible mappings I will close out CORE-345 since this should now be completely resolved Rob From: Rob Vesse <rv...@do...> Reply-To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Date: Friday, April 12, 2013 2:14 PM To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Subject: Re: [dotNetRDF-bugs] Scope of autassigned bland node IDs > Hey Tom > > So I validated that those graphs were indeed equal > > Having gone through that process by hand I realized there was an additional > rules based mapping step we could be using that we weren't, with this in place > we now don't have to use the divide and conquer approach on any of your test > cases which will improve performance. > > All your tests cases now pass, if you come up with any more please go ahead > and add them. > > I will try and look more to figure out if the brute force generator is > generating sensible mappings but hopefully now very few graphs should ever > have to resort to that approach. > > Rob > > From: Rob Vesse <rv...@do...> > Reply-To: dotNetRDF Bug Report tracking and resolution > <dot...@li...> > Date: Friday, April 12, 2013 12:37 PM > To: dotNetRDF Bug Report tracking and resolution > <dot...@li...> > Subject: Re: [dotNetRDF-bugs] Scope of autassigned bland node IDs > >> Yes I realized that when I tried a pull again after sending the reply >> >> Ok so that case is bombing out on brute force mapping which would tend to >> indicate that there may be an issue there still >> >> At a glance the graphs look equivalent but I need to verify this by hand >> because the sub-graphs are too large and blank node heavy to easily verify >> whether they are equal and we are just not detecting it correctly or if they >> are non-equal >> >> Rob >> >> From: Tomek Pluskiewicz <to...@pl...> >> Reply-To: dotNetRDF Bug Report tracking and resolution >> <dot...@li...> >> Date: Friday, April 12, 2013 12:05 PM >> To: dotNetRDF Bug Report tracking and resolution >> <dot...@li...> >> Subject: Re: [dotNetRDF-bugs] Scope of autassigned bland node IDs >> >>> >>> I did with a little delay. Please check now. >>> >>> Tom >>> >>> On Apr 12, 2013 8:59 PM, "Rob Vesse" <rv...@do...> wrote: >>>> Ok >>>> >>>> Can you push the commits up so I can pull them down and take a look at the >>>> new test cases >>>> >>>> Rob >>>> >>>> On 4/12/13 11:55 AM, "Tomasz Pluskiewicz" <tom...@gm...> >>>> wrote: >>>> >>>>> >I've just committed more test cases. Out of the 6 none fail cause OOM >>>>> >anymore, which is marvellous. >>>>> > >>>>> >However case1 reports false but I'm positive these graphs are actually >>>>> >equal. >>>>> > >>>>> >Thanks, >>>>> >Tom >>>>> > >>>>> >On Fri, Apr 12, 2013 at 8:33 PM, Rob Vesse <rv...@do...> wrote: >>>>>> >> Those would be useful >>>>>> >> >>>>>> >> Btw I closed the issue branch so please just add the tests to default >>>>>> >> >>>>>> >> Rob >>>>>> >> >>>>>> >> On 4/12/13 11:23 AM, "Tomasz Pluskiewicz" >>>>>> <tom...@gm...> >>>>>> >> wrote: >>>>>> >> >>>>>>> >>>Hi Rob >>>>>>> >>> >>>>>>> >>>Thanks so much. And yes, I do have 4 or 5 cases which stumble on this >>>>>>> >>>same issue. I will add all these to the test fixture. >>>>>>> >>> >>>>>>> >>>Tom >>>>>>> >>> >>>>>>> >>>On Fri, Apr 12, 2013 at 8:20 PM, Rob Vesse <rv...@do...> >>>>>>> wrote: >>>>>>>> >>>> Hey Tom >>>>>>>> >>>> >>>>>>>> >>>> This should now be fixed for your test case though I am not 100% >>>>>>>> >>>>convinced >>>>>>>> >>>> that brute forcing is not still broken >>>>>>>> >>>> >>>>>>>> >>>> What I have done to fix this is to add an intermediate step >>>>>>>> between >>>>>>>> >>>>the >>>>>>>> >>>> rules based and brute force mapping which does a divide and >>>>>>>> conquer >>>>>>>> >>>> approach >>>>>>>> >>>> >>>>>>>> >>>> What this does is break the unmapped blank node portions of the >>>>>>>> graph >>>>>>>> >>>>into >>>>>>>> >>>> its constituent isolated sub-graphs (those that share no blank >>>>>>>> nodes) >>>>>>>> >>>>and >>>>>>>> >>>> then recursively calls Equals() on the candidate matches for the >>>>>>>> >>>> sub-graphs. This approach reduces the amount of work required and the >>>>>>>> >>>> likelihood of needing to brute force at all though we still fall back >>>>>>>> >>>>in >>>>>>>> >>>> the worst case. >>>>>>>> >>>> >>>>>>>> >>>> If you can come up with any more graphs that break GraphMatcher >>>>>>>> those >>>>>>>> >>>> would be much appreciated >>>>>>>> >>>> >>>>>>>> >>>> Rob >>>>>>>> >>>> >>>>>>>> >>>> On 4/12/13 10:25 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>>> >>>> >>>>>>>>> >>>>>s/not/now >>>>>>>>> >>>>> >>>>>>>>> >>>>>That should be "the test will now complete within the timeout" >>>>>>>>> >>>>> >>>>>>>>> >>>>>Rob >>>>>>>>> >>>>> >>>>>>>>> >>>>>On 4/12/13 10:23 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>>>> >>>>> >>>>>>>>>> >>>>>>Hey Tom >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>>So the logic for generating the brute force mappings was >>>>>>>>>> completely >>>>>>>>>> >>>>>>broken >>>>>>>>>> >>>>>>causing it to get stuck in a memory sucking spin cycle :( >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>>I rewrote the GenerateMappings() method from scratch to use yield >>>>>>>>>> >>>>>>return >>>>>>>>>> >>>>>>and the test will not complete within the timeout but it fails so I >>>>>>>>>> >>>>>>still >>>>>>>>>> >>>>>>need to dig further >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>>We may still be generating incorrect possible mappings or the logic >>>>>>>>>> >>>>>>for >>>>>>>>>> >>>>>>brute force may be flawed elsewhere >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>>Rob >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>>On 4/9/13 10:34 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>>>>> >>>>>> >>>>>>>>>>> >>>>>>>Hey Tom >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>The problem is that graph isomorphism is NP-hard so sometimes the >>>>>>>>>>> >>>>>>>only >>>>>>>>>>> >>>>>>>option we have is to attempt to brute force the problem >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>I've started added some Debug.WriteLine() to GraphMatcher to track >>>>>>>>>>> >>>>>>>down >>>>>>>>>>> >>>>>>>where things go wrong >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>For your graphs they may look trivially equal but to code >>>>>>>>>>> they are >>>>>>>>>>> >>>>>>>not, >>>>>>>>>>> >>>>>>>the reason this worked prior to 0.8.0 is that one of the >>>>>>>>>>> things we >>>>>>>>>>> >>>>>>>try >>>>>>>>>>> >>>>>>>is >>>>>>>>>>> >>>>>>>a trivial mapping (assume blank nodes have same IDs in both >>>>>>>>>>> graphs) >>>>>>>>>>> >>>>>>>so >>>>>>>>>>> >>>>>>>in >>>>>>>>>>> >>>>>>>previous releases you would likely have hit this case and >>>>>>>>>>> been fine. >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>You have 33 blank nodes in the graph of which only 6 are >>>>>>>>>>> uniquely >>>>>>>>>>> >>>>>>>identifiable and mappable. The matcher generates a candidate >>>>>>>>>>> >>>>>>>mapping >>>>>>>>>>> >>>>>>>for >>>>>>>>>>> >>>>>>>the whole graph but its best effort is incorrect, so then it falls >>>>>>>>>>> >>>>>>>back >>>>>>>>>>> >>>>>>>to >>>>>>>>>>> >>>>>>>brute force. I need to dig further into whether the >>>>>>>>>>> candidate >>>>>>>>>>> >>>>>>>mapping >>>>>>>>>>> >>>>>>>could be improved but this is not trivial to debug and will take >>>>>>>>>>> >>>>>>>some >>>>>>>>>>> >>>>>>>time >>>>>>>>>>> >>>>>>>to resolve. >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>We may be able to reduce the "memory leak" by using yield rather >>>>>>>>>>> >>>>>>>than >>>>>>>>>>> >>>>>>>pre-generating all possible mapping but this is a tricky >>>>>>>>>>> refactor, >>>>>>>>>>> >>>>>>>it's >>>>>>>>>>> >>>>>>>been a long time since I wrote the code originally and I >>>>>>>>>>> remember >>>>>>>>>>> >>>>>>>that >>>>>>>>>>> >>>>>>>doing the mapping in the yield form proved thorny at the time so I >>>>>>>>>>> >>>>>>>chose >>>>>>>>>>> >>>>>>>not to. The code itself for generating the mappings has some >>>>>>>>>>> >>>>>>>slightly >>>>>>>>>>> >>>>>>>strange things in it so I really need to spend a block of time >>>>>>>>>>> >>>>>>>refreshing >>>>>>>>>>> >>>>>>>myself on the logic there to check that it is sound before I >>>>>>>>>>> attempt >>>>>>>>>>> >>>>>>>to >>>>>>>>>>> >>>>>>>refactor. >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>Rob >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>On 4/7/13 11:20 AM, "Tomasz Pluskiewicz" >>>>>>>>>>> >>>>>>><tom...@gm...> >>>>>>>>>>> >>>>>>>wrote: >>>>>>>>>>> >>>>>>> >>>>>>>>>>>> >>>>>>>>Hm, I was wrong actually. >>>>>>>>>>>> >>>>>>>> >>>>>>>>>>>> >>>>>>>>I tried comparing the exact same graphs loaded from Turtle in >>>>>>>>>>>> >>>>>>>>dotNetRDF test project but I got the unit test wrong. >>>>>>>>>>>> >>>>>>>> >>>>>>>>>>>> >>>>>>>>I have added the CORE-345 bug and committed a failing test case >>>>>>>>>>>> >>>>>>>>[1]. >>>>>>>>>>>> >>>>>>>>Could you please have a look at this? >>>>>>>>>>>> >>>>>>>> >>>>>>>>>>>> >>>>>>>>Thanks, >>>>>>>>>>>> >>>>>>>>Tom >>>>>>>>>>>> >>>>>>>> >>>>>>>>>>>> >>>>>>>>[1]: >>>>>>>>>>>> >>>>>>>>https://bitbucket.org/dotnetrdf/dotnetrdf/commits/branch/CORE-345 >>>>>>>>>>>> >>>>>>>> >>>>>>>>>>>> >>>>>>>>On Sun, Apr 7, 2013 at 7:36 PM, Tomasz Pluskiewicz >>>>>>>>>>>> >>>>>>>><tom...@gm...> wrote: >>>>>>>>>>>>> >>>>>>>>> Hi Rob >>>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>>> >>>>>>>>> I finally got back to R2RML to analyze why I am getting that >>>>>>>>>>>>> >>>>>>>>>memory >>>>>>>>>>>>> >>>>>>>>> leak. It seems connected to the changes you had to >>>>>>>>>>>>> introduce for >>>>>>>>>>>>> >>>>>>>>> SPARQL 1.1. >>>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>>> >>>>>>>>> I have determined that it happens in >>>>>>>>>>>>> >>>>>>>>>GraphMatcher#GenerateMappings >>>>>>>>>>>>> >>>>>>>>> method. The graphs are equal and I'm not sure what >>>>>>>>>>>>> causes the >>>>>>>>>>>>> >>>>>>>>>problem. >>>>>>>>>>>>> >>>>>>>>> As soon as TryBruteForceMapping is reached memory >>>>>>>>>>>>> consumption >>>>>>>>>>>>> >>>>>>>>>explodes >>>>>>>>>>>>> >>>>>>>>> to gigabytes within minutes. >>>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>>> >>>>>>>>> The low-level problem is the mappings variable in the >>>>>>>>>>>>> >>>>>>>>> GenerateMappings, which within a few iteration contains thousands >>>>>>>>>>>>> >>>>>>>>>of >>>>>>>>>>>>> >>>>>>>>> elements. >>>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>>> >>>>>>>>> This problem no longer occurs on trunk. Have you >>>>>>>>>>>>> actually been >>>>>>>>>>>>> >>>>>>>>> introducing any fixes around that area? >>>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>>> >>>>>>>>> Tom >>>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>>> >>>>>>>>> On Mon, Jan 14, 2013 at 12:32 PM, Rob Vesse >>>>>>>>>>>>> >>>>>>>>><rv...@do...> >>>>>>>>>>>>> >>>>>>>>>wrote: >>>>>>>>>>>>>> >>>>>>>>>> Comments inline: >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> On 1/10/13 7:14 PM, "Tomek Pluskiewicz" >>>>>>>>>>>>>> <to...@pl...> >>>>>>>>>>>>>> >>>>>>>>>>wrote: >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>Hi Rob >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>I have just updated to latest dotNetRDF available on NuGet and >>>>>>>>>>>>>>> >>>>>>>>>>>I'm >>>>>>>>>>>>>>> >>>>>>>>>>>experiencing two issues. >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>1. In my unit tests I relied on the way the library assigns >>>>>>>>>>>>>>> >>>>>>>>>>>blank >>>>>>>>>>>>>>> >>>>>>>>>>>node >>>>>>>>>>>>>>> >>>>>>>>>>>identifiers: autos1, autos2 and so on. When I run the tests >>>>>>>>>>>>>>> >>>>>>>>>>>separately >>>>>>>>>>>>>>> >>>>>>>>>>>each one passes but when I batch them they fail because in >>>>>>>>>>>>>>> >>>>>>>>>>>subsequent >>>>>>>>>>>>>>> >>>>>>>>>>>tests blank nodes are name autos2, autos3, etc. >>>>>>>>>>>>>>> However they >>>>>>>>>>>>>>> >>>>>>>>>>>don't >>>>>>>>>>>>>>> >>>>>>>>>>>share the same graph or triple store. Have you >>>>>>>>>>>>>>> changed this >>>>>>>>>>>>>>> >>>>>>>>>>>behavior >>>>>>>>>>>>>>> >>>>>>>>>>>delbierately? >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> Yes this behavior changed in the 0.8.x releases, the change was >>>>>>>>>>>>>> >>>>>>>>>>made >>>>>>>>>>>>>> >>>>>>>>>>in >>>>>>>>>>>>>> >>>>>>>>>> order to resolve a bug in SPARQL 1.1 Update support and also >>>>>>>>>>>>>> >>>>>>>>>>uncovered >>>>>>>>>>>>>> >>>>>>>>>>a >>>>>>>>>>>>>> >>>>>>>>>> bug in graph isomorphism calculation which was fixed. >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> You shouldn't rely on an internal implementation >>>>>>>>>>>>>> detail like how >>>>>>>>>>>>>> >>>>>>>>>>the >>>>>>>>>>>>>> >>>>>>>>>> library assigns blank node identifiers. Blank nodes should >>>>>>>>>>>>>> >>>>>>>>>>always >>>>>>>>>>>>>> >>>>>>>>>>be >>>>>>>>>>>>>> >>>>>>>>>> identifiable by the triples they appear in so it should be >>>>>>>>>>>>>> >>>>>>>>>>possible >>>>>>>>>>>>>> >>>>>>>>>>to >>>>>>>>>>>>>> >>>>>>>>>> formulate API calls or SPARQL queries that validate that you >>>>>>>>>>>>>> >>>>>>>>>>have >>>>>>>>>>>>>> >>>>>>>>>>produced >>>>>>>>>>>>>> >>>>>>>>>> the data you expected. >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>2. There is a bad memory leak in during SPARQL >>>>>>>>>>>>>>> execution of >>>>>>>>>>>>>>> >>>>>>>>>>>this: >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> Define bad memory leak? >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> Updates are transactional so it may be a side effect of the >>>>>>>>>>>>>> >>>>>>>>>>library >>>>>>>>>>>>>> >>>>>>>>>> maintaining the state necessary to rollback the >>>>>>>>>>>>>> transaction >>>>>>>>>>>>>> >>>>>>>>>>should >>>>>>>>>>>>>> >>>>>>>>>>it >>>>>>>>>>>>>> >>>>>>>>>>fail >>>>>>>>>>>>>> >>>>>>>>>> or be aborted. Also the fact that you are replacing constant >>>>>>>>>>>>>> >>>>>>>>>>nodes >>>>>>>>>>>>>> >>>>>>>>>>with >>>>>>>>>>>>>> >>>>>>>>>> blank nodes will assign a lot of new identifiers and those >>>>>>>>>>>>>> >>>>>>>>>>identifiers >>>>>>>>>>>>>> >>>>>>>>>> have to be tracked to prevent collisions. >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>PREFIX rr: <http://www.w3.org/ns/r2rml#> >>>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:graph ?value . } >>>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:graphMap [ rr:constant ?value ] . } >>>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:graph ?value } ; >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:object ?value . } >>>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:objectMap [ rr:constant ?value ] . } >>>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:object ?value } ; >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:predicate ?value . } >>>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:predicateMap [ rr:constant ?value ] . } >>>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:predicate ?value } ; >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:subject ?value . } >>>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:subjectMap [ rr:constant ?value ] . } >>>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:subject ?value } >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>The full code is simply: >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>var dataset = new InMemoryDataset(store, >>>>>>>>>>>>>>> R2RMLMappings.BaseUri); >>>>>>>>>>>>>>> >>>>>>>>>>> ISparqlUpdateProcessor processor = new >>>>>>>>>>>>>>> >>>>>>>>>>>LeviathanUpdateProcessor(dataset); >>>>>>>>>>>>>>> >>>>>>>>>>> var updateParser = new >>>>>>>>>>>>>>> SparqlUpdateParser(); >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>processor.ProcessCommandSet(updateParser.ParseFromStr>>>>>>>>>>>>>>> ing(Shortcu >>>>>>>>>>>>>>> >>>>>>>>>>>tS >>>>>>>>>>>>>>> >>>>>>>>>>>ub >>>>>>>>>>>>>>> >>>>>>>>>>>m >>>>>>>>>>>>>>> >>>>>>>>>>>a >>>>>>>>>>>>>>> >>>>>>>>>>>p >>>>>>>>>>>>>>> >>>>>>>>>>>sRe >>>>>>>>>>>>>>> >>>>>>>>>>>placeSparql)); >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>Is this a know problem and has been already fixed or should I >>>>>>>>>>>>>>> >>>>>>>>>>>investigate closely? >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> This is not a known issue, I would also guess that the data >>>>>>>>>>>>>> >>>>>>>>>>being >>>>>>>>>>>>>> >>>>>>>>>>used >>>>>>>>>>>>>> >>>>>>>>>> would have some bearing on the severity of the >>>>>>>>>>>>>> problem. Please >>>>>>>>>>>>>> >>>>>>>>>>go >>>>>>>>>>>>>> >>>>>>>>>>ahead >>>>>>>>>>>>>> >>>>>>>>>> and investigate but I would suspect it is the two things I >>>>>>>>>>>>>> >>>>>>>>>>outlined >>>>>>>>>>>>>> >>>>>>>>>>above >>>>>>>>>>>>>> >>>>>>>>>> which are the culprits here. >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> Rob >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>Thanks, >>>>>>>>>>>>>>> >>>>>>>>>>>Tom >>>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>----------------------------------------------------->>>>>>>>>>>>>>> ----------- >>>>>>>>>>>>>>> >>>>>>>>>>>-- >>>>>>>>>>>>>>> >>>>>>>>>>>-- >>>>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>>>> >>>>>>>>>>>--- >>>>>>>>>>>>>>> >>>>>>>>>>>---- >>>>>>>>>>>>>>> >>>>>>>>>>>Master Visual Studio, SharePoint, SQL, ASP.NET >>>>>>>>>>>>>>> <http://ASP.NET> , C# 2012, HTML5, >>>>>>>>>>>>>>> >>>>>>>>>>>CSS, >>>>>>>>>>>>>>> >>>>>>>>>>>MVC, Windows 8 Apps, JavaScript and much more. Keep >>>>>>>>>>>>>>> your skills >>>>>>>>>>>>>>> >>>>>>>>>>>current >>>>>>>>>>>>>>> >>>>>>>>>>>with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>>>>>> >>>>>>>>>>>Microsoft >>>>>>>>>>>>>>> >>>>>>>>>>>MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>>>>>>>>> >>>>>>>>>>>http://p.sf.net/sfu/learnmore_122712 >>>>>>>>>>>>>>> >>>>>>>>>>>_______________________________________________ >>>>>>>>>>>>>>> >>>>>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>>>>>> >>>>>>>>>>>dot...@li... >>>>>>>>>>>>>>> >>>>>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>------------------------------------------------------->>>>>>>>>>>>>> ---------- >>>>>>>>>>>>>> >>>>>>>>>>-- >>>>>>>>>>>>>> >>>>>>>>>>-- >>>>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>>>> >>>>>>>>>>------ >>>>>>>>>>>>>> >>>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET >>>>>>>>>>>>>> <http://ASP.NET> , C# 2012, HTML5, >>>>>>>>>>>>>> >>>>>>>>>>CSS, >>>>>>>>>>>>>> >>>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep >>>>>>>>>>>>>> your skills >>>>>>>>>>>>>> >>>>>>>>>>current >>>>>>>>>>>>>> >>>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>>>>> >>>>>>>>>>Microsoft >>>>>>>>>>>>>> >>>>>>>>>> MVPs and experts. SALE $99.99 this month only -- learn more at: >>>>>>>>>>>>>> >>>>>>>>>> http://p.sf.net/sfu/learnmore_122412 >>>>>>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>>>>>> >>>>>>>>>> dotNetRDF-bugs mailing list >>>>>>>>>>>>>> >>>>>>>>>> dot...@li... >>>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>>>> >>>>>>>> >>>>>>>>>>>> >>>>>>>>----------------------------------------------------------->>>>>>>>>>>> -------- >>>>>>>>>>>> >>>>>>>>-- >>>>>>>>>>>> >>>>>>>>-- >>>>>>>>>>>> >>>>>>>>- >>>>>>>>>>>> >>>>>>>>- >>>>>>>>>>>> >>>>>>>>- >>>>>>>>>>>> >>>>>>>>---- >>>>>>>>>>>> >>>>>>>>Minimize network downtime and maximize team effectiveness. >>>>>>>>>>>> >>>>>>>>Reduce network management and security costs.Learn how to hire >>>>>>>>>>>> >>>>>>>>the most talented Cisco Certified professionals. Visit the >>>>>>>>>>>> >>>>>>>>Employer Resources Portal >>>>>>>>>>>> >>>>>>>>http://www.cisco.com/web/learning/employer_resources/index.html >>>>>>>>>>>> >>>>>>>>_______________________________________________ >>>>>>>>>>>> >>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>>> >>>>>>>>dot...@li... >>>>>>>>>>>> >>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>------------------------------------------------------------->>>>>>>>>>> ------- >>>>>>>>>>> >>>>>>>-- >>>>>>>>>>> >>>>>>>-- >>>>>>>>>>> >>>>>>>- >>>>>>>>>>> >>>>>>>- >>>>>>>>>>> >>>>>>>---- >>>>>>>>>>> >>>>>>>Precog is a next-generation analytics platform capable of >>>>>>>>>>> advanced >>>>>>>>>>> >>>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>>>>> >>>>>>>building >>>>>>>>>>> >>>>>>>apps and a phenomenal toolset for data science. Developers >>>>>>>>>>> can use >>>>>>>>>>> >>>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>>>>> >>>>>>>account! >>>>>>>>>>> >>>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>>>>> >>>>>>>_______________________________________________ >>>>>>>>>>> >>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>> >>>>>>>dot...@li... >>>>>>>>>>> >>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>> >>>>>>>>>> >>>>>>--------------------------------------------------------------->>>>>>>>>> ------ >>>>>>>>>> >>>>>>-- >>>>>>>>>> >>>>>>-- >>>>>>>>>> >>>>>>- >>>>>>>>>> >>>>>>---- >>>>>>>>>> >>>>>>Precog is a next-generation analytics platform capable of >>>>>>>>>> advanced >>>>>>>>>> >>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>>>> >>>>>>building >>>>>>>>>> >>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>>>> >>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>>>> >>>>>>account! >>>>>>>>>> >>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>>>> >>>>>>_______________________________________________ >>>>>>>>>> >>>>>>dotNetRDF-bugs mailing list >>>>>>>>>> >>>>>>dot...@li... >>>>>>>>>> >>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>> >>>>> >>>>>>>>> >>>>> >>>>>>>>> >>>>> >>>>>>>>> >>>>> >>>>>>>>> >>>>> >>>>>>>>> >>>>>----------------------------------------------------------------->>>>>>>>> ----- >>>>>>>>> >>>>>-- >>>>>>>>> >>>>>-- >>>>>>>>> >>>>>---- >>>>>>>>> >>>>>Precog is a next-generation analytics platform capable of >>>>>>>>> advanced >>>>>>>>> >>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>>> >>>>>building >>>>>>>>> >>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>>> >>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>>> >>>>>account! >>>>>>>>> >>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>>> >>>>>_______________________________________________ >>>>>>>>> >>>>>dotNetRDF-bugs mailing list >>>>>>>>> >>>>>dot...@li... >>>>>>>>> >>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>> >>>> >>>>>>>> >>>>------------------------------------------------------------------->>>>>>>> ---- >>>>>>>> >>>>-- >>>>>>>> >>>>----- >>>>>>>> >>>> Precog is a next-generation analytics platform capable of advanced >>>>>>>> >>>> analytics on semi-structured data. The platform includes APIs for >>>>>>>> >>>>building >>>>>>>> >>>> apps and a phenomenal toolset for data science. Developers can use >>>>>>>> >>>> our toolset for easy data analysis & visualization. Get a free >>>>>>>> >>>>account! >>>>>>>> >>>> http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>> >>>> _______________________________________________ >>>>>>>> >>>> dotNetRDF-bugs mailing list >>>>>>>> >>>> dot...@li... >>>>>>>> >>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>> >>> >>>>>>> >>>--------------------------------------------------------------------->>>>>>> --- >>>>>>> >>>-- >>>>>>> >>>---- >>>>>>> >>>Precog is a next-generation analytics platform capable of advanced >>>>>>> >>>analytics on semi-structured data. The platform includes APIs for >>>>>>> >>>building >>>>>>> >>>apps and a phenomenal toolset for data science. Developers can use >>>>>>> >>>our toolset for easy data analysis & visualization. Get a free >>>>>>> account! >>>>>>> >>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>> >>>_______________________________________________ >>>>>>> >>>dotNetRDF-bugs mailing list >>>>>>> >>>dot...@li... >>>>>>> >>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >> >>>>>> >>----------------------------------------------------------------------->>>>>> -- >>>>>> >>----- >>>>>> >> Precog is a next-generation analytics platform capable of advanced >>>>>> >> analytics on semi-structured data. The platform includes APIs for >>>>>> >>building >>>>>> >> apps and a phenomenal toolset for data science. Developers can use >>>>>> >> our toolset for easy data analysis & visualization. Get a free >>>>>> account! >>>>>> >> http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>> >> _______________________________________________ >>>>>> >> dotNetRDF-bugs mailing list >>>>>> >> dot...@li... >>>>>> >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>> > >>>>> >------------------------------------------------------------------------->>>>> - >>>>> >---- >>>>> >Precog is a next-generation analytics platform capable of advanced >>>>> >analytics on semi-structured data. The platform includes APIs for >>>>> building >>>>> >apps and a phenomenal toolset for data science. Developers can use >>>>> >our toolset for easy data analysis & visualization. Get a free account! >>>>> >http://www2.precog.com/precogplatform/slashdotnewsletter >>>>> >_______________________________________________ >>>>> >dotNetRDF-bugs mailing list >>>>> >dot...@li... >>>>> >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>> >>>> >>>> >>>> >>>> >>>> --------------------------------------------------------------------------- >>>> --- >>>> Precog is a next-generation analytics platform capable of advanced >>>> analytics on semi-structured data. The platform includes APIs for building >>>> apps and a phenomenal toolset for data science. Developers can use >>>> our toolset for easy data analysis & visualization. Get a free account! >>>> http://www2.precog.com/precogplatform/slashdotnewsletter >>>> _______________________________________________ >>>> dotNetRDF-bugs mailing list >>>> dot...@li... >>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>> ---------------------------------------------------------------------------- >>> -- Precog is a next-generation analytics platform capable of advanced >>> analytics on semi-structured data. The platform includes APIs for building >>> apps and a phenomenal toolset for data science. Developers can use our >>> toolset for easy data analysis & visualization. Get a free account! >>> http://www2.precog.com/precogplatform/slashdotnewsletter____________________ >>> ___________________________ dotNetRDF-bugs mailing list >>> dot...@li...https://lists.sourceforge.net/lists/list >>> info/dotnetrdf-bugs >> ----------------------------------------------------------------------------- >> - Precog is a next-generation analytics platform capable of advanced >> analytics on semi-structured data. The platform includes APIs for building >> apps and a phenomenal toolset for data science. Developers can use our >> toolset for easy data analysis & visualization. Get a free account! >> http://www2.precog.com/precogplatform/slashdotnewsletter_____________________ >> __________________________ dotNetRDF-bugs mailing list >> dot...@li...https://lists.sourceforge.net/lists/listi >> nfo/dotnetrdf-bugs > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced analytics > on semi-structured data. The platform includes APIs for building apps and a > phenomenal toolset for data science. Developers can use our toolset for easy > data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter______________________ > _________________________ dotNetRDF-bugs mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Rob V. <rv...@do...> - 2013-04-12 21:15:30
|
Hey Tom So I validated that those graphs were indeed equal Having gone through that process by hand I realized there was an additional rules based mapping step we could be using that we weren't, with this in place we now don't have to use the divide and conquer approach on any of your test cases which will improve performance. All your tests cases now pass, if you come up with any more please go ahead and add them. I will try and look more to figure out if the brute force generator is generating sensible mappings but hopefully now very few graphs should ever have to resort to that approach. Rob From: Rob Vesse <rv...@do...> Reply-To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Date: Friday, April 12, 2013 12:37 PM To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Subject: Re: [dotNetRDF-bugs] Scope of autassigned bland node IDs > Yes I realized that when I tried a pull again after sending the reply > > Ok so that case is bombing out on brute force mapping which would tend to > indicate that there may be an issue there still > > At a glance the graphs look equivalent but I need to verify this by hand > because the sub-graphs are too large and blank node heavy to easily verify > whether they are equal and we are just not detecting it correctly or if they > are non-equal > > Rob > > From: Tomek Pluskiewicz <to...@pl...> > Reply-To: dotNetRDF Bug Report tracking and resolution > <dot...@li...> > Date: Friday, April 12, 2013 12:05 PM > To: dotNetRDF Bug Report tracking and resolution > <dot...@li...> > Subject: Re: [dotNetRDF-bugs] Scope of autassigned bland node IDs > >> >> I did with a little delay. Please check now. >> >> Tom >> >> On Apr 12, 2013 8:59 PM, "Rob Vesse" <rv...@do...> wrote: >>> Ok >>> >>> Can you push the commits up so I can pull them down and take a look at the >>> new test cases >>> >>> Rob >>> >>> On 4/12/13 11:55 AM, "Tomasz Pluskiewicz" <tom...@gm...> >>> wrote: >>> >>>> >I've just committed more test cases. Out of the 6 none fail cause OOM >>>> >anymore, which is marvellous. >>>> > >>>> >However case1 reports false but I'm positive these graphs are actually >>>> >equal. >>>> > >>>> >Thanks, >>>> >Tom >>>> > >>>> >On Fri, Apr 12, 2013 at 8:33 PM, Rob Vesse <rv...@do...> wrote: >>>>> >> Those would be useful >>>>> >> >>>>> >> Btw I closed the issue branch so please just add the tests to default >>>>> >> >>>>> >> Rob >>>>> >> >>>>> >> On 4/12/13 11:23 AM, "Tomasz Pluskiewicz" >>>>> <tom...@gm...> >>>>> >> wrote: >>>>> >> >>>>>> >>>Hi Rob >>>>>> >>> >>>>>> >>>Thanks so much. And yes, I do have 4 or 5 cases which stumble on this >>>>>> >>>same issue. I will add all these to the test fixture. >>>>>> >>> >>>>>> >>>Tom >>>>>> >>> >>>>>> >>>On Fri, Apr 12, 2013 at 8:20 PM, Rob Vesse <rv...@do...> >>>>>> wrote: >>>>>>> >>>> Hey Tom >>>>>>> >>>> >>>>>>> >>>> This should now be fixed for your test case though I am not 100% >>>>>>> >>>>convinced >>>>>>> >>>> that brute forcing is not still broken >>>>>>> >>>> >>>>>>> >>>> What I have done to fix this is to add an intermediate step between >>>>>>> >>>>the >>>>>>> >>>> rules based and brute force mapping which does a divide and conquer >>>>>>> >>>> approach >>>>>>> >>>> >>>>>>> >>>> What this does is break the unmapped blank node portions of the >>>>>>> graph >>>>>>> >>>>into >>>>>>> >>>> its constituent isolated sub-graphs (those that share no blank >>>>>>> nodes) >>>>>>> >>>>and >>>>>>> >>>> then recursively calls Equals() on the candidate matches for the >>>>>>> >>>> sub-graphs. This approach reduces the amount of work required and the >>>>>>> >>>> likelihood of needing to brute force at all though we still fall back >>>>>>> >>>>in >>>>>>> >>>> the worst case. >>>>>>> >>>> >>>>>>> >>>> If you can come up with any more graphs that break GraphMatcher >>>>>>> those >>>>>>> >>>> would be much appreciated >>>>>>> >>>> >>>>>>> >>>> Rob >>>>>>> >>>> >>>>>>> >>>> On 4/12/13 10:25 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>> >>>> >>>>>>>> >>>>>s/not/now >>>>>>>> >>>>> >>>>>>>> >>>>>That should be "the test will now complete within the timeout" >>>>>>>> >>>>> >>>>>>>> >>>>>Rob >>>>>>>> >>>>> >>>>>>>> >>>>>On 4/12/13 10:23 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>>> >>>>> >>>>>>>>> >>>>>>Hey Tom >>>>>>>>> >>>>>> >>>>>>>>> >>>>>>So the logic for generating the brute force mappings was >>>>>>>>> completely >>>>>>>>> >>>>>>broken >>>>>>>>> >>>>>>causing it to get stuck in a memory sucking spin cycle :( >>>>>>>>> >>>>>> >>>>>>>>> >>>>>>I rewrote the GenerateMappings() method from scratch to use yield >>>>>>>>> >>>>>>return >>>>>>>>> >>>>>>and the test will not complete within the timeout but it fails so I >>>>>>>>> >>>>>>still >>>>>>>>> >>>>>>need to dig further >>>>>>>>> >>>>>> >>>>>>>>> >>>>>>We may still be generating incorrect possible mappings or the logic >>>>>>>>> >>>>>>for >>>>>>>>> >>>>>>brute force may be flawed elsewhere >>>>>>>>> >>>>>> >>>>>>>>> >>>>>>Rob >>>>>>>>> >>>>>> >>>>>>>>> >>>>>>On 4/9/13 10:34 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>>>> >>>>>> >>>>>>>>>> >>>>>>>Hey Tom >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>The problem is that graph isomorphism is NP-hard so sometimes the >>>>>>>>>> >>>>>>>only >>>>>>>>>> >>>>>>>option we have is to attempt to brute force the problem >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>I've started added some Debug.WriteLine() to GraphMatcher to track >>>>>>>>>> >>>>>>>down >>>>>>>>>> >>>>>>>where things go wrong >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>For your graphs they may look trivially equal but to code they are >>>>>>>>>> >>>>>>>not, >>>>>>>>>> >>>>>>>the reason this worked prior to 0.8.0 is that one of the >>>>>>>>>> things we >>>>>>>>>> >>>>>>>try >>>>>>>>>> >>>>>>>is >>>>>>>>>> >>>>>>>a trivial mapping (assume blank nodes have same IDs in both >>>>>>>>>> graphs) >>>>>>>>>> >>>>>>>so >>>>>>>>>> >>>>>>>in >>>>>>>>>> >>>>>>>previous releases you would likely have hit this case and been fine. >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>You have 33 blank nodes in the graph of which only 6 are >>>>>>>>>> uniquely >>>>>>>>>> >>>>>>>identifiable and mappable. The matcher generates a candidate >>>>>>>>>> >>>>>>>mapping >>>>>>>>>> >>>>>>>for >>>>>>>>>> >>>>>>>the whole graph but its best effort is incorrect, so then it falls >>>>>>>>>> >>>>>>>back >>>>>>>>>> >>>>>>>to >>>>>>>>>> >>>>>>>brute force. I need to dig further into whether the candidate >>>>>>>>>> >>>>>>>mapping >>>>>>>>>> >>>>>>>could be improved but this is not trivial to debug and will take >>>>>>>>>> >>>>>>>some >>>>>>>>>> >>>>>>>time >>>>>>>>>> >>>>>>>to resolve. >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>We may be able to reduce the "memory leak" by using yield rather >>>>>>>>>> >>>>>>>than >>>>>>>>>> >>>>>>>pre-generating all possible mapping but this is a tricky >>>>>>>>>> refactor, >>>>>>>>>> >>>>>>>it's >>>>>>>>>> >>>>>>>been a long time since I wrote the code originally and I >>>>>>>>>> remember >>>>>>>>>> >>>>>>>that >>>>>>>>>> >>>>>>>doing the mapping in the yield form proved thorny at the time so I >>>>>>>>>> >>>>>>>chose >>>>>>>>>> >>>>>>>not to. The code itself for generating the mappings has some >>>>>>>>>> >>>>>>>slightly >>>>>>>>>> >>>>>>>strange things in it so I really need to spend a block of time >>>>>>>>>> >>>>>>>refreshing >>>>>>>>>> >>>>>>>myself on the logic there to check that it is sound before I >>>>>>>>>> attempt >>>>>>>>>> >>>>>>>to >>>>>>>>>> >>>>>>>refactor. >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>Rob >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>On 4/7/13 11:20 AM, "Tomasz Pluskiewicz" >>>>>>>>>> >>>>>>><tom...@gm...> >>>>>>>>>> >>>>>>>wrote: >>>>>>>>>> >>>>>>> >>>>>>>>>>> >>>>>>>>Hm, I was wrong actually. >>>>>>>>>>> >>>>>>>> >>>>>>>>>>> >>>>>>>>I tried comparing the exact same graphs loaded from Turtle in >>>>>>>>>>> >>>>>>>>dotNetRDF test project but I got the unit test wrong. >>>>>>>>>>> >>>>>>>> >>>>>>>>>>> >>>>>>>>I have added the CORE-345 bug and committed a failing test case >>>>>>>>>>> >>>>>>>>[1]. >>>>>>>>>>> >>>>>>>>Could you please have a look at this? >>>>>>>>>>> >>>>>>>> >>>>>>>>>>> >>>>>>>>Thanks, >>>>>>>>>>> >>>>>>>>Tom >>>>>>>>>>> >>>>>>>> >>>>>>>>>>> >>>>>>>>[1]: >>>>>>>>>>> >>>>>>>>https://bitbucket.org/dotnetrdf/dotnetrdf/commits/branch/CORE-345 >>>>>>>>>>> >>>>>>>> >>>>>>>>>>> >>>>>>>>On Sun, Apr 7, 2013 at 7:36 PM, Tomasz Pluskiewicz >>>>>>>>>>> >>>>>>>><tom...@gm...> wrote: >>>>>>>>>>>> >>>>>>>>> Hi Rob >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> I finally got back to R2RML to analyze why I am getting that >>>>>>>>>>>> >>>>>>>>>memory >>>>>>>>>>>> >>>>>>>>> leak. It seems connected to the changes you had to >>>>>>>>>>>> introduce for >>>>>>>>>>>> >>>>>>>>> SPARQL 1.1. >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> I have determined that it happens in >>>>>>>>>>>> >>>>>>>>>GraphMatcher#GenerateMappings >>>>>>>>>>>> >>>>>>>>> method. The graphs are equal and I'm not sure what causes the >>>>>>>>>>>> >>>>>>>>>problem. >>>>>>>>>>>> >>>>>>>>> As soon as TryBruteForceMapping is reached memory >>>>>>>>>>>> consumption >>>>>>>>>>>> >>>>>>>>>explodes >>>>>>>>>>>> >>>>>>>>> to gigabytes within minutes. >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> The low-level problem is the mappings variable in the >>>>>>>>>>>> >>>>>>>>> GenerateMappings, which within a few iteration contains thousands >>>>>>>>>>>> >>>>>>>>>of >>>>>>>>>>>> >>>>>>>>> elements. >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> This problem no longer occurs on trunk. Have you actually been >>>>>>>>>>>> >>>>>>>>> introducing any fixes around that area? >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> Tom >>>>>>>>>>>> >>>>>>>>> >>>>>>>>>>>> >>>>>>>>> On Mon, Jan 14, 2013 at 12:32 PM, Rob Vesse >>>>>>>>>>>> >>>>>>>>><rv...@do...> >>>>>>>>>>>> >>>>>>>>>wrote: >>>>>>>>>>>>> >>>>>>>>>> Comments inline: >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> On 1/10/13 7:14 PM, "Tomek Pluskiewicz" >>>>>>>>>>>>> <to...@pl...> >>>>>>>>>>>>> >>>>>>>>>>wrote: >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>Hi Rob >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>I have just updated to latest dotNetRDF available on NuGet and >>>>>>>>>>>>>> >>>>>>>>>>>I'm >>>>>>>>>>>>>> >>>>>>>>>>>experiencing two issues. >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>1. In my unit tests I relied on the way the library assigns >>>>>>>>>>>>>> >>>>>>>>>>>blank >>>>>>>>>>>>>> >>>>>>>>>>>node >>>>>>>>>>>>>> >>>>>>>>>>>identifiers: autos1, autos2 and so on. When I run the tests >>>>>>>>>>>>>> >>>>>>>>>>>separately >>>>>>>>>>>>>> >>>>>>>>>>>each one passes but when I batch them they fail because in >>>>>>>>>>>>>> >>>>>>>>>>>subsequent >>>>>>>>>>>>>> >>>>>>>>>>>tests blank nodes are name autos2, autos3, etc. >>>>>>>>>>>>>> However they >>>>>>>>>>>>>> >>>>>>>>>>>don't >>>>>>>>>>>>>> >>>>>>>>>>>share the same graph or triple store. Have you changed this >>>>>>>>>>>>>> >>>>>>>>>>>behavior >>>>>>>>>>>>>> >>>>>>>>>>>delbierately? >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> Yes this behavior changed in the 0.8.x releases, the change was >>>>>>>>>>>>> >>>>>>>>>>made >>>>>>>>>>>>> >>>>>>>>>>in >>>>>>>>>>>>> >>>>>>>>>> order to resolve a bug in SPARQL 1.1 Update support and also >>>>>>>>>>>>> >>>>>>>>>>uncovered >>>>>>>>>>>>> >>>>>>>>>>a >>>>>>>>>>>>> >>>>>>>>>> bug in graph isomorphism calculation which was fixed. >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> You shouldn't rely on an internal implementation detail like how >>>>>>>>>>>>> >>>>>>>>>>the >>>>>>>>>>>>> >>>>>>>>>> library assigns blank node identifiers. Blank nodes should >>>>>>>>>>>>> >>>>>>>>>>always >>>>>>>>>>>>> >>>>>>>>>>be >>>>>>>>>>>>> >>>>>>>>>> identifiable by the triples they appear in so it should be >>>>>>>>>>>>> >>>>>>>>>>possible >>>>>>>>>>>>> >>>>>>>>>>to >>>>>>>>>>>>> >>>>>>>>>> formulate API calls or SPARQL queries that validate that you >>>>>>>>>>>>> >>>>>>>>>>have >>>>>>>>>>>>> >>>>>>>>>>produced >>>>>>>>>>>>> >>>>>>>>>> the data you expected. >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>2. There is a bad memory leak in during SPARQL >>>>>>>>>>>>>> execution of >>>>>>>>>>>>>> >>>>>>>>>>>this: >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> Define bad memory leak? >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> Updates are transactional so it may be a side effect of the >>>>>>>>>>>>> >>>>>>>>>>library >>>>>>>>>>>>> >>>>>>>>>> maintaining the state necessary to rollback the >>>>>>>>>>>>> transaction >>>>>>>>>>>>> >>>>>>>>>>should >>>>>>>>>>>>> >>>>>>>>>>it >>>>>>>>>>>>> >>>>>>>>>>fail >>>>>>>>>>>>> >>>>>>>>>> or be aborted. Also the fact that you are replacing constant >>>>>>>>>>>>> >>>>>>>>>>nodes >>>>>>>>>>>>> >>>>>>>>>>with >>>>>>>>>>>>> >>>>>>>>>> blank nodes will assign a lot of new identifiers and those >>>>>>>>>>>>> >>>>>>>>>>identifiers >>>>>>>>>>>>> >>>>>>>>>> have to be tracked to prevent collisions. >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>PREFIX rr: <http://www.w3.org/ns/r2rml#> >>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:graph ?value . } >>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:graphMap [ rr:constant ?value ] . } >>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:graph ?value } ; >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:object ?value . } >>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:objectMap [ rr:constant ?value ] . } >>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:object ?value } ; >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:predicate ?value . } >>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:predicateMap [ rr:constant ?value ] . } >>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:predicate ?value } ; >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:subject ?value . } >>>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:subjectMap [ rr:constant ?value ] . } >>>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:subject ?value } >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>The full code is simply: >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>var dataset = new InMemoryDataset(store, >>>>>>>>>>>>>> R2RMLMappings.BaseUri); >>>>>>>>>>>>>> >>>>>>>>>>> ISparqlUpdateProcessor processor = new >>>>>>>>>>>>>> >>>>>>>>>>>LeviathanUpdateProcessor(dataset); >>>>>>>>>>>>>> >>>>>>>>>>> var updateParser = new >>>>>>>>>>>>>> SparqlUpdateParser(); >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>processor.ProcessCommandSet(updateParser.ParseFromString(Shortcu >>>>>>>>>>>>>> >>>>>>>>>>>tS >>>>>>>>>>>>>> >>>>>>>>>>>ub >>>>>>>>>>>>>> >>>>>>>>>>>m >>>>>>>>>>>>>> >>>>>>>>>>>a >>>>>>>>>>>>>> >>>>>>>>>>>p >>>>>>>>>>>>>> >>>>>>>>>>>sRe >>>>>>>>>>>>>> >>>>>>>>>>>placeSparql)); >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>Is this a know problem and has been already fixed or should I >>>>>>>>>>>>>> >>>>>>>>>>>investigate closely? >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> This is not a known issue, I would also guess that the data >>>>>>>>>>>>> >>>>>>>>>>being >>>>>>>>>>>>> >>>>>>>>>>used >>>>>>>>>>>>> >>>>>>>>>> would have some bearing on the severity of the problem. Please >>>>>>>>>>>>> >>>>>>>>>>go >>>>>>>>>>>>> >>>>>>>>>>ahead >>>>>>>>>>>>> >>>>>>>>>> and investigate but I would suspect it is the two things I >>>>>>>>>>>>> >>>>>>>>>>outlined >>>>>>>>>>>>> >>>>>>>>>>above >>>>>>>>>>>>> >>>>>>>>>> which are the culprits here. >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> Rob >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>Thanks, >>>>>>>>>>>>>> >>>>>>>>>>>Tom >>>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>---------------------------------------------------------------- >>>>>>>>>>>>>> >>>>>>>>>>>-- >>>>>>>>>>>>>> >>>>>>>>>>>-- >>>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>>> >>>>>>>>>>>--- >>>>>>>>>>>>>> >>>>>>>>>>>---- >>>>>>>>>>>>>> >>>>>>>>>>>Master Visual Studio, SharePoint, SQL, ASP.NET >>>>>>>>>>>>>> <http://ASP.NET> , C# 2012, HTML5, >>>>>>>>>>>>>> >>>>>>>>>>>CSS, >>>>>>>>>>>>>> >>>>>>>>>>>MVC, Windows 8 Apps, JavaScript and much more. Keep >>>>>>>>>>>>>> your skills >>>>>>>>>>>>>> >>>>>>>>>>>current >>>>>>>>>>>>>> >>>>>>>>>>>with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>>>>> >>>>>>>>>>>Microsoft >>>>>>>>>>>>>> >>>>>>>>>>>MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>>>>>>>> >>>>>>>>>>>http://p.sf.net/sfu/learnmore_122712 >>>>>>>>>>>>>> >>>>>>>>>>>_______________________________________________ >>>>>>>>>>>>>> >>>>>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>>>>> >>>>>>>>>>>dot...@li... >>>>>>>>>>>>>> >>>>>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>----------------------------------------------------------------- >>>>>>>>>>>>> >>>>>>>>>>-- >>>>>>>>>>>>> >>>>>>>>>>-- >>>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>>> >>>>>>>>>>------ >>>>>>>>>>>>> >>>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET >>>>>>>>>>>>> <http://ASP.NET> , C# 2012, HTML5, >>>>>>>>>>>>> >>>>>>>>>>CSS, >>>>>>>>>>>>> >>>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep >>>>>>>>>>>>> your skills >>>>>>>>>>>>> >>>>>>>>>>current >>>>>>>>>>>>> >>>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>>>> >>>>>>>>>>Microsoft >>>>>>>>>>>>> >>>>>>>>>> MVPs and experts. SALE $99.99 this month only -- learn more at: >>>>>>>>>>>>> >>>>>>>>>> http://p.sf.net/sfu/learnmore_122412 >>>>>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> >>>>>>>>>> dotNetRDF-bugs mailing list >>>>>>>>>>>>> >>>>>>>>>> dot...@li... >>>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>>> >>>>>>>> >>>>>>>>>>> >>>>>>>>------------------------------------------------------------------- >>>>>>>>>>> >>>>>>>>-- >>>>>>>>>>> >>>>>>>>-- >>>>>>>>>>> >>>>>>>>- >>>>>>>>>>> >>>>>>>>- >>>>>>>>>>> >>>>>>>>- >>>>>>>>>>> >>>>>>>>---- >>>>>>>>>>> >>>>>>>>Minimize network downtime and maximize team effectiveness. >>>>>>>>>>> >>>>>>>>Reduce network management and security costs.Learn how to hire >>>>>>>>>>> >>>>>>>>the most talented Cisco Certified professionals. Visit the >>>>>>>>>>> >>>>>>>>Employer Resources Portal >>>>>>>>>>> >>>>>>>>http://www.cisco.com/web/learning/employer_resources/index.html >>>>>>>>>>> >>>>>>>>_______________________________________________ >>>>>>>>>>> >>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>> >>>>>>>>dot...@li... >>>>>>>>>>> >>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>-------------------------------------------------------------------- >>>>>>>>>> >>>>>>>-- >>>>>>>>>> >>>>>>>-- >>>>>>>>>> >>>>>>>- >>>>>>>>>> >>>>>>>- >>>>>>>>>> >>>>>>>---- >>>>>>>>>> >>>>>>>Precog is a next-generation analytics platform capable of >>>>>>>>>> advanced >>>>>>>>>> >>>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>>>> >>>>>>>building >>>>>>>>>> >>>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>>>> >>>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>>>> >>>>>>>account! >>>>>>>>>> >>>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>>>> >>>>>>>_______________________________________________ >>>>>>>>>> >>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>> >>>>>>>dot...@li... >>>>>>>>>> >>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>> >>>>>> >>>>>>>>> >>>>>> >>>>>>>>> >>>>>> >>>>>>>>> >>>>>> >>>>>>>>> >>>>>> >>>>>>>>> >>>>>>--------------------------------------------------------------------- >>>>>>>>> >>>>>>-- >>>>>>>>> >>>>>>-- >>>>>>>>> >>>>>>- >>>>>>>>> >>>>>>---- >>>>>>>>> >>>>>>Precog is a next-generation analytics platform capable of >>>>>>>>> advanced >>>>>>>>> >>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>>> >>>>>>building >>>>>>>>> >>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>>> >>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>>> >>>>>>account! >>>>>>>>> >>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>>> >>>>>>_______________________________________________ >>>>>>>>> >>>>>>dotNetRDF-bugs mailing list >>>>>>>>> >>>>>>dot...@li... >>>>>>>>> >>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>> >>>>> >>>>>>>> >>>>> >>>>>>>> >>>>> >>>>>>>> >>>>> >>>>>>>> >>>>> >>>>>>>> >>>>>---------------------------------------------------------------------- >>>>>>>> >>>>>-- >>>>>>>> >>>>>-- >>>>>>>> >>>>>---- >>>>>>>> >>>>>Precog is a next-generation analytics platform capable of advanced >>>>>>>> >>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>> >>>>>building >>>>>>>> >>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>> >>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>> >>>>>account! >>>>>>>> >>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>> >>>>>_______________________________________________ >>>>>>>> >>>>>dotNetRDF-bugs mailing list >>>>>>>> >>>>>dot...@li... >>>>>>>> >>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>>>----------------------------------------------------------------------- >>>>>>> >>>>-- >>>>>>> >>>>----- >>>>>>> >>>> Precog is a next-generation analytics platform capable of advanced >>>>>>> >>>> analytics on semi-structured data. The platform includes APIs for >>>>>>> >>>>building >>>>>>> >>>> apps and a phenomenal toolset for data science. Developers can use >>>>>>> >>>> our toolset for easy data analysis & visualization. Get a free >>>>>>> >>>>account! >>>>>>> >>>> http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>> >>>> _______________________________________________ >>>>>>> >>>> dotNetRDF-bugs mailing list >>>>>>> >>>> dot...@li... >>>>>>> >>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>> >>> >>>>>> >>>------------------------------------------------------------------------ >>>>>> >>>-- >>>>>> >>>---- >>>>>> >>>Precog is a next-generation analytics platform capable of advanced >>>>>> >>>analytics on semi-structured data. The platform includes APIs for >>>>>> >>>building >>>>>> >>>apps and a phenomenal toolset for data science. Developers can use >>>>>> >>>our toolset for easy data analysis & visualization. Get a free >>>>>> account! >>>>>> >>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>> >>>_______________________________________________ >>>>>> >>>dotNetRDF-bugs mailing list >>>>>> >>>dot...@li... >>>>>> >>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>>> >>------------------------------------------------------------------------- >>>>> >>----- >>>>> >> Precog is a next-generation analytics platform capable of advanced >>>>> >> analytics on semi-structured data. The platform includes APIs for >>>>> >>building >>>>> >> apps and a phenomenal toolset for data science. Developers can use >>>>> >> our toolset for easy data analysis & visualization. Get a free account! >>>>> >> http://www2.precog.com/precogplatform/slashdotnewsletter >>>>> >> _______________________________________________ >>>>> >> dotNetRDF-bugs mailing list >>>>> >> dot...@li... >>>>> >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>> > >>>> >-------------------------------------------------------------------------- >>>> >---- >>>> >Precog is a next-generation analytics platform capable of advanced >>>> >analytics on semi-structured data. The platform includes APIs for building >>>> >apps and a phenomenal toolset for data science. Developers can use >>>> >our toolset for easy data analysis & visualization. Get a free account! >>>> >http://www2.precog.com/precogplatform/slashdotnewsletter >>>> >_______________________________________________ >>>> >dotNetRDF-bugs mailing list >>>> >dot...@li... >>>> >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>> >>> >>> >>> >>> >>> ---------------------------------------------------------------------------- >>> -- >>> Precog is a next-generation analytics platform capable of advanced >>> analytics on semi-structured data. The platform includes APIs for building >>> apps and a phenomenal toolset for data science. Developers can use >>> our toolset for easy data analysis & visualization. Get a free account! >>> http://www2.precog.com/precogplatform/slashdotnewsletter >>> _______________________________________________ >>> dotNetRDF-bugs mailing list >>> dot...@li... >>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >> ----------------------------------------------------------------------------- >> - Precog is a next-generation analytics platform capable of advanced >> analytics on semi-structured data. The platform includes APIs for building >> apps and a phenomenal toolset for data science. Developers can use our >> toolset for easy data analysis & visualization. Get a free account! >> http://www2.precog.com/precogplatform/slashdotnewsletter_____________________ >> __________________________ dotNetRDF-bugs mailing list >> dot...@li...https://lists.sourceforge.net/lists/listi >> nfo/dotnetrdf-bugs > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced analytics > on semi-structured data. The platform includes APIs for building apps and a > phenomenal toolset for data science. Developers can use our toolset for easy > data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter______________________ > _________________________ dotNetRDF-bugs mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Rob V. <rv...@do...> - 2013-04-12 19:38:58
|
Yes I realized that when I tried a pull again after sending the reply Ok so that case is bombing out on brute force mapping which would tend to indicate that there may be an issue there still At a glance the graphs look equivalent but I need to verify this by hand because the sub-graphs are too large and blank node heavy to easily verify whether they are equal and we are just not detecting it correctly or if they are non-equal Rob From: Tomek Pluskiewicz <to...@pl...> Reply-To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Date: Friday, April 12, 2013 12:05 PM To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Subject: Re: [dotNetRDF-bugs] Scope of autassigned bland node IDs > > I did with a little delay. Please check now. > > Tom > > On Apr 12, 2013 8:59 PM, "Rob Vesse" <rv...@do...> wrote: >> Ok >> >> Can you push the commits up so I can pull them down and take a look at the >> new test cases >> >> Rob >> >> On 4/12/13 11:55 AM, "Tomasz Pluskiewicz" <tom...@gm...> >> wrote: >> >>> >I've just committed more test cases. Out of the 6 none fail cause OOM >>> >anymore, which is marvellous. >>> > >>> >However case1 reports false but I'm positive these graphs are actually >>> >equal. >>> > >>> >Thanks, >>> >Tom >>> > >>> >On Fri, Apr 12, 2013 at 8:33 PM, Rob Vesse <rv...@do...> wrote: >>>> >> Those would be useful >>>> >> >>>> >> Btw I closed the issue branch so please just add the tests to default >>>> >> >>>> >> Rob >>>> >> >>>> >> On 4/12/13 11:23 AM, "Tomasz Pluskiewicz" <tom...@gm...> >>>> >> wrote: >>>> >> >>>>> >>>Hi Rob >>>>> >>> >>>>> >>>Thanks so much. And yes, I do have 4 or 5 cases which stumble on this >>>>> >>>same issue. I will add all these to the test fixture. >>>>> >>> >>>>> >>>Tom >>>>> >>> >>>>> >>>On Fri, Apr 12, 2013 at 8:20 PM, Rob Vesse <rv...@do...> >>>>> wrote: >>>>>> >>>> Hey Tom >>>>>> >>>> >>>>>> >>>> This should now be fixed for your test case though I am not 100% >>>>>> >>>>convinced >>>>>> >>>> that brute forcing is not still broken >>>>>> >>>> >>>>>> >>>> What I have done to fix this is to add an intermediate step between >>>>>> >>>>the >>>>>> >>>> rules based and brute force mapping which does a divide and conquer >>>>>> >>>> approach >>>>>> >>>> >>>>>> >>>> What this does is break the unmapped blank node portions of the >>>>>> graph >>>>>> >>>>into >>>>>> >>>> its constituent isolated sub-graphs (those that share no blank >>>>>> nodes) >>>>>> >>>>and >>>>>> >>>> then recursively calls Equals() on the candidate matches for the >>>>>> >>>> sub-graphs. This approach reduces the amount of work required and the >>>>>> >>>> likelihood of needing to brute force at all though we still fall back >>>>>> >>>>in >>>>>> >>>> the worst case. >>>>>> >>>> >>>>>> >>>> If you can come up with any more graphs that break GraphMatcher >>>>>> those >>>>>> >>>> would be much appreciated >>>>>> >>>> >>>>>> >>>> Rob >>>>>> >>>> >>>>>> >>>> On 4/12/13 10:25 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>> >>>> >>>>>>> >>>>>s/not/now >>>>>>> >>>>> >>>>>>> >>>>>That should be "the test will now complete within the timeout" >>>>>>> >>>>> >>>>>>> >>>>>Rob >>>>>>> >>>>> >>>>>>> >>>>>On 4/12/13 10:23 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>> >>>>> >>>>>>>> >>>>>>Hey Tom >>>>>>>> >>>>>> >>>>>>>> >>>>>>So the logic for generating the brute force mappings was >>>>>>>> completely >>>>>>>> >>>>>>broken >>>>>>>> >>>>>>causing it to get stuck in a memory sucking spin cycle :( >>>>>>>> >>>>>> >>>>>>>> >>>>>>I rewrote the GenerateMappings() method from scratch to use yield >>>>>>>> >>>>>>return >>>>>>>> >>>>>>and the test will not complete within the timeout but it fails so I >>>>>>>> >>>>>>still >>>>>>>> >>>>>>need to dig further >>>>>>>> >>>>>> >>>>>>>> >>>>>>We may still be generating incorrect possible mappings or the logic >>>>>>>> >>>>>>for >>>>>>>> >>>>>>brute force may be flawed elsewhere >>>>>>>> >>>>>> >>>>>>>> >>>>>>Rob >>>>>>>> >>>>>> >>>>>>>> >>>>>>On 4/9/13 10:34 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>>>> >>>>>> >>>>>>>>> >>>>>>>Hey Tom >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>The problem is that graph isomorphism is NP-hard so sometimes the >>>>>>>>> >>>>>>>only >>>>>>>>> >>>>>>>option we have is to attempt to brute force the problem >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>I've started added some Debug.WriteLine() to GraphMatcher to track >>>>>>>>> >>>>>>>down >>>>>>>>> >>>>>>>where things go wrong >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>For your graphs they may look trivially equal but to code they are >>>>>>>>> >>>>>>>not, >>>>>>>>> >>>>>>>the reason this worked prior to 0.8.0 is that one of the things we >>>>>>>>> >>>>>>>try >>>>>>>>> >>>>>>>is >>>>>>>>> >>>>>>>a trivial mapping (assume blank nodes have same IDs in both >>>>>>>>> graphs) >>>>>>>>> >>>>>>>so >>>>>>>>> >>>>>>>in >>>>>>>>> >>>>>>>previous releases you would likely have hit this case and been fine. >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>You have 33 blank nodes in the graph of which only 6 are >>>>>>>>> uniquely >>>>>>>>> >>>>>>>identifiable and mappable. The matcher generates a candidate >>>>>>>>> >>>>>>>mapping >>>>>>>>> >>>>>>>for >>>>>>>>> >>>>>>>the whole graph but its best effort is incorrect, so then it falls >>>>>>>>> >>>>>>>back >>>>>>>>> >>>>>>>to >>>>>>>>> >>>>>>>brute force. I need to dig further into whether the candidate >>>>>>>>> >>>>>>>mapping >>>>>>>>> >>>>>>>could be improved but this is not trivial to debug and will take >>>>>>>>> >>>>>>>some >>>>>>>>> >>>>>>>time >>>>>>>>> >>>>>>>to resolve. >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>We may be able to reduce the "memory leak" by using yield rather >>>>>>>>> >>>>>>>than >>>>>>>>> >>>>>>>pre-generating all possible mapping but this is a tricky >>>>>>>>> refactor, >>>>>>>>> >>>>>>>it's >>>>>>>>> >>>>>>>been a long time since I wrote the code originally and I >>>>>>>>> remember >>>>>>>>> >>>>>>>that >>>>>>>>> >>>>>>>doing the mapping in the yield form proved thorny at the time so I >>>>>>>>> >>>>>>>chose >>>>>>>>> >>>>>>>not to. The code itself for generating the mappings has some >>>>>>>>> >>>>>>>slightly >>>>>>>>> >>>>>>>strange things in it so I really need to spend a block of time >>>>>>>>> >>>>>>>refreshing >>>>>>>>> >>>>>>>myself on the logic there to check that it is sound before I >>>>>>>>> attempt >>>>>>>>> >>>>>>>to >>>>>>>>> >>>>>>>refactor. >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>Rob >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>On 4/7/13 11:20 AM, "Tomasz Pluskiewicz" >>>>>>>>> >>>>>>><tom...@gm...> >>>>>>>>> >>>>>>>wrote: >>>>>>>>> >>>>>>> >>>>>>>>>> >>>>>>>>Hm, I was wrong actually. >>>>>>>>>> >>>>>>>> >>>>>>>>>> >>>>>>>>I tried comparing the exact same graphs loaded from Turtle in >>>>>>>>>> >>>>>>>>dotNetRDF test project but I got the unit test wrong. >>>>>>>>>> >>>>>>>> >>>>>>>>>> >>>>>>>>I have added the CORE-345 bug and committed a failing test case >>>>>>>>>> >>>>>>>>[1]. >>>>>>>>>> >>>>>>>>Could you please have a look at this? >>>>>>>>>> >>>>>>>> >>>>>>>>>> >>>>>>>>Thanks, >>>>>>>>>> >>>>>>>>Tom >>>>>>>>>> >>>>>>>> >>>>>>>>>> >>>>>>>>[1]: >>>>>>>>>> >>>>>>>>https://bitbucket.org/dotnetrdf/dotnetrdf/commits/branch/CORE-345 >>>>>>>>>> >>>>>>>> >>>>>>>>>> >>>>>>>>On Sun, Apr 7, 2013 at 7:36 PM, Tomasz Pluskiewicz >>>>>>>>>> >>>>>>>><tom...@gm...> wrote: >>>>>>>>>>> >>>>>>>>> Hi Rob >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> I finally got back to R2RML to analyze why I am getting that >>>>>>>>>>> >>>>>>>>>memory >>>>>>>>>>> >>>>>>>>> leak. It seems connected to the changes you had to >>>>>>>>>>> introduce for >>>>>>>>>>> >>>>>>>>> SPARQL 1.1. >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> I have determined that it happens in >>>>>>>>>>> >>>>>>>>>GraphMatcher#GenerateMappings >>>>>>>>>>> >>>>>>>>> method. The graphs are equal and I'm not sure what causes the >>>>>>>>>>> >>>>>>>>>problem. >>>>>>>>>>> >>>>>>>>> As soon as TryBruteForceMapping is reached memory >>>>>>>>>>> consumption >>>>>>>>>>> >>>>>>>>>explodes >>>>>>>>>>> >>>>>>>>> to gigabytes within minutes. >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> The low-level problem is the mappings variable in the >>>>>>>>>>> >>>>>>>>> GenerateMappings, which within a few iteration contains thousands >>>>>>>>>>> >>>>>>>>>of >>>>>>>>>>> >>>>>>>>> elements. >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> This problem no longer occurs on trunk. Have you actually been >>>>>>>>>>> >>>>>>>>> introducing any fixes around that area? >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> Tom >>>>>>>>>>> >>>>>>>>> >>>>>>>>>>> >>>>>>>>> On Mon, Jan 14, 2013 at 12:32 PM, Rob Vesse >>>>>>>>>>> >>>>>>>>><rv...@do...> >>>>>>>>>>> >>>>>>>>>wrote: >>>>>>>>>>>> >>>>>>>>>> Comments inline: >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> On 1/10/13 7:14 PM, "Tomek Pluskiewicz" >>>>>>>>>>>> <to...@pl...> >>>>>>>>>>>> >>>>>>>>>>wrote: >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>Hi Rob >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>I have just updated to latest dotNetRDF available on NuGet and >>>>>>>>>>>>> >>>>>>>>>>>I'm >>>>>>>>>>>>> >>>>>>>>>>>experiencing two issues. >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>1. In my unit tests I relied on the way the library assigns >>>>>>>>>>>>> >>>>>>>>>>>blank >>>>>>>>>>>>> >>>>>>>>>>>node >>>>>>>>>>>>> >>>>>>>>>>>identifiers: autos1, autos2 and so on. When I run the tests >>>>>>>>>>>>> >>>>>>>>>>>separately >>>>>>>>>>>>> >>>>>>>>>>>each one passes but when I batch them they fail because in >>>>>>>>>>>>> >>>>>>>>>>>subsequent >>>>>>>>>>>>> >>>>>>>>>>>tests blank nodes are name autos2, autos3, etc. However they >>>>>>>>>>>>> >>>>>>>>>>>don't >>>>>>>>>>>>> >>>>>>>>>>>share the same graph or triple store. Have you changed this >>>>>>>>>>>>> >>>>>>>>>>>behavior >>>>>>>>>>>>> >>>>>>>>>>>delbierately? >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> Yes this behavior changed in the 0.8.x releases, the change was >>>>>>>>>>>> >>>>>>>>>>made >>>>>>>>>>>> >>>>>>>>>>in >>>>>>>>>>>> >>>>>>>>>> order to resolve a bug in SPARQL 1.1 Update support and also >>>>>>>>>>>> >>>>>>>>>>uncovered >>>>>>>>>>>> >>>>>>>>>>a >>>>>>>>>>>> >>>>>>>>>> bug in graph isomorphism calculation which was fixed. >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> You shouldn't rely on an internal implementation detail like how >>>>>>>>>>>> >>>>>>>>>>the >>>>>>>>>>>> >>>>>>>>>> library assigns blank node identifiers. Blank nodes should >>>>>>>>>>>> >>>>>>>>>>always >>>>>>>>>>>> >>>>>>>>>>be >>>>>>>>>>>> >>>>>>>>>> identifiable by the triples they appear in so it should be >>>>>>>>>>>> >>>>>>>>>>possible >>>>>>>>>>>> >>>>>>>>>>to >>>>>>>>>>>> >>>>>>>>>> formulate API calls or SPARQL queries that validate that you >>>>>>>>>>>> >>>>>>>>>>have >>>>>>>>>>>> >>>>>>>>>>produced >>>>>>>>>>>> >>>>>>>>>> the data you expected. >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>2. There is a bad memory leak in during SPARQL >>>>>>>>>>>>> execution of >>>>>>>>>>>>> >>>>>>>>>>>this: >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> Define bad memory leak? >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> Updates are transactional so it may be a side effect of the >>>>>>>>>>>> >>>>>>>>>>library >>>>>>>>>>>> >>>>>>>>>> maintaining the state necessary to rollback the >>>>>>>>>>>> transaction >>>>>>>>>>>> >>>>>>>>>>should >>>>>>>>>>>> >>>>>>>>>>it >>>>>>>>>>>> >>>>>>>>>>fail >>>>>>>>>>>> >>>>>>>>>> or be aborted. Also the fact that you are replacing constant >>>>>>>>>>>> >>>>>>>>>>nodes >>>>>>>>>>>> >>>>>>>>>>with >>>>>>>>>>>> >>>>>>>>>> blank nodes will assign a lot of new identifiers and those >>>>>>>>>>>> >>>>>>>>>>identifiers >>>>>>>>>>>> >>>>>>>>>> have to be tracked to prevent collisions. >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>PREFIX rr: <http://www.w3.org/ns/r2rml#> >>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:graph ?value . } >>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:graphMap [ rr:constant ?value ] . } >>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:graph ?value } ; >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:object ?value . } >>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:objectMap [ rr:constant ?value ] . } >>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:object ?value } ; >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:predicate ?value . } >>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:predicateMap [ rr:constant ?value ] . } >>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:predicate ?value } ; >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:subject ?value . } >>>>>>>>>>>>> >>>>>>>>>>>INSERT { ?map rr:subjectMap [ rr:constant ?value ] . } >>>>>>>>>>>>> >>>>>>>>>>>WHERE { ?map rr:subject ?value } >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>The full code is simply: >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>var dataset = new InMemoryDataset(store, >>>>>>>>>>>>> R2RMLMappings.BaseUri); >>>>>>>>>>>>> >>>>>>>>>>> ISparqlUpdateProcessor processor = new >>>>>>>>>>>>> >>>>>>>>>>>LeviathanUpdateProcessor(dataset); >>>>>>>>>>>>> >>>>>>>>>>> var updateParser = new >>>>>>>>>>>>> SparqlUpdateParser(); >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>processor.ProcessCommandSet(updateParser.ParseFromString(Shortcu >>>>>>>>>>>>> >>>>>>>>>>>tS >>>>>>>>>>>>> >>>>>>>>>>>ub >>>>>>>>>>>>> >>>>>>>>>>>m >>>>>>>>>>>>> >>>>>>>>>>>a >>>>>>>>>>>>> >>>>>>>>>>>p >>>>>>>>>>>>> >>>>>>>>>>>sRe >>>>>>>>>>>>> >>>>>>>>>>>placeSparql)); >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>Is this a know problem and has been already fixed or should I >>>>>>>>>>>>> >>>>>>>>>>>investigate closely? >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> This is not a known issue, I would also guess that the data >>>>>>>>>>>> >>>>>>>>>>being >>>>>>>>>>>> >>>>>>>>>>used >>>>>>>>>>>> >>>>>>>>>> would have some bearing on the severity of the problem. Please >>>>>>>>>>>> >>>>>>>>>>go >>>>>>>>>>>> >>>>>>>>>>ahead >>>>>>>>>>>> >>>>>>>>>> and investigate but I would suspect it is the two things I >>>>>>>>>>>> >>>>>>>>>>outlined >>>>>>>>>>>> >>>>>>>>>>above >>>>>>>>>>>> >>>>>>>>>> which are the culprits here. >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> Rob >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>Thanks, >>>>>>>>>>>>> >>>>>>>>>>>Tom >>>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>---------------------------------------------------------------- >>>>>>>>>>>>> >>>>>>>>>>>-- >>>>>>>>>>>>> >>>>>>>>>>>-- >>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>> >>>>>>>>>>>- >>>>>>>>>>>>> >>>>>>>>>>>--- >>>>>>>>>>>>> >>>>>>>>>>>---- >>>>>>>>>>>>> >>>>>>>>>>>Master Visual Studio, SharePoint, SQL, ASP.NET >>>>>>>>>>>>> <http://ASP.NET> , C# 2012, HTML5, >>>>>>>>>>>>> >>>>>>>>>>>CSS, >>>>>>>>>>>>> >>>>>>>>>>>MVC, Windows 8 Apps, JavaScript and much more. Keep >>>>>>>>>>>>> your skills >>>>>>>>>>>>> >>>>>>>>>>>current >>>>>>>>>>>>> >>>>>>>>>>>with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>>>> >>>>>>>>>>>Microsoft >>>>>>>>>>>>> >>>>>>>>>>>MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>>>>>>> >>>>>>>>>>>http://p.sf.net/sfu/learnmore_122712 >>>>>>>>>>>>> >>>>>>>>>>>_______________________________________________ >>>>>>>>>>>>> >>>>>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>>>> >>>>>>>>>>>dot...@li... >>>>>>>>>>>>> >>>>>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>----------------------------------------------------------------- >>>>>>>>>>>> >>>>>>>>>>-- >>>>>>>>>>>> >>>>>>>>>>-- >>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>> >>>>>>>>>>- >>>>>>>>>>>> >>>>>>>>>>------ >>>>>>>>>>>> >>>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET >>>>>>>>>>>> <http://ASP.NET> , C# 2012, HTML5, >>>>>>>>>>>> >>>>>>>>>>CSS, >>>>>>>>>>>> >>>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>>>>>>>>>>> >>>>>>>>>>current >>>>>>>>>>>> >>>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>>> >>>>>>>>>>Microsoft >>>>>>>>>>>> >>>>>>>>>> MVPs and experts. SALE $99.99 this month only -- learn more at: >>>>>>>>>>>> >>>>>>>>>> http://p.sf.net/sfu/learnmore_122412 >>>>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>>>> >>>>>>>>>> dotNetRDF-bugs mailing list >>>>>>>>>>>> >>>>>>>>>> dot...@li... >>>>>>>>>>>> >>>>>>>>>> >>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>> >>>>>>>> >>>>>>>>>> >>>>>>>>------------------------------------------------------------------- >>>>>>>>>> >>>>>>>>-- >>>>>>>>>> >>>>>>>>-- >>>>>>>>>> >>>>>>>>- >>>>>>>>>> >>>>>>>>- >>>>>>>>>> >>>>>>>>- >>>>>>>>>> >>>>>>>>---- >>>>>>>>>> >>>>>>>>Minimize network downtime and maximize team effectiveness. >>>>>>>>>> >>>>>>>>Reduce network management and security costs.Learn how to hire >>>>>>>>>> >>>>>>>>the most talented Cisco Certified professionals. Visit the >>>>>>>>>> >>>>>>>>Employer Resources Portal >>>>>>>>>> >>>>>>>>http://www.cisco.com/web/learning/employer_resources/index.html >>>>>>>>>> >>>>>>>>_______________________________________________ >>>>>>>>>> >>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>> >>>>>>>>dot...@li... >>>>>>>>>> >>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>> >>>>>>>>> >>>>>>>-------------------------------------------------------------------- >>>>>>>>> >>>>>>>-- >>>>>>>>> >>>>>>>-- >>>>>>>>> >>>>>>>- >>>>>>>>> >>>>>>>- >>>>>>>>> >>>>>>>---- >>>>>>>>> >>>>>>>Precog is a next-generation analytics platform capable of >>>>>>>>> advanced >>>>>>>>> >>>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>>> >>>>>>>building >>>>>>>>> >>>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>>> >>>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>>> >>>>>>>account! >>>>>>>>> >>>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>>> >>>>>>>_______________________________________________ >>>>>>>>> >>>>>>>dotNetRDF-bugs mailing list >>>>>>>>> >>>>>>>dot...@li... >>>>>>>>> >>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>> >>>>>> >>>>>>>> >>>>>> >>>>>>>> >>>>>> >>>>>>>> >>>>>> >>>>>>>> >>>>>> >>>>>>>> >>>>>>--------------------------------------------------------------------- >>>>>>>> >>>>>>-- >>>>>>>> >>>>>>-- >>>>>>>> >>>>>>- >>>>>>>> >>>>>>---- >>>>>>>> >>>>>>Precog is a next-generation analytics platform capable of >>>>>>>> advanced >>>>>>>> >>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>> >>>>>>building >>>>>>>> >>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>> >>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>> >>>>>>account! >>>>>>>> >>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>> >>>>>>_______________________________________________ >>>>>>>> >>>>>>dotNetRDF-bugs mailing list >>>>>>>> >>>>>>dot...@li... >>>>>>>> >>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>> >>>>> >>>>>>> >>>>> >>>>>>> >>>>> >>>>>>> >>>>> >>>>>>> >>>>> >>>>>>> >>>>>---------------------------------------------------------------------- >>>>>>> >>>>>-- >>>>>>> >>>>>-- >>>>>>> >>>>>---- >>>>>>> >>>>>Precog is a next-generation analytics platform capable of advanced >>>>>>> >>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>> >>>>>building >>>>>>> >>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>> >>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>> >>>>>account! >>>>>>> >>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>> >>>>>_______________________________________________ >>>>>>> >>>>>dotNetRDF-bugs mailing list >>>>>>> >>>>>dot...@li... >>>>>>> >>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>> >>>> >>>>>> >>>> >>>>>> >>>> >>>>>> >>>> >>>>>> >>>> >>>>>> >>>> >>>>>> >>>>----------------------------------------------------------------------- >>>>>> >>>>-- >>>>>> >>>>----- >>>>>> >>>> Precog is a next-generation analytics platform capable of advanced >>>>>> >>>> analytics on semi-structured data. The platform includes APIs for >>>>>> >>>>building >>>>>> >>>> apps and a phenomenal toolset for data science. Developers can use >>>>>> >>>> our toolset for easy data analysis & visualization. Get a free >>>>>> >>>>account! >>>>>> >>>> http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>> >>>> _______________________________________________ >>>>>> >>>> dotNetRDF-bugs mailing list >>>>>> >>>> dot...@li... >>>>>> >>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>> >>> >>>>> >>>------------------------------------------------------------------------ >>>>> >>>-- >>>>> >>>---- >>>>> >>>Precog is a next-generation analytics platform capable of advanced >>>>> >>>analytics on semi-structured data. The platform includes APIs for >>>>> >>>building >>>>> >>>apps and a phenomenal toolset for data science. Developers can use >>>>> >>>our toolset for easy data analysis & visualization. Get a free account! >>>>> >>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>> >>>_______________________________________________ >>>>> >>>dotNetRDF-bugs mailing list >>>>> >>>dot...@li... >>>>> >>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >>------------------------------------------------------------------------- >>>> >>----- >>>> >> Precog is a next-generation analytics platform capable of advanced >>>> >> analytics on semi-structured data. The platform includes APIs for >>>> >>building >>>> >> apps and a phenomenal toolset for data science. Developers can use >>>> >> our toolset for easy data analysis & visualization. Get a free account! >>>> >> http://www2.precog.com/precogplatform/slashdotnewsletter >>>> >> _______________________________________________ >>>> >> dotNetRDF-bugs mailing list >>>> >> dot...@li... >>>> >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>> > >>> >-------------------------------------------------------------------------- >>> >---- >>> >Precog is a next-generation analytics platform capable of advanced >>> >analytics on semi-structured data. The platform includes APIs for building >>> >apps and a phenomenal toolset for data science. Developers can use >>> >our toolset for easy data analysis & visualization. Get a free account! >>> >http://www2.precog.com/precogplatform/slashdotnewsletter >>> >_______________________________________________ >>> >dotNetRDF-bugs mailing list >>> >dot...@li... >>> >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >> >> >> >> >> >> ----------------------------------------------------------------------------->> - >> Precog is a next-generation analytics platform capable of advanced >> analytics on semi-structured data. The platform includes APIs for building >> apps and a phenomenal toolset for data science. Developers can use >> our toolset for easy data analysis & visualization. Get a free account! >> http://www2.precog.com/precogplatform/slashdotnewsletter >> _______________________________________________ >> dotNetRDF-bugs mailing list >> dot...@li... >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced analytics > on semi-structured data. The platform includes APIs for building apps and a > phenomenal toolset for data science. Developers can use our toolset for easy > data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter______________________ > _________________________ dotNetRDF-bugs mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Tomek P. <to...@pl...> - 2013-04-12 19:05:47
|
I did with a little delay. Please check now. Tom On Apr 12, 2013 8:59 PM, "Rob Vesse" <rv...@do...> wrote: > Ok > > Can you push the commits up so I can pull them down and take a look at the > new test cases > > Rob > > On 4/12/13 11:55 AM, "Tomasz Pluskiewicz" <tom...@gm...> > wrote: > > >I've just committed more test cases. Out of the 6 none fail cause OOM > >anymore, which is marvellous. > > > >However case1 reports false but I'm positive these graphs are actually > >equal. > > > >Thanks, > >Tom > > > >On Fri, Apr 12, 2013 at 8:33 PM, Rob Vesse <rv...@do...> wrote: > >> Those would be useful > >> > >> Btw I closed the issue branch so please just add the tests to default > >> > >> Rob > >> > >> On 4/12/13 11:23 AM, "Tomasz Pluskiewicz" <tom...@gm... > > > >> wrote: > >> > >>>Hi Rob > >>> > >>>Thanks so much. And yes, I do have 4 or 5 cases which stumble on this > >>>same issue. I will add all these to the test fixture. > >>> > >>>Tom > >>> > >>>On Fri, Apr 12, 2013 at 8:20 PM, Rob Vesse <rv...@do...> > wrote: > >>>> Hey Tom > >>>> > >>>> This should now be fixed for your test case though I am not 100% > >>>>convinced > >>>> that brute forcing is not still broken > >>>> > >>>> What I have done to fix this is to add an intermediate step between > >>>>the > >>>> rules based and brute force mapping which does a divide and conquer > >>>> approach > >>>> > >>>> What this does is break the unmapped blank node portions of the graph > >>>>into > >>>> its constituent isolated sub-graphs (those that share no blank nodes) > >>>>and > >>>> then recursively calls Equals() on the candidate matches for the > >>>> sub-graphs. This approach reduces the amount of work required and the > >>>> likelihood of needing to brute force at all though we still fall back > >>>>in > >>>> the worst case. > >>>> > >>>> If you can come up with any more graphs that break GraphMatcher those > >>>> would be much appreciated > >>>> > >>>> Rob > >>>> > >>>> On 4/12/13 10:25 AM, "Rob Vesse" <rv...@do...> wrote: > >>>> > >>>>>s/not/now > >>>>> > >>>>>That should be "the test will now complete within the timeout" > >>>>> > >>>>>Rob > >>>>> > >>>>>On 4/12/13 10:23 AM, "Rob Vesse" <rv...@do...> wrote: > >>>>> > >>>>>>Hey Tom > >>>>>> > >>>>>>So the logic for generating the brute force mappings was completely > >>>>>>broken > >>>>>>causing it to get stuck in a memory sucking spin cycle :( > >>>>>> > >>>>>>I rewrote the GenerateMappings() method from scratch to use yield > >>>>>>return > >>>>>>and the test will not complete within the timeout but it fails so I > >>>>>>still > >>>>>>need to dig further > >>>>>> > >>>>>>We may still be generating incorrect possible mappings or the logic > >>>>>>for > >>>>>>brute force may be flawed elsewhere > >>>>>> > >>>>>>Rob > >>>>>> > >>>>>>On 4/9/13 10:34 AM, "Rob Vesse" <rv...@do...> wrote: > >>>>>> > >>>>>>>Hey Tom > >>>>>>> > >>>>>>>The problem is that graph isomorphism is NP-hard so sometimes the > >>>>>>>only > >>>>>>>option we have is to attempt to brute force the problem > >>>>>>> > >>>>>>>I've started added some Debug.WriteLine() to GraphMatcher to track > >>>>>>>down > >>>>>>>where things go wrong > >>>>>>> > >>>>>>>For your graphs they may look trivially equal but to code they are > >>>>>>>not, > >>>>>>>the reason this worked prior to 0.8.0 is that one of the things we > >>>>>>>try > >>>>>>>is > >>>>>>>a trivial mapping (assume blank nodes have same IDs in both graphs) > >>>>>>>so > >>>>>>>in > >>>>>>>previous releases you would likely have hit this case and been fine. > >>>>>>> > >>>>>>>You have 33 blank nodes in the graph of which only 6 are uniquely > >>>>>>>identifiable and mappable. The matcher generates a candidate > >>>>>>>mapping > >>>>>>>for > >>>>>>>the whole graph but its best effort is incorrect, so then it falls > >>>>>>>back > >>>>>>>to > >>>>>>>brute force. I need to dig further into whether the candidate > >>>>>>>mapping > >>>>>>>could be improved but this is not trivial to debug and will take > >>>>>>>some > >>>>>>>time > >>>>>>>to resolve. > >>>>>>> > >>>>>>>We may be able to reduce the "memory leak" by using yield rather > >>>>>>>than > >>>>>>>pre-generating all possible mapping but this is a tricky refactor, > >>>>>>>it's > >>>>>>>been a long time since I wrote the code originally and I remember > >>>>>>>that > >>>>>>>doing the mapping in the yield form proved thorny at the time so I > >>>>>>>chose > >>>>>>>not to. The code itself for generating the mappings has some > >>>>>>>slightly > >>>>>>>strange things in it so I really need to spend a block of time > >>>>>>>refreshing > >>>>>>>myself on the logic there to check that it is sound before I attempt > >>>>>>>to > >>>>>>>refactor. > >>>>>>> > >>>>>>>Rob > >>>>>>> > >>>>>>>On 4/7/13 11:20 AM, "Tomasz Pluskiewicz" > >>>>>>><tom...@gm...> > >>>>>>>wrote: > >>>>>>> > >>>>>>>>Hm, I was wrong actually. > >>>>>>>> > >>>>>>>>I tried comparing the exact same graphs loaded from Turtle in > >>>>>>>>dotNetRDF test project but I got the unit test wrong. > >>>>>>>> > >>>>>>>>I have added the CORE-345 bug and committed a failing test case > >>>>>>>>[1]. > >>>>>>>>Could you please have a look at this? > >>>>>>>> > >>>>>>>>Thanks, > >>>>>>>>Tom > >>>>>>>> > >>>>>>>>[1]: > >>>>>>>>https://bitbucket.org/dotnetrdf/dotnetrdf/commits/branch/CORE-345 > >>>>>>>> > >>>>>>>>On Sun, Apr 7, 2013 at 7:36 PM, Tomasz Pluskiewicz > >>>>>>>><tom...@gm...> wrote: > >>>>>>>>> Hi Rob > >>>>>>>>> > >>>>>>>>> I finally got back to R2RML to analyze why I am getting that > >>>>>>>>>memory > >>>>>>>>> leak. It seems connected to the changes you had to introduce for > >>>>>>>>> SPARQL 1.1. > >>>>>>>>> > >>>>>>>>> I have determined that it happens in > >>>>>>>>>GraphMatcher#GenerateMappings > >>>>>>>>> method. The graphs are equal and I'm not sure what causes the > >>>>>>>>>problem. > >>>>>>>>> As soon as TryBruteForceMapping is reached memory consumption > >>>>>>>>>explodes > >>>>>>>>> to gigabytes within minutes. > >>>>>>>>> > >>>>>>>>> The low-level problem is the mappings variable in the > >>>>>>>>> GenerateMappings, which within a few iteration contains thousands > >>>>>>>>>of > >>>>>>>>> elements. > >>>>>>>>> > >>>>>>>>> This problem no longer occurs on trunk. Have you actually been > >>>>>>>>> introducing any fixes around that area? > >>>>>>>>> > >>>>>>>>> Tom > >>>>>>>>> > >>>>>>>>> On Mon, Jan 14, 2013 at 12:32 PM, Rob Vesse > >>>>>>>>><rv...@do...> > >>>>>>>>>wrote: > >>>>>>>>>> Comments inline: > >>>>>>>>>> > >>>>>>>>>> On 1/10/13 7:14 PM, "Tomek Pluskiewicz" <to...@pl...> > >>>>>>>>>>wrote: > >>>>>>>>>> > >>>>>>>>>>>Hi Rob > >>>>>>>>>>> > >>>>>>>>>>>I have just updated to latest dotNetRDF available on NuGet and > >>>>>>>>>>>I'm > >>>>>>>>>>>experiencing two issues. > >>>>>>>>>>> > >>>>>>>>>>>1. In my unit tests I relied on the way the library assigns > >>>>>>>>>>>blank > >>>>>>>>>>>node > >>>>>>>>>>>identifiers: autos1, autos2 and so on. When I run the tests > >>>>>>>>>>>separately > >>>>>>>>>>>each one passes but when I batch them they fail because in > >>>>>>>>>>>subsequent > >>>>>>>>>>>tests blank nodes are name autos2, autos3, etc. However they > >>>>>>>>>>>don't > >>>>>>>>>>>share the same graph or triple store. Have you changed this > >>>>>>>>>>>behavior > >>>>>>>>>>>delbierately? > >>>>>>>>>> > >>>>>>>>>> Yes this behavior changed in the 0.8.x releases, the change was > >>>>>>>>>>made > >>>>>>>>>>in > >>>>>>>>>> order to resolve a bug in SPARQL 1.1 Update support and also > >>>>>>>>>>uncovered > >>>>>>>>>>a > >>>>>>>>>> bug in graph isomorphism calculation which was fixed. > >>>>>>>>>> > >>>>>>>>>> You shouldn't rely on an internal implementation detail like how > >>>>>>>>>>the > >>>>>>>>>> library assigns blank node identifiers. Blank nodes should > >>>>>>>>>>always > >>>>>>>>>>be > >>>>>>>>>> identifiable by the triples they appear in so it should be > >>>>>>>>>>possible > >>>>>>>>>>to > >>>>>>>>>> formulate API calls or SPARQL queries that validate that you > >>>>>>>>>>have > >>>>>>>>>>produced > >>>>>>>>>> the data you expected. > >>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>2. There is a bad memory leak in during SPARQL execution of > >>>>>>>>>>>this: > >>>>>>>>>> > >>>>>>>>>> Define bad memory leak? > >>>>>>>>>> > >>>>>>>>>> Updates are transactional so it may be a side effect of the > >>>>>>>>>>library > >>>>>>>>>> maintaining the state necessary to rollback the transaction > >>>>>>>>>>should > >>>>>>>>>>it > >>>>>>>>>>fail > >>>>>>>>>> or be aborted. Also the fact that you are replacing constant > >>>>>>>>>>nodes > >>>>>>>>>>with > >>>>>>>>>> blank nodes will assign a lot of new identifiers and those > >>>>>>>>>>identifiers > >>>>>>>>>> have to be tracked to prevent collisions. > >>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>PREFIX rr: <http://www.w3.org/ns/r2rml#> > >>>>>>>>>>>DELETE { ?map rr:graph ?value . } > >>>>>>>>>>>INSERT { ?map rr:graphMap [ rr:constant ?value ] . } > >>>>>>>>>>>WHERE { ?map rr:graph ?value } ; > >>>>>>>>>>> > >>>>>>>>>>>DELETE { ?map rr:object ?value . } > >>>>>>>>>>>INSERT { ?map rr:objectMap [ rr:constant ?value ] . } > >>>>>>>>>>>WHERE { ?map rr:object ?value } ; > >>>>>>>>>>> > >>>>>>>>>>>DELETE { ?map rr:predicate ?value . } > >>>>>>>>>>>INSERT { ?map rr:predicateMap [ rr:constant ?value ] . } > >>>>>>>>>>>WHERE { ?map rr:predicate ?value } ; > >>>>>>>>>>> > >>>>>>>>>>>DELETE { ?map rr:subject ?value . } > >>>>>>>>>>>INSERT { ?map rr:subjectMap [ rr:constant ?value ] . } > >>>>>>>>>>>WHERE { ?map rr:subject ?value } > >>>>>>>>>>> > >>>>>>>>>>>The full code is simply: > >>>>>>>>>>> > >>>>>>>>>>>var dataset = new InMemoryDataset(store, R2RMLMappings.BaseUri); > >>>>>>>>>>> ISparqlUpdateProcessor processor = new > >>>>>>>>>>>LeviathanUpdateProcessor(dataset); > >>>>>>>>>>> var updateParser = new SparqlUpdateParser(); > >>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>processor.ProcessCommandSet(updateParser.ParseFromString(Shortcu > >>>>>>>>>>>tS > >>>>>>>>>>>ub > >>>>>>>>>>>m > >>>>>>>>>>>a > >>>>>>>>>>>p > >>>>>>>>>>>sRe > >>>>>>>>>>>placeSparql)); > >>>>>>>>>>> > >>>>>>>>>>>Is this a know problem and has been already fixed or should I > >>>>>>>>>>>investigate closely? > >>>>>>>>>> > >>>>>>>>>> This is not a known issue, I would also guess that the data > >>>>>>>>>>being > >>>>>>>>>>used > >>>>>>>>>> would have some bearing on the severity of the problem. Please > >>>>>>>>>>go > >>>>>>>>>>ahead > >>>>>>>>>> and investigate but I would suspect it is the two things I > >>>>>>>>>>outlined > >>>>>>>>>>above > >>>>>>>>>> which are the culprits here. > >>>>>>>>>> > >>>>>>>>>> Rob > >>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>>>Thanks, > >>>>>>>>>>>Tom > >>>>>>>>>>> > >>>>>>>>>>>---------------------------------------------------------------- > >>>>>>>>>>>-- > >>>>>>>>>>>-- > >>>>>>>>>>>- > >>>>>>>>>>>- > >>>>>>>>>>>- > >>>>>>>>>>>--- > >>>>>>>>>>>---- > >>>>>>>>>>>Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, > >>>>>>>>>>>CSS, > >>>>>>>>>>>MVC, Windows 8 Apps, JavaScript and much more. Keep your skills > >>>>>>>>>>>current > >>>>>>>>>>>with LearnDevNow - 3,200 step-by-step video tutorials by > >>>>>>>>>>>Microsoft > >>>>>>>>>>>MVPs and experts. ON SALE this month only -- learn more at: > >>>>>>>>>>>http://p.sf.net/sfu/learnmore_122712 > >>>>>>>>>>>_______________________________________________ > >>>>>>>>>>>dotNetRDF-bugs mailing list > >>>>>>>>>>>dot...@li... > >>>>>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>>----------------------------------------------------------------- > >>>>>>>>>>-- > >>>>>>>>>>-- > >>>>>>>>>>- > >>>>>>>>>>- > >>>>>>>>>>- > >>>>>>>>>>------ > >>>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, > >>>>>>>>>>CSS, > >>>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills > >>>>>>>>>>current > >>>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by > >>>>>>>>>>Microsoft > >>>>>>>>>> MVPs and experts. SALE $99.99 this month only -- learn more at: > >>>>>>>>>> http://p.sf.net/sfu/learnmore_122412 > >>>>>>>>>> _______________________________________________ > >>>>>>>>>> dotNetRDF-bugs mailing list > >>>>>>>>>> dot...@li... > >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >>>>>>>> > >>>>>>>>------------------------------------------------------------------- > >>>>>>>>-- > >>>>>>>>-- > >>>>>>>>- > >>>>>>>>- > >>>>>>>>- > >>>>>>>>---- > >>>>>>>>Minimize network downtime and maximize team effectiveness. > >>>>>>>>Reduce network management and security costs.Learn how to hire > >>>>>>>>the most talented Cisco Certified professionals. Visit the > >>>>>>>>Employer Resources Portal > >>>>>>>>http://www.cisco.com/web/learning/employer_resources/index.html > >>>>>>>>_______________________________________________ > >>>>>>>>dotNetRDF-bugs mailing list > >>>>>>>>dot...@li... > >>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>>-------------------------------------------------------------------- > >>>>>>>-- > >>>>>>>-- > >>>>>>>- > >>>>>>>- > >>>>>>>---- > >>>>>>>Precog is a next-generation analytics platform capable of advanced > >>>>>>>analytics on semi-structured data. The platform includes APIs for > >>>>>>>building > >>>>>>>apps and a phenomenal toolset for data science. Developers can use > >>>>>>>our toolset for easy data analysis & visualization. Get a free > >>>>>>>account! > >>>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter > >>>>>>>_______________________________________________ > >>>>>>>dotNetRDF-bugs mailing list > >>>>>>>dot...@li... > >>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>--------------------------------------------------------------------- > >>>>>>-- > >>>>>>-- > >>>>>>- > >>>>>>---- > >>>>>>Precog is a next-generation analytics platform capable of advanced > >>>>>>analytics on semi-structured data. The platform includes APIs for > >>>>>>building > >>>>>>apps and a phenomenal toolset for data science. Developers can use > >>>>>>our toolset for easy data analysis & visualization. Get a free > >>>>>>account! > >>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter > >>>>>>_______________________________________________ > >>>>>>dotNetRDF-bugs mailing list > >>>>>>dot...@li... > >>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>---------------------------------------------------------------------- > >>>>>-- > >>>>>-- > >>>>>---- > >>>>>Precog is a next-generation analytics platform capable of advanced > >>>>>analytics on semi-structured data. The platform includes APIs for > >>>>>building > >>>>>apps and a phenomenal toolset for data science. Developers can use > >>>>>our toolset for easy data analysis & visualization. Get a free > >>>>>account! > >>>>>http://www2.precog.com/precogplatform/slashdotnewsletter > >>>>>_______________________________________________ > >>>>>dotNetRDF-bugs mailing list > >>>>>dot...@li... > >>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >>>> > >>>> > >>>> > >>>> > >>>> > >>>> > >>>>----------------------------------------------------------------------- > >>>>-- > >>>>----- > >>>> Precog is a next-generation analytics platform capable of advanced > >>>> analytics on semi-structured data. The platform includes APIs for > >>>>building > >>>> apps and a phenomenal toolset for data science. Developers can use > >>>> our toolset for easy data analysis & visualization. Get a free > >>>>account! > >>>> http://www2.precog.com/precogplatform/slashdotnewsletter > >>>> _______________________________________________ > >>>> dotNetRDF-bugs mailing list > >>>> dot...@li... > >>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >>> > >>>------------------------------------------------------------------------ > >>>-- > >>>---- > >>>Precog is a next-generation analytics platform capable of advanced > >>>analytics on semi-structured data. The platform includes APIs for > >>>building > >>>apps and a phenomenal toolset for data science. Developers can use > >>>our toolset for easy data analysis & visualization. Get a free account! > >>>http://www2.precog.com/precogplatform/slashdotnewsletter > >>>_______________________________________________ > >>>dotNetRDF-bugs mailing list > >>>dot...@li... > >>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >> > >> > >> > >> > >> > >> > >>------------------------------------------------------------------------- > >>----- > >> Precog is a next-generation analytics platform capable of advanced > >> analytics on semi-structured data. The platform includes APIs for > >>building > >> apps and a phenomenal toolset for data science. Developers can use > >> our toolset for easy data analysis & visualization. Get a free account! > >> http://www2.precog.com/precogplatform/slashdotnewsletter > >> _______________________________________________ > >> dotNetRDF-bugs mailing list > >> dot...@li... > >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > > > >-------------------------------------------------------------------------- > >---- > >Precog is a next-generation analytics platform capable of advanced > >analytics on semi-structured data. The platform includes APIs for building > >apps and a phenomenal toolset for data science. Developers can use > >our toolset for easy data analysis & visualization. Get a free account! > >http://www2.precog.com/precogplatform/slashdotnewsletter > >_______________________________________________ > >dotNetRDF-bugs mailing list > >dot...@li... > >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > > > > > > > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced > analytics on semi-structured data. The platform includes APIs for building > apps and a phenomenal toolset for data science. Developers can use > our toolset for easy data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter > _______________________________________________ > dotNetRDF-bugs mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > |
From: Rob V. <rv...@do...> - 2013-04-12 18:59:03
|
Ok Can you push the commits up so I can pull them down and take a look at the new test cases Rob On 4/12/13 11:55 AM, "Tomasz Pluskiewicz" <tom...@gm...> wrote: >I've just committed more test cases. Out of the 6 none fail cause OOM >anymore, which is marvellous. > >However case1 reports false but I'm positive these graphs are actually >equal. > >Thanks, >Tom > >On Fri, Apr 12, 2013 at 8:33 PM, Rob Vesse <rv...@do...> wrote: >> Those would be useful >> >> Btw I closed the issue branch so please just add the tests to default >> >> Rob >> >> On 4/12/13 11:23 AM, "Tomasz Pluskiewicz" <tom...@gm...> >> wrote: >> >>>Hi Rob >>> >>>Thanks so much. And yes, I do have 4 or 5 cases which stumble on this >>>same issue. I will add all these to the test fixture. >>> >>>Tom >>> >>>On Fri, Apr 12, 2013 at 8:20 PM, Rob Vesse <rv...@do...> wrote: >>>> Hey Tom >>>> >>>> This should now be fixed for your test case though I am not 100% >>>>convinced >>>> that brute forcing is not still broken >>>> >>>> What I have done to fix this is to add an intermediate step between >>>>the >>>> rules based and brute force mapping which does a divide and conquer >>>> approach >>>> >>>> What this does is break the unmapped blank node portions of the graph >>>>into >>>> its constituent isolated sub-graphs (those that share no blank nodes) >>>>and >>>> then recursively calls Equals() on the candidate matches for the >>>> sub-graphs. This approach reduces the amount of work required and the >>>> likelihood of needing to brute force at all though we still fall back >>>>in >>>> the worst case. >>>> >>>> If you can come up with any more graphs that break GraphMatcher those >>>> would be much appreciated >>>> >>>> Rob >>>> >>>> On 4/12/13 10:25 AM, "Rob Vesse" <rv...@do...> wrote: >>>> >>>>>s/not/now >>>>> >>>>>That should be "the test will now complete within the timeout" >>>>> >>>>>Rob >>>>> >>>>>On 4/12/13 10:23 AM, "Rob Vesse" <rv...@do...> wrote: >>>>> >>>>>>Hey Tom >>>>>> >>>>>>So the logic for generating the brute force mappings was completely >>>>>>broken >>>>>>causing it to get stuck in a memory sucking spin cycle :( >>>>>> >>>>>>I rewrote the GenerateMappings() method from scratch to use yield >>>>>>return >>>>>>and the test will not complete within the timeout but it fails so I >>>>>>still >>>>>>need to dig further >>>>>> >>>>>>We may still be generating incorrect possible mappings or the logic >>>>>>for >>>>>>brute force may be flawed elsewhere >>>>>> >>>>>>Rob >>>>>> >>>>>>On 4/9/13 10:34 AM, "Rob Vesse" <rv...@do...> wrote: >>>>>> >>>>>>>Hey Tom >>>>>>> >>>>>>>The problem is that graph isomorphism is NP-hard so sometimes the >>>>>>>only >>>>>>>option we have is to attempt to brute force the problem >>>>>>> >>>>>>>I've started added some Debug.WriteLine() to GraphMatcher to track >>>>>>>down >>>>>>>where things go wrong >>>>>>> >>>>>>>For your graphs they may look trivially equal but to code they are >>>>>>>not, >>>>>>>the reason this worked prior to 0.8.0 is that one of the things we >>>>>>>try >>>>>>>is >>>>>>>a trivial mapping (assume blank nodes have same IDs in both graphs) >>>>>>>so >>>>>>>in >>>>>>>previous releases you would likely have hit this case and been fine. >>>>>>> >>>>>>>You have 33 blank nodes in the graph of which only 6 are uniquely >>>>>>>identifiable and mappable. The matcher generates a candidate >>>>>>>mapping >>>>>>>for >>>>>>>the whole graph but its best effort is incorrect, so then it falls >>>>>>>back >>>>>>>to >>>>>>>brute force. I need to dig further into whether the candidate >>>>>>>mapping >>>>>>>could be improved but this is not trivial to debug and will take >>>>>>>some >>>>>>>time >>>>>>>to resolve. >>>>>>> >>>>>>>We may be able to reduce the "memory leak" by using yield rather >>>>>>>than >>>>>>>pre-generating all possible mapping but this is a tricky refactor, >>>>>>>it's >>>>>>>been a long time since I wrote the code originally and I remember >>>>>>>that >>>>>>>doing the mapping in the yield form proved thorny at the time so I >>>>>>>chose >>>>>>>not to. The code itself for generating the mappings has some >>>>>>>slightly >>>>>>>strange things in it so I really need to spend a block of time >>>>>>>refreshing >>>>>>>myself on the logic there to check that it is sound before I attempt >>>>>>>to >>>>>>>refactor. >>>>>>> >>>>>>>Rob >>>>>>> >>>>>>>On 4/7/13 11:20 AM, "Tomasz Pluskiewicz" >>>>>>><tom...@gm...> >>>>>>>wrote: >>>>>>> >>>>>>>>Hm, I was wrong actually. >>>>>>>> >>>>>>>>I tried comparing the exact same graphs loaded from Turtle in >>>>>>>>dotNetRDF test project but I got the unit test wrong. >>>>>>>> >>>>>>>>I have added the CORE-345 bug and committed a failing test case >>>>>>>>[1]. >>>>>>>>Could you please have a look at this? >>>>>>>> >>>>>>>>Thanks, >>>>>>>>Tom >>>>>>>> >>>>>>>>[1]: >>>>>>>>https://bitbucket.org/dotnetrdf/dotnetrdf/commits/branch/CORE-345 >>>>>>>> >>>>>>>>On Sun, Apr 7, 2013 at 7:36 PM, Tomasz Pluskiewicz >>>>>>>><tom...@gm...> wrote: >>>>>>>>> Hi Rob >>>>>>>>> >>>>>>>>> I finally got back to R2RML to analyze why I am getting that >>>>>>>>>memory >>>>>>>>> leak. It seems connected to the changes you had to introduce for >>>>>>>>> SPARQL 1.1. >>>>>>>>> >>>>>>>>> I have determined that it happens in >>>>>>>>>GraphMatcher#GenerateMappings >>>>>>>>> method. The graphs are equal and I'm not sure what causes the >>>>>>>>>problem. >>>>>>>>> As soon as TryBruteForceMapping is reached memory consumption >>>>>>>>>explodes >>>>>>>>> to gigabytes within minutes. >>>>>>>>> >>>>>>>>> The low-level problem is the mappings variable in the >>>>>>>>> GenerateMappings, which within a few iteration contains thousands >>>>>>>>>of >>>>>>>>> elements. >>>>>>>>> >>>>>>>>> This problem no longer occurs on trunk. Have you actually been >>>>>>>>> introducing any fixes around that area? >>>>>>>>> >>>>>>>>> Tom >>>>>>>>> >>>>>>>>> On Mon, Jan 14, 2013 at 12:32 PM, Rob Vesse >>>>>>>>><rv...@do...> >>>>>>>>>wrote: >>>>>>>>>> Comments inline: >>>>>>>>>> >>>>>>>>>> On 1/10/13 7:14 PM, "Tomek Pluskiewicz" <to...@pl...> >>>>>>>>>>wrote: >>>>>>>>>> >>>>>>>>>>>Hi Rob >>>>>>>>>>> >>>>>>>>>>>I have just updated to latest dotNetRDF available on NuGet and >>>>>>>>>>>I'm >>>>>>>>>>>experiencing two issues. >>>>>>>>>>> >>>>>>>>>>>1. In my unit tests I relied on the way the library assigns >>>>>>>>>>>blank >>>>>>>>>>>node >>>>>>>>>>>identifiers: autos1, autos2 and so on. When I run the tests >>>>>>>>>>>separately >>>>>>>>>>>each one passes but when I batch them they fail because in >>>>>>>>>>>subsequent >>>>>>>>>>>tests blank nodes are name autos2, autos3, etc. However they >>>>>>>>>>>don't >>>>>>>>>>>share the same graph or triple store. Have you changed this >>>>>>>>>>>behavior >>>>>>>>>>>delbierately? >>>>>>>>>> >>>>>>>>>> Yes this behavior changed in the 0.8.x releases, the change was >>>>>>>>>>made >>>>>>>>>>in >>>>>>>>>> order to resolve a bug in SPARQL 1.1 Update support and also >>>>>>>>>>uncovered >>>>>>>>>>a >>>>>>>>>> bug in graph isomorphism calculation which was fixed. >>>>>>>>>> >>>>>>>>>> You shouldn't rely on an internal implementation detail like how >>>>>>>>>>the >>>>>>>>>> library assigns blank node identifiers. Blank nodes should >>>>>>>>>>always >>>>>>>>>>be >>>>>>>>>> identifiable by the triples they appear in so it should be >>>>>>>>>>possible >>>>>>>>>>to >>>>>>>>>> formulate API calls or SPARQL queries that validate that you >>>>>>>>>>have >>>>>>>>>>produced >>>>>>>>>> the data you expected. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>2. There is a bad memory leak in during SPARQL execution of >>>>>>>>>>>this: >>>>>>>>>> >>>>>>>>>> Define bad memory leak? >>>>>>>>>> >>>>>>>>>> Updates are transactional so it may be a side effect of the >>>>>>>>>>library >>>>>>>>>> maintaining the state necessary to rollback the transaction >>>>>>>>>>should >>>>>>>>>>it >>>>>>>>>>fail >>>>>>>>>> or be aborted. Also the fact that you are replacing constant >>>>>>>>>>nodes >>>>>>>>>>with >>>>>>>>>> blank nodes will assign a lot of new identifiers and those >>>>>>>>>>identifiers >>>>>>>>>> have to be tracked to prevent collisions. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>PREFIX rr: <http://www.w3.org/ns/r2rml#> >>>>>>>>>>>DELETE { ?map rr:graph ?value . } >>>>>>>>>>>INSERT { ?map rr:graphMap [ rr:constant ?value ] . } >>>>>>>>>>>WHERE { ?map rr:graph ?value } ; >>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:object ?value . } >>>>>>>>>>>INSERT { ?map rr:objectMap [ rr:constant ?value ] . } >>>>>>>>>>>WHERE { ?map rr:object ?value } ; >>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:predicate ?value . } >>>>>>>>>>>INSERT { ?map rr:predicateMap [ rr:constant ?value ] . } >>>>>>>>>>>WHERE { ?map rr:predicate ?value } ; >>>>>>>>>>> >>>>>>>>>>>DELETE { ?map rr:subject ?value . } >>>>>>>>>>>INSERT { ?map rr:subjectMap [ rr:constant ?value ] . } >>>>>>>>>>>WHERE { ?map rr:subject ?value } >>>>>>>>>>> >>>>>>>>>>>The full code is simply: >>>>>>>>>>> >>>>>>>>>>>var dataset = new InMemoryDataset(store, R2RMLMappings.BaseUri); >>>>>>>>>>> ISparqlUpdateProcessor processor = new >>>>>>>>>>>LeviathanUpdateProcessor(dataset); >>>>>>>>>>> var updateParser = new SparqlUpdateParser(); >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>processor.ProcessCommandSet(updateParser.ParseFromString(Shortcu >>>>>>>>>>>tS >>>>>>>>>>>ub >>>>>>>>>>>m >>>>>>>>>>>a >>>>>>>>>>>p >>>>>>>>>>>sRe >>>>>>>>>>>placeSparql)); >>>>>>>>>>> >>>>>>>>>>>Is this a know problem and has been already fixed or should I >>>>>>>>>>>investigate closely? >>>>>>>>>> >>>>>>>>>> This is not a known issue, I would also guess that the data >>>>>>>>>>being >>>>>>>>>>used >>>>>>>>>> would have some bearing on the severity of the problem. Please >>>>>>>>>>go >>>>>>>>>>ahead >>>>>>>>>> and investigate but I would suspect it is the two things I >>>>>>>>>>outlined >>>>>>>>>>above >>>>>>>>>> which are the culprits here. >>>>>>>>>> >>>>>>>>>> Rob >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>Thanks, >>>>>>>>>>>Tom >>>>>>>>>>> >>>>>>>>>>>---------------------------------------------------------------- >>>>>>>>>>>-- >>>>>>>>>>>-- >>>>>>>>>>>- >>>>>>>>>>>- >>>>>>>>>>>- >>>>>>>>>>>--- >>>>>>>>>>>---- >>>>>>>>>>>Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, >>>>>>>>>>>CSS, >>>>>>>>>>>MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>>>>>>>>>>current >>>>>>>>>>>with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>>Microsoft >>>>>>>>>>>MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>>>>>http://p.sf.net/sfu/learnmore_122712 >>>>>>>>>>>_______________________________________________ >>>>>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>>dot...@li... >>>>>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>----------------------------------------------------------------- >>>>>>>>>>-- >>>>>>>>>>-- >>>>>>>>>>- >>>>>>>>>>- >>>>>>>>>>- >>>>>>>>>>------ >>>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, >>>>>>>>>>CSS, >>>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>>>>>>>>>current >>>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by >>>>>>>>>>Microsoft >>>>>>>>>> MVPs and experts. SALE $99.99 this month only -- learn more at: >>>>>>>>>> http://p.sf.net/sfu/learnmore_122412 >>>>>>>>>> _______________________________________________ >>>>>>>>>> dotNetRDF-bugs mailing list >>>>>>>>>> dot...@li... >>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>> >>>>>>>>------------------------------------------------------------------- >>>>>>>>-- >>>>>>>>-- >>>>>>>>- >>>>>>>>- >>>>>>>>- >>>>>>>>---- >>>>>>>>Minimize network downtime and maximize team effectiveness. >>>>>>>>Reduce network management and security costs.Learn how to hire >>>>>>>>the most talented Cisco Certified professionals. Visit the >>>>>>>>Employer Resources Portal >>>>>>>>http://www.cisco.com/web/learning/employer_resources/index.html >>>>>>>>_______________________________________________ >>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>dot...@li... >>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>>-------------------------------------------------------------------- >>>>>>>-- >>>>>>>-- >>>>>>>- >>>>>>>- >>>>>>>---- >>>>>>>Precog is a next-generation analytics platform capable of advanced >>>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>>building >>>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>>account! >>>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>>_______________________________________________ >>>>>>>dotNetRDF-bugs mailing list >>>>>>>dot...@li... >>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>--------------------------------------------------------------------- >>>>>>-- >>>>>>-- >>>>>>- >>>>>>---- >>>>>>Precog is a next-generation analytics platform capable of advanced >>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>building >>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>account! >>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>_______________________________________________ >>>>>>dotNetRDF-bugs mailing list >>>>>>dot...@li... >>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>---------------------------------------------------------------------- >>>>>-- >>>>>-- >>>>>---- >>>>>Precog is a next-generation analytics platform capable of advanced >>>>>analytics on semi-structured data. The platform includes APIs for >>>>>building >>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>our toolset for easy data analysis & visualization. Get a free >>>>>account! >>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>_______________________________________________ >>>>>dotNetRDF-bugs mailing list >>>>>dot...@li... >>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>> >>>> >>>> >>>> >>>> >>>> >>>>----------------------------------------------------------------------- >>>>-- >>>>----- >>>> Precog is a next-generation analytics platform capable of advanced >>>> analytics on semi-structured data. The platform includes APIs for >>>>building >>>> apps and a phenomenal toolset for data science. Developers can use >>>> our toolset for easy data analysis & visualization. Get a free >>>>account! >>>> http://www2.precog.com/precogplatform/slashdotnewsletter >>>> _______________________________________________ >>>> dotNetRDF-bugs mailing list >>>> dot...@li... >>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>> >>>------------------------------------------------------------------------ >>>-- >>>---- >>>Precog is a next-generation analytics platform capable of advanced >>>analytics on semi-structured data. The platform includes APIs for >>>building >>>apps and a phenomenal toolset for data science. Developers can use >>>our toolset for easy data analysis & visualization. Get a free account! >>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>_______________________________________________ >>>dotNetRDF-bugs mailing list >>>dot...@li... >>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >> >> >> >> >> >> >>------------------------------------------------------------------------- >>----- >> Precog is a next-generation analytics platform capable of advanced >> analytics on semi-structured data. The platform includes APIs for >>building >> apps and a phenomenal toolset for data science. Developers can use >> our toolset for easy data analysis & visualization. Get a free account! >> http://www2.precog.com/precogplatform/slashdotnewsletter >> _______________________________________________ >> dotNetRDF-bugs mailing list >> dot...@li... >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > >-------------------------------------------------------------------------- >---- >Precog is a next-generation analytics platform capable of advanced >analytics on semi-structured data. The platform includes APIs for building >apps and a phenomenal toolset for data science. Developers can use >our toolset for easy data analysis & visualization. Get a free account! >http://www2.precog.com/precogplatform/slashdotnewsletter >_______________________________________________ >dotNetRDF-bugs mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
From: Tomasz P. <tom...@gm...> - 2013-04-12 18:56:42
|
I've just committed more test cases. Out of the 6 none fail cause OOM anymore, which is marvellous. However case1 reports false but I'm positive these graphs are actually equal. Thanks, Tom On Fri, Apr 12, 2013 at 8:33 PM, Rob Vesse <rv...@do...> wrote: > Those would be useful > > Btw I closed the issue branch so please just add the tests to default > > Rob > > On 4/12/13 11:23 AM, "Tomasz Pluskiewicz" <tom...@gm...> > wrote: > >>Hi Rob >> >>Thanks so much. And yes, I do have 4 or 5 cases which stumble on this >>same issue. I will add all these to the test fixture. >> >>Tom >> >>On Fri, Apr 12, 2013 at 8:20 PM, Rob Vesse <rv...@do...> wrote: >>> Hey Tom >>> >>> This should now be fixed for your test case though I am not 100% >>>convinced >>> that brute forcing is not still broken >>> >>> What I have done to fix this is to add an intermediate step between the >>> rules based and brute force mapping which does a divide and conquer >>> approach >>> >>> What this does is break the unmapped blank node portions of the graph >>>into >>> its constituent isolated sub-graphs (those that share no blank nodes) >>>and >>> then recursively calls Equals() on the candidate matches for the >>> sub-graphs. This approach reduces the amount of work required and the >>> likelihood of needing to brute force at all though we still fall back in >>> the worst case. >>> >>> If you can come up with any more graphs that break GraphMatcher those >>> would be much appreciated >>> >>> Rob >>> >>> On 4/12/13 10:25 AM, "Rob Vesse" <rv...@do...> wrote: >>> >>>>s/not/now >>>> >>>>That should be "the test will now complete within the timeout" >>>> >>>>Rob >>>> >>>>On 4/12/13 10:23 AM, "Rob Vesse" <rv...@do...> wrote: >>>> >>>>>Hey Tom >>>>> >>>>>So the logic for generating the brute force mappings was completely >>>>>broken >>>>>causing it to get stuck in a memory sucking spin cycle :( >>>>> >>>>>I rewrote the GenerateMappings() method from scratch to use yield >>>>>return >>>>>and the test will not complete within the timeout but it fails so I >>>>>still >>>>>need to dig further >>>>> >>>>>We may still be generating incorrect possible mappings or the logic for >>>>>brute force may be flawed elsewhere >>>>> >>>>>Rob >>>>> >>>>>On 4/9/13 10:34 AM, "Rob Vesse" <rv...@do...> wrote: >>>>> >>>>>>Hey Tom >>>>>> >>>>>>The problem is that graph isomorphism is NP-hard so sometimes the only >>>>>>option we have is to attempt to brute force the problem >>>>>> >>>>>>I've started added some Debug.WriteLine() to GraphMatcher to track >>>>>>down >>>>>>where things go wrong >>>>>> >>>>>>For your graphs they may look trivially equal but to code they are >>>>>>not, >>>>>>the reason this worked prior to 0.8.0 is that one of the things we try >>>>>>is >>>>>>a trivial mapping (assume blank nodes have same IDs in both graphs) so >>>>>>in >>>>>>previous releases you would likely have hit this case and been fine. >>>>>> >>>>>>You have 33 blank nodes in the graph of which only 6 are uniquely >>>>>>identifiable and mappable. The matcher generates a candidate mapping >>>>>>for >>>>>>the whole graph but its best effort is incorrect, so then it falls >>>>>>back >>>>>>to >>>>>>brute force. I need to dig further into whether the candidate mapping >>>>>>could be improved but this is not trivial to debug and will take some >>>>>>time >>>>>>to resolve. >>>>>> >>>>>>We may be able to reduce the "memory leak" by using yield rather than >>>>>>pre-generating all possible mapping but this is a tricky refactor, >>>>>>it's >>>>>>been a long time since I wrote the code originally and I remember that >>>>>>doing the mapping in the yield form proved thorny at the time so I >>>>>>chose >>>>>>not to. The code itself for generating the mappings has some slightly >>>>>>strange things in it so I really need to spend a block of time >>>>>>refreshing >>>>>>myself on the logic there to check that it is sound before I attempt >>>>>>to >>>>>>refactor. >>>>>> >>>>>>Rob >>>>>> >>>>>>On 4/7/13 11:20 AM, "Tomasz Pluskiewicz" >>>>>><tom...@gm...> >>>>>>wrote: >>>>>> >>>>>>>Hm, I was wrong actually. >>>>>>> >>>>>>>I tried comparing the exact same graphs loaded from Turtle in >>>>>>>dotNetRDF test project but I got the unit test wrong. >>>>>>> >>>>>>>I have added the CORE-345 bug and committed a failing test case [1]. >>>>>>>Could you please have a look at this? >>>>>>> >>>>>>>Thanks, >>>>>>>Tom >>>>>>> >>>>>>>[1]: >>>>>>>https://bitbucket.org/dotnetrdf/dotnetrdf/commits/branch/CORE-345 >>>>>>> >>>>>>>On Sun, Apr 7, 2013 at 7:36 PM, Tomasz Pluskiewicz >>>>>>><tom...@gm...> wrote: >>>>>>>> Hi Rob >>>>>>>> >>>>>>>> I finally got back to R2RML to analyze why I am getting that memory >>>>>>>> leak. It seems connected to the changes you had to introduce for >>>>>>>> SPARQL 1.1. >>>>>>>> >>>>>>>> I have determined that it happens in GraphMatcher#GenerateMappings >>>>>>>> method. The graphs are equal and I'm not sure what causes the >>>>>>>>problem. >>>>>>>> As soon as TryBruteForceMapping is reached memory consumption >>>>>>>>explodes >>>>>>>> to gigabytes within minutes. >>>>>>>> >>>>>>>> The low-level problem is the mappings variable in the >>>>>>>> GenerateMappings, which within a few iteration contains thousands >>>>>>>>of >>>>>>>> elements. >>>>>>>> >>>>>>>> This problem no longer occurs on trunk. Have you actually been >>>>>>>> introducing any fixes around that area? >>>>>>>> >>>>>>>> Tom >>>>>>>> >>>>>>>> On Mon, Jan 14, 2013 at 12:32 PM, Rob Vesse <rv...@do...> >>>>>>>>wrote: >>>>>>>>> Comments inline: >>>>>>>>> >>>>>>>>> On 1/10/13 7:14 PM, "Tomek Pluskiewicz" <to...@pl...> >>>>>>>>>wrote: >>>>>>>>> >>>>>>>>>>Hi Rob >>>>>>>>>> >>>>>>>>>>I have just updated to latest dotNetRDF available on NuGet and I'm >>>>>>>>>>experiencing two issues. >>>>>>>>>> >>>>>>>>>>1. In my unit tests I relied on the way the library assigns blank >>>>>>>>>>node >>>>>>>>>>identifiers: autos1, autos2 and so on. When I run the tests >>>>>>>>>>separately >>>>>>>>>>each one passes but when I batch them they fail because in >>>>>>>>>>subsequent >>>>>>>>>>tests blank nodes are name autos2, autos3, etc. However they don't >>>>>>>>>>share the same graph or triple store. Have you changed this >>>>>>>>>>behavior >>>>>>>>>>delbierately? >>>>>>>>> >>>>>>>>> Yes this behavior changed in the 0.8.x releases, the change was >>>>>>>>>made >>>>>>>>>in >>>>>>>>> order to resolve a bug in SPARQL 1.1 Update support and also >>>>>>>>>uncovered >>>>>>>>>a >>>>>>>>> bug in graph isomorphism calculation which was fixed. >>>>>>>>> >>>>>>>>> You shouldn't rely on an internal implementation detail like how >>>>>>>>>the >>>>>>>>> library assigns blank node identifiers. Blank nodes should always >>>>>>>>>be >>>>>>>>> identifiable by the triples they appear in so it should be >>>>>>>>>possible >>>>>>>>>to >>>>>>>>> formulate API calls or SPARQL queries that validate that you have >>>>>>>>>produced >>>>>>>>> the data you expected. >>>>>>>>> >>>>>>>>>> >>>>>>>>>>2. There is a bad memory leak in during SPARQL execution of this: >>>>>>>>> >>>>>>>>> Define bad memory leak? >>>>>>>>> >>>>>>>>> Updates are transactional so it may be a side effect of the >>>>>>>>>library >>>>>>>>> maintaining the state necessary to rollback the transaction should >>>>>>>>>it >>>>>>>>>fail >>>>>>>>> or be aborted. Also the fact that you are replacing constant >>>>>>>>>nodes >>>>>>>>>with >>>>>>>>> blank nodes will assign a lot of new identifiers and those >>>>>>>>>identifiers >>>>>>>>> have to be tracked to prevent collisions. >>>>>>>>> >>>>>>>>>> >>>>>>>>>>PREFIX rr: <http://www.w3.org/ns/r2rml#> >>>>>>>>>>DELETE { ?map rr:graph ?value . } >>>>>>>>>>INSERT { ?map rr:graphMap [ rr:constant ?value ] . } >>>>>>>>>>WHERE { ?map rr:graph ?value } ; >>>>>>>>>> >>>>>>>>>>DELETE { ?map rr:object ?value . } >>>>>>>>>>INSERT { ?map rr:objectMap [ rr:constant ?value ] . } >>>>>>>>>>WHERE { ?map rr:object ?value } ; >>>>>>>>>> >>>>>>>>>>DELETE { ?map rr:predicate ?value . } >>>>>>>>>>INSERT { ?map rr:predicateMap [ rr:constant ?value ] . } >>>>>>>>>>WHERE { ?map rr:predicate ?value } ; >>>>>>>>>> >>>>>>>>>>DELETE { ?map rr:subject ?value . } >>>>>>>>>>INSERT { ?map rr:subjectMap [ rr:constant ?value ] . } >>>>>>>>>>WHERE { ?map rr:subject ?value } >>>>>>>>>> >>>>>>>>>>The full code is simply: >>>>>>>>>> >>>>>>>>>>var dataset = new InMemoryDataset(store, R2RMLMappings.BaseUri); >>>>>>>>>> ISparqlUpdateProcessor processor = new >>>>>>>>>>LeviathanUpdateProcessor(dataset); >>>>>>>>>> var updateParser = new SparqlUpdateParser(); >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>processor.ProcessCommandSet(updateParser.ParseFromString(ShortcutS >>>>>>>>>>ub >>>>>>>>>>m >>>>>>>>>>a >>>>>>>>>>p >>>>>>>>>>sRe >>>>>>>>>>placeSparql)); >>>>>>>>>> >>>>>>>>>>Is this a know problem and has been already fixed or should I >>>>>>>>>>investigate closely? >>>>>>>>> >>>>>>>>> This is not a known issue, I would also guess that the data being >>>>>>>>>used >>>>>>>>> would have some bearing on the severity of the problem. Please go >>>>>>>>>ahead >>>>>>>>> and investigate but I would suspect it is the two things I >>>>>>>>>outlined >>>>>>>>>above >>>>>>>>> which are the culprits here. >>>>>>>>> >>>>>>>>> Rob >>>>>>>>> >>>>>>>>>> >>>>>>>>>>Thanks, >>>>>>>>>>Tom >>>>>>>>>> >>>>>>>>>>------------------------------------------------------------------ >>>>>>>>>>-- >>>>>>>>>>- >>>>>>>>>>- >>>>>>>>>>- >>>>>>>>>>--- >>>>>>>>>>---- >>>>>>>>>>Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, >>>>>>>>>>CSS, >>>>>>>>>>MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>>>>>>>>>current >>>>>>>>>>with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>>>>>>>MVPs and experts. ON SALE this month only -- learn more at: >>>>>>>>>>http://p.sf.net/sfu/learnmore_122712 >>>>>>>>>>_______________________________________________ >>>>>>>>>>dotNetRDF-bugs mailing list >>>>>>>>>>dot...@li... >>>>>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>>------------------------------------------------------------------- >>>>>>>>>-- >>>>>>>>>- >>>>>>>>>- >>>>>>>>>- >>>>>>>>>------ >>>>>>>>> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, >>>>>>>>>CSS, >>>>>>>>> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills >>>>>>>>>current >>>>>>>>> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>>>>>>>> MVPs and experts. SALE $99.99 this month only -- learn more at: >>>>>>>>> http://p.sf.net/sfu/learnmore_122412 >>>>>>>>> _______________________________________________ >>>>>>>>> dotNetRDF-bugs mailing list >>>>>>>>> dot...@li... >>>>>>>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>>> >>>>>>>--------------------------------------------------------------------- >>>>>>>-- >>>>>>>- >>>>>>>- >>>>>>>- >>>>>>>---- >>>>>>>Minimize network downtime and maximize team effectiveness. >>>>>>>Reduce network management and security costs.Learn how to hire >>>>>>>the most talented Cisco Certified professionals. Visit the >>>>>>>Employer Resources Portal >>>>>>>http://www.cisco.com/web/learning/employer_resources/index.html >>>>>>>_______________________________________________ >>>>>>>dotNetRDF-bugs mailing list >>>>>>>dot...@li... >>>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>---------------------------------------------------------------------- >>>>>>-- >>>>>>- >>>>>>- >>>>>>---- >>>>>>Precog is a next-generation analytics platform capable of advanced >>>>>>analytics on semi-structured data. The platform includes APIs for >>>>>>building >>>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>>our toolset for easy data analysis & visualization. Get a free >>>>>>account! >>>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>>_______________________________________________ >>>>>>dotNetRDF-bugs mailing list >>>>>>dot...@li... >>>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>----------------------------------------------------------------------- >>>>>-- >>>>>- >>>>>---- >>>>>Precog is a next-generation analytics platform capable of advanced >>>>>analytics on semi-structured data. The platform includes APIs for >>>>>building >>>>>apps and a phenomenal toolset for data science. Developers can use >>>>>our toolset for easy data analysis & visualization. Get a free account! >>>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>>_______________________________________________ >>>>>dotNetRDF-bugs mailing list >>>>>dot...@li... >>>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>>> >>>> >>>> >>>> >>>> >>>>------------------------------------------------------------------------ >>>>-- >>>>---- >>>>Precog is a next-generation analytics platform capable of advanced >>>>analytics on semi-structured data. The platform includes APIs for >>>>building >>>>apps and a phenomenal toolset for data science. Developers can use >>>>our toolset for easy data analysis & visualization. Get a free account! >>>>http://www2.precog.com/precogplatform/slashdotnewsletter >>>>_______________________________________________ >>>>dotNetRDF-bugs mailing list >>>>dot...@li... >>>>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >>> >>> >>> >>> >>> >>> >>>------------------------------------------------------------------------- >>>----- >>> Precog is a next-generation analytics platform capable of advanced >>> analytics on semi-structured data. The platform includes APIs for >>>building >>> apps and a phenomenal toolset for data science. Developers can use >>> our toolset for easy data analysis & visualization. Get a free account! >>> http://www2.precog.com/precogplatform/slashdotnewsletter >>> _______________________________________________ >>> dotNetRDF-bugs mailing list >>> dot...@li... >>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs >> >>-------------------------------------------------------------------------- >>---- >>Precog is a next-generation analytics platform capable of advanced >>analytics on semi-structured data. The platform includes APIs for building >>apps and a phenomenal toolset for data science. Developers can use >>our toolset for easy data analysis & visualization. Get a free account! >>http://www2.precog.com/precogplatform/slashdotnewsletter >>_______________________________________________ >>dotNetRDF-bugs mailing list >>dot...@li... >>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs > > > > > > ------------------------------------------------------------------------------ > Precog is a next-generation analytics platform capable of advanced > analytics on semi-structured data. The platform includes APIs for building > apps and a phenomenal toolset for data science. Developers can use > our toolset for easy data analysis & visualization. Get a free account! > http://www2.precog.com/precogplatform/slashdotnewsletter > _______________________________________________ > dotNetRDF-bugs mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |