Changeset 92

Show
Ignore:
Timestamp:
02/04/08 23:12:05 (4 years ago)
Author:
phil
Message:

fixed rdfObject->rdfSubject change in orm.py
added another unit test

Location:
rdfalchemy/trunk/rdfalchemy
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • rdfalchemy/trunk/rdfalchemy/orm.py

    r85 r92  
    88""" 
    99 
    10 from rdfalchemy import rdfObject, rdflibAbstract 
     10from rdfalchemy import rdfSubject 
     11from descriptors import rdflibAbstract 
    1112 
    1213import logging 
    1314log=logging.getLogger('rdfAlchemy') 
    1415 
    15 def allsub(cl): 
     16def allsub(cl, beenthere = set([])): 
    1617    "return all subclasses of the given class" 
    17     sub = set(cl.__subclasses__()) 
    18     for onesub in cl.__subclasses__(): 
    19         sub |= allsub(onesub) 
     18    sub = set(cl.__subclasses__()) | beenthere 
     19    newsubs = set(cl.__subclasses__()) - beenthere 
     20    for onesub in newsubs: 
     21        sub |= allsub(onesub, sub) 
    2022    return sub 
    2123     
     
    2325def mapper(*classes): 
    2426    """Map the classes given to allow descriptors with ranges to the proper Class of that type 
    25     default if no args is to map all subclasses(recursivly) of rdfObject 
     27    default if no args is to map all subclasses(recursivly) of rdfSubject 
    2628     
    2729    preforms the mapping 
     
    2931    returns a dict of {rdf_type: mapped_class} for further processing""" 
    3032    if not classes: 
    31         classes = allsub(rdfObject) 
     33        classes = allsub(rdfSubject) 
    3234    class_dict = dict([(str(cl.rdf_type), cl) for cl in classes]) 
    3335    for cl in classes:  # for each class 
  • rdfalchemy/trunk/rdfalchemy/rdfalchemy.py

    r91 r92  
    251251            #finally if the object in the triple was a bnode  
    252252            #cascade delete the thing it referenced 
    253             if isinstance(o,BNode): 
     253            # ?? FIXME Do we really want to cascade if it's an rdfSubject?? 
     254            if isinstance(o,BNode) or isinstance(o,rdfSubject) and o.node_type == 'bnode': 
    254255                rdfSubject(o)._remove(db=self.db,cascade='bnode') 
    255256         
  • rdfalchemy/trunk/rdfalchemy/samples/foaf.py

    r91 r92  
    1818    openid = rdflibSingle(FOAF.openid)     
    1919 
     20 
    2021class Person(Agent): 
    2122    rdf_type = FOAF.Person 
     
    2425    givenname = rdflibSingle(FOAF.givenname,'first') 
    2526    surname = rdflibSingle(FOAF.surname,'last') 
    26      
  • rdfalchemy/trunk/rdfalchemy/sesame2.py

    r71 r92  
    11from sparql import SPARQLGraph 
    22 
    3 from rdflib import Graph, Literal, BNode, Namespace, URIRef 
     3from rdflib import Literal, BNode, Namespace, URIRef 
    44from rdflib.syntax.parsers.ntriples import NTriplesParser 
    55