aboutsummaryrefslogtreecommitdiffstats
path: root/bsie/extractor/generic/constant.py
diff options
context:
space:
mode:
authorMatthias Baumgartner <dev@igsor.net>2022-11-25 14:31:29 +0100
committerMatthias Baumgartner <dev@igsor.net>2022-11-25 14:31:29 +0100
commite174a25585e64eb1b0759440cad48d642dd31829 (patch)
treefadee735ef922156ba4a67506154c26fab2ecdd5 /bsie/extractor/generic/constant.py
parent9389c741bdbbca9adbff6099d440706cd63deac4 (diff)
downloadbsie-e174a25585e64eb1b0759440cad48d642dd31829.tar.gz
bsie-e174a25585e64eb1b0759440cad48d642dd31829.tar.bz2
bsie-e174a25585e64eb1b0759440cad48d642dd31829.zip
use schema and predicate types in extractors
Diffstat (limited to 'bsie/extractor/generic/constant.py')
-rw-r--r--bsie/extractor/generic/constant.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/bsie/extractor/generic/constant.py b/bsie/extractor/generic/constant.py
index e243131..795bac6 100644
--- a/bsie/extractor/generic/constant.py
+++ b/bsie/extractor/generic/constant.py
@@ -7,9 +7,9 @@ Author: Matthias Baumgartner, 2022
# imports
import typing
-# inner-module imports
+# bsie imports
from bsie.base import extractor
-from bsie.utils.bsfs import URI
+from bsie.utils.bsfs import URI, schema as _schema
from bsie.utils.node import Node
# exports
@@ -25,26 +25,26 @@ class Constant(extractor.Extractor):
CONTENT_READER = None
+ # predicate/value pairs to be produced.
+ _tuples: typing.Tuple[typing.Tuple[_schema.Predicate, typing.Any], ...]
+
def __init__(
self,
schema: str,
tuples: typing.Iterable[typing.Tuple[URI, typing.Any]],
):
- self._schema = schema
- self._tuples = tuples
- # FIXME: use schema instance for predicate checking
- #self._tuples = [(pred, value) for pred, value in tuples if pred in schema]
+ super().__init__(_schema.Schema.from_string(extractor.SCHEMA_PREAMBLE + schema))
+ # NOTE: Raises a KeyError if the predicate is not part of the schema
+ self._tuples = tuple((self.schema.predicate(p_uri), value) for p_uri, value in tuples)
# FIXME: use schema instance for value checking
- def schema(self) -> str:
- return self._schema
def extract(
self,
subject: Node,
content: None,
- predicates: typing.Iterable[URI],
- ) -> typing.Iterator[typing.Tuple[Node, URI, typing.Any]]:
+ predicates: typing.Iterable[_schema.Predicate],
+ ) -> typing.Iterator[typing.Tuple[Node, _schema.Predicate, typing.Any]]:
for pred, value in self._tuples:
if pred in predicates:
yield subject, pred, value