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)))