root / rdfalchemy / trunk / rdfalchemy / samples / doap.py

Revision 110, 1.9 kB (checked in by phil, 10 months ago)

DOAP samples:

fixed use of mapper()
changed file_release to rdfMultiple

Line 
1from rdfalchemy import rdfSubject, rdfSingle, rdfMultiple
2from rdfalchemy.orm import mapper
3from rdflib import Namespace
4
5from rdfalchemy.samples.foaf import Person
6
7DOAP=Namespace("http://usefulinc.com/ns/doap#")
8FOAF=Namespace("http://xmlns.com/foaf/0.1/" )
9
10class Project(rdfSubject):
11    rdf_type = DOAP.Project
12    name       = rdfSingle(DOAP.name)
13    created    = rdfSingle(DOAP.created)
14    homepage   = rdfSingle(DOAP.homepage)
15    shortdesc  = rdfMultiple(DOAP.shortdesc)
16    releases   = rdfMultiple(DOAP.release, range_type=DOAP.Version)
17    language   = rdfSingle(DOAP['programming-language']) # because of the hyphen, we can't use DOAP.programming-language
18    maintainer = rdfSingle(DOAP.maintainer,range_type=FOAF.Person)
19
20
21class Release(rdfSubject):
22    rdf_type = DOAP.Version
23    name = rdfSingle(DOAP.revision)
24    created = rdfSingle(DOAP.created)
25    shortdesc = rdfMultiple(DOAP.shortdesc)
26    file_releases = rdfMultiple(DOAP['file-release'])
27
28# mapper()
29# The above line works becuase * is implied
30# The below line is just more explicit
31mapper(Project,Release, Person)
32
33def show_project(p):
34    print "\n============================"
35    print "Name is %s" % p.name
36    print "  created on %s" % p.created
37    # bacause of `mapper()`, release below will be an instance of Release
38    # so we can use dot notation on it
39    for release in p.releases:
40        print "  %s released on %s" % (release.name,release.created)
41        for f in release.file_releases:
42            print "    with file %s" % f.resUri # or f.n3()
43   
44
45if __name__ == '__main__':
46    loads=["http://doapspace.org/doap/sf/accs.rdf","http://doapspace.org/doap/sf/nut"]
47    for url in loads:
48        rdfSubject.db.load(url)
49       
50    for p in Project.ClassInstances():
51        show_project(p)
52       
53    # A Place to gather more doap records
54    pypirss="http://pypi.python.org/pypi?%3Aaction=rss"
Note: See TracBrowser for help on using the browser.