commit 69ab1d1c984307e8d3e5aa9647d04028ffc7233e
parent c645a4049f14708d5f71761b52c2649229bacac3
Author: lash <dev@holbrook.no>
Date: Wed, 24 Sep 2025 00:11:07 +0100
Segment base entity serialize, add url
Diffstat:
3 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/adesse/entity.py b/adesse/entity.py
@@ -1,5 +1,9 @@
import uuid
import datetime
+from urllib.parse import urlparse, urlunparse
+
+from rdflib import Literal
+from rdflib.namespace import FOAF, DCTERMS, XSD
from .uri import to_uuid_uri
@@ -13,7 +17,22 @@ class Entity:
raise ValueError("not uuid")
self.uu = uu
self.dt = datetime.datetime.now()
+ self.url = None
+
+
+ def set_url(self, v):
+ r = urlparse(v)
+ if not r.scheme or r.scheme == 'file':
+ raise ValueError('invalid url ' + v)
+ self.url = urlunparse(r)
def to_ref(self):
return to_uuid_uri(self.uu)
+
+
+ def apply(self, g):
+ uu = to_uuid_uri(self.uu)
+ g.add((uu, DCTERMS.created, Literal(self.dt.isoformat(), datatype=XSD.dateTime)))
+ if self.url:
+ g.add((uu, FOAF.homepage, Literal(self.url)))
diff --git a/adesse/person.py b/adesse/person.py
@@ -1,5 +1,5 @@
from rdflib import Literal
-from rdflib.namespace import FOAF, DCTERMS, XSD
+from rdflib.namespace import FOAF
from .entity import Entity
from .ns import PSS
@@ -29,4 +29,4 @@ class Person(Entity):
g.add((uu, FOAF.name, Literal(self.common_name)))
g.add((uu, PSS.Nationality, to_country_uri(self.nationality)))
g.add((uu, PSS.ResidenceCountry, to_country_uri(self.residence_country)))
- g.add((uu, DCTERMS.created, Literal(self.dt.isoformat(), datatype=XSD.DateTime)))
+ super().apply(g)
diff --git a/test/test_serialize.py b/test/test_serialize.py
@@ -7,6 +7,7 @@ from adesse.cert import Cert
class TestSerialize(unittest.TestCase):
+
def setUp(self):
pass
@@ -14,6 +15,7 @@ class TestSerialize(unittest.TestCase):
def test_serialize(self):
z = Serializer()
subj = Person("Melvin", "Ferd", "SV", common_name="Melvin B. Ferd")
+ subj.set_url('http://rotten.com')
obj = Entity()
agent = Entity()
c = Cert(subj, obj, agent)