1. .NET Framework RDF APIs
Andrei IACOB
Universitatea ”Alexandru Ioan Cuza”, Iasi
Abstract. This paper aims at comparing the set of options that a .NET
Framework developer has when he chooses to work with semantic web,
particularly with RDF. There will be 4 APIs reviewed, both FOSS and
proprietary, that will then be analysed and graded by the following cri-
teria: means of tuple storage, SPARQL support, performance, IDE inte-
gration, project maturity, level of documentation and finally licensing.
1 SemWeb
Project URI: http://razor.occams.info/code/semweb/
Author: Joshua Tauberer
First released: June 10 2005
Latest release: May 11 2009
Latest stable version: 1.064
Project status: dead
SemWeb was a library developed by Joshua Tauberer (http://razor.occams.info/)
between 2005 and 2009. It is used by Gnome F-Spot and was preferred by the
author in 2008 while developing his BSc degree project. Other projects using
SemWeb are ROWLEX (discussed further in the paper), Gnome Beagle and
Sentient Knowledge Explorer.
1.1 Storage
The library supports memory files, disk files but can also be backed by a either
a MySQL Server, Microsoft SQL Server or PostgreSQL engine. The implemen-
tation for each of these stores can be studied further from the source code [3] or
the documentation [4]. The storage class can be extended so that the client can
implement its own storage method.
1.2 SPARQL support
The SPARQL library included in SemWeb is a fork of the Java Sparql Engine
[2] which has been converted to C# using http://www.ikvm.net/. Therefore,
SemWeb has full SPARQL support, including translation of SPARQL into SQL
when possible. The author made available two modules in addition, a remote
SPARQL data source client and an ASP.NET SPARQL Protocol Server handler.
Further references can be found here [5] .
2. 1.3 Performance
At version 0.85, the project owner used a single core 1.8 Ghz AMD with Fedora
Core 6 and Mono 1.2.3 to run the LUBM benchmarks. The tests were 6.9 million
statements over 1000 files totaling 540 MB.
The results are as following [1]:
Storage Time Storage size
reading 5 min (23k stmts/sec) n/a
N3 file on disk 9 min (12k stmts/sec) n/a
mysql 30 min (3.8k stmts/sec) 769MB (117 stmts/sec)
sqlite 72 min (1.6k stmts/sec) 1.1GB (162 bytes/stmt)
postgresql 94 min (1.2k stmts/sec) 1.6MB (238 bytes/stmt)
Later, another benchmark was ran, using the Berlin SPARQL Benchmark,
on a Intel Core 2 Duo at 3.00 Ghz, 2GB RAM and 32 bit Ubuntu 8.04.
The results are detailed by the library author [6].
1.4 IDE Integration
SemWeb has no IDE integration. It is distributed as a binary dll or as a Visual
Studio project along with a set of binary command line tools for quick querying
of data stores or document conversion.
1.5 Documentation
The source code (http://razor.occams.info/code/repo/?/semweb/) is poorly com-
mented, but very clear and simple. The author of the library compiled an API
reference that can be found here [7], a ”getting started” guide [8] and a series of
sample C# programs [9] .
1.6 Licesing
SemWeb is licensed under GNU GPL v2. The SPARQL engine is licensed under
GNU LGPL, the Euler proof mechanism is under W3C Software License.
3. 2 ROWLEX
Project URI: http://rowlex.nc3a.nato.int/
Author: NATO C3 Agency
First released: could not be determined, but the first version targeted .NET
Framework 1.1
Latest release: July 15 2009
Latest stable version: 2.0.1
Project status: Under development
ROWLEX stands for Relaxed OWL EXperience and it has been developed
by NATO’s C3 Agency as a MVC system that abstracts RDF tripes, making it
easier to work with OWL using C#.
2.1 Storage
ROWLEX doesn’t provide a data store, as it is targeted at reading and writing
RDF documents and ontologies.
2.2 SPARQL support
No SPARQL support
2.3 Performance
N/A
2.4 IDE Integration
No IDE integration, as the library is distributed as source code and binary, along
with a set of GUI utilities for extracting ontologies.
2.5 Documentation
Despite the fact that the project is quite old, the creators compiled a set of ”How
to” guides [10] but no API reference. The project is officially using Stackoverflow
to offer support, using the ROWLEX tag [11].
2.6 Licesing
The code is licensed under GNU LGPL.
4. 3 Intellidimension Semantics.SDK
Project URI: http://www.intellidimension.com/products/semantics-sdk/
Author: Intellidimension
First released: Could not be determined
Latest release: October 28 2009
Latest stable version: 1.2.0.43
Project status: Under development
Intellidimension is a company which is developing an integrated system tar-
geting semantic applications. The company claims it has worked closely with
Microsoft [12] to create a system for manipulating data formats using industry
standard technologies.
3.1 Storage
Intellidimension provides an efficient in-memory graph storage for the SDK and
a Micorosft SQL Server backend persistance for the Semantic Server. The Server
also supports file based persistance for large dynamic RDF models.
3.2 SPARQL support
Full SPARQL support is provided, along with integration with T-SQL. Also,
T-SQL can be used to join both relational and semantic data. The feature of
distributed RDF graphs (graphs that are partitioned across multiple servers)
implies distributed SPARQL, using a in-memory cache [13]
3.3 Performance
The vendor never made public any information about benchmark tests or overall
performance, except for the words used to describe the products.
3.4 IDE Integration
Intellidimension developed a set of tools for Visual Studio and a set of extensions
for SQL Server to integrate seemlessly with the usual .NET developer’s workflow.
The Visual Studio Designer uses Silverlight for the presentation, and also the
reports and drawings use the same RIA technology.
3.5 Documentation
The project is heavily documented [14] and the company maintains a small blog
with which it hopes to gain more popularity [15].
3.6 Licesing
Proprietary, with a 60 day trial evaluation period.
5. 4 LinqToRdf
Project URI: http://code.google.com/p/linqtordf/
Author: Andrew Matthews
First released: June 2007
Latest release: August 2008 - version 0.8
Latest stable version: none
Project status: dead
LinqToRdf is a new project that uses the LINQ query provider to integrate
the semantic web into .NET applications, along with a set of extensions to the
Visual Studio environment.
4.1 Storage
It uses in-memory stores, but mentions and recommends the SemWeb library
for this issue.
4.2 SPARQL support
Full SPARQL support for generating SPARQL from code.
4.3 Performance
N/A
4.4 IDE Integration
Very easy integration with Visual Studio, as a plugin that installs a designer
for RDF with code generation [16]. The library is distributed as a msi, not as a
simple dll.
4.5 Documentation
Poorly documented, and using the Google Code wiki as a support [17].
4.6 Licesing
The project is licensed under the BSD License.
6. 5 Other smaller project worth looking at in the future
5.1 dotNetRDF
Project URI: http://www.dotnetrdf.org/
Latest release: September 25 2009 - Version 0.0.1 Alpha
The library is the result of Rob Vesse’s PhD work. It’s an immature library,
but it has been contributed to very often by the author. It has full SPARQL
support, and also integrates with the Talis platform and Virtuoso.
5.2 Greengrass
Project URI: http://freshmeat.net/projects/greengrass/
A small but quick API for the CLR (with implementations in C#, Boo,
IronPython) that supports .NET class serialization into RDF and OWL.
7. 6 Conclusion
The following table summarises all the features described in the paper for all the
APIs.
SemWeb RowLex Intellidimension LinqToRdf
Author Joshua Tauberer NATO C3 Agency Intellidimension Andrew Matthews
Latest ver. 1.064 (May, 2009) 2.01 (July, 2009) 1.2.0.43 (October, 0.8 (August 2008)
2009)
Storage memory, file, N/A Memory, dis- memory
MySql, SQL server, tributed, file, SQL
Postgres Server
SPARQL full N/A full generating only
IDE support N/A N/A full code designer
Documentation full api and usage very little full api and usage very little
guide guide
License GPL LGPL Proprietary BSD
References
1. Joshua Tauberer, http://razor.occams.info/code/semweb/
2. http://sparql.sourceforge.net/
3. http://razor.occams.info/code/repo/?/semweb/src/
4. http://razor.occams.info/code/semweb/semweb-
current/apidocs/SemWeb/Store.html
5. http://razor.occams.info/code/semweb/
semweb-current/apidocs/SemWeb.Query/SparqlProtocolServerHandler.html
6. http://razor.occams.info/code/semweb/semweb-current/doc/bsbm.html
7. http://razor.occams.info/code/semweb/semweb-current/apidocs/index.html
8. http://razor.occams.info/code/semweb/semweb-current/doc/index.html
9. http://razor.occams.info/code/repo/?/semweb/examples
10. http://rowlex.nc3a.nato.int/HowToUse.aspx
11. http://stackoverflow.com/search?q=rowlex
12. http://www.intellidimension.com/products/semantics-sdk/
13. http://www.intellidimension.com/developers/library/semantic-computing.aspx
14. http://www.intellidimension.com/developers/
15. http://www.semanticsdotnet.blogspot.com/
16. http://code.google.com/p/linqtordf/
17. http://code.google.com/p/linqtordf/w/list
This article was processed using the L TEX macro package with LLNCS style and it is
A
released under the Creative Commons Attribution-Share Alike 3.0 license
http://creativecommons.org/licenses/by-sa/3.0/