SlideShare uma empresa Scribd logo
1 de 7
.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] .
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.
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.
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.
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.
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.
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/

Mais conteúdo relacionado

Mais procurados

Writing Services with ZF2
Writing Services with ZF2Writing Services with ZF2
Writing Services with ZF2Mike Willbanks
 
A new model for Docker image distribution
A new model for Docker image distributionA new model for Docker image distribution
A new model for Docker image distributionDocker, Inc.
 
MyFaces CODI Conversations
MyFaces CODI ConversationsMyFaces CODI Conversations
MyFaces CODI Conversationsos890
 
Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016Bruno Cornec
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesJan S. Rellermeyer
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpikeos890
 
Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...Platonov Sergey
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdVaclav Tunka
 
Buildroot easy embedded system
Buildroot easy embedded systemBuildroot easy embedded system
Buildroot easy embedded systemNirma University
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxEmbarcadero Technologies
 
Docker 101 - High level introduction to docker
Docker 101 - High level introduction to dockerDocker 101 - High level introduction to docker
Docker 101 - High level introduction to dockerDr Ganesh Iyer
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_kanedafromparis
 
Docker Security
Docker SecurityDocker Security
Docker SecurityBladE0341
 
Sizing your alfresco platform
Sizing your alfresco platformSizing your alfresco platform
Sizing your alfresco platformLuis Cabaceira
 
AWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic BeanstalkAWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic BeanstalkAmazon Web Services
 
Make JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIMake JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIos890
 

Mais procurados (20)

Writing Services with ZF2
Writing Services with ZF2Writing Services with ZF2
Writing Services with ZF2
 
A new model for Docker image distribution
A new model for Docker image distributionA new model for Docker image distribution
A new model for Docker image distribution
 
MyFaces CODI Conversations
MyFaces CODI ConversationsMyFaces CODI Conversations
MyFaces CODI Conversations
 
Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016Training Ensimag OpenStack 2016
Training Ensimag OpenStack 2016
 
Concierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded DevicesConcierge - Bringing OSGi (back) to Embedded Devices
Concierge - Bringing OSGi (back) to Embedded Devices
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...Использование maven для сборки больших модульных c++ проектов на примере Odin...
Использование maven для сборки больших модульных c++ проектов на примере Odin...
 
Enterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpdEnterprise(d) Tomcat & httpd
Enterprise(d) Tomcat & httpd
 
3 Git
3 Git3 Git
3 Git
 
Buildroot easy embedded system
Buildroot easy embedded systemBuildroot easy embedded system
Buildroot easy embedded system
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for Linux
 
Docker 101 - High level introduction to docker
Docker 101 - High level introduction to dockerDocker 101 - High level introduction to docker
Docker 101 - High level introduction to docker
 
Liferay maven sdk
Liferay maven sdkLiferay maven sdk
Liferay maven sdk
 
Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_Dev opsec dockerimage_patch_n_lifecyclemanagement_
Dev opsec dockerimage_patch_n_lifecyclemanagement_
 
presentation on Docker
presentation on Dockerpresentation on Docker
presentation on Docker
 
Docker Security
Docker SecurityDocker Security
Docker Security
 
Sizing your alfresco platform
Sizing your alfresco platformSizing your alfresco platform
Sizing your alfresco platform
 
AWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic BeanstalkAWS Update | London - Elastic Beanstalk
AWS Update | London - Elastic Beanstalk
 
Make JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODIMake JSF more type-safe with CDI and MyFaces CODI
Make JSF more type-safe with CDI and MyFaces CODI
 

Destaque

Are users really ready for faceted search?
Are users really ready for faceted search?Are users really ready for faceted search?
Are users really ready for faceted search?epek
 
Extending facet search to the general web
Extending facet search to the general webExtending facet search to the general web
Extending facet search to the general web祺傑 林
 
Data mining slides
Data mining slidesData mining slides
Data mining slidessmj
 

Destaque (6)

Faceted Search
Faceted SearchFaceted Search
Faceted Search
 
Are users really ready for faceted search?
Are users really ready for faceted search?Are users really ready for faceted search?
Are users really ready for faceted search?
 
Extending facet search to the general web
Extending facet search to the general webExtending facet search to the general web
Extending facet search to the general web
 
Data mining slides
Data mining slidesData mining slides
Data mining slides
 
Data mining
Data miningData mining
Data mining
 
Data mining
Data miningData mining
Data mining
 

Semelhante a .NET RDF APIs

Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containersDocker, Inc.
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Arun Gupta
 
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)DataWorks Summit
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Espen Brækken
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And BeyondVMware Tanzu
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bagJamie Coleman
 
New Oracle Infrastructure2
New Oracle Infrastructure2New Oracle Infrastructure2
New Oracle Infrastructure2markleeuw
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxMurugesh33
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxMurugesh33
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynoteSuyash Joshi
 
dotNetRDF - A Semantic Web/RDF Library for .Net Developers
dotNetRDF - A Semantic Web/RDF Library for .Net DevelopersdotNetRDF - A Semantic Web/RDF Library for .Net Developers
dotNetRDF - A Semantic Web/RDF Library for .Net DevelopersRob Vesse
 
