A Semantic Web/RDF Library for .Net DevelopersRob VesseECS, University of Southamptonrvesse@dotnetrdf.org
MotivationWanted to be able to code PhD Research projects using a .Net technology stackExisting libraries didn’t fit project needsLimited choice of 3rd Party Triple StoresLack of latest SPARQL Support i.e. 1.1 featuresSome libraries didn’t really feel like .Neti.e. Java style in design, naming conventions etc.6/6/2011http://www.dotnetrdf.org2
About the LibraryCompletely free and open sourceTriple licensed – pick from GPL, LGPL or MIT depending on your needsWritten in C# for .Net 3.5 and higherBuilds for standard .Net, Mono, Silverlightand Windows Phone 7 (latter two are cut down and community contributed)6/6/2011http://www.dotnetrdf.org3
Design OverviewCore RDF ModelNodes, Triples, Graphs and Triple Stores Extensible at almost every levelPlug in your own implementations to the API for everything from Graphs to external Triple StoresUses simple and intuitive .Net featuresLINQ to Objects, Properties, Indexers, Extension Methods etc.6/6/2011http://www.dotnetrdf.org4
Simple Intuitive Code//Load a Graph from a FileGraphg = newGraph();g.LoadFromFile("example.rdf");//Print all Triples with a Blank Node SubjectNTriplesFormatterformatter = newNTriplesFormatter();foreach(Triple t in g.Triples){if(t.Subject.NodeType == NodeType.Blank)  {Console.WriteLine(t.ToString(formatter));  }}6/6/2011http://www.dotnetrdf.org5
Leviathan - A SPARQL 1.1 EngineCapable of performing SPARQL queries in-memory on small amounts of data (<=1m Triples)Supports both Query and Update including powerful features like:Property PathsFederated Query ExtensionsUpdate Transactions6/6/2011http://www.dotnetrdf.org6
3rd Party Triple Store SupportSupports a range of well known 3rd Party Triple StoresAllegroGraph, 4store, Fuseki, Joseki, Sesame, Talis, Stardog and VirtuosoPlus generic SPARQL store supportAll accessed by a common interface i.e. easy to switch in and out different storage as needed6/6/2011http://www.dotnetrdf.org7
ToolingWe also provide a Toolkit of useful command line and GUI toolsIncludes utilities like conversion and queryIncludes rdfEditor our Notepad replacement for RDF and SPARQL editingDesigned to make it possible to get you started experimenting with RDF and SPARQL on Windows without having to code yourself6/6/2011http://www.dotnetrdf.org8
Coming SoonImprovements and optimisations of our SPARQL EngineFull RDFa 1.1 parsing support including RDFa in SVG, XML etc.Full SPIN (SPARQL Inferencing Notation) implementationFuture PlansRefresh of our SQL based storage optionsOWL SupportSPARQL ExtensionsFull Text searchGeoSPARQL6/6/2011http://www.dotnetrdf.org9
Questions?Via Email: rvesse@dotnetrdf.orgVia Twitter: @RobVesseVia Website: http://www.dotnetrdf.orgVia Mailing List: dotnetrdf-support@lists.sf.net6/6/2011http://www.dotnetrdf.org10

