adesse

Signed testimonials for certifications.
Info | Log | Files | Refs

entity.py (1055B)


      1 import uuid
      2 import datetime
      3 from urllib.parse import urlparse, urlunparse
      4 
      5 from rdflib import Literal
      6 from rdflib.namespace import FOAF, DCTERMS, XSD
      7 
      8 from .uri import to_uuid_uri
      9 
     10 
     11 class Entity:
     12 
     13     def __init__(self, common_name, uu=None):
     14         if not uu:
     15             uu = uuid.uuid4()
     16         elif not isinstance(uu, uuid.UUID):
     17             raise ValueError("not uuid")
     18         self.uu = uu
     19         self.dt = datetime.datetime.now()
     20         self.dt = self.dt.astimezone(datetime.timezone.utc)
     21         self.common_name = common_name
     22         self.url = None
     23 
     24 
     25     def set_url(self, v):
     26         r = urlparse(v)
     27         if not r.scheme or r.scheme == 'file':
     28             raise ValueError('invalid url ' + v)
     29         self.url = urlunparse(r)
     30 
     31 
     32     def to_ref(self):
     33         return to_uuid_uri(self.uu)
     34 
     35     
     36     def apply(self, g):
     37         uu = to_uuid_uri(self.uu)
     38         g.add((uu, DCTERMS.created, Literal(self.dt.isoformat(timespec='seconds'), datatype=XSD.dateTime)))
     39         if self.url:
     40             g.add((uu, FOAF.homepage, Literal(self.url)))