Home > Project Outline > Project Roadmap > Ideas
View Printer Friendly Version
This page details ideas for new features, changes and alterations to the library - it is loosely speaking related to the Project Roadmap but primarily dedicated to long term ideas as well as ideas for related tools, libraries etc.
If you have feedback on any of these ideas or have suggestions for stuff that isn't here or in the Project Roadmap then please contact us on the developer mailing list - firstname.lastname@example.org
We are always open to suggestions for projects not listed here provided that the project will either implement some Semantic Web technology not currently supported by dotNetRDF or will significantly improve existing offerings. Areas of particular interest to us are reasoning technologies and novel GUI/command line applications for working with RDF and the Semantic Web.
These are projects that may required a significant amount of work to implement but would bring major new features or potential performance benefits to dotNetRDF. For some projects we already have design documents for these features which can be used as a starting point for someone taking on the project.
Projects are categorised by difficulty which is based upon both skills/expertise required and time needed:
Skills Required: C# Programming, Good GUI Design Skills, Understanding of RDF and particularly our Configuration API vocabulary
One of the major barriers to entry for people getting to grips with Semantic Web technology is that it is often difficult to get started publishing RDF and/or SPARQL endpoints on the web. rdfPublisher is an idea for a tool that would guide users through this process in a simple easy to follow wizard. The end result of running this tool would be that the user would have created a configuration file (using the Configuration API but likely with most details hidden from the user) and have deployed it to a website (either local/remote).
An extension to this project would be to make it possible to publish these things using other technology stacks i.e. not just the dotNetRDF stack.
OWL 2 RL Reasoner
Skills Required: C# Programming, OWL, SPARQL
OWL 2 is an ontology standard for the Semantic Web which allows definition of ontologies and various forms of reasoning over them. OWL 2 RL is a profile of OWL 2 which provides a subset of OWL reasoning capabilities that can be expressed in terms of rules. Since the profile is expressed in rules a combination of SPARQL Query and Update should be sufficient to implement this.
A further extension to this is the OWL 2 project.
RDFa 1.1 Parser
Skills Required: C# Programming, HTML DOM
RDFa 1.1 is a revision of the original 1.0 standard with some breaking changes. dotNetRDF has limited support from this standard but it is not currently aligned with the latest specification and it is hampered by being DOM based. There is a partial skeleton in place for a new parser which could be more easily made streaming and would be more memory efficient.
The person working on this project would either start from this or roll their own from scratch to implement a fully compliant RDFa 1.1 parser.
Skills Required: C# Programming, Json.Net
JSON-LD is a standard for expressing linked data in JSON for which there is currently no support in the library. This project would be to implement parsers and serializers for JSON-LD within the dotNetRDF API.
Familiarity with Json.Net would be a plus as we use this library for our JSON IO currently and any new JSON related work should do so also.
OWL 2 Reasoning
Skills Required: C# Programming, OWL, knowledge of description logic, tableau reasoning and other reasoning algorithms
There is currently limited OWL support in dotNetRDF. Adding as much OWL 2 support as possible would make the project far more attractive to some classes of potential users. Since the features added would be significant this should most likely be implemented as a separate library rather than as part of the core library.
The project would need to implement as much OWL support as possible perhaps using the OWLAPI as a rough design guide for the API to provide. Reasoning would be the most important feature to support but adding additional parsers and writers for the various OWL syntaxes is a key goal:
Skills Required: C# Programming, Java Programming, good understanding of Algorithms esp. B+ Trees
TDB is a persistent Triple Store produced as part of the Jena project. As the data is persisted to disk it should be possible to write a C# based port of TDB that can read and write data to TDB and have the original Java TDB work with it without issue. This should be implemented as a separate library to the core library.
The code cannot just be IKVM'd to C# as it needs to be thoroughly converted to use C# programming conventions (such as properties instead of get and set methods) and to interact directly with the C# TDB library. Also an analysis of how some aspects of TDB function (esp. wrt. SPARQL) needs to be made before such conversion could actually take place so unnecessary parts of TDB can be ignored and an appropriate ISparqlDataset implementation created for use with our Leviathan engine.
The person taking on this project should ideally be able to commit to the project long term as it would be necessary to maintain the code base and mirror any changes/bug fixes made to the original Java TDB by the Jena team while also addressing any issues in the C# implementation.
Skills Required: C# Programming, strong RDF and SPARQL skills
SPIN is an inferencing mechanism built upon SPARQL designed originally by TopQuadrant. The technology is ostensibly an open standard but there are no non-proprietary implementations currently. Users have in the past expressed a desire for this technology to be in dotNetRDF but only skeletons of implementation have been begun and are far from usable. It is likely that this technology will become more widely used in the future as it is being submitted to the W3C as a member submission.
The person taking on this project would either start from these skeleton efforts or from nothing depending on their preferences and their designs for the implementation. Key goals are to convert SPARQL Queries and Updates to and from SPIN RDF representation and to provide a working implementation of SPIN inference.