dotNetRDF - A Semantic Web/RDF Library for .Net Developers

  • 1.
    A Semantic Web/RDFLibrary for .Net DevelopersRob VesseECS, University of Southamptonrvesse@dotnetrdf.org
  • 2.
    MotivationWanted to beable to code PhD Research projects using a .Net technology stackExisting libraries didn’t fit project needsLimited choice of 3rd Party Triple StoresLack of latest SPARQL Support i.e. 1.1 featuresSome libraries didn’t really feel like .Neti.e. Java style in design, naming conventions etc.6/6/2011http://www.dotnetrdf.org2
  • 3.
    About the LibraryCompletelyfree and open sourceTriple licensed – pick from GPL, LGPL or MIT depending on your needsWritten in C# for .Net 3.5 and higherBuilds for standard .Net, Mono, Silverlightand Windows Phone 7 (latter two are cut down and community contributed)6/6/2011http://www.dotnetrdf.org3
  • 4.
    Design OverviewCore RDFModelNodes, Triples, Graphs and Triple Stores Extensible at almost every levelPlug in your own implementations to the API for everything from Graphs to external Triple StoresUses simple and intuitive .Net featuresLINQ to Objects, Properties, Indexers, Extension Methods etc.6/6/2011http://www.dotnetrdf.org4
  • 5.
    Simple Intuitive Code//Loada Graph from a FileGraphg = newGraph();g.LoadFromFile("example.rdf");//Print all Triples with a Blank Node SubjectNTriplesFormatterformatter = newNTriplesFormatter();foreach(Triple t in g.Triples){if(t.Subject.NodeType == NodeType.Blank) {Console.WriteLine(t.ToString(formatter)); }}6/6/2011http://www.dotnetrdf.org5
  • 6.
    Leviathan - ASPARQL 1.1 EngineCapable of performing SPARQL queries in-memory on small amounts of data (<=1m Triples)Supports both Query and Update including powerful features like:Property PathsFederated Query ExtensionsUpdate Transactions6/6/2011http://www.dotnetrdf.org6
  • 7.
    3rd Party TripleStore SupportSupports a range of well known 3rd Party Triple StoresAllegroGraph, 4store, Fuseki, Joseki, Sesame, Talis, Stardog and VirtuosoPlus generic SPARQL store supportAll accessed by a common interface i.e. easy to switch in and out different storage as needed6/6/2011http://www.dotnetrdf.org7
  • 8.
    ToolingWe also providea Toolkit of useful command line and GUI toolsIncludes utilities like conversion and queryIncludes rdfEditor our Notepad replacement for RDF and SPARQL editingDesigned to make it possible to get you started experimenting with RDF and SPARQL on Windows without having to code yourself6/6/2011http://www.dotnetrdf.org8
  • 9.
    Coming SoonImprovements andoptimisations of our SPARQL EngineFull RDFa 1.1 parsing support including RDFa in SVG, XML etc.Full SPIN (SPARQL Inferencing Notation) implementationFuture PlansRefresh of our SQL based storage optionsOWL SupportSPARQL ExtensionsFull Text searchGeoSPARQL6/6/2011http://www.dotnetrdf.org9
  • 10.
    Questions?Via Email: rvesse@dotnetrdf.orgViaTwitter: @RobVesseVia Website: http://www.dotnetrdf.orgVia Mailing List: dotnetrdf-support@lists.sf.net6/6/2011http://www.dotnetrdf.org10

Editor's Notes

  • #2 Introduce myself and affiliationNote that I intend to go through the slides reasonably fast
  • #3 Lack of existing technology in the .Net space that did what I wantedIn particular 3rd party triple store and SPARQL 1.1 supportWanted library to feel .Net and use latest features
  • #4 Project Started January 2009FOSSNote library runs on .Net and Mono nativelySilverlight/Windows Phone 7 community contribs so not as heavily tested – also cut down
  • #5 Support standard RDF and common extensions to RDF e.g. N3 Graph Literals and VariablesSupports named graphs and quadsKey design aim was to make it feel very .Net and make good use of available features
  • #6 As you can see... (run through the example quickly)
  • #7 Introduce LeviathanMention scalability in-memoryCan be applied to out of memory datasets but currently slower than in-memory (will be modified to address this in future releases)Note support for UpdateNote support for Federated Query ExtensionsNote support for Transactions for Update
  • #8 One of our key aims was always to make it easy to move your data in and out of different Triple storesWe are working on adding more e.g. Dydra
  • #9 We don’t just provide a libraryOur toolkit provides a variety of tools which are useful for day to day non-coding work with RDF e.g. rdfEditorWe eat our own dogfood – any RDF we add to our codebase is almost certainly created and validated using rdfEditor
  • #10 This is a quick overview of a few of the things we’re currently working onMost new features are driven either by user request e.g. Optimiser API in latest release
  • #11 Questions if time