Joshua, I have been testing your hard work and it looks so good!
Will stay tuned and thanks so much!
--
Jos De Roo, AGFA http://www.agfa.com/w3c/jdroo/
Joshua Tauberer <jt@occams.info>
Sent by: semantic-web-request@w3.org
2007-06-10 17:32 AST
To: semantic-web at W3C <semantic-web@w3c.org>
cc:
bcc: Jos De Roo/AMDUS/AGFA
Subject: SemWeb RDF C# Library version 1.0
I didn't plan it this way, but it was exactly two years ago to the day
that I emailed the list announcing a relatively new project, a RDF
library in C#. This post announces version 1.0 of the project.
SemWeb: RDF Library for .NET
============================
http://razor.occams.info/code/semweb/
Version 1.0
Mail list: http://groups.yahoo.com/group/semweb-dotnet/
Overview
--------
SemWeb is my Semantic Web/RDF library written in C# for Microsoft's .NET
1.1/2.0 or Mono. The library can be used for reading and writing RDF
(XML, N3), keeping RDF in persistent storage (memory, MySQL, etc.), and
querying persistent storage via simple graph matching and SPARQL, and
making SPARQL queries to remote endpoints. Limited RDFS and
general-purpose inferencing is also possible. SemWeb's API is
straight-forward and flexible.
SemWeb is released under the terms of the Creative Commons Attribution
License (why? I dunno). SPARQL support is based on Ryan Levering's
SPARQL implementation in Java, converted to .NET with IKVM. The Euler
class for general-purpose inferencing is adapted from Jos De Roo's
JavaScript Euler inferencing engine.
Benchmarks
----------
I've used the library to create a triple store of over 50 million
triples, and I'd have gone higher if I had the hard drive space. Loading
the LUBM(50) benchmark of 6.9M triples into a MySQL backend, on modest
desktop hardware, took 30 minutes (3.8k stmts/sec), and 769 MB (117
bytes/stmt). Many of the LUBM sample queries were possible and finished
in about 2 seconds (not great).
Features
--------
* Straightforward and consistent API; really easy to deploy; no
platform-specific dependencies.
* RDF/XML: Reading and writing RDF/XML.
* Notation 3: Reading/writing NTriples, Turtle, and most of Notation 3.
* SQL DB-backed persistent storage for MySQL, Sqlite, and PostgreSQL.
* There is of course also a memory-backed store.
* Persistent storage supports an extended Select operation to query many
things at once (much faster than making individual calls to the
underlying database).
* Reasoning: RDFS reasoning (though not complete) and rule-based
reasoning based on the backward-chaining Euler engine, over any data.
* 4-Tuples: Statements are quads, not triples. The fourth meta field can
be used for application-specific purposes, like storing provenance,
grouping statements, or storing N3 formulas.
* Querying: Simple graph entailment tests and SPARQL queries over any
data source, a remote SPARQL store (read-only persistent storage backed
by a remote SPARQL-over-HTTP service and methods for making arbitrary
SPARQL queries), and an ASP.NET SPARQL Protocol handler.
* Extensibility: Implementing new persistent storage or sources of
statements is as simple as implementing an interface.
* Experimental/undocumented algorithms for finding MSGs and making
graphs lean.
That's it
---------
(Thanks to everyone who has sent in bug reports over the last two years!)
--
- Josh Tauberer
http://razor.occams.info
"Yields falsehood when preceded by its quotation! Yields
falsehood when preceded by its quotation!" Achilles to
Tortoise (in "Gödel, Escher, Bach" by Douglas Hofstadter)