RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information as graphs.
RDFLib may be installed with setuptools (easy_install) or pip::
$ easy_install rdflib
$ pip install rdflib
RDFLib aims to be a pythonic RDF API, a Graph is a python collection of RDF Subject,Predicate,Object Triples:
import rdflib g=rdflib.Graph() g.load('http://dbpedia.org/resource/Semantic_Web') for s,p,o in g: print s,p,o
The components of the triples are URIs (resources) or Literals (values), URIs are grouped together by namespace, common namespaces are included in RDFLib:
semweb=rdflib.URIRef('http://dbpedia.org/resource/Semantic_Web') type=g.value(semweb, rdflib.RDFS.label)
rdflib.RDFS is the RDFS Namespace,
graph.value returns an
object of the triple-pattern given (or an arbitrary one if more
exist). New Namespaces can also be defined:
dbpedia=Namespace('http://dbpedia.org/ontology/') abstracts=list(a for x in g.objects(semweb, dbpedia['abstract']) if a.language=='en')
See also ./examples
The library contains parsers and serializers for RDF/XML, N3, NTriples, N-Quads, Turtle, TriX, RDFa and Microdata.
The library presents a Graph interface which can be backed by any one of a number of Store implementations.
This core RDFLib package includes store implementations for in memory storage and persistent storage on top of the Berkeley DB.
RDFLib has a plugin-architecture for store-implementation, as well as parsers/serializers, several other projects exist which extend RDFLib features:
- rdfextras - for SPARQL Support
- rdflib-json - Serializer and parser for json-ld
- rdflib-sparqlstore - a store implementation on top of a SPARQL endpoint accessed over HTTP
- rdflib-mysql - a store implementation of top of MySQL
More information is available on the project webpage:
The RDFExtras project offers several additional stores as well as a SPARQL engine for use with RDFLib:
The documentation can be built by doing::
$ python setup.py build_sphinx
And is also available from ReadTheDocs:
Support is available through the rdflib-dev group:
and on the IRC channel #rdflib on the freenode.net server