adesse

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs

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:
Madesse/entity.py | 19+++++++++++++++++++
Madesse/person.py | 4++--
Mtest/test_serialize.py | 2++
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)