My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads
Links

About

SuRF is a Python library for working with RDF data in an Object-Oriented way. In SuRF, RDF nodes (subjects and objects) are represented as Python objects and RDF arcs (predicates) as their attributes. SuRF is an Object RDF Mapper (ORM), similar in concept to Object Relational Mappers like SQLAlchemy. SuRF was inspired by ActiveRDF for Ruby.

Documentation

Check the latest documentation at: http://packages.python.org/SuRF/

An outdated presentation of SuRF at EUROPYTHON 2009 is available here, although the internals of SuRF have changed with the release of version 0.5.0 - most notably the plugin architecture, much of the public interface still remains the same; See slideshow here:

Setup and use

Use the pypi repository to get the latest version of SuRF.

$ easy_install -U surf

In order to install surf and it's available plugins just do the following

$ easy_install -U surf
$ easy_install -U surf.allegro_franz
$ easy_install -U surf.sesame2
$ easy_install -U surf.sparql_protocol
$ easy_install -U surf.rdflib

SuRF can also be embedded in your code, for an example on how to do it have a look here: http://packages.python.org/SuRF/install.html#loading-plugins-from-path-or-running-surf-in-embedded-mode

SuRF Plugins are available for the following keys:

  • allegro_franz
  • sesame2
  • sparql_protocol
  • rdflib


SuRF Contributed plugins are available for these keys:

Quick Start

from surf import *

store = Store(  reader='rdflib',
                writer='rdflib',
                rdflib_store = 'IOMemory')

session = Session(store)

print 'Load RDF data'
store.load_triples(source='http://www.w3.org/People/Berners-Lee/card.rdf')

Person = session.get_class(ns.FOAF['Person'])

all_persons = Person.all()

print 'Found %d persons that Tim Berners-Lee knows'%(len(all_persons))
for person in all_persons:
    print person.foaf_name.first
    
#create a person object
somebody = Person()
somebody_else = Person()

somebody.foaf_knows = somebody_else

Feedback/Usage

If you are using SuRF in your projects please let us know (post a comment here: ProjectsUsingSuRF ), and remember that you can always include the Powered By SuRF logo using the following html snippet of code:

<a href="http://code.google.com/p/surfrdf/"><img src="http://surfrdf.googlecode.com/files/surf-logo-poweredby.png" alt="Powered by SuRF" width="150px"/></a>

Thank you

Powered by Google Project Hosting