You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
|
Feb
(19) |
Mar
(1) |
Apr
(9) |
May
(4) |
Jun
(15) |
Jul
(9) |
Aug
(11) |
Sep
(3) |
Oct
(3) |
Nov
(2) |
Dec
(13) |
| 2011 |
Jan
(1) |
Feb
|
Mar
(6) |
Apr
(2) |
May
(3) |
Jun
|
Jul
(3) |
Aug
(3) |
Sep
(3) |
Oct
(2) |
Nov
(5) |
Dec
(1) |
| 2012 |
Jan
(5) |
Feb
(2) |
Mar
(1) |
Apr
|
May
(5) |
Jun
(13) |
Jul
(18) |
Aug
(7) |
Sep
(1) |
Oct
(21) |
Nov
(2) |
Dec
(6) |
| 2013 |
Jan
(12) |
Feb
(3) |
Mar
|
Apr
(22) |
May
(1) |
Jun
|
Jul
(4) |
Aug
(2) |
Sep
(7) |
Oct
(1) |
Nov
(7) |
Dec
(1) |
| 2014 |
Jan
(4) |
Feb
|
Mar
(4) |
Apr
|
May
(13) |
Jun
(8) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(9) |
Dec
(1) |
| 2015 |
Jan
(5) |
Feb
(2) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Rob V. <rv...@do...> - 2013-04-12 18:34:21
|
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 |
|
From: Tomasz P. <tom...@gm...> - 2013-04-12 18:24:12
|
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(ShortcutSub >>>>>>>>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 |
|
From: Rob V. <rv...@do...> - 2013-04-12 18:21:08
|
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(ShortcutSub >>>>>>>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 |
|
From: Rob V. <rv...@do...> - 2013-04-12 17:26:47
|
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(ShortcutSubm >>>>>>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 |
|
From: Rob V. <rv...@do...> - 2013-04-12 17:24:42
|
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(ShortcutSubma >>>>>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 |
|
From: Rob V. <rv...@do...> - 2013-04-09 17:35:31
|
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(ShortcutSubmap >>>>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 |
|
From: Tomasz P. <tom...@gm...> - 2013-04-07 18:21:09
|
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(ShortcutSubmapsRe >>>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 |
|
From: Tomasz P. <tom...@gm...> - 2013-04-07 17:37:07
|
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(ShortcutSubmapsRe >>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 |
|
From: Rob V. <rv...@do...> - 2013-04-04 16:07:31
|
Looks great, thanks for taking the time to track this down
We probably want to add a few more round tripping tests e.g
float -> ToLiteral() -> AsValuedNode() -> AsFloat()
And so forth
Rob
On 4/3/13 1:40 PM, "Tomasz Pluskiewicz" <tom...@gm...>
wrote:
>Indeed the problem was with ValuedNodeExtensions.
>
>I filed a bug and completed your test so that the bug is reporduced
>and fixed. However I have tracked a some other examples of number
>parsing code, which didn't use invariant culture. Please have a look
>at the changes in branch CORE-344 and decide what other tests would be
>good to have to ensure no regression.
>
>Thanks,
>Tom
>
>On Wed, Apr 3, 2013 at 1:47 AM, Rob Vesse <rv...@do...> wrote:
>> If you have a time take a look at ValuedNodeExtensions, BaseLiteralNode
>>and
>> ComparisonHelper
>>
>> Those are the places off the top of my head that will parse values out
>>of
>> literal values, I will try and get to look at this tomorrow if I have
>>time
>>
>> Rob
>>
>> From: Tomek Pluskiewicz <to...@pl...>
>> Reply-To: dotNetRDF Bug Report tracking and resolution
>> <dot...@li...>
>> Date: Monday, April 1, 2013 9:46 PM
>> To: dotNetRDF Bug Report tracking and resolution
>> <dot...@li...>
>> Subject: Re: [dotNetRDF-bugs] Problem with aggregate
>>
>> I'd thought it would. Because it is about float numbers I suspect a
>> globalization problem.
>>
>> Any suggestion where to look?
>>
>> On Apr 2, 2013 2:23 AM, "Rob Vesse" <rv...@do...> wrote:
>>>
>>> Hey Tom
>>>
>>> This works fine for me on my box, so not sure what the issue is on your
>>> machine
>>>
>>> Added as a unit test
>>>
>>> Rob
>>>
>>> On 4/1/13 1:33 PM, "Tomek Pluskiewicz" <plo...@gm...> wrote:
>>>
>>> >Hi Rob
>>> >
>>> >Please try the following code:
>>> >
>>> >TripleStore store = new TripleStore();
>>> >
>>>
>>> >
>>>>store.LoadFromUri(UriFactory.Create("http://semanticsage.home.lc/files/
>>>>Lea
>>> >rningStyles.rdf"));
>>> >
>>> > Options.AlgebraOptimisation = false;
>>> >
>>> > var graph = (IGraph)store.ExecuteQuery(@"prefix sage:
>>> ><http://www.semanticsage.home.lc/LearningStyles.owl#>
>>> >prefix xsd: <http://www.w3.org/2001/XMLSchema#>
>>> >prefix : <http://semanticsage.home.lc/files/LearningStyles.rdf#>
>>> >
>>> >CONSTRUCT
>>> >{
>>> > ?MTech :max ?maxScore
>>> >}
>>> >WHERE
>>> >{
>>> > SELECT ?MTech max(?max) as ?maxScore
>>> > WHERE
>>> > {
>>> > SELECT ?MTech ?LessonType sum(?hasValue) as ?max
>>> > WHERE
>>> > {
>>> > ?MTech sage:attendsLessons ?Lesson.
>>> > ?Lesson sage:hasLessonType ?LessonType.
>>> > ?MTech sage:undergoesEvaluation ?Quiz.
>>> > ?Quiz sage:isForLesson ?Lesson.
>>> > ?MTech sage:hasQuizMarks ?QuizMarks.
>>> > ?QuizMarks sage:belongsToQuiz ?Quiz.
>>> > ?QuizMarks sage:hasValue ?hasValue.
>>> > ?Lesson sage:inRound '1'^^xsd:int.
>>> > }
>>> > GROUP BY ?MTech ?LessonType
>>> > }
>>> > GROUP BY ?MTech
>>> >}");
>>> >
>>> >The above query works fine in Leviathan demo.
>>> >
>>> >However on my box instead of actual values I get all ?maxScore bound
>>> >to "0"@xsd:int. I'm running this using the latest dll from trunk,
>>> >
>>> >Thanks,
>>> >Tom
>>> >
>>>
>>> >
>>>>-----------------------------------------------------------------------
>>>>---
>>> >----
>>> >Own the Future-Intel® Level Up Game Demo Contest 2013
>>> >Rise to greatness in Intel's independent game demo contest.
>>> >Compete for recognition, cash, and the chance to get your game
>>> >on Steam. $5K grand prize plus 10 genre and skill prizes.
>>> >Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
>>> >_______________________________________________
>>> >dotNetRDF-bugs mailing list
>>> >dot...@li...
>>> >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>------------------------------------------------------------------------
>>>------
>>> Own the Future-Intel(R) Level Up Game Demo Contest 2013
>>> Rise to greatness in Intel's independent game demo contest. Compete
>>> for recognition, cash, and the chance to get your game on Steam.
>>> $5K grand prize plus 10 genre and skill prizes. Submit your demo
>>> by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2
>>> _______________________________________________
>>> dotNetRDF-bugs mailing list
>>> dot...@li...
>>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>>
>>
>>-------------------------------------------------------------------------
>>-----
>> Own the Future-Intel(R) Level Up Game Demo Contest 2013 Rise to
>>greatness in
>> Intel's independent game demo contest. Compete for recognition, cash,
>>and
>> the chance to get your game on Steam. $5K grand prize plus 10 genre and
>> skill prizes. Submit your demo by 6/6/13.
>>
>>http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2__________________
>>_____________________________
>> 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
>>
>
>--------------------------------------------------------------------------
>----
>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
|
|
From: Tomasz P. <tom...@gm...> - 2013-04-03 20:41:22
|
Indeed the problem was with ValuedNodeExtensions.
I filed a bug and completed your test so that the bug is reporduced
and fixed. However I have tracked a some other examples of number
parsing code, which didn't use invariant culture. Please have a look
at the changes in branch CORE-344 and decide what other tests would be
good to have to ensure no regression.
Thanks,
Tom
On Wed, Apr 3, 2013 at 1:47 AM, Rob Vesse <rv...@do...> wrote:
> If you have a time take a look at ValuedNodeExtensions, BaseLiteralNode and
> ComparisonHelper
>
> Those are the places off the top of my head that will parse values out of
> literal values, I will try and get to look at this tomorrow if I have time
>
> Rob
>
> From: Tomek Pluskiewicz <to...@pl...>
> Reply-To: dotNetRDF Bug Report tracking and resolution
> <dot...@li...>
> Date: Monday, April 1, 2013 9:46 PM
> To: dotNetRDF Bug Report tracking and resolution
> <dot...@li...>
> Subject: Re: [dotNetRDF-bugs] Problem with aggregate
>
> I'd thought it would. Because it is about float numbers I suspect a
> globalization problem.
>
> Any suggestion where to look?
>
> On Apr 2, 2013 2:23 AM, "Rob Vesse" <rv...@do...> wrote:
>>
>> Hey Tom
>>
>> This works fine for me on my box, so not sure what the issue is on your
>> machine
>>
>> Added as a unit test
>>
>> Rob
>>
>> On 4/1/13 1:33 PM, "Tomek Pluskiewicz" <plo...@gm...> wrote:
>>
>> >Hi Rob
>> >
>> >Please try the following code:
>> >
>> >TripleStore store = new TripleStore();
>> >
>>
>> > >store.LoadFromUri(UriFactory.Create("http://semanticsage.home.lc/files/Lea
>> >rningStyles.rdf"));
>> >
>> > Options.AlgebraOptimisation = false;
>> >
>> > var graph = (IGraph)store.ExecuteQuery(@"prefix sage:
>> ><http://www.semanticsage.home.lc/LearningStyles.owl#>
>> >prefix xsd: <http://www.w3.org/2001/XMLSchema#>
>> >prefix : <http://semanticsage.home.lc/files/LearningStyles.rdf#>
>> >
>> >CONSTRUCT
>> >{
>> > ?MTech :max ?maxScore
>> >}
>> >WHERE
>> >{
>> > SELECT ?MTech max(?max) as ?maxScore
>> > WHERE
>> > {
>> > SELECT ?MTech ?LessonType sum(?hasValue) as ?max
>> > WHERE
>> > {
>> > ?MTech sage:attendsLessons ?Lesson.
>> > ?Lesson sage:hasLessonType ?LessonType.
>> > ?MTech sage:undergoesEvaluation ?Quiz.
>> > ?Quiz sage:isForLesson ?Lesson.
>> > ?MTech sage:hasQuizMarks ?QuizMarks.
>> > ?QuizMarks sage:belongsToQuiz ?Quiz.
>> > ?QuizMarks sage:hasValue ?hasValue.
>> > ?Lesson sage:inRound '1'^^xsd:int.
>> > }
>> > GROUP BY ?MTech ?LessonType
>> > }
>> > GROUP BY ?MTech
>> >}");
>> >
>> >The above query works fine in Leviathan demo.
>> >
>> >However on my box instead of actual values I get all ?maxScore bound
>> >to "0"@xsd:int. I'm running this using the latest dll from trunk,
>> >
>> >Thanks,
>> >Tom
>> >
>>
>> > >--------------------------------------------------------------------------
>> >----
>> >Own the Future-Intel® Level Up Game Demo Contest 2013
>> >Rise to greatness in Intel's independent game demo contest.
>> >Compete for recognition, cash, and the chance to get your game
>> >on Steam. $5K grand prize plus 10 genre and skill prizes.
>> >Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
>> >_______________________________________________
>> >dotNetRDF-bugs mailing list
>> >dot...@li...
>> >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>>
>>
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Own the Future-Intel(R) Level Up Game Demo Contest 2013
>> Rise to greatness in Intel's independent game demo contest. Compete
>> for recognition, cash, and the chance to get your game on Steam.
>> $5K grand prize plus 10 genre and skill prizes. Submit your demo
>> by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2
>> _______________________________________________
>> dotNetRDF-bugs mailing list
>> dot...@li...
>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>
> ------------------------------------------------------------------------------
> Own the Future-Intel(R) Level Up Game Demo Contest 2013 Rise to greatness in
> Intel's independent game demo contest. Compete for recognition, cash, and
> the chance to get your game on Steam. $5K grand prize plus 10 genre and
> skill prizes. Submit your demo by 6/6/13.
> http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2_______________________________________________
> 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
>
|
|
From: Rob V. <rv...@do...> - 2013-04-02 23:48:02
|
If you have a time take a look at ValuedNodeExtensions, BaseLiteralNode and
ComparisonHelper
Those are the places off the top of my head that will parse values out of
literal values, I will try and get to look at this tomorrow if I have time
Rob
From: Tomek Pluskiewicz <to...@pl...>
Reply-To: dotNetRDF Bug Report tracking and resolution
<dot...@li...>
Date: Monday, April 1, 2013 9:46 PM
To: dotNetRDF Bug Report tracking and resolution
<dot...@li...>
Subject: Re: [dotNetRDF-bugs] Problem with aggregate
>
> I'd thought it would. Because it is about float numbers I suspect a
> globalization problem.
>
> Any suggestion where to look?
>
> On Apr 2, 2013 2:23 AM, "Rob Vesse" <rv...@do...> wrote:
>> Hey Tom
>>
>> This works fine for me on my box, so not sure what the issue is on your
>> machine
>>
>> Added as a unit test
>>
>> Rob
>>
>> On 4/1/13 1:33 PM, "Tomek Pluskiewicz" <plo...@gm...> wrote:
>>
>>> >Hi Rob
>>> >
>>> >Please try the following code:
>>> >
>>> >TripleStore store = new TripleStore();
>>> >
>>> >store.LoadFromUri(UriFactory.Create("http://semanticsage.home.lc/files/Lea
>>> >rningStyles.rdf"));
>>> >
>>> > Options.AlgebraOptimisation = false;
>>> >
>>> > var graph = (IGraph)store.ExecuteQuery(@"prefix sage:
>>> ><http://www.semanticsage.home.lc/LearningStyles.owl#>
>>> >prefix xsd: <http://www.w3.org/2001/XMLSchema#>
>>> >prefix : <http://semanticsage.home.lc/files/LearningStyles.rdf#>
>>> >
>>> >CONSTRUCT
>>> >{
>>> > ?MTech :max ?maxScore
>>> >}
>>> >WHERE
>>> >{
>>> > SELECT ?MTech max(?max) as ?maxScore
>>> > WHERE
>>> > {
>>> > SELECT ?MTech ?LessonType sum(?hasValue) as ?max
>>> > WHERE
>>> > {
>>> > ?MTech sage:attendsLessons ?Lesson.
>>> > ?Lesson sage:hasLessonType ?LessonType.
>>> > ?MTech sage:undergoesEvaluation ?Quiz.
>>> > ?Quiz sage:isForLesson ?Lesson.
>>> > ?MTech sage:hasQuizMarks ?QuizMarks.
>>> > ?QuizMarks sage:belongsToQuiz ?Quiz.
>>> > ?QuizMarks sage:hasValue ?hasValue.
>>> > ?Lesson sage:inRound '1'^^xsd:int.
>>> > }
>>> > GROUP BY ?MTech ?LessonType
>>> > }
>>> > GROUP BY ?MTech
>>> >}");
>>> >
>>> >The above query works fine in Leviathan demo.
>>> >
>>> >However on my box instead of actual values I get all ?maxScore bound
>>> >to "0"@xsd:int. I'm running this using the latest dll from trunk,
>>> >
>>> >Thanks,
>>> >Tom
>>> >
>>> >--------------------------------------------------------------------------
>>> >----
>>> >Own the Future-Intel® Level Up Game Demo Contest 2013
>>> >Rise to greatness in Intel's independent game demo contest.
>>> >Compete for recognition, cash, and the chance to get your game
>>> >on Steam. $5K grand prize plus 10 genre and skill prizes.
>>> >Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
>>> >_______________________________________________
>>> >dotNetRDF-bugs mailing list
>>> >dot...@li...
>>> >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>>
>>
>>
>>
>>
>>
----------------------------------------------------------------------------->>
-
>> Own the Future-Intel(R) Level Up Game Demo Contest 2013
>> Rise to greatness in Intel's independent game demo contest. Compete
>> for recognition, cash, and the chance to get your game on Steam.
>> $5K grand prize plus 10 genre and skill prizes. Submit your demo
>> by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2
>> _______________________________________________
>> dotNetRDF-bugs mailing list
>> dot...@li...
>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
> ------------------------------------------------------------------------------
> Own the Future-Intel(R) Level Up Game Demo Contest 2013 Rise to greatness in
> Intel's independent game demo contest. Compete for recognition, cash, and the
> chance to get your game on Steam. $5K grand prize plus 10 genre and skill
> prizes. Submit your demo by 6/6/13.
> http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2_______________________
> ________________________ dotNetRDF-bugs mailing list
> dot...@li...
> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
|
|
From: Tomek P. <to...@pl...> - 2013-04-02 04:46:18
|
I'd thought it would. Because it is about float numbers I suspect a
globalization problem.
Any suggestion where to look?
On Apr 2, 2013 2:23 AM, "Rob Vesse" <rv...@do...> wrote:
> Hey Tom
>
> This works fine for me on my box, so not sure what the issue is on your
> machine
>
> Added as a unit test
>
> Rob
>
> On 4/1/13 1:33 PM, "Tomek Pluskiewicz" <plo...@gm...> wrote:
>
> >Hi Rob
> >
> >Please try the following code:
> >
> >TripleStore store = new TripleStore();
> >
> >store.LoadFromUri(UriFactory.Create("
> http://semanticsage.home.lc/files/Lea
> >rningStyles.rdf"));
> >
> > Options.AlgebraOptimisation = false;
> >
> > var graph = (IGraph)store.ExecuteQuery(@"prefix sage:
> ><http://www.semanticsage.home.lc/LearningStyles.owl#>
> >prefix xsd: <http://www.w3.org/2001/XMLSchema#>
> >prefix : <http://semanticsage.home.lc/files/LearningStyles.rdf#>
> >
> >CONSTRUCT
> >{
> > ?MTech :max ?maxScore
> >}
> >WHERE
> >{
> > SELECT ?MTech max(?max) as ?maxScore
> > WHERE
> > {
> > SELECT ?MTech ?LessonType sum(?hasValue) as ?max
> > WHERE
> > {
> > ?MTech sage:attendsLessons ?Lesson.
> > ?Lesson sage:hasLessonType ?LessonType.
> > ?MTech sage:undergoesEvaluation ?Quiz.
> > ?Quiz sage:isForLesson ?Lesson.
> > ?MTech sage:hasQuizMarks ?QuizMarks.
> > ?QuizMarks sage:belongsToQuiz ?Quiz.
> > ?QuizMarks sage:hasValue ?hasValue.
> > ?Lesson sage:inRound '1'^^xsd:int.
> > }
> > GROUP BY ?MTech ?LessonType
> > }
> > GROUP BY ?MTech
> >}");
> >
> >The above query works fine in Leviathan demo.
> >
> >However on my box instead of actual values I get all ?maxScore bound
> >to "0"@xsd:int. I'm running this using the latest dll from trunk,
> >
> >Thanks,
> >Tom
> >
> >--------------------------------------------------------------------------
> >----
> >Own the Future-Intel® Level Up Game Demo Contest 2013
> >Rise to greatness in Intel's independent game demo contest.
> >Compete for recognition, cash, and the chance to get your game
> >on Steam. $5K grand prize plus 10 genre and skill prizes.
> >Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
> >_______________________________________________
> >dotNetRDF-bugs mailing list
> >dot...@li...
> >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>
>
>
>
>
>
> ------------------------------------------------------------------------------
> Own the Future-Intel(R) Level Up Game Demo Contest 2013
> Rise to greatness in Intel's independent game demo contest. Compete
> for recognition, cash, and the chance to get your game on Steam.
> $5K grand prize plus 10 genre and skill prizes. Submit your demo
> by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2
> _______________________________________________
> dotNetRDF-bugs mailing list
> dot...@li...
> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>
|
|
From: Rob V. <rv...@do...> - 2013-04-02 00:23:19
|
Hey Tom
This works fine for me on my box, so not sure what the issue is on your
machine
Added as a unit test
Rob
On 4/1/13 1:33 PM, "Tomek Pluskiewicz" <plo...@gm...> wrote:
>Hi Rob
>
>Please try the following code:
>
>TripleStore store = new TripleStore();
>
>store.LoadFromUri(UriFactory.Create("http://semanticsage.home.lc/files/Lea
>rningStyles.rdf"));
>
> Options.AlgebraOptimisation = false;
>
> var graph = (IGraph)store.ExecuteQuery(@"prefix sage:
><http://www.semanticsage.home.lc/LearningStyles.owl#>
>prefix xsd: <http://www.w3.org/2001/XMLSchema#>
>prefix : <http://semanticsage.home.lc/files/LearningStyles.rdf#>
>
>CONSTRUCT
>{
> ?MTech :max ?maxScore
>}
>WHERE
>{
> SELECT ?MTech max(?max) as ?maxScore
> WHERE
> {
> SELECT ?MTech ?LessonType sum(?hasValue) as ?max
> WHERE
> {
> ?MTech sage:attendsLessons ?Lesson.
> ?Lesson sage:hasLessonType ?LessonType.
> ?MTech sage:undergoesEvaluation ?Quiz.
> ?Quiz sage:isForLesson ?Lesson.
> ?MTech sage:hasQuizMarks ?QuizMarks.
> ?QuizMarks sage:belongsToQuiz ?Quiz.
> ?QuizMarks sage:hasValue ?hasValue.
> ?Lesson sage:inRound '1'^^xsd:int.
> }
> GROUP BY ?MTech ?LessonType
> }
> GROUP BY ?MTech
>}");
>
>The above query works fine in Leviathan demo.
>
>However on my box instead of actual values I get all ?maxScore bound
>to "0"@xsd:int. I'm running this using the latest dll from trunk,
>
>Thanks,
>Tom
>
>--------------------------------------------------------------------------
>----
>Own the Future-Intel® Level Up Game Demo Contest 2013
>Rise to greatness in Intel's independent game demo contest.
>Compete for recognition, cash, and the chance to get your game
>on Steam. $5K grand prize plus 10 genre and skill prizes.
>Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d
>_______________________________________________
>dotNetRDF-bugs mailing list
>dot...@li...
>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
|
|
From: Tomek P. <plo...@gm...> - 2013-04-01 20:34:20
|
Hi Rob
Please try the following code:
TripleStore store = new TripleStore();
store.LoadFromUri(UriFactory.Create("http://semanticsage.home.lc/files/LearningStyles.rdf"));
Options.AlgebraOptimisation = false;
var graph = (IGraph)store.ExecuteQuery(@"prefix sage:
<http://www.semanticsage.home.lc/LearningStyles.owl#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix : <http://semanticsage.home.lc/files/LearningStyles.rdf#>
CONSTRUCT
{
?MTech :max ?maxScore
}
WHERE
{
SELECT ?MTech max(?max) as ?maxScore
WHERE
{
SELECT ?MTech ?LessonType sum(?hasValue) as ?max
WHERE
{
?MTech sage:attendsLessons ?Lesson.
?Lesson sage:hasLessonType ?LessonType.
?MTech sage:undergoesEvaluation ?Quiz.
?Quiz sage:isForLesson ?Lesson.
?MTech sage:hasQuizMarks ?QuizMarks.
?QuizMarks sage:belongsToQuiz ?Quiz.
?QuizMarks sage:hasValue ?hasValue.
?Lesson sage:inRound '1'^^xsd:int.
}
GROUP BY ?MTech ?LessonType
}
GROUP BY ?MTech
}");
The above query works fine in Leviathan demo.
However on my box instead of actual values I get all ?maxScore bound
to "0"@xsd:int. I'm running this using the latest dll from trunk,
Thanks,
Tom
|
|
From: Rob V. <rv...@do...> - 2013-02-23 17:41:28
|
Hi All Various users have recently reported or enquired about a NullReferenceException that can seen when running dotNetRDF 0.8.2/0.9.0 under the VS debugger. Rest assured that this error is completely harmless and handled by the responsible code. It appears to be down to a strange quirk of how the debugger reports errors. See http://www.dotnetrdf.org/blogitem.asp?blogID=74 for a fuller explanation of the history of this issue. Best Regards, Rob Vesse |
|
From: Rob V. <rv...@do...> - 2013-02-14 18:16:55
|
Hi I am sorry but I can't reproduce this issue with my local Virtuoso installation What version of Virtuoso are you using? Rob From: HERBAUX MATHIAS <mat...@vi...> Reply-To: dotNetRDF Bug Report tracking and resolution <dot...@li...> Date: Wednesday, February 13, 2013 2:10 AM To: "dot...@li..." <dot...@li...> Subject: [dotNetRDF-bugs] Virtuoso - Describe > Hello, > I¹m getting an error using the describe sparql statement with your library > (Select works well). > Exception Message : ³Expected a single string value representing the > serialization of the Graph resulting from a CONSTRUCT/DESCRIBE query but this > was not received² > The request is simple ³DESCRIBE <http://myserver:8890/page/Jacques_Chirac>" > The URI is valid ! > Using the sparql endpoint of virtuoso it works (http://myserver:8890/sparql), > with the same request > Is that a known bug, or am I doing it wrong ? > Mathias > ------------------------------------------------------------------------------ > Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before > the end March 2013 and get the hardware for free! Learn more. > http://p.sf.net/sfu/sophos-d2d-feb____________________________________________ > ___ dotNetRDF-bugs mailing list dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
|
From: HERBAUX M. <mat...@vi...> - 2013-02-13 10:25:34
|
Hello, I'm getting an error using the describe sparql statement with your library (Select works well). Exception Message : "Expected a single string value representing the serialization of the Graph resulting from a CONSTRUCT/DESCRIBE query but this was not received" The request is simple "DESCRIBE <http://myserver:8890/page/Jacques_Chirac>" The URI is valid ! Using the sparql endpoint of virtuoso it works (http://myserver:8890/sparql), with the same request Is that a known bug, or am I doing it wrong ? Mathias |
|
From: Rob V. <rv...@do...> - 2013-01-31 14:47:58
|
We are pleased to announce the release of dotNetRDF 0.9.0 RC 4 available now from all the usual locations: Project Website - http://www.dotnetrdf.org/content.asp?pageID=Download%20dotNetRDF SoureForge - http://www.sourceforge.net/project/dotnetrdf CodePlex - http://dotnetrdf.codeplex.com BitBucket - http://bitbucket.org/dotnetrdf/dotnetrdf/downloads NuGet - http://nuget.org/packages/dotNetRDF/ This is primarily a maintenance release, it resolves a variety of bugs including various SPARQL bugs, some parser bugs and adds a workaround for HTTP servers which don't perform HTTP authentication nicely. It is intended to be a final release candidate before a stable 1.0.0 release in the next couple of months. We would appreciate it if people in the community could test this build as much as possible and report any issues they encounter. As always thanks to everyone in the community who reported issues or made suggestions for improvements. Also many thanks to our developers for their continued hard work. Rob Vesse |
|
From: Rob V. <rv...@do...> - 2013-01-14 11:34:05
|
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(ShortcutSubmapsRe >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 |
|
From: Tomek P. <to...@pl...> - 2013-01-10 19:15:24
|
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? 2. There is a bad memory leak in during SPARQL execution of this: 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(ShortcutSubmapsReplaceSparql)); Is this a know problem and has been already fixed or should I investigate closely? Thanks, Tom |
|
From: Rob V. <rv...@do...> - 2013-01-09 12:39:09
|
The problem was only the faulty logic in the SPARQL Update code as far as
I can see.
This is covered pretty well with testing, all the usages are in the SPARQL
engine which is covered by several hundred unit tests (523 as of writing).
Any test that uses SPARQL will be touching this code. The SPARQL engine
is also covered by the DAWG tests i.e. the official SPARQL specification
tests which consist of another 8-900 tests
Rob
On 1/5/13 6:27 PM, "Tomasz Pluskiewicz" <tom...@gm...>
wrote:
>Ah, and indeed. When I changed my query to DELETE/INSERT the same
>problem occured for the exact same reason.
>
>This may be problematic. The Set#ContainsVariable() method is used 32
>times throughout the library and the indexer is used 141 times so it
>will be easy to break something. How well is this covered with tests?
>
>Regards,
>Tom
>
>On Sat, Jan 5, 2013 at 6:51 PM, Tomasz Pluskiewicz
><tom...@gm...> wrote:
>> Hi Rob
>>
>> I am having additional issues with running my update query.
>>
>> An equivalent select (without graph ?g {}) returns some data. However
>> when I try to create new graphs nothing happens.
>>
>> I started debugging and discovered that when evaluating the insert
>> command, all the results are skipped at InserCommand.cs.
>>
>> The problem is that VDS.RDF.Query.Algebra.Set holds variable names
>> without the question mark and in the insert command they are prefixed.
>>
>> The quick fix is to add a Substring(1) call when looking for graph
>> variablt in the set. Will similar change be required elsewhere in the
>> code?
>>
>> Regards,
>> Tom
>>
>> PS
>> When I went into debugger I and enable breaking on exceptions thrown I
>> seem to be getting a lot of Null pointer exceptions in
>> MultiDictionary. This doesn't seem to be the cause as I had though
>> initially but definitiely will have adverse effects on performance.
>
>--------------------------------------------------------------------------
>----
>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_122912
>_______________________________________________
>dotNetRDF-bugs mailing list
>dot...@li...
>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
|
|
From: Rob V. <rv...@do...> - 2013-01-09 12:17:22
|
Thanks for spotting this, tracked and fixed as CORE-300 [1] The NPE from MultiDictionary is a weird one and was previously discussed as CORE-292 [2] It's a one time check that the MultiDictionary does to determine whether it should support null keys and is handled so VS should not really report it as unhanded (though it may report it if you have break on thrown set). Since a standard Graph has 7 MultiDictionaries in it you can get a lot of these when running stuff in debug mode. As it's a one time initialization thing it should have minimal effect on performance. Weirdly enough if the PDBs for VDS.Common are present VS will not break on this error (unless you have break on thrown set), this was the resolution for that bug and based on feedback I decided to start including the PDBs in the NuGet packages to aid end user debugging of issues (mean they get more detailed stack traces with line numbers etc.) Rob [1] http://dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=300 [2] http://dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=292 On 1/5/13 5:51 PM, "Tomasz Pluskiewicz" <tom...@gm...> wrote: >Hi Rob > >I am having additional issues with running my update query. > >An equivalent select (without graph ?g {}) returns some data. However >when I try to create new graphs nothing happens. > >I started debugging and discovered that when evaluating the insert >command, all the results are skipped at InserCommand.cs. > >The problem is that VDS.RDF.Query.Algebra.Set holds variable names >without the question mark and in the insert command they are prefixed. > >The quick fix is to add a Substring(1) call when looking for graph >variablt in the set. Will similar change be required elsewhere in the >code? > >Regards, >Tom > >PS >When I went into debugger I and enable breaking on exceptions thrown I >seem to be getting a lot of Null pointer exceptions in >MultiDictionary. This doesn't seem to be the cause as I had though >initially but definitiely will have adverse effects on performance. > >-------------------------------------------------------------------------- >---- >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_122912 >_______________________________________________ >dotNetRDF-bugs mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs |
|
From: Tomasz P. <tom...@gm...> - 2013-01-05 18:28:10
|
Ah, and indeed. When I changed my query to DELETE/INSERT the same
problem occured for the exact same reason.
This may be problematic. The Set#ContainsVariable() method is used 32
times throughout the library and the indexer is used 141 times so it
will be easy to break something. How well is this covered with tests?
Regards,
Tom
On Sat, Jan 5, 2013 at 6:51 PM, Tomasz Pluskiewicz
<tom...@gm...> wrote:
> Hi Rob
>
> I am having additional issues with running my update query.
>
> An equivalent select (without graph ?g {}) returns some data. However
> when I try to create new graphs nothing happens.
>
> I started debugging and discovered that when evaluating the insert
> command, all the results are skipped at InserCommand.cs.
>
> The problem is that VDS.RDF.Query.Algebra.Set holds variable names
> without the question mark and in the insert command they are prefixed.
>
> The quick fix is to add a Substring(1) call when looking for graph
> variablt in the set. Will similar change be required elsewhere in the
> code?
>
> Regards,
> Tom
>
> PS
> When I went into debugger I and enable breaking on exceptions thrown I
> seem to be getting a lot of Null pointer exceptions in
> MultiDictionary. This doesn't seem to be the cause as I had though
> initially but definitiely will have adverse effects on performance.
|
|
From: Tomasz P. <tom...@gm...> - 2013-01-05 17:52:27
|
Hi Rob
I am having additional issues with running my update query.
An equivalent select (without graph ?g {}) returns some data. However
when I try to create new graphs nothing happens.
I started debugging and discovered that when evaluating the insert
command, all the results are skipped at InserCommand.cs.
The problem is that VDS.RDF.Query.Algebra.Set holds variable names
without the question mark and in the insert command they are prefixed.
The quick fix is to add a Substring(1) call when looking for graph
variablt in the set. Will similar change be required elsewhere in the
code?
Regards,
Tom
PS
When I went into debugger I and enable breaking on exceptions thrown I
seem to be getting a lot of Null pointer exceptions in
MultiDictionary. This doesn't seem to be the cause as I had though
initially but definitiely will have adverse effects on performance.
|
|
From: Tomek P. <plo...@gm...> - 2013-01-05 11:47:18
|
Hi Rob
Actually I found this when executing some SPARQL update in the store
manager. Something similar to:
Insert
{
Graph ?g
{
?s ?p ?o
}
}
Where
{
?s ?p ?o
Bind(uri(replace(?s, "domain.com", "graphs.domain.com")))
}
Basically I wanted to partition triples into graphs based on subjects.
Tom
05-01-2013 12:19, "Rob Vesse" <rv...@do...> napisał(a):
> I have fixed this, the fix was to set the _findExpr and _replaceExpr in
> the constructor regardless of whether they are constants. This was
> already fixed in the normal REPLACE, it was the XPath replace where this
> was posing a problem. This doesn't break the logic since the logic is to
> recompute the find/replace each time if the _fixedFind/_fixedReplace flags
> aren't set (and these would only be set if the constant evaluated to a
> valid find/replace pattern).
>
> I presume you found this while doing some experimentation on the Fluent
> Query stuff? If so please make sure you use the SPARQL versions of
> functions as opposed to their XPath variants wherever possible, there are
> some subtle differences between the two.
>
> Rob
>
>
> On 1/5/13 9:53 AM, "Tomek Pluskiewicz" <to...@pl...> wrote:
>
> >Hi
> >
> >I have just filed bug CORE-299.
> >
> >A naive fix for this would be to simple check for nulls in the
> >CanParallelise getter. I'm not sure it will be correct though:
> >
> >1. The constructor checks if the find and replace expressions are
> >constants and then checks if they are lliterals and tries to create a
> >regular expression. If the constant term is not literal or not a valid
> >Regex _find nor _findExpressions would be set (same for replace). This
> >is definitely a bug.
> >2. I'm not sure that if I modify the CanParallelise getter it will
> >still return the correct result...
> >
> >The other possibility I can think of to set the _findExpr and
> >_replaceExpr field but I see that this would change the behaviour of
> >Evaluate.
> >
> >How do I proceed?
> >
> >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. SALE $99.99 this month only -- learn more at:
> >http://p.sf.net/sfu/learnmore_122912
> >_______________________________________________
> >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_122912
> _______________________________________________
> dotNetRDF-bugs mailing list
> dot...@li...
> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-bugs
>
|