Hey all,
I'm pleased to announce Graphity -- a fully extensible generic Linked
Data platform for building end-user Web applications (apologies for
cross-posting).
Rationale
======
Graphity started as JAX-RS [JAX] and Jena-compatible framework, since
there was a lack of RDF and Linked Data tools in PHP. It was created
while developing
http://heltnormalt.dk (one of the biggest online
entertainment sites in Scandinavia and another successful Linked Data
business case), later open-sourced and presented at the W3C Linked
Enterprise Data Patterns workshop [LEDP].
Since then the development has moved to Java and focused on
application components for building Linked Data consumer webapps. The
LOD cloud is growing exponentially [LOD], which means publishing is
not an issue anymore as we're entering LD consumption phase.
Design
=====
Graphity was designed for compatibility with established standards and
APIs such as Jena, JAX-RS, SPIN [SPIN], and RDF/POST [RP]. It tries
to create as few new conventions as possible.
The code is generic and offers extensibility and flexibility without
the bloat often found in other tools. It is possible because Graphity
does not have any object model above the RDF level and can do a full
read/write data roundtrip in RDF. This eliminates data model
mismatches (as in object/relational/XML/RDF) and conversions that
result in development time and bugs (think ORM).
The current Web 2.0 API many-to-many integration approach can be
replaced by pivotal integration, using RDF as the central data model
and Graphity as the RDF gateway. As the data volumes grow, this has
linear costs instead exponential.
Usage
=====
The code is open-source under GPL license an can be found on GitHub
along with more documentation:
https://github.com/Graphity/graphity-browser
This release bundles the core packages with a JAX-RS webbap built on
it -- a Linked Data browser, which is also a basic implementation of
the Linked Data Platform [LDP]. Download .jar to include Graphity in
your project, or .war to run the standalone webapp.
Browser demo can be seen here (note: the
server is not production-grade):
http://semanticreports.com/?uri=http%3A%2F%2Fdbpedia.org%2Fresource%2FCopenhagen
-- DBPedia resource (can be slow)
http://semanticreports.com/?uri=https%3A%2F%2Fgdata.youtube.com%2Ffeeds%2Fapi%2Fvideos%3Fq%3Dlinked%2Bdata%26amp%3Borderby%3Dpublished%26amp%3Bstart-index%3D11%26amp%3Bmax-results%3D10%26amp%3Bv%3D2
-- Atom resource from YouTube
3rd party webapps can be built on Graphity Browser by simply extending
JAX-RS resources and overriding the necessary methods, as well as
including the XSLT stylesheets and overriding the templates -- or
using a custom web application and/or XSLT layout altogether.
In this way, Graphity can be used to build triplestore-backed data
mgmt systems and publishing portals, semantic CMS, Linked Data
analytics and visualizations, tools for integration of Web 2.0 APIs as
Linked Data etc.
Users of Apache Clerezza, IKS, Elda, Callimachus, Information
Workbench and similar tools might find Graphity interesting.
The core package is also available in PHP (and includes probably the
first basic implementation of JAX-RS in PHP) under Apache license:
https://github.com/Graphity/graphity-core
Call for collaboration
==============
Feedback is greatly appreciated. Bugs and feature/improvement
suggestions can be filed here:
https://github.com/Graphity/graphity-browser/issues
We can also be found on Twitter:
https://twitter.com/graphityhq
We welcome suggestions and open-source contributions, for the Java
packages as well as XSLT stylesheets, for example new GRDDL converters
or user experience improvements for specific datasources/and or
vocabularies.
References
========
[LEDP]
http://www.w3.org/2011/09/LinkedData/ledp2011_submission_1.pdf
[LOD]
http://richard.cyganiak.de/2007/10/lod/
[JAX]
http://jcp.org/en/jsr/detail?id=311
[SPIN]
http://topbraid.org/spin/api/
[RP]
http://www.lsrn.org/semweb/rdfpost.html
[LDP]
http://www.w3.org/2012/ldp/charter.html
Martynas Jusevicius
http://graphity.org
http://semantic-web.dk