diff options
Diffstat (limited to 'bsie/extractor')
-rw-r--r-- | bsie/extractor/base.py | 7 | ||||
-rw-r--r-- | bsie/extractor/generic/constant.py | 7 | ||||
-rw-r--r-- | bsie/extractor/generic/path.py | 8 | ||||
-rw-r--r-- | bsie/extractor/generic/stat.py | 7 | ||||
-rw-r--r-- | bsie/extractor/image/colors_spatial.py | 7 | ||||
-rw-r--r-- | bsie/extractor/image/face/detect.py | 9 | ||||
-rw-r--r-- | bsie/extractor/image/face/identify.py | 11 | ||||
-rw-r--r-- | bsie/extractor/image/iptc.py | 13 | ||||
-rw-r--r-- | bsie/extractor/image/photometrics.py | 7 | ||||
-rw-r--r-- | bsie/extractor/preview.py | 10 |
10 files changed, 48 insertions, 38 deletions
diff --git a/bsie/extractor/base.py b/bsie/extractor/base.py index f92d7cc..bb2ee81 100644 --- a/bsie/extractor/base.py +++ b/bsie/extractor/base.py @@ -5,7 +5,8 @@ import abc import typing # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # exports __all__: typing.Sequence[str] = ( @@ -106,10 +107,10 @@ class Extractor(abc.ABC): @abc.abstractmethod def extract( self, - subject: node.Node, + subject: nodes.Entity, content: typing.Any, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: """Return (node, predicate, value) triples.""" # FIXME: type annotation could be more strict: value is Hashable diff --git a/bsie/extractor/generic/constant.py b/bsie/extractor/generic/constant.py index 7acbe95..e038c0b 100644 --- a/bsie/extractor/generic/constant.py +++ b/bsie/extractor/generic/constant.py @@ -4,7 +4,8 @@ import typing # bsie imports -from bsie.utils import bsfs, node +from bsie.matcher import nodes +from bsie.utils import bsfs # inner-module imports from .. import base @@ -44,10 +45,10 @@ class Constant(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: None, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: for pred, value in self._tuples: if pred in principals: yield subject, pred, value diff --git a/bsie/extractor/generic/path.py b/bsie/extractor/generic/path.py index 30d75cf..7fe157b 100644 --- a/bsie/extractor/generic/path.py +++ b/bsie/extractor/generic/path.py @@ -5,7 +5,8 @@ import typing # bsie imports from bsie.extractor import base -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # exports __all__: typing.Sequence[str] = ( @@ -41,14 +42,15 @@ class Path(base.Extractor): ''')) self._callmap = { self.schema.predicate(ns.bse.filename): self.__filename, + self.schema.predicate(ns.bse.dirname): self.__dirname, } def extract( self, - subject: node.Node, + subject: nodes.Entity, content: str, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: for pred in principals: # find callback clbk = self._callmap.get(pred) diff --git a/bsie/extractor/generic/stat.py b/bsie/extractor/generic/stat.py index 92b51f3..ff51cff 100644 --- a/bsie/extractor/generic/stat.py +++ b/bsie/extractor/generic/stat.py @@ -5,7 +5,8 @@ import os import typing # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # inner-module imports from .. import base @@ -41,10 +42,10 @@ class Stat(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: os.stat_result, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: for pred in principals: # find callback clbk = self._callmap.get(pred) diff --git a/bsie/extractor/image/colors_spatial.py b/bsie/extractor/image/colors_spatial.py index e6661a9..bccefc1 100644 --- a/bsie/extractor/image/colors_spatial.py +++ b/bsie/extractor/image/colors_spatial.py @@ -8,7 +8,8 @@ import PIL.Image import numpy as np # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # inner-module imports from .. import base @@ -115,10 +116,10 @@ class ColorsSpatial(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: PIL.Image.Image, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: # check principals if self.schema.predicate(self._predicate_name) not in principals: # nothing to do; abort diff --git a/bsie/extractor/image/face/detect.py b/bsie/extractor/image/face/detect.py index 94e3a61..51d5659 100644 --- a/bsie/extractor/image/face/detect.py +++ b/bsie/extractor/image/face/detect.py @@ -7,7 +7,8 @@ import torch from facenet_pytorch import MTCNN, InceptionResnetV1 # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # inner-module imports from ... import base @@ -72,17 +73,17 @@ class FaceDetect(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: dict, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: # check principals if self.schema.predicate(ns.bse.face) not in principals: # nothing to do; abort return for face in content: - fnode = node.Node(ns.bsn.Face, ucid=face['ucid']) + fnode = nodes.Face(ucid=face['ucid']) yield subject, ns.bse.face, fnode yield fnode, bsf.x, face['x'] yield fnode, bsf.y, face['y'] diff --git a/bsie/extractor/image/face/identify.py b/bsie/extractor/image/face/identify.py index 152f113..44a75c4 100644 --- a/bsie/extractor/image/face/identify.py +++ b/bsie/extractor/image/face/identify.py @@ -9,7 +9,8 @@ import numpy as np import torch # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # inner-module imports from ... import base @@ -142,10 +143,10 @@ class FaceIdentify(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: typing.Any, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: # check principals #if self.schema.predicate(bsf.depicts) not in principals: if self.schema.predicate(ns.bse.face) not in principals: @@ -164,8 +165,8 @@ class FaceIdentify(base.Extractor): lbl = bsfs.URI(self._id2name[idx]) # label (uri) of nearest neighbour if lbl == self._restklasse: # suppress continue - pnode = node.Node(ns.bsn.Person, uri=lbl) - fnode = node.Node(ns.bsn.Face, ucid=face['ucid']) + pnode = nodes.Person(uri=lbl) + fnode = nodes.Face(ucid=face['ucid']) # emit triple yield fnode, self.schema.predicate(bsf.depicts), pnode # FIXME: emit subject -> face -> fnode? diff --git a/bsie/extractor/image/iptc.py b/bsie/extractor/image/iptc.py index 195eff7..0c03539 100644 --- a/bsie/extractor/image/iptc.py +++ b/bsie/extractor/image/iptc.py @@ -3,7 +3,8 @@ import typing # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # inner-module imports from .. import base @@ -41,10 +42,10 @@ class Iptc(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: dict, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: for pred in principals: # find callback clbk = self._callmap.get(pred) @@ -55,13 +56,13 @@ class Iptc(base.Extractor): def _keywords( self, - subject: node.Node, + subject: nodes.Entity, content: dict, - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: if 'Iptc.Application2.Keywords' not in content: return for keyword in content['Iptc.Application2.Keywords']: - tag = node.Node(ns.bsn.Tag, label=keyword) + tag = nodes.Tag(label=keyword) yield subject, self.schema.predicate(ns.bse.tag), tag yield tag, self.schema.predicate(ns.bst.label), keyword diff --git a/bsie/extractor/image/photometrics.py b/bsie/extractor/image/photometrics.py index 42eb3c8..4579b54 100644 --- a/bsie/extractor/image/photometrics.py +++ b/bsie/extractor/image/photometrics.py @@ -4,7 +4,8 @@ from fractions import Fraction import typing # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # inner-module imports from .. import base @@ -107,10 +108,10 @@ class Exif(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: dict, principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: for pred in principals: # find callback clbk = self._callmap.get(pred) diff --git a/bsie/extractor/preview.py b/bsie/extractor/preview.py index 145a01a..fcda71c 100644 --- a/bsie/extractor/preview.py +++ b/bsie/extractor/preview.py @@ -7,7 +7,8 @@ import typing import PIL.Image # bsie imports -from bsie.utils import bsfs, node, ns +from bsie.matcher import nodes +from bsie.utils import bsfs, ns # inner-module imports from . import base @@ -67,10 +68,10 @@ class Preview(base.Extractor): def extract( self, - subject: node.Node, + subject: nodes.Entity, content: typing.Callable[[int], PIL.Image.Image], principals: typing.Iterable[bsfs.schema.Predicate], - ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]: + ) -> typing.Iterator[typing.Tuple[nodes.Node, bsfs.schema.Predicate, typing.Any]]: # check principals if self.schema.predicate(ns.bse.preview) not in principals: return @@ -82,10 +83,9 @@ class Preview(base.Extractor): buffer = io.BytesIO() img.save(buffer, format='jpeg') # create a preview node - preview = node.Node(ns.bsn.Preview, + preview = nodes.Preview( ucid=bsfs.uuid.UCID.from_bytes(buffer.getvalue()), size=max_side, - source=subject, ) # yield triples yield subject, self.schema.predicate(ns.bse.preview), preview |