diff options
author | Matthias Baumgartner <dev@igsor.net> | 2023-03-04 14:16:00 +0100 |
---|---|---|
committer | Matthias Baumgartner <dev@igsor.net> | 2023-03-04 14:16:00 +0100 |
commit | 141cfeade2750e0255ca010079421efce4abeca2 (patch) | |
tree | 8deb4ce8270d1b40280cda6ea3080788f2848def /tagit | |
parent | 7eb2a8074752887afc8845900af2c3c0fb67388e (diff) | |
download | tagit-141cfeade2750e0255ca010079421efce4abeca2.tar.gz tagit-141cfeade2750e0255ca010079421efce4abeca2.tar.bz2 tagit-141cfeade2750e0255ca010079421efce4abeca2.zip |
namespace updates
Diffstat (limited to 'tagit')
-rw-r--r-- | tagit/actions/filter.py | 4 | ||||
-rw-r--r-- | tagit/actions/grouping.py | 7 | ||||
-rw-r--r-- | tagit/actions/search.py | 2 | ||||
-rw-r--r-- | tagit/actions/tagging.py | 12 | ||||
-rw-r--r-- | tagit/apps/port-schema.nt | 81 | ||||
-rw-r--r-- | tagit/apps/port_data.py | 40 | ||||
-rw-r--r-- | tagit/parsing/filter/from_string.py | 6 | ||||
-rw-r--r-- | tagit/parsing/filter/to_string.py | 2 | ||||
-rw-r--r-- | tagit/tiles/info.py | 4 | ||||
-rw-r--r-- | tagit/utils/namespaces.py | 22 | ||||
-rw-r--r-- | tagit/widgets/browser.py | 6 |
11 files changed, 99 insertions, 87 deletions
diff --git a/tagit/actions/filter.py b/tagit/actions/filter.py index c5cc912..52f5817 100644 --- a/tagit/actions/filter.py +++ b/tagit/actions/filter.py @@ -90,7 +90,7 @@ class AddToken(Action): def apply(self, token=None): if token is None: - sugg = self.root.session.storage.all(ns.bsfs.Tag).label(node=False) + sugg = self.root.session.storage.all(ns.bsn.Tag).label(node=False) dlg = dialogues.TokenEdit(suggestions=sugg) dlg.bind(on_ok=lambda wx: self.add_from_string(wx.text)) dlg.open() @@ -125,7 +125,7 @@ class EditToken(Action): text = kp.StringProperty('Edit token') def apply(self, token): - sugg = self.root.session.storage.all(ns.bsfs.Tag).label(node=False) + sugg = self.root.session.storage.all(ns.bsn.Tag).label(node=False) text = self.root.session.filter_to_string(token) dlg = dialogues.TokenEdit(text=text, suggestions=sugg) dlg.bind(on_ok=lambda obj: self.on_ok(token, obj)) diff --git a/tagit/actions/grouping.py b/tagit/actions/grouping.py index 05c651e..301af20 100644 --- a/tagit/actions/grouping.py +++ b/tagit/actions/grouping.py @@ -23,7 +23,7 @@ from tagit.widgets import Binding from .action import Action # constants -GROUP_PREFIX = Namespace('http://example.com/me/group') +GROUP_PREFIX = Namespace('http://example.com/me/group')() # exports __all__ = [] @@ -57,7 +57,8 @@ class CreateGroup(Action): with self.root.browser as browser, \ self.root.session as session: # create group - grp = session.storage.node(ns.bsfs.Group, GROUP_PREFIX[uuid.UUID()()]) + grp = session.storage.node(ns.bsn.Group, + getattr(GROUP_PREFIX, uuid.UUID()())) if label is not None: grp.set(ns.bsg.label, label) @@ -99,7 +100,7 @@ class DissolveGroup(Action): cursor = browser.cursor if cursor is not None and cursor in browser.folds: grp = browser.folds[cursor].group - ents = session.storage.get(ns.bsfs.Entity, + ents = session.storage.get(ns.bsn.Entity, ast.filter.Any(ns.bse.group, ast.filter.Is(grp))) #ents.remove(ns.bse.group, grp) # FIXME: mb/port #grp.delete() # FIXME: mb/port diff --git a/tagit/actions/search.py b/tagit/actions/search.py index 630413f..dd6c50c 100644 --- a/tagit/actions/search.py +++ b/tagit/actions/search.py @@ -128,7 +128,7 @@ class Search(Action, StorageAwareMixin, ConfigAwareMixin): items = Cache.get(self._CACHE_CATEGORY, (query, sort), None) if items is None: # FIXME: mb/port: consider sort - items = list(session.storage.sorted(ns.bsfs.File, query)) + items = list(session.storage.sorted(ns.bsn.Entity, query)) Cache.append(self._CACHE_CATEGORY, (query, sort), items) # apply search order because it's cheaper to do it here rather diff --git a/tagit/actions/tagging.py b/tagit/actions/tagging.py index 611db8e..90e5931 100644 --- a/tagit/actions/tagging.py +++ b/tagit/actions/tagging.py @@ -27,7 +27,7 @@ from .action import Action # constants TAGS_SEPERATOR = ',' -TAG_PREFIX = Namespace('http://example.com/me/tag') +TAG_PREFIX = Namespace('http://example.com/me/tag')() # exports __all__ = [] @@ -48,7 +48,7 @@ class AddTag(Action): def apply(self): if len(self.root.browser.selection) > 0: - tags = self.root.session.storage.all(ns.bsfs.Tag).label(node=True) + tags = self.root.session.storage.all(ns.bsn.Tag).label(node=True) dlg = dialogues.SimpleInput( suggestions=set(tags.values()), suggestion_sep=TAGS_SEPERATOR) @@ -70,7 +70,8 @@ class AddTag(Action): # FIXME: replace with proper tag factory for lbl in labels: if lbl not in lut: - tag = self.root.session.storage.node(ns.bsfs.Tag, TAG_PREFIX[urllib.parse.quote(lbl)]) + tag = self.root.session.storage.node(ns.bsn.Tag, + getattr(TAG_PREFIX, urllib.parse.quote(lbl))) tag.set(ns.bst.label, lbl) tags.add(tag) with self.root.browser as browser, \ @@ -96,7 +97,7 @@ class EditTag(Action): with self.root.browser as browser: if len(browser.selection) > 0: # get all known tags - all_tags = self.root.session.storage.all(ns.bsfs.Tag).label(node=True) + all_tags = self.root.session.storage.all(ns.bsn.Tag).label(node=True) # get selection tags ent_tags = browser.unfold(browser.selection).tag.label(node=True) if len(ent_tags) == 0: @@ -137,7 +138,8 @@ class EditTag(Action): # FIXME: replace with proper tag factory for lbl in added_labels: if lbl not in lut: - tag = self.root.session.storage.node(ns.bsfs.Tag, TAG_PREFIX[urllib.parse.quote(lbl)]) + tag = self.root.session.storage.node(ns.bsn.Tag, + getattr(TAG_PREFIX, urllib.parse.quote(lbl))) tag.set(ns.bst.label, lbl) added.add(tag) added = reduce(operator.add, added) diff --git a/tagit/apps/port-schema.nt b/tagit/apps/port-schema.nt index 7569052..2e70cad 100644 --- a/tagit/apps/port-schema.nt +++ b/tagit/apps/port-schema.nt @@ -5,57 +5,59 @@ prefix xsd: <http://www.w3.org/2001/XMLSchema#> prefix schema: <http://schema.org/> # common bsfs prefixes -prefix bsfs: <http://bsfs.ai/schema/> -prefix bse: <http://bsfs.ai/schema/Entity#> -prefix bst: <http://bsfs.ai/schema/Tag#> -prefix bsg: <http://bsfs.ai/schema/Group#> -prefix bsp: <http://bsfs.ai/schema/Preview#> +prefix bsfs: <https://schema.bsfs.io/core/> +prefix bsl: <https://schema.bsfs.io/core/Literal/> +prefix bsn: <https://schema.bsfs.io/ie/Node/> +prefix bse: <https://schema.bsfs.io/ie/Node/Entity#> +prefix bst: <https://schema.bsfs.io/ie/Node/Tag#> +prefix bsg: <https://schema.bsfs.io/ie/Node/Group#> +prefix bsp: <https://schema.bsfs.io/ie/Node/Preview#> # essential nodes -bsfs:Entity rdfs:subClassOf bsfs:Node . -bsfs:Preview rdfs:subClassOf bsfs:Node . -bsfs:File rdfs:subClassOf bsfs:Entity . -bsfs:Tag rdfs:subClassOf bsfs:Node . -bsfs:Group rdfs:subClassOf bsfs:Node . +bsn:Entity rdfs:subClassOf bsfs:Node . +bsn:Preview rdfs:subClassOf bsfs:Node . +bsn:Tag rdfs:subClassOf bsfs:Node . +bsn:Group rdfs:subClassOf bsfs:Node . # common definitions -bsfs:BinaryBlob rdfs:subClassOf bsfs:Literal . -bsfs:URI rdfs:subClassOf bsfs:Literal . -bsfs:Number rdfs:subClassOf bsfs:Literal . -bsfs:Time rdfs:subClassOf bsfs:Literal . -bsfs:JPEG rdfs:subClassOf bsfs:BinaryBlob . +bsl:BinaryBlob rdfs:subClassOf bsfs:Literal . +bsl:URI rdfs:subClassOf bsfs:Literal . +bsl:Number rdfs:subClassOf bsfs:Literal . +bsl:Time rdfs:subClassOf bsfs:Literal . +<https://schema.bsfs.io/ie/Literal/BinaryBlob/JPEG> rdfs:subClassOf bsl:BinaryBlob . xsd:string rdfs:subClassOf bsfs:Literal . -xsd:integer rdfs:subClassOf bsfs:Number . +xsd:integer rdfs:subClassOf bsl:Number . +xsd:float rdfs:subClassOf bsl:Number . bse:filename rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; + rdfs:domain bsn:Entity ; rdfs:range xsd:string ; rdfs:label "File name"^^xsd:string ; schema:description "Filename of entity in some filesystem."^^xsd:string ; bsfs:unique "true"^^xsd:boolean . bse:filesize rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; + rdfs:domain bsn:Entity ; rdfs:range xsd:integer ; rdfs:label "File size"^^xsd:string ; schema:description "File size of entity in some filesystem."^^xsd:string ; bsfs:unique "true"^^xsd:boolean . bse:mime rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; + rdfs:domain bsn:Entity ; rdfs:range xsd:string ; bsfs:unique "true"^^xsd:boolean . bse:preview rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Entity ; - rdfs:range bsfs:Preview . + rdfs:domain bsn:Entity ; + rdfs:range bsn:Preview . bse:tag rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; - rdfs:range bsfs:Tag . + rdfs:domain bsn:Entity ; + rdfs:range bsn:Tag . bst:label rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Tag ; + rdfs:domain bsn:Tag ; rdfs:range xsd:string ; bsfs:unique "true"^^xsd:boolean . @@ -64,45 +66,50 @@ bse:comment rdfs:subClassOf bsfs:Predicate ; rdfs:range xsd:string . bse:group rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Entity ; - rdfs:range bsfs:Group . + rdfs:domain bsn:Entity ; + rdfs:range bsn:Group . + +bsg:label rdfs:subClassOf bsfs:Predicate ; + rdfs:domain bsn:Group ; + rdfs:range xsd:string ; + bsfs:unique "true"^^xsd:boolean . bsg:represented_by rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Group ; - rdfs:range bsfs:File ; + rdfs:domain bsn:Group ; + rdfs:range bsn:Entity ; bsfs:unique "true"^^xsd:boolean . bse:longitude rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; - rdfs:range xsd:integer ; + rdfs:domain bsn:Entity ; + rdfs:range xsd:float ; bsfs:unique "true"^^xsd:boolean . bse:latitude rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:File ; - rdfs:range xsd:integer ; + rdfs:domain bsn:Entity ; + rdfs:range xsd:float ; bsfs:unique "true"^^xsd:boolean . ## preview nodes bsp:width rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; + rdfs:domain bsn:Preview ; rdfs:range xsd:integer ; bsfs:unique "true"^^xsd:boolean . bsp:height rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; + rdfs:domain bsn:Preview ; rdfs:range xsd:integer ; bsfs:unique "true"^^xsd:boolean . bsp:orientation rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; + rdfs:domain bsn:Preview ; rdfs:range xsd:integer ; bsfs:unique "true"^^xsd:boolean . bsp:asset rdfs:subClassOf bsfs:Predicate ; - rdfs:domain bsfs:Preview ; - rdfs:range bsfs:JPEG ; + rdfs:domain bsn:Preview ; + rdfs:range <https://schema.bsfs.io/ie/Literal/BinaryBlob/JPEG> ; bsfs:unique "true"^^xsd:boolean . diff --git a/tagit/apps/port_data.py b/tagit/apps/port_data.py index fc11b4d..11faaef 100644 --- a/tagit/apps/port_data.py +++ b/tagit/apps/port_data.py @@ -16,42 +16,42 @@ def add_port_data(store): def add_port_data2(store): # tags - t_hello = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#hello')) \ + t_hello = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#hello')) \ .set(ns.bst.label, 'hello') - t_world = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#world')) \ + t_world = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#world')) \ .set(ns.bst.label, 'world') - t_foobar = store.node(ns.bsfs.Tag, URI('http://example.com/me/tag#foobar')) \ + t_foobar = store.node(ns.bsn.Tag, URI('http://example.com/me/tag#foobar')) \ .set(ns.bst.label, 'foobar') # entities - n0 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#01')) \ + n0 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#01')) \ .set(ns.bse.filename, 'textfile.t') \ .set(ns.bse.filesize, 100) \ .set(ns.bse.tag, t_hello) \ .set(ns.bse.tag, t_foobar) \ .set(ns.bse.latitude, 47.374444) \ .set(ns.bse.longitude, 8.541111) - n1 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#02')) \ + n1 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#02')) \ .set(ns.bse.filename, 'document.pdf') \ .set(ns.bse.filesize, 200) \ .set(ns.bse.tag, t_world) \ .set(ns.bse.tag, t_foobar) - n2 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#03')) \ + n2 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#03')) \ .set(ns.bse.filename, 'document.odt') \ .set(ns.bse.filesize, 300) \ .set(ns.bse.tag, t_world) - n3 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#04')) \ + n3 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#04')) \ .set(ns.bse.filename, 'image.jpg') \ .set(ns.bse.comment, 'some image') \ .set(ns.bse.tag, t_hello) \ .set(ns.bse.tag, t_foobar) - n4 = store.node(ns.bsfs.File, URI('http://example.com/me/entity#05')) \ + n4 = store.node(ns.bsn.Entity, URI('http://example.com/me/entity#05')) \ .set(ns.bse.filename, 'image.png') \ .set(ns.bse.comment, 'another image') \ .set(ns.bse.tag, t_hello) # groups - grp = store.node(ns.bsfs.Group, URI('http://example.com/me/group#1234')) + grp = store.node(ns.bsn.Group, URI('http://example.com/me/group#1234')) grp.set(ns.bsg.represented_by, n0) n0.set(ns.bse.group, grp) n1.set(ns.bse.group, grp) @@ -60,77 +60,77 @@ def add_port_data2(store): # previews base = os.path.join(os.path.dirname(__file__), 'port-data') n0.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w100_h100.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, - store.node(ns.bsfs.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ + store.node(ns.bsn.Preview, str('http://example.com/me/preview#ent01_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h200.jpg'), 'rb').read()) ) n0.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent01_w400_h400')) \ .set(ns.bsp.width, 400) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent01_w400_h400.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w100_h100.jpg'), 'rb').read()) ) n1.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent02_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent02_w400_h200.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w100_h100.jpg'), 'rb').read()) ) n2.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent03_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent03_w400_h200.jpg'), 'rb').read()) ) n3.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w100_h100.png'), 'rb').read()) ) n3.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent04_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent04_w400_h200.png'), 'rb').read()) ) n4.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w100_h100')) \ .set(ns.bsp.width, 100) \ .set(ns.bsp.height, 100) \ .set(ns.bsp.orientation, 1) \ .set(ns.bsp.asset, open(os.path.join(base, 'ent05_w100_h100.jpg'), 'rb').read()) ) n4.set(ns.bse.preview, - store.node(ns.bsfs.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ + store.node(ns.bsn.Preview, URI('http://example.com/me/preview#ent05_w400_h200')) \ .set(ns.bsp.width, 200) \ .set(ns.bsp.height, 400) \ .set(ns.bsp.orientation, 1) \ diff --git a/tagit/parsing/filter/from_string.py b/tagit/parsing/filter/from_string.py index ed24f63..60e5c47 100644 --- a/tagit/parsing/filter/from_string.py +++ b/tagit/parsing/filter/from_string.py @@ -69,7 +69,7 @@ class FromString(): > Require: searchable as specified in backend AND user-searchable as specified in frontend """ # all relevant predicates - predicates = {pred for pred in self.schema.predicates() if pred.domain <= self.schema.node(ns.bsfs.Entity)} + predicates = {pred for pred in self.schema.predicates() if pred.domain <= self.schema.node(ns.bsn.Entity)} # filter through accept/reject lists ... # FIXME # shortcuts @@ -78,9 +78,9 @@ class FromString(): # all predicates _PREDICATES = {self._uri2abb[pred.uri] for pred in predicates} | {'id', 'group'} # FIXME: properly document additions # numeric predicates - _PREDICATES_NUMERIC = {self._uri2abb[pred.uri] for pred in predicates if pred.range <= self.schema.literal(ns.bsfs.Number)} + _PREDICATES_NUMERIC = {self._uri2abb[pred.uri] for pred in predicates if pred.range <= self.schema.literal(ns.bsl.Number)} # datetime predicates - self._DATETIME_PREDICATES = {pred.uri for pred in predicates if pred.range <= self.schema.literal(ns.bsfs.Time)} + self._DATETIME_PREDICATES = {pred.uri for pred in predicates if pred.range <= self.schema.literal(ns.bsl.Time)} _PREDICATES_DATETIME = {self._uri2abb[pred] for pred in self._DATETIME_PREDICATES} diff --git a/tagit/parsing/filter/to_string.py b/tagit/parsing/filter/to_string.py index a2815de..6a1b035 100644 --- a/tagit/parsing/filter/to_string.py +++ b/tagit/parsing/filter/to_string.py @@ -20,7 +20,7 @@ class ToString(): self.matches = matcher.Filter() self.schema = schema - predicates = {pred for pred in self.schema.predicates() if pred.domain <= self.schema.node(ns.bsfs.Entity)} + predicates = {pred for pred in self.schema.predicates() if pred.domain <= self.schema.node(ns.bsn.Entity)} # shortcuts self._abb2uri = {pred.uri.fragment: pred.uri for pred in predicates} # FIXME: tie-breaking for duplicates self._uri2abb = {uri: fragment for fragment, uri in self._abb2uri.items()} diff --git a/tagit/tiles/info.py b/tagit/tiles/info.py index a5eacdf..8edc9bb 100644 --- a/tagit/tiles/info.py +++ b/tagit/tiles/info.py @@ -61,14 +61,14 @@ class Info(TileTabular, BrowserAwareMixin): else: preds = cursor.get( - ns.bsm.t_created, + ns.bsfs.Node().t_created, ns.bse.filesize, ns.bse.filename, (ns.bse.tag, ns.bst.label), ) self.tabledata = OrderedDict({ 'Date' : ttime.from_timestamp_utc( - preds.get(ns.bsm.t_created, ttime.timestamp_min)).strftime('%d.%m.%y %H:%M'), + preds.get(ns.bsfs.Node().t_created, ttime.timestamp_min)).strftime('%d.%m.%y %H:%M'), #'Size' : f'{preds.get(ns.bse.width, "?")} x {preds.get(ns.bse.height, "?")}', #'ISO' : preds.get(ns.bse.iso, '?'), 'Filesize' : magnitude_fmt(preds.get(ns.bse.filesize, 0)), diff --git a/tagit/utils/namespaces.py b/tagit/utils/namespaces.py index dbdb853..3fb889c 100644 --- a/tagit/utils/namespaces.py +++ b/tagit/utils/namespaces.py @@ -11,29 +11,31 @@ import typing from . import bsfs as _bsfs # generic namespaces -xsd = _bsfs.Namespace('http://www.w3.org/2001/XMLSchema') +xsd = _bsfs.Namespace('http://www.w3.org/2001/XMLSchema')() # core bsfs namespaces -bsfs = _bsfs.Namespace('http://bsfs.ai/schema', fsep='/') -bsm = _bsfs.Namespace('http://bsfs.ai/schema/Meta') +bsfs = _bsfs.Namespace('https://schema.bsfs.io/core') +bsie = _bsfs.Namespace('https://schema.bsfs.io/ie') # auxiliary bsfs namespaces -bse = _bsfs.Namespace('http://bsfs.ai/schema/Entity') -bsg = _bsfs.Namespace('http://bsfs.ai/schema/Group') -bsp = _bsfs.Namespace('http://bsfs.ai/schema/Preview') -bst = _bsfs.Namespace('http://bsfs.ai/schema/Tag') +bse = bsn.Entity() +bsg = bsn.Group() +bsl = bsfs.Literal +bsn = bsie.Node +bsp = bsn.Preview() +bst = bsn.Tag() # export __all__: typing.Sequence[str] = ( 'bse', 'bsfs', 'bsg', - 'bsm', + 'bsie', + 'bsl', + 'bsn', 'bsp', 'bst', 'xsd', ) ## EOF ## - - diff --git a/tagit/widgets/browser.py b/tagit/widgets/browser.py index 8445706..17d99ed 100644 --- a/tagit/widgets/browser.py +++ b/tagit/widgets/browser.py @@ -171,7 +171,7 @@ class Browser(GridLayout, StorageAwareMixin, ConfigAwareMixin): """ # get groups and their shadow (group's members in items) groups = defaultdict(set) - all_items = reduce(operator.add, items, self.root.session.storage.empty(ns.bsfs.File)) + all_items = reduce(operator.add, items, self.root.session.storage.empty(ns.bsn.Entity)) for obj, grp in all_items.group(node=True, view=list): groups[grp].add(obj) @@ -219,7 +219,7 @@ class Browser(GridLayout, StorageAwareMixin, ConfigAwareMixin): unfolded |= self.folds[itm].shadow else: unfolded |= {itm} - return reduce(operator.add, unfolded, self.root.session.storage.empty(ns.bsfs.File)) + return reduce(operator.add, unfolded, self.root.session.storage.empty(ns.bsn.Entity)) def neighboring_unselected(self): """Return the item closest to the cursor and not being selected. May return None.""" @@ -580,7 +580,7 @@ class BrowserDescription(BrowserItem): grp = self.browser.folds[self.obj].group # FIXME: Here we could actually use a predicate reversal for Nodes.get # members = grp.get(ast.fetch.Node(ast.fetch.Predicate(ns.bse.group, reverse=True))) - members = self.browser.root.session.storage.get(ns.bsfs.File, + members = self.browser.root.session.storage.get(ns.bsn.Entity, ast.filter.Any(ns.bse.group, ast.filter.Is(grp))) # get group member's tags member_tags = members.tag.label(node=True) |