You can subscribe to this list here.
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2010 |
Jan
|
Feb
(11) |
Mar
(17) |
Apr
(12) |
May
(2) |
Jun
(20) |
Jul
(2) |
Aug
(2) |
Sep
(2) |
Oct
(2) |
Nov
|
Dec
(5) |
2011 |
Jan
(4) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(5) |
Jun
|
Jul
(12) |
Aug
(4) |
Sep
(5) |
Oct
(1) |
Nov
(38) |
Dec
(27) |
2012 |
Jan
(46) |
Feb
(182) |
Mar
(83) |
Apr
(22) |
May
(68) |
Jun
(47) |
Jul
(135) |
Aug
(84) |
Sep
(57) |
Oct
(45) |
Nov
(27) |
Dec
(61) |
2013 |
Jan
(59) |
Feb
(78) |
Mar
(66) |
Apr
(107) |
May
(27) |
Jun
(56) |
Jul
(53) |
Aug
(3) |
Sep
(19) |
Oct
(41) |
Nov
(44) |
Dec
(54) |
2014 |
Jan
(49) |
Feb
(72) |
Mar
(22) |
Apr
(41) |
May
(63) |
Jun
(27) |
Jul
(45) |
Aug
(12) |
Sep
(3) |
Oct
(8) |
Nov
(27) |
Dec
(16) |
2015 |
Jan
(3) |
Feb
(20) |
Mar
(6) |
Apr
(4) |
May
(15) |
Jun
(2) |
Jul
(4) |
Aug
|
Sep
(1) |
Oct
(1) |
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
(16) |
May
(9) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Rob V. <rv...@do...> - 2013-03-28 19:36:09
|
Hey Kevin Ok that is great, of course we can continue to answer questions and offer help/advice as needed. I would suggest that you create a fork of our repository on Bitbucket (https://bitbucket.org/dotnetrdf/dotnetrdf) so that as you start to get code written you can open pull requests to merge in chunks of functionality as you get things working. Pull requests also provide us a chance to do a quick review of the code and flag up any obvious issues. Thanks and good luck, I look forward to working with you, Rob On 3/27/13 4:46 AM, "Kevin" <ke...@th...> wrote: >Rob/Tom, > >Thank you for your engagement and valuable feedback. I will defer to you >guys and develop SPIN dotNetRDF from scratch, using other implementations >only as a reference. Preserving unit test sounds very smart and will keep >it in mind. > >I will sign up for the SPIN dotNetRDF task, but it may not always proceed >quickly. Since I plan to use SPIN dotNetRDF in my application it should >ensure I will see it to completion. To achieve this goal can you guys >continue to answer questions and provide snippets of code? My reading has >lead to numerous questions, which would be confusing to place in a single >email thread. My plan is to organize the questions and start separate >SPIN >integration emails. > >Thanks, >Kevin > >-----Original Message----- >From: Rob Vesse [mailto:rv...@do...] >Sent: Friday, March 22, 2013 1:59 PM >To: dotNetRDF Developer Discussion and Feature Request >Subject: Re: [dotNetRDF-Develop] Integrating SPIN into dotnetrdf > >Sorry I've been out the discussion but this week is really busy for me. > >Comments inline: > >On 3/19/13 10:35 AM, "Tomasz Pluskiewicz" <tom...@gm...> >wrote: > >>Comments inline >> >>On Sun, Mar 17, 2013 at 4:56 AM, Kevin <ke...@th...> wrote: >>> Rob, Tom >>> >>> >>> >>> After more reading I believe a dotnetrdf/SPIN/Fluent SPARQL would be >>> an excellent solution. In fact I would think people would convert to >>> C# dotnetrdf due to this compiling story. >>> >>> >>> >>> Strategy Questions: >>> >>> >>> >>> Due to my knowledge, time constraints, and past experience I know if >>>I attempt SPIN dotnetrdf alone it will drag out and never complete. >>>Can you let me know if any of the strategies below make any sense. >>>Both strategies involve splitting the work with the understanding >>>that we are all busy and there is no real obligation. Also I assume >>>any knowledgeable new comer is welcomed to contribute to the cause. >>>I believe the effort will obviously benefit the community, but also >>>provide a deep insight to the contributing developers. >>> >>> >>> >>> -Convert the Java TopBraid SPIN API (Uses Jena interface) into C# >>>starting with a conversion tool like Tangible Java->C# (I will >>>purchase). The tool will help with most of the syntax, but there >>>will be a lot of manual work. >>> The conversion will obviously entail replacing the Jena interface >>>with dotnetrdf. The benefits of this strategy is we harness the >>>completeness, robustness, and future updates (re-port changes) of >>>TopBraid SPIN API. >>>The >>> conversion should provide insights into the implementation enabling >>>custom tweaks. It should also be possible to split the converted >>>Java files into 3 groups if you guys are up for the task. I am in >>>preference of this solution primarily because we are essential >>>creating a SPIN inference engine based upon code from the people who >>>invented SPIN. >>> >>> >> >>Has TopBraid opened all of their SPIN API? Last time I looked only >>parts were open source. I wonder that it got no attention at >>semanticweb.com. Or did it? >> >>Regarding the first strategy I undersnatd it is very appealing but I'm >>afraid converting API calls from Jena to dotNetRDF could be more work >>than you expect. I don't know Jena very well but I expect that a lot of >>the functionality isn't just a simple 1:1 relation. In this case we are >>talking about a number of areas: >> >>- Graph traversal for reading SPIN queries in RDF form >>- SPARQL query and it's programmatic counterpart >>(VDS.RDF.Query.SparqlQuery and others) >>- Query execution >>- Reasoner > >I would echo what Tom said, write code from scratch don't try and port the >existing Java. As someone who also works on Jena I can confirm what Tom >said that the APIs around queries and different enough that you would >spend >far more time extricating Jena from the converted code than if you just >wrote the relevant code yourself. > > >Also converting code opened source under a different license than >dotNetRDF >uses provides a somewhat grey area about whether you can re-license the >code >since we would not be the original copyright holders and would likely >shoot >ourselves in the foot wrt making our SPIN implementation usable in a >corporate setting (where they are going to care about legal stuff like >this) >if at all. > >> >>However what we should definitely try to preserve are any unit tests >>and possibly some kind of test hareness. I hope the guys at TopBraid >>have SPIN thoroughly tested and we should reuse those tests on our >>implementation. > >This is a good point, if they have open sourced the tests these would be >useful references to write our own tests from. > >> >>> >>> -Follow your initial start at SPIN dotnetrdf and maybe use TopBraid >>>SPIN API as a reference (Difficult because approaches will diverge). >>>Rob are you a take any small essential blocks and coordinate the >>>overall effort? Tom are you able to help out, especially where >>>Fluent SPARQL is utilized? >>>Again I >>> think the alternate strategy above has a lot of merit, but it must >>>align >>> with Rob's vision. No matter the strategy please look at the >>> implementation questions below to help clarify the high/low level >>>picture. >>> >> >>Now, if we had not only the Java API reference but also complete >>automatic test suite from the start I would opt for the second >>approach. >> >>If not available or somehow unusable for a .NET project I think we >>could resort to http://spinservices.org/spinrdfconverter.html for >>validating our efforts. > >I think the early tests I wrote did use this as well, I likely need to >drag >those over from the old branch as well. > >> >>Whatever the case I think that starting from scratch rather than >>porting Java is likely a better approach in the long run. > >As I said above +1 > >> >>> >>> >>> Implementation Questions: >>> >>> >>> >>> -Can you provide a high level overview of a SPIN dotnetrdf >>>implementation so I can ensure the final solution is acceptable. >>>Let's say you have the SPIN rule for "adult rdfs:subclassof person" >>>at the top-level (ie. >>>owl:Thing) and >>> the user queries is Elvis a Adult. Would dotnetrdf SPIN spawn >>>numerous >>> intermediate SPARQL queries to gather the important SPIN rules that >>>must be executed? If RDF database is remote (ie. dbpedia) could this >>>accumulative delay become unacceptably (Over 3 seconds in my >>>application). >>>Alternatively >>> is everything required by the user query obtained in 1 or 2 complex >>>intermediate queries which dotnetrdf SPIN creates and digests? >>>Basically if >>> you could paint the high level overview with an example I could then >>>move to the details. >>> >>> >> >>I think that a complete dotNetRDF implementation of SPIN would require >>at least two components. >> >>1. A converter from SPIN/RDF to in-memory queries (not necessarily >>VDS.RDF.Query.SparqlQuery - see below) 2. A SPIN runner, which will >>take a SPIN query and execute it in an instance's context 3. A >>reasoner, which uses the above converter and executes the SPIN rules >>and constraints againt a graph or triple store > >Yes that is pretty much what I was going to suggest > >> >>> >>> >>> -Can you provide a low-level overview of your SPIN dotnetrdf >>>implementation strategy. I only partially understood you explanation >>>below, which I know will be a little clearer after looking at the >>>code. What is spin-sparql-syntax.ttl and how does it fit into the >>>puzzle? What does it mean to convert a query into SPIN RDF >>>representation? My naive picture is that a user query is converted >>>into internal query(s) to obtain SPIN RDF rules, which are then >>>executed by the new SPIN dotnetrdf engine. Lastly please explain a >>>little more your view of turning a SPIN query into a query? >>> >>> >> >>Basically I think that a complete solution should work like this: >>1. Prepare a metadata (ontology) graph with your SPIN rules/constraints >>2. SPIN rules are converted to SPARQL queries 3. Queries are executed >>against graph/store to produce constraint violations and >>inferences/assertions > >I agree, for point 3 we could even go so far to have a SPIN constraint >validator as a decorator over a dataset which would fire off the >constraints >in the Flush() method (I.e. the transaction commit) and fail the >transaction >if constraints have been violated. The same goes for running inferences. > >> >>If you look at the TopBraid videos and SPIN Modelling vocabulary you >>will notice that there is much more to SPIN than just converting >>queries from RDF representation to SPARQL: >>- rule modularization templates >>- constructors >>- extending SPARQL Engine with functions and magic properties >> >>I agree with Rob that first we would need a converter from SPIN RDF to >>SPARQL but its design should be influenced by how we will use it and we >>already know very good what that would be. Unfortunately a lot seems >>unclear to me when I read the SPIN Modelling documentation. For one >>thing there can be many rules and as Kevin wrote, executing many such >>rules against a store may not be a good idea. > >I think the immediate goal would be to make SPIN runnable against >in-memory >data, a longer term goal can be to make this run against arbitrary SPARQL >endpoints. > >Rob > >> >>Kevin, what do you mean by you last question? You have RDF triples, >>which represent a query and you traverse the graph to create a query >>(string). The IGraph and Fluent SPARQL APIs combined should make this >>work easy. >> >>Hope this helps, for now ;) >>Tom >> >>> >>> >>> Thanks, >>> >>> Kevin >>> >>> >>> >>> From: Rob Vesse [mailto:rv...@do...] >>> Sent: Friday, March 15, 2013 2:57 PM >>> To: Kevin >>> Cc: dotNetRDF Developer Discussion and Feature Request >>> Subject: Re: Integrating SPIN into dotnetrdf >>> >>> >>> >>> Hey Kevin >>> >>> >>> >>> Discussion inline: >>> >>> >>> >>> From: Kevin <ke...@th...> >>> Date: Wednesday, March 13, 2013 7:40 PM >>> To: Rob Vesse <rv...@do...> >>> Subject: Integrating SPIN into dotnetrdf >>> >>> >>> >>> Rob, >>> >>> >>> >>> First thank you for your quality work you have done with the >>>dotnetrdf project. I have seen a few different posts about your >>>initiative to integrate SPIN into dotnetrdf (ie. SPIN Post). After >>>much reading on the subject it really seems that SPIN would really >>>propel/complement dotnetrdf. >>> I believe SPIN not only makes up for the missing OWL inference (Via >>>SPIN OWL-RL implementation), it also can expand to suit the modelers >>>imagination. >>> The fact that the rules are in SPARQL makes for an unbeatable solution. >>> Should it matter my current effort involves query a Virtuoso database >>>(Some owl support) with dotnetrdf. I would really appreciate you >>>taking a look at the questions below: >>> >>> >>> >>> -Have you made any further progress on integrating SPIN into dotnetrdf? >>> Would you allow me to have the source code in its current state? >>>Could I possibly be a contributor on this cause as I am not really >>>equipped for the full task? In any case I would appreciate any >>>source code which I could use as a learning tool. >>> >>> >>> >>> No I haven't had time to do anything on SPIN for a long time now. I've >>>been >>> primarily concentrating on getting core features stabilized such as the >>> SPARQL engine which are obviously fairly key to building stuff like >>>SPIN on >>> top. >>> >>> >>> >>> However I still don't have time to work on SPIN directly so if you want >>>to >>> work on this please feel free, find the code in the mercurial >>>repository at >>> https://bitbucket.org/dotnetrdf/dotnetrdf >>> >>> >>> >>> The previous and very minimal SPIN stub is under Libraries\Query\Spin, >>> create your own fork and then you can send pull requests as and when >>>you >>> have something to >>> >>> >>> >>> The key things that need to be done to get the core of SPIN implemented >>>are >>> as follows: >>> >>> Update the current spin-sparql-syntax.ttl to a current version, it >>>likely >>> doesn't represent the current version of the spec (this is primarily a >>> convenience reference for developers) >>> Finish the existing stubs for converting queries into their SPIN RDF >>> representation (see SpinSyntax.cs) >>> Write code to turn a RDF encoding of a SPIN query into a query >>> >>> The middle one would be the easiest to start with since there is >>>already >>> some partial stubs to get you started. >>> >>> >>> >>> >>> >>> -From the available TopQuadrant documentation I have tried to deduce >>>how >>> dotnetrdf might implement SPIN. According to SPIN tutrial, TopBraid >>>finds >>> all SPIN inferecer rules and runs them when you hit play. Would >>>dotnetrdf >>> SPIN inferencer only run the rules that are associated with the class >>> structure being queried? Basically I am confused how dotnetrdf decides >>> when/how/which SPIN rules to run for a given query. >>> >>> >>> >>> That's an implementation detail, we would control how and when rules >>>get >>> run. We need to get the basic implementation of SPIN done first before >>>this >>> aspect of things gets implemented anyway. >>> >>> >>> >>> >>> >>> -How much of SPIN could dotnetrdf possibly support.? It appears SPIN >>> contains Inference Rules, Constraint Checking, and ability to Isolate >>>rules >>> for certain conditions. Also the TopBraid tool seems to have >>>"User-Defined >>> SPARQL functions" and "SPIN Query Templates". I imagine dotnetrdf >>>would >>> have to keep up with any SPIN improvements. >>> >>> >>> >>> All of those are supportable in some shape of form, until we have the >>>core >>> of SPIN up and running we can't really implement those. Most of those >>> features run on top of the SPIN core and so will ultimately just be >>> implementation details once we have a core to build upon. User defined >>> SPARQL functions are basically just SPARQL queries that return a single >>> value and query templates are just parameterized queries both of which >>>the >>> existing SPARQL engine is capable of supporting in one way or another. >>>So >>> it is just a case of exposing that functionality in the SPIN style. >>> >>> >>> >>> Hope this is enough to get you started, if not please let us know, >>> >>> >>> >>> Rob >>> >>> >>> >>> >>> >>> Regards, >>> >>> Kevin >>> >>> >>> >>>------------------------------------------------------------------------ >>>- >>>----- >>> Everyone hates slow websites. So do we. >>> Make your web apps faster with AppDynamics >>> Download AppDynamics Lite for free today: >>> http://p.sf.net/sfu/appdyn_d2d_mar >>> _______________________________________________ >>> dotNetRDF-develop mailing list >>> dot...@li... >>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop >>> >> >>------------------------------------------------------------------------- >>- >>---- >>Everyone hates slow websites. So do we. >>Make your web apps faster with AppDynamics >>Download AppDynamics Lite for free today: >>http://p.sf.net/sfu/appdyn_d2d_mar >>_______________________________________________ >>dotNetRDF-develop mailing list >>dot...@li... >>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop > > > > > >-------------------------------------------------------------------------- >-- >-- >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_d2d_mar >_______________________________________________ >dotNetRDF-develop mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop > > >-------------------------------------------------------------------------- >---- >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-develop mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop |
From: <tr...@do...> - 2013-03-28 00:20:18
|
<p>The following issue has been updated by Rob Vesse:</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Order of variables in the SELECT list is not respected in returned results</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td colspan="2"><b>Changes:</b></td> </tr> <tr> <td colspan="2"> <ul> <li>Status changed from "Confirmed" to "In Progress" </li> <li>Progress changed from "0 %" to "30 %" </li> </ul> </td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=342" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=342</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-27 23:55:11
|
<p>The following issue has been updated by Rob Vesse:</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Multi-variable already bound triple scans can explode the solution space</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td colspan="2"><b>Changes:</b></td> </tr> <tr> <td colspan="2"> <ul> <li>Title changed from "Multi-variable joins can yield incorrect results" to "Multi-variable already bound triple scans can explode the solution space" </li> </ul> </td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-27 23:54:15
|
<p>The following issue has been updated by Rob Vesse:</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Multi-variable joins can yield incorrect results</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td colspan="2"><b>Changes:</b></td> </tr> <tr> <td colspan="2"> <ul> <li>Status changed from "Confirmed" to "Completed" </li> <li>Resolution changed from "Unassigned" to "Fixed" </li> <li>Progress changed from "0 %" to "100 %" </li> </ul> </td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-27 23:48:36
|
<p>A new comment has been added to the following issue.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Multi-variable joins can yield incorrect results</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Date:</b></td> <td>2013-03-27 11:47 PM</td> </tr> <tr> <td><b>Comment:</b></td> </tr> <tr> <td colspan="2"><p> Here's a better explanation of what the problem is, the title suggests that the problem was with the join but as it turns out the join code is entirely correct. The problem was that the join code was being fed duplicate data due to a bug in the code that scans the graph.</p> <p> </p> <p> The graph scanning code tries to make the most restrictive lookup possible so it will take the solutions seen up to the current point in the BGP it is evaluating and use those to make multiple more specific lookups rather than a less general lookup. This is done in order to improve performance and avoid scanning irrelevant data. Unfortuatenly as it turns out there was a bug in the code for the case when the triple pattern has two variables and both those variables are already bound, in that case the scan was supposed to lookup each unique possible pair of values for the variables but the uniqueness constraint wasn't correctly implemented so it was looking up every possible pair some arbitrary number of times. Due to the structure of the data and the query this caused the users query to explode the solution space, because there are two patterns in the BGP that experience this issue it explodes the solution space twice leading to the vastly incorrect number of solutions.</p> <p> </p> <p> The adding of a DISTINCT as described in the users question caused the engine to be able to eliminate the spurious solutions because the lack of distinctness in the scan code was leading to the introduction of many unecessary duplicates</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-27 23:40:42
|
<p>A new comment has been added to the following issue.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Multi-variable joins can yield incorrect results</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Date:</b></td> <td>2013-03-27 11:39 PM</td> </tr> <tr> <td><b>Comment:</b></td> </tr> <tr> <td colspan="2"><p> The SetDistinctnessComparer was the issue, with this fixed the test now returns the expected number of results</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-27 23:25:31
|
<p>A new comment has been added to the following issue.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Multi-variable joins can yield incorrect results</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Date:</b></td> <td>2013-03-27 11:24 PM</td> </tr> <tr> <td><b>Comment:</b></td> </tr> <tr> <td colspan="2"><p> I believe I have identified the actual cause of the issue. As I thought the join logic is entirely correct however the logic used when finding distinct solutions for a TriplePattern based on previous bindings turns out to be flawed.</p> <p> </p> <p> The fix should simply be to correct the logic in SetDistinctnessComparer</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=343</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-27 19:48:50
|
<p>The following issue has been added to a project that you are monitoring.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Order of variables in the SELECT list is not respected in returned results</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Milestone:</b></td> <td>1.0.0</td> </tr> <tr> <td><b>Category:</b></td> <td>Query</td> </tr> <tr> <td><b>Priority:</b></td> <td>High</td> </tr> <tr> <td><b>Type:</b></td> <td>Bug</td> </tr> <tr> <td><b>Description:</b></td> </tr> <tr> <td colspan="2"><p> Several users have commented on the fact that dotNetRDF does not necessarily respect the order of variables given in the SELECT list for a query. I believe this is an artifact of the fact that the system uses only a Dictionary<String,INode> for results and does not maintain a separate ordered list of variables.</p> <p> </p> <p> To meet usability and user expectations we should ensure we preserve the ordering of variables where appropriate.</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=342" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=342</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: Kevin <ke...@th...> - 2013-03-27 11:47:03
|
Rob/Tom, Thank you for your engagement and valuable feedback. I will defer to you guys and develop SPIN dotNetRDF from scratch, using other implementations only as a reference. Preserving unit test sounds very smart and will keep it in mind. I will sign up for the SPIN dotNetRDF task, but it may not always proceed quickly. Since I plan to use SPIN dotNetRDF in my application it should ensure I will see it to completion. To achieve this goal can you guys continue to answer questions and provide snippets of code? My reading has lead to numerous questions, which would be confusing to place in a single email thread. My plan is to organize the questions and start separate SPIN integration emails. Thanks, Kevin -----Original Message----- From: Rob Vesse [mailto:rv...@do...] Sent: Friday, March 22, 2013 1:59 PM To: dotNetRDF Developer Discussion and Feature Request Subject: Re: [dotNetRDF-Develop] Integrating SPIN into dotnetrdf Sorry I've been out the discussion but this week is really busy for me. Comments inline: On 3/19/13 10:35 AM, "Tomasz Pluskiewicz" <tom...@gm...> wrote: >Comments inline > >On Sun, Mar 17, 2013 at 4:56 AM, Kevin <ke...@th...> wrote: >> Rob, Tom >> >> >> >> After more reading I believe a dotnetrdf/SPIN/Fluent SPARQL would be >> an excellent solution. In fact I would think people would convert to >> C# dotnetrdf due to this compiling story. >> >> >> >> Strategy Questions: >> >> >> >> Due to my knowledge, time constraints, and past experience I know if >>I attempt SPIN dotnetrdf alone it will drag out and never complete. >>Can you let me know if any of the strategies below make any sense. >>Both strategies involve splitting the work with the understanding >>that we are all busy and there is no real obligation. Also I assume >>any knowledgeable new comer is welcomed to contribute to the cause. >>I believe the effort will obviously benefit the community, but also >>provide a deep insight to the contributing developers. >> >> >> >> -Convert the Java TopBraid SPIN API (Uses Jena interface) into C# >>starting with a conversion tool like Tangible Java->C# (I will >>purchase). The tool will help with most of the syntax, but there >>will be a lot of manual work. >> The conversion will obviously entail replacing the Jena interface >>with dotnetrdf. The benefits of this strategy is we harness the >>completeness, robustness, and future updates (re-port changes) of >>TopBraid SPIN API. >>The >> conversion should provide insights into the implementation enabling >>custom tweaks. It should also be possible to split the converted >>Java files into 3 groups if you guys are up for the task. I am in >>preference of this solution primarily because we are essential >>creating a SPIN inference engine based upon code from the people who >>invented SPIN. >> >> > >Has TopBraid opened all of their SPIN API? Last time I looked only >parts were open source. I wonder that it got no attention at >semanticweb.com. Or did it? > >Regarding the first strategy I undersnatd it is very appealing but I'm >afraid converting API calls from Jena to dotNetRDF could be more work >than you expect. I don't know Jena very well but I expect that a lot of >the functionality isn't just a simple 1:1 relation. In this case we are >talking about a number of areas: > >- Graph traversal for reading SPIN queries in RDF form >- SPARQL query and it's programmatic counterpart >(VDS.RDF.Query.SparqlQuery and others) >- Query execution >- Reasoner I would echo what Tom said, write code from scratch don't try and port the existing Java. As someone who also works on Jena I can confirm what Tom said that the APIs around queries and different enough that you would spend far more time extricating Jena from the converted code than if you just wrote the relevant code yourself. Also converting code opened source under a different license than dotNetRDF uses provides a somewhat grey area about whether you can re-license the code since we would not be the original copyright holders and would likely shoot ourselves in the foot wrt making our SPIN implementation usable in a corporate setting (where they are going to care about legal stuff like this) if at all. > >However what we should definitely try to preserve are any unit tests >and possibly some kind of test hareness. I hope the guys at TopBraid >have SPIN thoroughly tested and we should reuse those tests on our >implementation. This is a good point, if they have open sourced the tests these would be useful references to write our own tests from. > >> >> -Follow your initial start at SPIN dotnetrdf and maybe use TopBraid >>SPIN API as a reference (Difficult because approaches will diverge). >>Rob are you a take any small essential blocks and coordinate the >>overall effort? Tom are you able to help out, especially where >>Fluent SPARQL is utilized? >>Again I >> think the alternate strategy above has a lot of merit, but it must align >> with Rob's vision. No matter the strategy please look at the >> implementation questions below to help clarify the high/low level >>picture. >> > >Now, if we had not only the Java API reference but also complete >automatic test suite from the start I would opt for the second >approach. > >If not available or somehow unusable for a .NET project I think we >could resort to http://spinservices.org/spinrdfconverter.html for >validating our efforts. I think the early tests I wrote did use this as well, I likely need to drag those over from the old branch as well. > >Whatever the case I think that starting from scratch rather than >porting Java is likely a better approach in the long run. As I said above +1 > >> >> >> Implementation Questions: >> >> >> >> -Can you provide a high level overview of a SPIN dotnetrdf >>implementation so I can ensure the final solution is acceptable. >>Let's say you have the SPIN rule for "adult rdfs:subclassof person" >>at the top-level (ie. >>owl:Thing) and >> the user queries is Elvis a Adult. Would dotnetrdf SPIN spawn >>numerous >> intermediate SPARQL queries to gather the important SPIN rules that >>must be executed? If RDF database is remote (ie. dbpedia) could this >>accumulative delay become unacceptably (Over 3 seconds in my >>application). >>Alternatively >> is everything required by the user query obtained in 1 or 2 complex >>intermediate queries which dotnetrdf SPIN creates and digests? >>Basically if >> you could paint the high level overview with an example I could then >>move to the details. >> >> > >I think that a complete dotNetRDF implementation of SPIN would require >at least two components. > >1. A converter from SPIN/RDF to in-memory queries (not necessarily >VDS.RDF.Query.SparqlQuery - see below) 2. A SPIN runner, which will >take a SPIN query and execute it in an instance's context 3. A >reasoner, which uses the above converter and executes the SPIN rules >and constraints againt a graph or triple store Yes that is pretty much what I was going to suggest > >> >> >> -Can you provide a low-level overview of your SPIN dotnetrdf >>implementation strategy. I only partially understood you explanation >>below, which I know will be a little clearer after looking at the >>code. What is spin-sparql-syntax.ttl and how does it fit into the >>puzzle? What does it mean to convert a query into SPIN RDF >>representation? My naive picture is that a user query is converted >>into internal query(s) to obtain SPIN RDF rules, which are then >>executed by the new SPIN dotnetrdf engine. Lastly please explain a >>little more your view of turning a SPIN query into a query? >> >> > >Basically I think that a complete solution should work like this: >1. Prepare a metadata (ontology) graph with your SPIN rules/constraints >2. SPIN rules are converted to SPARQL queries 3. Queries are executed >against graph/store to produce constraint violations and >inferences/assertions I agree, for point 3 we could even go so far to have a SPIN constraint validator as a decorator over a dataset which would fire off the constraints in the Flush() method (I.e. the transaction commit) and fail the transaction if constraints have been violated. The same goes for running inferences. > >If you look at the TopBraid videos and SPIN Modelling vocabulary you >will notice that there is much more to SPIN than just converting >queries from RDF representation to SPARQL: >- rule modularization templates >- constructors >- extending SPARQL Engine with functions and magic properties > >I agree with Rob that first we would need a converter from SPIN RDF to >SPARQL but its design should be influenced by how we will use it and we >already know very good what that would be. Unfortunately a lot seems >unclear to me when I read the SPIN Modelling documentation. For one >thing there can be many rules and as Kevin wrote, executing many such >rules against a store may not be a good idea. I think the immediate goal would be to make SPIN runnable against in-memory data, a longer term goal can be to make this run against arbitrary SPARQL endpoints. Rob > >Kevin, what do you mean by you last question? You have RDF triples, >which represent a query and you traverse the graph to create a query >(string). The IGraph and Fluent SPARQL APIs combined should make this >work easy. > >Hope this helps, for now ;) >Tom > >> >> >> Thanks, >> >> Kevin >> >> >> >> From: Rob Vesse [mailto:rv...@do...] >> Sent: Friday, March 15, 2013 2:57 PM >> To: Kevin >> Cc: dotNetRDF Developer Discussion and Feature Request >> Subject: Re: Integrating SPIN into dotnetrdf >> >> >> >> Hey Kevin >> >> >> >> Discussion inline: >> >> >> >> From: Kevin <ke...@th...> >> Date: Wednesday, March 13, 2013 7:40 PM >> To: Rob Vesse <rv...@do...> >> Subject: Integrating SPIN into dotnetrdf >> >> >> >> Rob, >> >> >> >> First thank you for your quality work you have done with the >>dotnetrdf project. I have seen a few different posts about your >>initiative to integrate SPIN into dotnetrdf (ie. SPIN Post). After >>much reading on the subject it really seems that SPIN would really >>propel/complement dotnetrdf. >> I believe SPIN not only makes up for the missing OWL inference (Via >>SPIN OWL-RL implementation), it also can expand to suit the modelers >>imagination. >> The fact that the rules are in SPARQL makes for an unbeatable solution. >> Should it matter my current effort involves query a Virtuoso database >>(Some owl support) with dotnetrdf. I would really appreciate you >>taking a look at the questions below: >> >> >> >> -Have you made any further progress on integrating SPIN into dotnetrdf? >> Would you allow me to have the source code in its current state? >>Could I possibly be a contributor on this cause as I am not really >>equipped for the full task? In any case I would appreciate any >>source code which I could use as a learning tool. >> >> >> >> No I haven't had time to do anything on SPIN for a long time now. I've >>been >> primarily concentrating on getting core features stabilized such as the >> SPARQL engine which are obviously fairly key to building stuff like >>SPIN on >> top. >> >> >> >> However I still don't have time to work on SPIN directly so if you want >>to >> work on this please feel free, find the code in the mercurial >>repository at >> https://bitbucket.org/dotnetrdf/dotnetrdf >> >> >> >> The previous and very minimal SPIN stub is under Libraries\Query\Spin, >> create your own fork and then you can send pull requests as and when you >> have something to >> >> >> >> The key things that need to be done to get the core of SPIN implemented >>are >> as follows: >> >> Update the current spin-sparql-syntax.ttl to a current version, it >>likely >> doesn't represent the current version of the spec (this is primarily a >> convenience reference for developers) >> Finish the existing stubs for converting queries into their SPIN RDF >> representation (see SpinSyntax.cs) >> Write code to turn a RDF encoding of a SPIN query into a query >> >> The middle one would be the easiest to start with since there is already >> some partial stubs to get you started. >> >> >> >> >> >> -From the available TopQuadrant documentation I have tried to deduce how >> dotnetrdf might implement SPIN. According to SPIN tutrial, TopBraid >>finds >> all SPIN inferecer rules and runs them when you hit play. Would >>dotnetrdf >> SPIN inferencer only run the rules that are associated with the class >> structure being queried? Basically I am confused how dotnetrdf decides >> when/how/which SPIN rules to run for a given query. >> >> >> >> That's an implementation detail, we would control how and when rules get >> run. We need to get the basic implementation of SPIN done first before >>this >> aspect of things gets implemented anyway. >> >> >> >> >> >> -How much of SPIN could dotnetrdf possibly support.? It appears SPIN >> contains Inference Rules, Constraint Checking, and ability to Isolate >>rules >> for certain conditions. Also the TopBraid tool seems to have >>"User-Defined >> SPARQL functions" and "SPIN Query Templates". I imagine dotnetrdf would >> have to keep up with any SPIN improvements. >> >> >> >> All of those are supportable in some shape of form, until we have the >>core >> of SPIN up and running we can't really implement those. Most of those >> features run on top of the SPIN core and so will ultimately just be >> implementation details once we have a core to build upon. User defined >> SPARQL functions are basically just SPARQL queries that return a single >> value and query templates are just parameterized queries both of which >>the >> existing SPARQL engine is capable of supporting in one way or another. >>So >> it is just a case of exposing that functionality in the SPIN style. >> >> >> >> Hope this is enough to get you started, if not please let us know, >> >> >> >> Rob >> >> >> >> >> >> Regards, >> >> Kevin >> >> >> >>------------------------------------------------------------------------- >>----- >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_d2d_mar >> _______________________________________________ >> dotNetRDF-develop mailing list >> dot...@li... >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop >> > >-------------------------------------------------------------------------- >---- >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_d2d_mar >_______________________________________________ >dotNetRDF-develop mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop ---------------------------------------------------------------------------- -- Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar _______________________________________________ dotNetRDF-develop mailing list dot...@li... https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop |
From: <tr...@do...> - 2013-03-25 19:27:40
|
<p>The following issue has been updated by Rob Vesse:</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Simplify the Configuration API</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td colspan="2"><b>Changes:</b></td> </tr> <tr> <td colspan="2"> <ul> <li>Status changed from "Confirmed" to "Completed" </li> <li>Milestone changed from "1.0.1" to "1.0.0" </li> <li>Resolution changed from "Unassigned" to "Completed" </li> <li>Progress changed from "0 %" to "100 %" </li> </ul> </td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=337" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=337</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-25 19:14:26
|
<p>The following issue has been updated by Rob Vesse:</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Default Prefix may be incorrectly resolved in Turtle when the prefix is not defined but a Base URI is</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td colspan="2"><b>Changes:</b></td> </tr> <tr> <td colspan="2"> <ul> <li>Status changed from "Confirmed" to "Completed" </li> <li>Resolution changed from "Unassigned" to "Fixed" </li> <li>Progress changed from "0 %" to "100 %" </li> </ul> </td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=341" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=341</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-25 19:14:16
|
<p>A new comment has been added to the following issue.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Default Prefix may be incorrectly resolved in Turtle when the prefix is not defined but a Base URI is</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Date:</b></td> <td>2013-03-25 07:13 PM</td> </tr> <tr> <td><b>Comment:</b></td> </tr> <tr> <td colspan="2"><p> Fixed and added regression tests</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=341" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=341</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-25 18:57:29
|
<p>A new comment has been added to the following issue.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Simplify the Configuration API</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Date:</b></td> <td>2013-03-25 06:56 PM</td> </tr> <tr> <td><b>Comment:</b></td> </tr> <tr> <td colspan="2"><p> Completed as of the merge of Tom's CORE-337 branch today</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=337" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=337</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: Rob V. <rv...@do...> - 2013-03-22 18:59:24
|
Sorry I've been out the discussion but this week is really busy for me. Comments inline: On 3/19/13 10:35 AM, "Tomasz Pluskiewicz" <tom...@gm...> wrote: >Comments inline > >On Sun, Mar 17, 2013 at 4:56 AM, Kevin <ke...@th...> wrote: >> Rob, Tom >> >> >> >> After more reading I believe a dotnetrdf/SPIN/Fluent SPARQL would be an >> excellent solution. In fact I would think people would convert to C# >> dotnetrdf due to this compiling story. >> >> >> >> Strategy Questions: >> >> >> >> Due to my knowledge, time constraints, and past experience I know if I >> attempt SPIN dotnetrdf alone it will drag out and never complete. Can >>you >> let me know if any of the strategies below make any sense. Both >>strategies >> involve splitting the work with the understanding that we are all busy >>and >> there is no real obligation. Also I assume any knowledgeable new comer >>is >> welcomed to contribute to the cause. I believe the effort will >>obviously >> benefit the community, but also provide a deep insight to the >>contributing >> developers. >> >> >> >> -Convert the Java TopBraid SPIN API (Uses Jena interface) into C# >>starting >> with a conversion tool like Tangible Java->C# (I will purchase). The >>tool >> will help with most of the syntax, but there will be a lot of manual >>work. >> The conversion will obviously entail replacing the Jena interface with >> dotnetrdf. The benefits of this strategy is we harness the >>completeness, >> robustness, and future updates (re-port changes) of TopBraid SPIN API. >>The >> conversion should provide insights into the implementation enabling >>custom >> tweaks. It should also be possible to split the converted Java files >>into 3 >> groups if you guys are up for the task. I am in preference of this >>solution >> primarily because we are essential creating a SPIN inference engine >>based >> upon code from the people who invented SPIN. >> >> > >Has TopBraid opened all of their SPIN API? Last time I looked only >parts were open source. I wonder that it got no attention at >semanticweb.com. Or did it? > >Regarding the first strategy I undersnatd it is very appealing but I'm >afraid converting API calls from Jena to dotNetRDF could be more work >than you expect. I don't know Jena very well but I expect that a lot >of the functionality isn't just a simple 1:1 relation. In this case we >are talking about a number of areas: > >- Graph traversal for reading SPIN queries in RDF form >- SPARQL query and it's programmatic counterpart >(VDS.RDF.Query.SparqlQuery and others) >- Query execution >- Reasoner I would echo what Tom said, write code from scratch don't try and port the existing Java. As someone who also works on Jena I can confirm what Tom said that the APIs around queries and different enough that you would spend far more time extricating Jena from the converted code than if you just wrote the relevant code yourself. Also converting code opened source under a different license than dotNetRDF uses provides a somewhat grey area about whether you can re-license the code since we would not be the original copyright holders and would likely shoot ourselves in the foot wrt making our SPIN implementation usable in a corporate setting (where they are going to care about legal stuff like this) if at all. > >However what we should definitely try to preserve are any unit tests >and possibly some kind of test hareness. I hope the guys at TopBraid >have SPIN thoroughly tested and we should reuse those tests on our >implementation. This is a good point, if they have open sourced the tests these would be useful references to write our own tests from. > >> >> -Follow your initial start at SPIN dotnetrdf and maybe use TopBraid >>SPIN API >> as a reference (Difficult because approaches will diverge). Rob are >>you a >> take any small essential blocks and coordinate the overall effort? Tom >>are >> you able to help out, especially where Fluent SPARQL is utilized? >>Again I >> think the alternate strategy above has a lot of merit, but it must align >> with Rob's vision. No matter the strategy please look at the >> implementation questions below to help clarify the high/low level >>picture. >> > >Now, if we had not only the Java API reference but also complete >automatic test suite from the start I would opt for the second >approach. > >If not available or somehow unusable for a .NET project I think we >could resort to http://spinservices.org/spinrdfconverter.html for >validating our efforts. I think the early tests I wrote did use this as well, I likely need to drag those over from the old branch as well. > >Whatever the case I think that starting from scratch rather than >porting Java is likely a better approach in the long run. As I said above +1 > >> >> >> Implementation Questions: >> >> >> >> -Can you provide a high level overview of a SPIN dotnetrdf >>implementation so >> I can ensure the final solution is acceptable. Let's say you have the >>SPIN >> rule for "adult rdfs:subclassof person" at the top-level (ie. >>owl:Thing) and >> the user queries is Elvis a Adult. Would dotnetrdf SPIN spawn >>numerous >> intermediate SPARQL queries to gather the important SPIN rules that >>must be >> executed? If RDF database is remote (ie. dbpedia) could this >>accumulative >> delay become unacceptably (Over 3 seconds in my application). >>Alternatively >> is everything required by the user query obtained in 1 or 2 complex >> intermediate queries which dotnetrdf SPIN creates and digests? >>Basically if >> you could paint the high level overview with an example I could then >>move to >> the details. >> >> > >I think that a complete dotNetRDF implementation of SPIN would require >at least two components. > >1. A converter from SPIN/RDF to in-memory queries (not necessarily >VDS.RDF.Query.SparqlQuery - see below) >2. A SPIN runner, which will take a SPIN query and execute it in an >instance's context >3. A reasoner, which uses the above converter and executes the SPIN >rules and constraints againt a graph or triple store Yes that is pretty much what I was going to suggest > >> >> >> -Can you provide a low-level overview of your SPIN dotnetrdf >>implementation >> strategy. I only partially understood you explanation below, which I >>know >> will be a little clearer after looking at the code. What is >> spin-sparql-syntax.ttl and how does it fit into the puzzle? What does >>it >> mean to convert a query into SPIN RDF representation? My naive picture >>is >> that a user query is converted into internal query(s) to obtain SPIN RDF >> rules, which are then executed by the new SPIN dotnetrdf engine. Lastly >> please explain a little more your view of turning a SPIN query into a >>query? >> >> > >Basically I think that a complete solution should work like this: >1. Prepare a metadata (ontology) graph with your SPIN rules/constraints >2. SPIN rules are converted to SPARQL queries >3. Queries are executed against graph/store to produce constraint >violations and inferences/assertions I agree, for point 3 we could even go so far to have a SPIN constraint validator as a decorator over a dataset which would fire off the constraints in the Flush() method (I.e. the transaction commit) and fail the transaction if constraints have been violated. The same goes for running inferences. > >If you look at the TopBraid videos and SPIN Modelling vocabulary you >will notice that there is much more to SPIN than just converting >queries from RDF representation to SPARQL: >- rule modularization templates >- constructors >- extending SPARQL Engine with functions and magic properties > >I agree with Rob that first we would need a converter from SPIN RDF to >SPARQL but its design should be influenced by how we will use it and >we already know very good what that would be. Unfortunately a lot >seems unclear to me when I read the SPIN Modelling documentation. For >one thing there can be many rules and as Kevin wrote, executing many >such rules against a store may not be a good idea. I think the immediate goal would be to make SPIN runnable against in-memory data, a longer term goal can be to make this run against arbitrary SPARQL endpoints. Rob > >Kevin, what do you mean by you last question? You have RDF triples, >which represent a query and you traverse the graph to create a query >(string). The IGraph and Fluent SPARQL APIs combined should make this >work easy. > >Hope this helps, for now ;) >Tom > >> >> >> Thanks, >> >> Kevin >> >> >> >> From: Rob Vesse [mailto:rv...@do...] >> Sent: Friday, March 15, 2013 2:57 PM >> To: Kevin >> Cc: dotNetRDF Developer Discussion and Feature Request >> Subject: Re: Integrating SPIN into dotnetrdf >> >> >> >> Hey Kevin >> >> >> >> Discussion inline: >> >> >> >> From: Kevin <ke...@th...> >> Date: Wednesday, March 13, 2013 7:40 PM >> To: Rob Vesse <rv...@do...> >> Subject: Integrating SPIN into dotnetrdf >> >> >> >> Rob, >> >> >> >> First thank you for your quality work you have done with the dotnetrdf >> project. I have seen a few different posts about your initiative to >> integrate SPIN into dotnetrdf (ie. SPIN Post). After much reading on >>the >> subject it really seems that SPIN would really propel/complement >>dotnetrdf. >> I believe SPIN not only makes up for the missing OWL inference (Via SPIN >> OWL-RL implementation), it also can expand to suit the modelers >>imagination. >> The fact that the rules are in SPARQL makes for an unbeatable solution. >> Should it matter my current effort involves query a Virtuoso database >>(Some >> owl support) with dotnetrdf. I would really appreciate you taking a >>look at >> the questions below: >> >> >> >> -Have you made any further progress on integrating SPIN into dotnetrdf? >> Would you allow me to have the source code in its current state? Could >>I >> possibly be a contributor on this cause as I am not really equipped for >>the >> full task? In any case I would appreciate any source code which I >>could use >> as a learning tool. >> >> >> >> No I haven't had time to do anything on SPIN for a long time now. I've >>been >> primarily concentrating on getting core features stabilized such as the >> SPARQL engine which are obviously fairly key to building stuff like >>SPIN on >> top. >> >> >> >> However I still don't have time to work on SPIN directly so if you want >>to >> work on this please feel free, find the code in the mercurial >>repository at >> https://bitbucket.org/dotnetrdf/dotnetrdf >> >> >> >> The previous and very minimal SPIN stub is under Libraries\Query\Spin, >> create your own fork and then you can send pull requests as and when you >> have something to >> >> >> >> The key things that need to be done to get the core of SPIN implemented >>are >> as follows: >> >> Update the current spin-sparql-syntax.ttl to a current version, it >>likely >> doesn't represent the current version of the spec (this is primarily a >> convenience reference for developers) >> Finish the existing stubs for converting queries into their SPIN RDF >> representation (see SpinSyntax.cs) >> Write code to turn a RDF encoding of a SPIN query into a query >> >> The middle one would be the easiest to start with since there is already >> some partial stubs to get you started. >> >> >> >> >> >> -From the available TopQuadrant documentation I have tried to deduce how >> dotnetrdf might implement SPIN. According to SPIN tutrial, TopBraid >>finds >> all SPIN inferecer rules and runs them when you hit play. Would >>dotnetrdf >> SPIN inferencer only run the rules that are associated with the class >> structure being queried? Basically I am confused how dotnetrdf decides >> when/how/which SPIN rules to run for a given query. >> >> >> >> That's an implementation detail, we would control how and when rules get >> run. We need to get the basic implementation of SPIN done first before >>this >> aspect of things gets implemented anyway. >> >> >> >> >> >> -How much of SPIN could dotnetrdf possibly support.? It appears SPIN >> contains Inference Rules, Constraint Checking, and ability to Isolate >>rules >> for certain conditions. Also the TopBraid tool seems to have >>"User-Defined >> SPARQL functions" and "SPIN Query Templates". I imagine dotnetrdf would >> have to keep up with any SPIN improvements. >> >> >> >> All of those are supportable in some shape of form, until we have the >>core >> of SPIN up and running we can't really implement those. Most of those >> features run on top of the SPIN core and so will ultimately just be >> implementation details once we have a core to build upon. User defined >> SPARQL functions are basically just SPARQL queries that return a single >> value and query templates are just parameterized queries both of which >>the >> existing SPARQL engine is capable of supporting in one way or another. >>So >> it is just a case of exposing that functionality in the SPIN style. >> >> >> >> Hope this is enough to get you started, if not please let us know, >> >> >> >> Rob >> >> >> >> >> >> Regards, >> >> Kevin >> >> >> >>------------------------------------------------------------------------- >>----- >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_d2d_mar >> _______________________________________________ >> dotNetRDF-develop mailing list >> dot...@li... >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop >> > >-------------------------------------------------------------------------- >---- >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_d2d_mar >_______________________________________________ >dotNetRDF-develop mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop |
From: <tr...@do...> - 2013-03-22 17:51:45
|
<p>The following issue has been added to a project that you are monitoring.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>Default Prefix may be incorrectly resolved in Turtle when the prefix is not defined but a Base URI is</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Milestone:</b></td> <td>1.0.0</td> </tr> <tr> <td><b>Category:</b></td> <td>Parsing</td> </tr> <tr> <td><b>Priority:</b></td> <td>High</td> </tr> <tr> <td><b>Type:</b></td> <td>Bug</td> </tr> <tr> <td><b>Description:</b></td> </tr> <tr> <td colspan="2"><p> This comes from an <a href="http://answers.semanticweb.com/questions/21733/turtle-dotnetrdf-base-vs-prefix">Answers question</a> and was something that Tom spotted.</p> <p> The behaviour is down to the fact that it would be correct in N3 which is a superset of Turtle and that the N3 and Turtle parsers share a QName resolution function.</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=341" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=341</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-20 03:37:21
|
<p>A new comment has been added to the following issue.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>GROUP_CONCAT fails on non-literal inputs</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Date:</b></td> <td>2013-03-20 03:36 AM</td> </tr> <tr> <td><b>Comment:</b></td> </tr> <tr> <td colspan="2"><p> This is now fixed and unit tests have been put in place to prevent regressions in this area.</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-20 03:36:44
|
<p>The following issue has been updated by Rob Vesse:</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>GROUP_CONCAT fails on non-literal inputs</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td colspan="2"><b>Changes:</b></td> </tr> <tr> <td colspan="2"> <ul> <li>Status changed from "Confirmed" to "Completed" </li> <li>Resolution changed from "Unassigned" to "Fixed" </li> <li>Progress changed from "0 %" to "100 %" </li> </ul> </td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <tr...@do...> - 2013-03-20 03:35:25
|
<p>A new comment has been added to the following issue.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>GROUP_CONCAT fails on non-literal inputs</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Date:</b></td> <td>2013-03-20 03:34 AM</td> </tr> <tr> <td><b>Comment:</b></td> </tr> <tr> <td colspan="2"><p> Investigation also highlighted that GROUP_CONCAT is very restrictive about what literals it will actually concatenate, if they have a datatype it had to be xsd:string or they wouldn't be concatenated.</p> <p> </p> <p> The fix for this will be included with the fixes for concatenating URIs</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: <dot...@li...> - 2013-03-20 03:33:50
|
Send dotNetRDF-commits mailing list submissions to dot...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/dotnetrdf-commits or, via email, send a message with subject or body 'help' to dot...@li... You can reach the person managing the list at dot...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of dotNetRDF-commits digest..." Today's Topics: 1. commit/dotnetrdf: 2 new changesets (Bitbucket) 2. commit/dotnetrdf: rvesse: Note bug fixes from CORE-336 in Change Log (Bitbucket) 3. commit/dotnetrdf: 8 new changesets (Bitbucket) 4. commit/dotnetrdf: 4 new changesets (Bitbucket) 5. commit/dotnetrdf: rvesse: Rename constant (CORE-339) (Bitbucket) 6. commit/dotnetrdf: rvesse: Upgrade VDS.Web.Server to 1.2.0 to start work on addressing TOOLS-338 (Bitbucket) 7. commit/dotnetrdf: 2 new changesets (Bitbucket) 8. commit/dotnetrdf: 2 new changesets (Bitbucket) 9. commit/dotnetrdf: 5 new changesets (Bitbucket) ---------------------------------------------------------------------- Message: 1 Date: Thu, 07 Mar 2013 20:37:41 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: 2 new changesets To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 2 new commits in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/488710d8fea5/ changeset: 488710d8fea5 user: rvesse date: 2013-03-07 21:20:14 summary: Test to reproduce CORE-336 affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/4766ebd4eeea/ changeset: 4766ebd4eeea user: rvesse date: 2013-03-07 21:37:15 summary: Bug fixes for CORE-336, fixes a case where GROUP BY could interact incorrectly with some other operators and return incorrect results affected #: 3 files Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 2 Date: Thu, 07 Mar 2013 20:39:37 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: rvesse: Note bug fixes from CORE-336 in Change Log To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 1 new commit in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/d0c86b49ec0d/ changeset: d0c86b49ec0d user: rvesse date: 2013-03-07 21:39:23 summary: Note bug fixes from CORE-336 in Change Log affected #: 1 file Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 3 Date: Fri, 08 Mar 2013 22:25:52 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: 8 new changesets To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 8 new commits in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/c21ab04c4d55/ changeset: c21ab04c4d55 user: rvesse date: 2013-03-08 20:32:46 summary: Fix a test affected by a change in MimeTypesHelper affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/1b85eef0ed77/ changeset: 1b85eef0ed77 user: rvesse date: 2013-03-08 20:44:16 summary: Remove a no longer relevant test affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/7988bd06a5b5/ changeset: 7988bd06a5b5 user: rvesse date: 2013-03-08 21:03:25 summary: Remove a couple of tests that reliably fail because the remote services are intemittently available, increased timeouts for the other tests in this area affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/b8f5d7513cc4/ changeset: b8f5d7513cc4 user: rvesse date: 2013-03-08 21:41:49 summary: Fix a Sesame test so it reliably passes affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/06e8c1c6d58f/ changeset: 06e8c1c6d58f user: rvesse date: 2013-03-08 21:46:26 summary: Mark DydraConnector as obsolete unsuable due to their APIs inconsistency affected #: 2 files https://bitbucket.org/dotnetrdf/dotnetrdf/commits/820e962beff4/ changeset: 820e962beff4 user: rvesse date: 2013-03-08 23:05:52 summary: Add extra Sesame test to try to track down a potential bug I discovered affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/329becea0b02/ changeset: 329becea0b02 user: rvesse date: 2013-03-08 23:07:38 summary: Remove some dead code from Sesame connector affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/e2d5603955ed/ changeset: e2d5603955ed user: rvesse date: 2013-03-08 23:25:22 summary: Fix a bug where async UpdateGraph() calls against Sesame stores would invoke the callback prematurely affected #: 2 files Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 4 Date: Tue, 12 Mar 2013 17:23:50 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: 4 new changesets To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 4 new commits in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/d1a9cb6218ff/ changeset: d1a9cb6218ff user: rvesse date: 2013-03-08 23:34:50 summary: Fix a couple of bugs in Stardog tests affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/90c2c817de79/ changeset: 90c2c817de79 user: rvesse date: 2013-03-08 23:41:56 summary: Eliminate a couple of warnings from rdfServer affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/21faf45544c6/ changeset: 21faf45544c6 user: rvesse date: 2013-03-12 18:22:20 summary: Unit test and fix for CORE-339, OWL datatype properties are now correctly retrieved by Ontology API affected #: 5 files https://bitbucket.org/dotnetrdf/dotnetrdf/commits/2163e44fd112/ changeset: 2163e44fd112 user: rvesse date: 2013-03-12 18:23:32 summary: Another test re: CORE-339 affected #: 1 file Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 5 Date: Tue, 12 Mar 2013 17:25:21 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: rvesse: Rename constant (CORE-339) To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 1 new commit in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/fefcc1107089/ changeset: fefcc1107089 user: rvesse date: 2013-03-12 18:25:09 summary: Rename constant (CORE-339) affected #: 2 files Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 6 Date: Tue, 12 Mar 2013 22:42:43 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: rvesse: Upgrade VDS.Web.Server to 1.2.0 to start work on addressing TOOLS-338 To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 1 new commit in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/946adec8e7c6/ changeset: 946adec8e7c6 user: rvesse date: 2013-03-12 23:42:29 summary: Upgrade VDS.Web.Server to 1.2.0 to start work on addressing TOOLS-338 affected #: 5 files Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 7 Date: Fri, 15 Mar 2013 18:25:57 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: 2 new changesets To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 2 new commits in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/f8683768b05a/ changeset: f8683768b05a user: rvesse date: 2013-03-15 19:20:02 summary: Move SPIN stub over from experimental branch affected #: 7 files https://bitbucket.org/dotnetrdf/dotnetrdf/commits/13d9d450cd28/ changeset: 13d9d450cd28 branch: experimental user: rvesse date: 2013-03-15 19:24:34 summary: Closing off the experimental branch as it is very out of date and attempting to merge it leads to interesting results. Most of the stuff over here already moved to default anyway or is now defunct, since this is mercurial we can always get back to this stuff if necessary. affected #: 0 files Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 8 Date: Fri, 15 Mar 2013 22:25:00 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: 2 new changesets To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 2 new commits in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/266f6ae0cf9a/ changeset: 266f6ae0cf9a user: rvesse date: 2013-03-15 23:07:48 summary: Improve rdfServer so it permits multiple endpoints to be configured (TOOLS-338) affected #: 6 files https://bitbucket.org/dotnetrdf/dotnetrdf/commits/5a6a96e1b6e2/ changeset: 5a6a96e1b6e2 user: rvesse date: 2013-03-15 23:24:47 summary: Update rdfServerGui to account for changes to rdfServer (TOOLS-338) affected #: 5 files Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ Message: 9 Date: Wed, 20 Mar 2013 03:33:41 -0000 From: Bitbucket <com...@bi...> Subject: [dotNetRDF Commits] commit/dotnetrdf: 5 new changesets To: dot...@li... Message-ID: <201...@bi...> Content-Type: text/plain; charset="utf-8" 5 new commits in dotnetrdf: https://bitbucket.org/dotnetrdf/dotnetrdf/commits/71241fba2d27/ changeset: 71241fba2d27 user: rvesse date: 2013-03-20 04:14:16 summary: Unit tests which reproduce CORE-340, a bug whereby GROUP_CONCAT does not concatenate URIs as expected affected #: 3 files https://bitbucket.org/dotnetrdf/dotnetrdf/commits/1a528f2d7e60/ changeset: 1a528f2d7e60 user: rvesse date: 2013-03-20 04:25:22 summary: Work towards fixing CORE-340 affected #: 2 files https://bitbucket.org/dotnetrdf/dotnetrdf/commits/ac3ac94197d5/ changeset: ac3ac94197d5 user: rvesse date: 2013-03-20 04:29:54 summary: Unit test that demonstrates a similar issue in GROUP_CONCAT to CORE-340 affected #: 1 file https://bitbucket.org/dotnetrdf/dotnetrdf/commits/c9dba4e29302/ changeset: c9dba4e29302 user: rvesse date: 2013-03-20 04:32:36 summary: Finish fixing CORE-340 affected #: 2 files https://bitbucket.org/dotnetrdf/dotnetrdf/commits/01a74db5eec3/ changeset: 01a74db5eec3 user: rvesse date: 2013-03-20 04:33:25 summary: Note fix for CORE-340 in Change Log affected #: 1 file Repository URL: https://bitbucket.org/dotnetrdf/dotnetrdf/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. ------------------------------ ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_mar ------------------------------ _______________________________________________ dotNetRDF-commits mailing list dot...@li... https://lists.sourceforge.net/lists/listinfo/dotnetrdf-commits End of dotNetRDF-commits Digest, Vol 6, Issue 3 *********************************************** |
From: <tr...@do...> - 2013-03-20 02:59:40
|
<p>The following issue has been added to a project that you are monitoring.</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>GROUP_CONCAT fails on non-literal inputs</td> </tr> <tr> <td><b>Project:</b></td> <td>Core Library (dotNetRDF.dll)</td> </tr> <tr> <td><b>Created By:</b></td> <td>Rob Vesse</td> </tr> <tr> <td><b>Milestone:</b></td> <td>1.0.0</td> </tr> <tr> <td><b>Category:</b></td> <td>Query</td> </tr> <tr> <td><b>Priority:</b></td> <td>High</td> </tr> <tr> <td><b>Type:</b></td> <td>Bug</td> </tr> <tr> <td><b>Description:</b></td> </tr> <tr> <td colspan="2"><p> This <a href="http://answers.semanticweb.com/questions/21699/sparql-select-using-group_concat-column-retrieve-a-string-of-commas-only?page=1&focusedAnswerId=21701#21701">question</a> highlights a bug in our implementation of GROUP_CONCAT in that it will only concatenate literals when it should be capable of concatenating a mixture of URIs and literals</p> <p> E.g</p> <p> The following returns nothing:</p> <p> SELECT (GROUP_CONCAT(?s) AS ?subjects) WHERE { ?s ?p ?o }</p> <p> Yet forcing things to be literals yields a result:</p> <p> SELECT (GROUP_CONCAT(STR(?s)) AS ?subjects) WHERE { ?s ?p ?o }</p></td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=340</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |
From: Tomasz P. <tom...@gm...> - 2013-03-19 17:36:02
|
Comments inline On Sun, Mar 17, 2013 at 4:56 AM, Kevin <ke...@th...> wrote: > Rob, Tom > > > > After more reading I believe a dotnetrdf/SPIN/Fluent SPARQL would be an > excellent solution. In fact I would think people would convert to C# > dotnetrdf due to this compiling story. > > > > Strategy Questions: > > > > Due to my knowledge, time constraints, and past experience I know if I > attempt SPIN dotnetrdf alone it will drag out and never complete. Can you > let me know if any of the strategies below make any sense. Both strategies > involve splitting the work with the understanding that we are all busy and > there is no real obligation. Also I assume any knowledgeable new comer is > welcomed to contribute to the cause. I believe the effort will obviously > benefit the community, but also provide a deep insight to the contributing > developers. > > > > -Convert the Java TopBraid SPIN API (Uses Jena interface) into C# starting > with a conversion tool like Tangible Java->C# (I will purchase). The tool > will help with most of the syntax, but there will be a lot of manual work. > The conversion will obviously entail replacing the Jena interface with > dotnetrdf. The benefits of this strategy is we harness the completeness, > robustness, and future updates (re-port changes) of TopBraid SPIN API. The > conversion should provide insights into the implementation enabling custom > tweaks. It should also be possible to split the converted Java files into 3 > groups if you guys are up for the task. I am in preference of this solution > primarily because we are essential creating a SPIN inference engine based > upon code from the people who invented SPIN. > > Has TopBraid opened all of their SPIN API? Last time I looked only parts were open source. I wonder that it got no attention at semanticweb.com. Or did it? Regarding the first strategy I undersnatd it is very appealing but I'm afraid converting API calls from Jena to dotNetRDF could be more work than you expect. I don't know Jena very well but I expect that a lot of the functionality isn't just a simple 1:1 relation. In this case we are talking about a number of areas: - Graph traversal for reading SPIN queries in RDF form - SPARQL query and it's programmatic counterpart (VDS.RDF.Query.SparqlQuery and others) - Query execution - Reasoner However what we should definitely try to preserve are any unit tests and possibly some kind of test hareness. I hope the guys at TopBraid have SPIN thoroughly tested and we should reuse those tests on our implementation. > > -Follow your initial start at SPIN dotnetrdf and maybe use TopBraid SPIN API > as a reference (Difficult because approaches will diverge). Rob are you a > take any small essential blocks and coordinate the overall effort? Tom are > you able to help out, especially where Fluent SPARQL is utilized? Again I > think the alternate strategy above has a lot of merit, but it must align > with Rob's vision. No matter the strategy please look at the > implementation questions below to help clarify the high/low level picture. > Now, if we had not only the Java API reference but also complete automatic test suite from the start I would opt for the second approach. If not available or somehow unusable for a .NET project I think we could resort to http://spinservices.org/spinrdfconverter.html for validating our efforts. Whatever the case I think that starting from scratch rather than porting Java is likely a better approach in the long run. > > > Implementation Questions: > > > > -Can you provide a high level overview of a SPIN dotnetrdf implementation so > I can ensure the final solution is acceptable. Let's say you have the SPIN > rule for "adult rdfs:subclassof person" at the top-level (ie. owl:Thing) and > the user queries is Elvis a Adult. Would dotnetrdf SPIN spawn numerous > intermediate SPARQL queries to gather the important SPIN rules that must be > executed? If RDF database is remote (ie. dbpedia) could this accumulative > delay become unacceptably (Over 3 seconds in my application). Alternatively > is everything required by the user query obtained in 1 or 2 complex > intermediate queries which dotnetrdf SPIN creates and digests? Basically if > you could paint the high level overview with an example I could then move to > the details. > > I think that a complete dotNetRDF implementation of SPIN would require at least two components. 1. A converter from SPIN/RDF to in-memory queries (not necessarily VDS.RDF.Query.SparqlQuery - see below) 2. A SPIN runner, which will take a SPIN query and execute it in an instance's context 3. A reasoner, which uses the above converter and executes the SPIN rules and constraints againt a graph or triple store > > > -Can you provide a low-level overview of your SPIN dotnetrdf implementation > strategy. I only partially understood you explanation below, which I know > will be a little clearer after looking at the code. What is > spin-sparql-syntax.ttl and how does it fit into the puzzle? What does it > mean to convert a query into SPIN RDF representation? My naive picture is > that a user query is converted into internal query(s) to obtain SPIN RDF > rules, which are then executed by the new SPIN dotnetrdf engine. Lastly > please explain a little more your view of turning a SPIN query into a query? > > Basically I think that a complete solution should work like this: 1. Prepare a metadata (ontology) graph with your SPIN rules/constraints 2. SPIN rules are converted to SPARQL queries 3. Queries are executed against graph/store to produce constraint violations and inferences/assertions If you look at the TopBraid videos and SPIN Modelling vocabulary you will notice that there is much more to SPIN than just converting queries from RDF representation to SPARQL: - rule modularization templates - constructors - extending SPARQL Engine with functions and magic properties I agree with Rob that first we would need a converter from SPIN RDF to SPARQL but its design should be influenced by how we will use it and we already know very good what that would be. Unfortunately a lot seems unclear to me when I read the SPIN Modelling documentation. For one thing there can be many rules and as Kevin wrote, executing many such rules against a store may not be a good idea. Kevin, what do you mean by you last question? You have RDF triples, which represent a query and you traverse the graph to create a query (string). The IGraph and Fluent SPARQL APIs combined should make this work easy. Hope this helps, for now ;) Tom > > > Thanks, > > Kevin > > > > From: Rob Vesse [mailto:rv...@do...] > Sent: Friday, March 15, 2013 2:57 PM > To: Kevin > Cc: dotNetRDF Developer Discussion and Feature Request > Subject: Re: Integrating SPIN into dotnetrdf > > > > Hey Kevin > > > > Discussion inline: > > > > From: Kevin <ke...@th...> > Date: Wednesday, March 13, 2013 7:40 PM > To: Rob Vesse <rv...@do...> > Subject: Integrating SPIN into dotnetrdf > > > > Rob, > > > > First thank you for your quality work you have done with the dotnetrdf > project. I have seen a few different posts about your initiative to > integrate SPIN into dotnetrdf (ie. SPIN Post). After much reading on the > subject it really seems that SPIN would really propel/complement dotnetrdf. > I believe SPIN not only makes up for the missing OWL inference (Via SPIN > OWL-RL implementation), it also can expand to suit the modelers imagination. > The fact that the rules are in SPARQL makes for an unbeatable solution. > Should it matter my current effort involves query a Virtuoso database (Some > owl support) with dotnetrdf. I would really appreciate you taking a look at > the questions below: > > > > -Have you made any further progress on integrating SPIN into dotnetrdf? > Would you allow me to have the source code in its current state? Could I > possibly be a contributor on this cause as I am not really equipped for the > full task? In any case I would appreciate any source code which I could use > as a learning tool. > > > > No I haven't had time to do anything on SPIN for a long time now. I've been > primarily concentrating on getting core features stabilized such as the > SPARQL engine which are obviously fairly key to building stuff like SPIN on > top. > > > > However I still don't have time to work on SPIN directly so if you want to > work on this please feel free, find the code in the mercurial repository at > https://bitbucket.org/dotnetrdf/dotnetrdf > > > > The previous and very minimal SPIN stub is under Libraries\Query\Spin, > create your own fork and then you can send pull requests as and when you > have something to > > > > The key things that need to be done to get the core of SPIN implemented are > as follows: > > Update the current spin-sparql-syntax.ttl to a current version, it likely > doesn't represent the current version of the spec (this is primarily a > convenience reference for developers) > Finish the existing stubs for converting queries into their SPIN RDF > representation (see SpinSyntax.cs) > Write code to turn a RDF encoding of a SPIN query into a query > > The middle one would be the easiest to start with since there is already > some partial stubs to get you started. > > > > > > -From the available TopQuadrant documentation I have tried to deduce how > dotnetrdf might implement SPIN. According to SPIN tutrial, TopBraid finds > all SPIN inferecer rules and runs them when you hit play. Would dotnetrdf > SPIN inferencer only run the rules that are associated with the class > structure being queried? Basically I am confused how dotnetrdf decides > when/how/which SPIN rules to run for a given query. > > > > That's an implementation detail, we would control how and when rules get > run. We need to get the basic implementation of SPIN done first before this > aspect of things gets implemented anyway. > > > > > > -How much of SPIN could dotnetrdf possibly support.? It appears SPIN > contains Inference Rules, Constraint Checking, and ability to Isolate rules > for certain conditions. Also the TopBraid tool seems to have "User-Defined > SPARQL functions" and "SPIN Query Templates". I imagine dotnetrdf would > have to keep up with any SPIN improvements. > > > > All of those are supportable in some shape of form, until we have the core > of SPIN up and running we can't really implement those. Most of those > features run on top of the SPIN core and so will ultimately just be > implementation details once we have a core to build upon. User defined > SPARQL functions are basically just SPARQL queries that return a single > value and query templates are just parameterized queries both of which the > existing SPARQL engine is capable of supporting in one way or another. So > it is just a case of exposing that functionality in the SPIN style. > > > > Hope this is enough to get you started, if not please let us know, > > > > Rob > > > > > > Regards, > > Kevin > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_mar > _______________________________________________ > dotNetRDF-develop mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop > |
From: Tomasz P. <tom...@gm...> - 2013-03-18 20:36:43
|
Kevin, I am not aware of any such API attempt in other languages. For Java it would have to be a lot different as Java currently has a limited support for lambdas. I haven't got a clue about Ruby or Python for instance. There is no deadline. I got most of SPARQL 1.0 and some SPARQL 1.1 implemented. The general API is pretty much frozen at this point and thus implementig the rest is just wrapping the remaining SPARQL features. However because this hasn't been released yet, some things are bound to change. Especially there could be missing or superfluos overloads for some of the methods here and there. Having said that I think the API is complete enough to employ in a real world use line SPIN. Anything missing we would implement whenever a need arises. If we were to use Fluent SPARQL for SPIN, it would be a great testing ground and motivation to get it 100% complete finally. Thanks, Tom On Sun, Mar 17, 2013 at 4:57 AM, Kevin <ke...@th...> wrote: > Tom, > > I read your Fluent SPQRQL link and the proposal seemed helpful, elegant, and > LINQish. I am curious do other SPARQL engines (ie. Java Based) have the > APIs akin to Fluent SPARAL? Exactly how far is the Fluent SPARQL > development and do you have a target date? > > Thanks, > Kevin > > -----Original Message----- > From: Rob Vesse [mailto:rv...@do...] > Sent: Friday, March 15, 2013 3:45 PM > To: dotNetRDF Developer Discussion and Feature Request > Cc: Kevin > Subject: Re: [dotNetRDF-Develop] Integrating SPIN into dotnetrdf > > Hey > > Yes I think using the Fluent Query API for helping to convert the RDF > representation back into queries would likely make life much easier. > > Rob > > On 3/15/13 1:19 PM, "Tomasz Pluskiewicz" <tom...@gm...> > wrote: > >>Hi Kevin, Rob >> >>I have been thinking about SPIN for a very long time. And I have >>actually very recently read somehere on answeres.semanticweb.com about >>using SPIN to implement OWL reasoning. >> >>Ever since I had started that fluent SPARQL I thought it could actually >>be a good base to easily go from SPIN RDF representation to actual >>queries. >> >>I know that the implementation is far from complete. I have been busy >>with a multitude of other tasks but if it could prove useful in >>implementing SPIN it would be great. Actually one of my goals I did >>have in mind was to use Fluent SPARQL for SPIN. Especially that working >>with query strings or low-level SPARQL API will be far from >>developer-friendly in te long run IMO. >> >>Kevin, please have a look at my fork, where I have been documenting my >>work on a wiki: http://bitbucket.org/romanticweb/dotnetrdf/wiki/Home >> >>What do you guys think? >> >>Thank, >>Tom >> >>On Fri, Mar 15, 2013 at 8:57 PM, Rob Vesse <rv...@do...> wrote: >>> Hey Kevin >>> >>> Discussion inline: >>> >>> From: Kevin <ke...@th...> >>> Date: Wednesday, March 13, 2013 7:40 PM >>> To: Rob Vesse <rv...@do...> >>> Subject: Integrating SPIN into dotnetrdf >>> >>> Rob, >>> >>> >>> >>> First thank you for your quality work you have done with the >>>dotnetrdf project. I have seen a few different posts about your >>>initiative to integrate SPIN into dotnetrdf (ie. SPIN Post). After >>>much reading on the subject it really seems that SPIN would really >>>propel/complement dotnetrdf. >>> I believe SPIN not only makes up for the missing OWL inference (Via >>>SPIN OWL-RL implementation), it also can expand to suit the modelers >>>imagination. >>> The fact that the rules are in SPARQL makes for an unbeatable solution. >>> Should it matter my current effort involves query a Virtuoso database >>>(Some owl support) with dotnetrdf. I would really appreciate you >>>taking a look at the questions below: >>> >>> >>> >>> -Have you made any further progress on integrating SPIN into dotnetrdf? >>> Would you allow me to have the source code in its current state? >>>Could I possibly be a contributor on this cause as I am not really >>>equipped for the full task? In any case I would appreciate any >>>source code which I could use as a learning tool. >>> >>> >>> No I haven't had time to do anything on SPIN for a long time now. I've >>>been >>> primarily concentrating on getting core features stabilized such as the >>> SPARQL engine which are obviously fairly key to building stuff like >>>SPIN on >>> top. >>> >>> However I still don't have time to work on SPIN directly so if you want >>>to >>> work on this please feel free, find the code in the mercurial >>>repository at >>> https://bitbucket.org/dotnetrdf/dotnetrdf >>> >>> The previous and very minimal SPIN stub is under Libraries\Query\Spin, >>> create your own fork and then you can send pull requests as and when you >>> have something to >>> >>> The key things that need to be done to get the core of SPIN implemented >>>are >>> as follows: >>> >>> Update the current spin-sparql-syntax.ttl to a current version, it >>>likely >>> doesn't represent the current version of the spec (this is primarily a >>> convenience reference for developers) >>> Finish the existing stubs for converting queries into their SPIN RDF >>> representation (see SpinSyntax.cs) >>> Write code to turn a RDF encoding of a SPIN query into a query >>> >>> The middle one would be the easiest to start with since there is already >>> some partial stubs to get you started. >>> >>> >>> >>> -From the available TopQuadrant documentation I have tried to deduce how >>> dotnetrdf might implement SPIN. According to SPIN tutrial, TopBraid >>>finds >>> all SPIN inferecer rules and runs them when you hit play. Would >>>dotnetrdf >>> SPIN inferencer only run the rules that are associated with the class >>> structure being queried? Basically I am confused how dotnetrdf decides >>> when/how/which SPIN rules to run for a given query. >>> >>> >>> That's an implementation detail, we would control how and when rules get >>> run. We need to get the basic implementation of SPIN done first before >>>this >>> aspect of things gets implemented anyway. >>> >>> >>> >>> -How much of SPIN could dotnetrdf possibly support.? It appears SPIN >>> contains Inference Rules, Constraint Checking, and ability to Isolate >>>rules >>> for certain conditions. Also the TopBraid tool seems to have >>>"User-Defined >>> SPARQL functions" and "SPIN Query Templates". I imagine dotnetrdf would >>> have to keep up with any SPIN improvements. >>> >>> >>> All of those are supportable in some shape of form, until we have the >>>core >>> of SPIN up and running we can't really implement those. Most of those >>> features run on top of the SPIN core and so will ultimately just be >>> implementation details once we have a core to build upon. User defined >>> SPARQL functions are basically just SPARQL queries that return a single >>> value and query templates are just parameterized queries both of which >>>the >>> existing SPARQL engine is capable of supporting in one way or another. >>>So >>> it is just a case of exposing that functionality in the SPIN style. >>> >>> Hope this is enough to get you started, if not please let us know, >>> >>> Rob >>> >>> >>> >>> Regards, >>> >>> Kevin >>> >>> >>> >>>------------------------------------------------------------------------- >>>----- >>> Everyone hates slow websites. So do we. >>> Make your web apps faster with AppDynamics >>> Download AppDynamics Lite for free today: >>> http://p.sf.net/sfu/appdyn_d2d_mar >>> _______________________________________________ >>> dotNetRDF-develop mailing list >>> dot...@li... >>> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop >>> >> >>-------------------------------------------------------------------------- >>---- >>Everyone hates slow websites. So do we. >>Make your web apps faster with AppDynamics >>Download AppDynamics Lite for free today: >>http://p.sf.net/sfu/appdyn_d2d_mar >>_______________________________________________ >>dotNetRDF-develop mailing list >>dot...@li... >>https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop > > > > > > > ------------------------------------------------------------------------------ > Everyone hates slow websites. So do we. > Make your web apps faster with AppDynamics > Download AppDynamics Lite for free today: > http://p.sf.net/sfu/appdyn_d2d_mar > _______________________________________________ > dotNetRDF-develop mailing list > dot...@li... > https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop |
From: Kevin <ke...@th...> - 2013-03-17 04:22:28
|
Tom, I read your Fluent SPQRQL link and the proposal seemed helpful, elegant, and LINQish. I am curious do other SPARQL engines (ie. Java Based) have the APIs akin to Fluent SPARAL? Exactly how far is the Fluent SPARQL development and do you have a target date? Thanks, Kevin -----Original Message----- From: Rob Vesse [mailto:rv...@do...] Sent: Friday, March 15, 2013 3:45 PM To: dotNetRDF Developer Discussion and Feature Request Cc: Kevin Subject: Re: [dotNetRDF-Develop] Integrating SPIN into dotnetrdf Hey Yes I think using the Fluent Query API for helping to convert the RDF representation back into queries would likely make life much easier. Rob On 3/15/13 1:19 PM, "Tomasz Pluskiewicz" <tom...@gm...> wrote: >Hi Kevin, Rob > >I have been thinking about SPIN for a very long time. And I have >actually very recently read somehere on answeres.semanticweb.com about >using SPIN to implement OWL reasoning. > >Ever since I had started that fluent SPARQL I thought it could actually >be a good base to easily go from SPIN RDF representation to actual >queries. > >I know that the implementation is far from complete. I have been busy >with a multitude of other tasks but if it could prove useful in >implementing SPIN it would be great. Actually one of my goals I did >have in mind was to use Fluent SPARQL for SPIN. Especially that working >with query strings or low-level SPARQL API will be far from >developer-friendly in te long run IMO. > >Kevin, please have a look at my fork, where I have been documenting my >work on a wiki: http://bitbucket.org/romanticweb/dotnetrdf/wiki/Home > >What do you guys think? > >Thank, >Tom > >On Fri, Mar 15, 2013 at 8:57 PM, Rob Vesse <rv...@do...> wrote: >> Hey Kevin >> >> Discussion inline: >> >> From: Kevin <ke...@th...> >> Date: Wednesday, March 13, 2013 7:40 PM >> To: Rob Vesse <rv...@do...> >> Subject: Integrating SPIN into dotnetrdf >> >> Rob, >> >> >> >> First thank you for your quality work you have done with the >>dotnetrdf project. I have seen a few different posts about your >>initiative to integrate SPIN into dotnetrdf (ie. SPIN Post). After >>much reading on the subject it really seems that SPIN would really >>propel/complement dotnetrdf. >> I believe SPIN not only makes up for the missing OWL inference (Via >>SPIN OWL-RL implementation), it also can expand to suit the modelers >>imagination. >> The fact that the rules are in SPARQL makes for an unbeatable solution. >> Should it matter my current effort involves query a Virtuoso database >>(Some owl support) with dotnetrdf. I would really appreciate you >>taking a look at the questions below: >> >> >> >> -Have you made any further progress on integrating SPIN into dotnetrdf? >> Would you allow me to have the source code in its current state? >>Could I possibly be a contributor on this cause as I am not really >>equipped for the full task? In any case I would appreciate any >>source code which I could use as a learning tool. >> >> >> No I haven't had time to do anything on SPIN for a long time now. I've >>been >> primarily concentrating on getting core features stabilized such as the >> SPARQL engine which are obviously fairly key to building stuff like >>SPIN on >> top. >> >> However I still don't have time to work on SPIN directly so if you want >>to >> work on this please feel free, find the code in the mercurial >>repository at >> https://bitbucket.org/dotnetrdf/dotnetrdf >> >> The previous and very minimal SPIN stub is under Libraries\Query\Spin, >> create your own fork and then you can send pull requests as and when you >> have something to >> >> The key things that need to be done to get the core of SPIN implemented >>are >> as follows: >> >> Update the current spin-sparql-syntax.ttl to a current version, it >>likely >> doesn't represent the current version of the spec (this is primarily a >> convenience reference for developers) >> Finish the existing stubs for converting queries into their SPIN RDF >> representation (see SpinSyntax.cs) >> Write code to turn a RDF encoding of a SPIN query into a query >> >> The middle one would be the easiest to start with since there is already >> some partial stubs to get you started. >> >> >> >> -From the available TopQuadrant documentation I have tried to deduce how >> dotnetrdf might implement SPIN. According to SPIN tutrial, TopBraid >>finds >> all SPIN inferecer rules and runs them when you hit play. Would >>dotnetrdf >> SPIN inferencer only run the rules that are associated with the class >> structure being queried? Basically I am confused how dotnetrdf decides >> when/how/which SPIN rules to run for a given query. >> >> >> That's an implementation detail, we would control how and when rules get >> run. We need to get the basic implementation of SPIN done first before >>this >> aspect of things gets implemented anyway. >> >> >> >> -How much of SPIN could dotnetrdf possibly support.? It appears SPIN >> contains Inference Rules, Constraint Checking, and ability to Isolate >>rules >> for certain conditions. Also the TopBraid tool seems to have >>"User-Defined >> SPARQL functions" and "SPIN Query Templates". I imagine dotnetrdf would >> have to keep up with any SPIN improvements. >> >> >> All of those are supportable in some shape of form, until we have the >>core >> of SPIN up and running we can't really implement those. Most of those >> features run on top of the SPIN core and so will ultimately just be >> implementation details once we have a core to build upon. User defined >> SPARQL functions are basically just SPARQL queries that return a single >> value and query templates are just parameterized queries both of which >>the >> existing SPARQL engine is capable of supporting in one way or another. >>So >> it is just a case of exposing that functionality in the SPIN style. >> >> Hope this is enough to get you started, if not please let us know, >> >> Rob >> >> >> >> Regards, >> >> Kevin >> >> >> >>------------------------------------------------------------------------- >>----- >> Everyone hates slow websites. So do we. >> Make your web apps faster with AppDynamics >> Download AppDynamics Lite for free today: >> http://p.sf.net/sfu/appdyn_d2d_mar >> _______________________________________________ >> dotNetRDF-develop mailing list >> dot...@li... >> https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop >> > >-------------------------------------------------------------------------- >---- >Everyone hates slow websites. So do we. >Make your web apps faster with AppDynamics >Download AppDynamics Lite for free today: >http://p.sf.net/sfu/appdyn_d2d_mar >_______________________________________________ >dotNetRDF-develop mailing list >dot...@li... >https://lists.sourceforge.net/lists/listinfo/dotnetrdf-develop |
From: Kevin <ke...@th...> - 2013-03-17 04:16:09
|
Rob, Tom After more reading I believe a dotnetrdf/SPIN/Fluent SPARQL would be an excellent solution. In fact I would think people would convert to C# dotnetrdf due to this compiling story. Strategy Questions: Due to my knowledge, time constraints, and past experience I know if I attempt SPIN dotnetrdf alone it will drag out and never complete. Can you let me know if any of the strategies below make any sense. Both strategies involve splitting the work with the understanding that we are all busy and there is no real obligation. Also I assume any knowledgeable new comer is welcomed to contribute to the cause. I believe the effort will obviously benefit the community, but also provide a deep insight to the contributing developers. -Convert the Java TopBraid SPIN API <http://topbraid.org/spin/api/> (Uses Jena <http://jena.apache.org/> interface) into C# starting with a conversion tool like Tangible Java- <http://www.tangiblesoftwaresolutions.com/Product_Details/Java_to_CSharp_Con verter.html> >C# (I will purchase). The tool will help with most of the syntax, but there will be a lot of manual work. The conversion will obviously entail replacing the Jena <http://jena.apache.org/> interface with dotnetrdf. The benefits of this strategy is we harness the completeness, robustness, and future updates (re-port changes) of TopBraid SPIN API. The conversion should provide insights into the implementation enabling custom tweaks. It should also be possible to split the converted Java files into 3 groups if you guys are up for the task. I am in preference of this solution primarily because we are essential creating a SPIN inference engine based upon code from the people who invented SPIN. -Follow your initial start at SPIN dotnetrdf and maybe use TopBraid SPIN API as a reference (Difficult because approaches will diverge). Rob are you a take any small essential blocks and coordinate the overall effort? Tom are you able to help out, especially where Fluent SPARQL is utilized? Again I think the alternate strategy above has a lot of merit, but it must align with Rob's vision. No matter the strategy please look at the implementation questions below to help clarify the high/low level picture. Implementation Questions: -Can you provide a high level overview of a SPIN dotnetrdf implementation so I can ensure the final solution is acceptable. Let's say you have the SPIN rule for "adult rdfs:subclassof person" at the top-level (ie. owl:Thing) and the user queries is Elvis a Adult. Would dotnetrdf SPIN spawn numerous intermediate SPARQL queries to gather the important SPIN rules that must be executed? If RDF database is remote (ie. dbpedia) could this accumulative delay become unacceptably (Over 3 seconds in my application). Alternatively is everything required by the user query obtained in 1 or 2 complex intermediate queries which dotnetrdf SPIN creates and digests? Basically if you could paint the high level overview with an example I could then move to the details. -Can you provide a low-level overview of your SPIN dotnetrdf implementation strategy. I only partially understood you explanation below, which I know will be a little clearer after looking at the code. What is spin-sparql-syntax.ttl and how does it fit into the puzzle? What does it mean to convert a query into SPIN RDF representation? My naive picture is that a user query is converted into internal query(s) to obtain SPIN RDF rules, which are then executed by the new SPIN dotnetrdf engine. Lastly please explain a little more your view of turning a SPIN query into a query? Thanks, Kevin From: Rob Vesse [mailto:rv...@do...] Sent: Friday, March 15, 2013 2:57 PM To: Kevin Cc: dotNetRDF Developer Discussion and Feature Request Subject: Re: Integrating SPIN into dotnetrdf Hey Kevin Discussion inline: From: Kevin <ke...@th...> Date: Wednesday, March 13, 2013 7:40 PM To: Rob Vesse <rv...@do...> Subject: Integrating SPIN into dotnetrdf Rob, First thank you for your quality work you have done with the dotnetrdf project. I have seen a few different posts about your initiative to integrate SPIN into dotnetrdf (ie. SPIN Post <http://answers.semanticweb.com/questions/537/experiences-with-spin> ). After much reading on the subject it really seems that SPIN would really propel/complement dotnetrdf. I believe SPIN not only makes up for the missing OWL inference (Via SPIN OWL-RL implementation), it also can expand to suit the modelers imagination. The fact that the rules are in SPARQL makes for an unbeatable solution. Should it matter my current effort involves query a Virtuoso database (Some owl support) with dotnetrdf. I would really appreciate you taking a look at the questions below: -Have you made any further progress on integrating SPIN into dotnetrdf? Would you allow me to have the source code in its current state? Could I possibly be a contributor on this cause as I am not really equipped for the full task? In any case I would appreciate any source code which I could use as a learning tool. No I haven't had time to do anything on SPIN for a long time now. I've been primarily concentrating on getting core features stabilized such as the SPARQL engine which are obviously fairly key to building stuff like SPIN on top. However I still don't have time to work on SPIN directly so if you want to work on this please feel free, find the code in the mercurial repository at https://bitbucket.org/dotnetrdf/dotnetrdf The previous and very minimal SPIN stub is under Libraries\Query\Spin, create your own fork and then you can send pull requests as and when you have something to The key things that need to be done to get the core of SPIN implemented are as follows: * Update the current spin-sparql-syntax.ttl to a current version, it likely doesn't represent the current version of the spec (this is primarily a convenience reference for developers) * Finish the existing stubs for converting queries into their SPIN RDF representation (see SpinSyntax.cs) * Write code to turn a RDF encoding of a SPIN query into a query The middle one would be the easiest to start with since there is already some partial stubs to get you started. -From the available TopQuadrant documentation I have tried to deduce how dotnetrdf might implement SPIN. According to SPIN tutrial <http://dallemang.typepad.com/my_weblog/2010/08/extending-owl-rl-.html> , TopBraid finds all SPIN inferecer rules and runs them when you hit play. Would dotnetrdf SPIN inferencer only run the rules that are associated with the class structure being queried? Basically I am confused how dotnetrdf decides when/how/which SPIN rules to run for a given query. That's an implementation detail, we would control how and when rules get run. We need to get the basic implementation of SPIN done first before this aspect of things gets implemented anyway. -How much of SPIN could dotnetrdf possibly support.? It appears SPIN contains Inference Rules, Constraint Checking, and ability to Isolate rules for certain conditions. Also the TopBraid tool seems to have "User-Defined SPARQL functions" and "SPIN Query Templates". I imagine dotnetrdf would have to keep up with any SPIN improvements. All of those are supportable in some shape of form, until we have the core of SPIN up and running we can't really implement those. Most of those features run on top of the SPIN core and so will ultimately just be implementation details once we have a core to build upon. User defined SPARQL functions are basically just SPARQL queries that return a single value and query templates are just parameterized queries both of which the existing SPARQL engine is capable of supporting in one way or another. So it is just a case of exposing that functionality in the SPIN style. Hope this is enough to get you started, if not please let us know, Rob Regards, Kevin |
From: <tr...@do...> - 2013-03-15 22:27:47
|
<p>The following issue has been updated by Rob Vesse:</p> <table border="0"> <tr> <td width="90px" valign="top"><b>Title:</b></td> <td>rdfServer does not correctly respect the configuration file provided</td> </tr> <tr> <td><b>Project:</b></td> <td>Toolkit</td> </tr> <tr> <td colspan="2"><b>Changes:</b></td> </tr> <tr> <td colspan="2"> <ul> <li>Status changed from "Confirmed" to "Completed" </li> <li>Resolution changed from "Unassigned" to "Fixed" </li> <li>Progress changed from "0 %" to "100 %" </li> </ul> </td> </tr> </table> <p> More information on this issue can be found at <a href="http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=338" target="_blank">http://www.dotnetrdf.org/tracker/Issues/IssueDetail.aspx?id=338</a></p> <p style="text-align:center;font-size:8pt;padding:5px;"> If you no longer wish to receive notifications, please visit <a href="http://www.dotnetrdf.org/tracker/Account/UserProfile.aspx" target="_blank">your profile</a> and change your notifications options. </p> |