Feed on
Posts
Comments

rdfwrapper

I’m in danger of underusing this blog - I wrote the stuff for this post a while back, but didn’t get round to posting it:

Have put together a package of wrapper code I’ve been developing as I write python RDF applications. It wraps the rdflib and sparta behaviour to present a nice (readable) api. well niceish.

e.g.

s = Store()
s.set_prefix_mapping(”ex”,”http://example.com/”)

phil = s[”ex:Phil”]
phil.foaf_name = “Phil Dawes”

print s.serialize()

<?xml version=”1.0″ encoding=”UTF-8″?>
<rdf:RDF
xmlns:rdfs=”http://www.w3.org/2000/01/rdf-schema#”
xmlns:foaf=”http://xmlns.com/foaf/0.1/”
xmlns:ex=”http://example.com/”
xmlns:rdf=”http://www.w3.org/1999/02/22-rdf-syntax-ns#”
>
<rdf:Description rdf:about=”http://example.com/Phil”>
<foaf:name>Phil Dawes</foaf:name>
</rdf:Description>
</rdf:RDF>

Note that assigning to a property overwrites any existing property statements against the subject. If you don’t want to overwrite, you can use the add() method.

e.g.

phil.add(”foaf:nick”,”Phil”)
phil.add(”foaf:nick”,”George Dawes - the man with the scores”)

gives phil 2 foaf nicknames

You can get an iterator to all the values of foaf:nick by using the get() method:

for nickname in phil.get(”foaf:nick”):
. print nickname

Resource objects work interchangably with the rdflib search functions

for person in s.subjects(TYPE,s[’foaf:Person’]):
. print person.foaf_name

As an added bonus, I’ve also added basic n3 parsing support by bolting Sean Palmer’s yapps n3 parser to rdflib.

s.load(”http://myrdf.com/foo.n3″,”n3″)
or
s.parse(myN3,”n3″)

Hope this helps someone!

close Reblog this comment
blog comments powered by Disqus