SuRF
SuRF is a Python library for working with RDF data in an Object-Oriented manner. In SuRF, RDF nodes (subjects and objects) are represented as Python objects and RDF edges (predicates) as their attributes. SuRF is an Object RDF Mapper (ORM), similar in concept to Object Relational Mappers like SQLAlchemy.
You can read the latest documentation online at: http://surf-rdf.readthedocs.io/en/latest/ When building from source, you can build your own documentation by following these steps:
$ cd docs $ pip install -r requirements.txt $ make html
Install SuRF:
$ pip install --upgrade surf
Starting with version 1.1.9 the surf.rdflib and surf.sparql_protocol plugins are bundled with SuRF.
You might need one of the following plugins (also installable with pip) for stores not supported by rdflib or which do not expose a SPARQL endpoint:
The example below shows how to query a resource using the rdflib in-memory backend:
>>> from surf import * >>> store = Store(reader='rdflib', ... writer='rdflib', ... rdflib_store='IOMemory') >>> session = Session(store) >>> store.load_triples(source='http://www.w3.org/People/Berners-Lee/card.rdf') True >>> Person = session.get_class(ns.FOAF.Person) >>> all_persons = Person.all() >>> for person in all_persons: ... print person.foaf_name.first ... Timothy Berners-Lee
SuRF uses tox and py.test for testing:
$ # test over multiple python versions with tox $ tox $ # or run the tests in surf $ py.test surf