Lecture11_LaravelGetStarted_SPring2023.pdf
Lecture11_LaravelGetStarted_SPring2023.pdfLecture11_LaravelGetStarted_SPring2023.pdf
Lecture11_LaravelGetStarted_SPring2023.pdfShaimaaMohamedGalal
 
ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!
ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!
ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!panagenda
 
HTTP Plugin for MySQL!
HTTP Plugin for MySQL!HTTP Plugin for MySQL!
HTTP Plugin for MySQL!Ulf Wendel
 
A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfLuciano Resende
 
Eclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client RoundupEclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client RoundupMurat Yener
 
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
 Openstack - An introduction/Installation - Presented at Dr Dobb's conference... Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...Rahul Krishna Upadhyaya
 

Semelhante a .NET RDF APIs (20)

Java in a world of containers
Java in a world of containersJava in a world of containers
Java in a world of containers
 
Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018Java in a World of Containers - DockerCon 2018
Java in a World of Containers - DockerCon 2018
 
Node.js an Exectutive View
Node.js an Exectutive ViewNode.js an Exectutive View
Node.js an Exectutive View
 
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
Data processing at the speed of 100 Gbps@Apache Crail (Incubating)
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
The new java developers kit bag
The new java developers kit bagThe new java developers kit bag
The new java developers kit bag
 
Analysis
AnalysisAnalysis
Analysis
 
New Oracle Infrastructure2
New Oracle Infrastructure2New Oracle Infrastructure2
New Oracle Infrastructure2
 
JAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptxJAVA_Day1_BasicIntroduction.pptx
JAVA_Day1_BasicIntroduction.pptx
 
JAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptxJAVAPart1_BasicIntroduction.pptx
JAVAPart1_BasicIntroduction.pptx
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
Java dev mar_2021_keynote
Java dev mar_2021_keynoteJava dev mar_2021_keynote
Java dev mar_2021_keynote
 
dotNetRDF - A Semantic Web/RDF Library for .Net Developers
dotNetRDF - A Semantic Web/RDF Library for .Net DevelopersdotNetRDF - A Semantic Web/RDF Library for .Net Developers
dotNetRDF - A Semantic Web/RDF Library for .Net Developers
 
Lecture11_LaravelGetStarted_SPring2023.pdf
Lecture11_LaravelGetStarted_SPring2023.pdfLecture11_LaravelGetStarted_SPring2023.pdf
Lecture11_LaravelGetStarted_SPring2023.pdf
 
ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!
ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!
ICON UK '13 - Apache Software: The FREE Java toolbox you didn't know you had !!
 
HTTP Plugin for MySQL!
HTTP Plugin for MySQL!HTTP Plugin for MySQL!
HTTP Plugin for MySQL!
 
A Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdfA Jupyter kernel for Scala and Apache Spark.pdf
A Jupyter kernel for Scala and Apache Spark.pdf
 
Eclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client RoundupEclipsist2009 Rich Client Roundup
Eclipsist2009 Rich Client Roundup
 
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
 Openstack - An introduction/Installation - Presented at Dr Dobb's conference... Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
Openstack - An introduction/Installation - Presented at Dr Dobb's conference...
 

Mais de Andrei Iacob

Implementing Captivating Designs On The Microsoft Platform
Implementing Captivating Designs On The  Microsoft PlatformImplementing Captivating Designs On The  Microsoft Platform
Implementing Captivating Designs On The Microsoft PlatformAndrei Iacob
 
Silverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum ItSilverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum ItAndrei Iacob
 
Windows Presentation Foundation - Ronua
Windows Presentation Foundation - RonuaWindows Presentation Foundation - Ronua
Windows Presentation Foundation - RonuaAndrei Iacob
 
Vista4Devs Academic Tour Romani
Vista4Devs Academic Tour RomaniVista4Devs Academic Tour Romani
Vista4Devs Academic Tour RomaniAndrei Iacob
 

Mais de Andrei Iacob (11)

Bsc
BscBsc
Bsc
 
Imagine Cup
Imagine CupImagine Cup
Imagine Cup
 
Implementing Captivating Designs On The Microsoft Platform
Implementing Captivating Designs On The  Microsoft PlatformImplementing Captivating Designs On The  Microsoft Platform
Implementing Captivating Designs On The Microsoft Platform
 
Silverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum ItSilverlight and Dynamic Languge Runtime @ Forum It
Silverlight and Dynamic Languge Runtime @ Forum It
 
Wpf Workgroup 3
Wpf Workgroup 3Wpf Workgroup 3
Wpf Workgroup 3
 
Wpf Workgroup 4
Wpf Workgroup 4Wpf Workgroup 4
Wpf Workgroup 4
 
Wpf Workgroup 2
Wpf Workgroup 2Wpf Workgroup 2
Wpf Workgroup 2
 
Wpf Workgroup
Wpf WorkgroupWpf Workgroup
Wpf Workgroup
 
Windows Presentation Foundation - Ronua
Windows Presentation Foundation - RonuaWindows Presentation Foundation - Ronua
Windows Presentation Foundation - Ronua
 
Silverlight
SilverlightSilverlight
Silverlight
 
Vista4Devs Academic Tour Romani
Vista4Devs Academic Tour RomaniVista4Devs Academic Tour Romani
Vista4Devs Academic Tour Romani
 

.NET RDF APIs

  • 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/