Changeset 83

Show
Ignore:
Timestamp:
01/21/08 14:11:17 (4 years ago)
Author:
phil
Message:

setting of bnode as object is allowed now

Files:
1 modified

Legend:

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

    r82 r83  
    180180        setattr(obj, self.name, val) 
    181181        try: 
    182             log.info("Geting %s for %s"%(obj.db.qname(self.pred),obj.db.qname(obj.resUri))) 
     182            log.debug("Geting %s for %s"%(obj.db.qname(self.pred),obj.db.qname(obj.resUri))) 
    183183        except: 
    184             log.info("Geting %s for %s"%(self.pred,obj.resUri)) 
     184            log.debug("Geting %s for %s"%(self.pred,obj.resUri)) 
    185185        return val 
    186186 
     
    192192    """rdf:type of instances of this class""" 
    193193    def __init__(self, resUri): 
     194        """The constructor tries hard to do return you an rdfObject 
     195        the parameter resUri can be: 
     196         * an instance of an rdfObject 
     197         * an instance of a BNode or a URIRef 
     198         * an n3 uriref string like: <urn:isbn:1234567890> 
     199         * an n3 bnode string like _:xyz1234 """ 
    194200        if isinstance(resUri, rdfObject): 
    195201            self.resUri=resUri.resUri  
     
    227233            raise ValueError("get_by did not want %i args"%(len(kwargs))) 
    228234        key,value = kwargs.items()[0] 
     235        if isinstance(value, URIRef) or isinstance(value,BNode) or isinstance(value,Literal): 
     236            o = value 
     237        else: 
     238            o = Literal(value) 
    229239        pred=cls.__dict__[key].pred 
    230         uri=cls.db.value(None,pred,Literal(value)) 
     240        uri=cls.db.value(None,pred,o) 
    231241        if uri: 
    232242            return cls(uri)