aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bsie/base/extractor.py21
-rw-r--r--bsie/extractor/generic/constant.py8
-rw-r--r--bsie/extractor/generic/path.py7
-rw-r--r--bsie/extractor/generic/stat.py7
-rw-r--r--test/base/test_extractor.py5
5 files changed, 25 insertions, 23 deletions
diff --git a/bsie/base/extractor.py b/bsie/base/extractor.py
index 678dcec..c44021b 100644
--- a/bsie/base/extractor.py
+++ b/bsie/base/extractor.py
@@ -9,8 +9,6 @@ import abc
import typing
# bsie imports
-from bsie.utils import node
-from bsie.utils.bsfs import schema as _schema, typename
from bsie.utils import bsfs, node, ns
# exports
@@ -58,10 +56,10 @@ class Extractor(abc.ABC):
CONTENT_READER: typing.Optional[str] = None
# extractor schema.
- schema: _schema.Schema
+ _schema: bsfs.schema.Schema
- def __init__(self, schema: _schema.Schema):
- self.schema = schema
+ def __init__(self, schema: bsfs.schema.Schema):
+ self._schema = schema
def __str__(self) -> str:
return bsfs.typename(self)
@@ -77,7 +75,14 @@ class Extractor(abc.ABC):
def __hash__(self) -> int:
return hash((type(self), self.CONTENT_READER, self.schema))
- def predicates(self) -> typing.Iterator[_schema.Predicate]:
+ @property
+ def schema(self) -> bsfs.schema.Schema:
+ """Return the extractor's schema."""
+ return self._schema
+
+ @property
+ def principals(self) -> typing.Iterator[bsfs.schema.Predicate]:
+ """Return the principal predicates, i.e., relations from/to the extraction subject."""
ent = self.schema.node(ns.bsfs.Entity)
return (
pred
@@ -91,8 +96,8 @@ class Extractor(abc.ABC):
self,
subject: node.Node,
content: typing.Any,
- predicates: typing.Iterable[_schema.Predicate],
- ) -> typing.Iterator[typing.Tuple[node.Node, _schema.Predicate, typing.Any]]:
+ principals: typing.Iterable[bsfs.schema.Predicate],
+ ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]:
"""Return (node, predicate, value) triples."""
## EOF ##
diff --git a/bsie/extractor/generic/constant.py b/bsie/extractor/generic/constant.py
index f9e3415..cdb2ef6 100644
--- a/bsie/extractor/generic/constant.py
+++ b/bsie/extractor/generic/constant.py
@@ -9,8 +9,6 @@ import typing
# bsie imports
from bsie.base import extractor
-from bsie.utils.bsfs import URI, schema as _schema
-from bsie.utils.node import Node
from bsie.utils import bsfs, node
# exports
@@ -50,10 +48,10 @@ class Constant(extractor.Extractor):
self,
subject: node.Node,
content: None,
- predicates: typing.Iterable[_schema.Predicate],
- ) -> typing.Iterator[typing.Tuple[Node, _schema.Predicate, typing.Any]]:
+ principals: typing.Iterable[bsfs.schema.Predicate],
+ ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]:
for pred, value in self._tuples:
- if pred in predicates:
+ if pred in principals:
yield subject, pred, value
## EOF ##
diff --git a/bsie/extractor/generic/path.py b/bsie/extractor/generic/path.py
index 00165e3..23ae80b 100644
--- a/bsie/extractor/generic/path.py
+++ b/bsie/extractor/generic/path.py
@@ -10,7 +10,6 @@ import typing
# bsie imports
from bsie.base import extractor
-from bsie.utils.bsfs import schema
from bsie.utils import bsfs, node, ns
# exports
@@ -46,9 +45,9 @@ class Path(extractor.Extractor):
self,
subject: node.Node,
content: str,
- predicates: typing.Iterable[schema.Predicate],
- ) -> typing.Iterator[typing.Tuple[node.Node, schema.Predicate, typing.Any]]:
- for pred in predicates:
+ principals: typing.Iterable[bsfs.schema.Predicate],
+ ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]:
+ for pred in principals:
# find callback
clbk = self._callmap.get(pred)
if clbk is None:
diff --git a/bsie/extractor/generic/stat.py b/bsie/extractor/generic/stat.py
index 0f4267f..1dcfedf 100644
--- a/bsie/extractor/generic/stat.py
+++ b/bsie/extractor/generic/stat.py
@@ -10,7 +10,6 @@ import typing
# bsie imports
from bsie.base import extractor
-from bsie.utils.bsfs import schema as _schema
from bsie.utils import bsfs, node, ns
# exports
@@ -46,9 +45,9 @@ class Stat(extractor.Extractor):
self,
subject: node.Node,
content: os.stat_result,
- predicates: typing.Iterable[_schema.Predicate],
- ) -> typing.Iterator[typing.Tuple[node.Node, _schema.Predicate, typing.Any]]:
- for pred in predicates:
+ principals: typing.Iterable[bsfs.schema.Predicate],
+ ) -> typing.Iterator[typing.Tuple[node.Node, bsfs.schema.Predicate, typing.Any]]:
+ for pred in principals:
# find callback
clbk = self._callmap.get(pred)
if clbk is None:
diff --git a/test/base/test_extractor.py b/test/base/test_extractor.py
index 5410ae0..30974ef 100644
--- a/test/base/test_extractor.py
+++ b/test/base/test_extractor.py
@@ -51,14 +51,15 @@ class TestExtractor(unittest.TestCase):
self.assertNotEqual(ext, sub)
self.assertNotEqual(hash(ext), hash(sub))
- def test_predicates(self):
+ def test_principals(self):
schema = bsfs.schema.Schema.Empty()
entity = schema.node(ns.bsfs.Node).get_child(ns.bsfs.Entity)
string = schema.literal(ns.bsfs.Literal).get_child(bsfs.URI('http://www.w3.org/2001/XMLSchema#string'))
p_author = schema.predicate(ns.bsfs.Predicate).get_child(ns.bse.author, domain=entity, range=string)
p_comment = schema.predicate(ns.bsfs.Predicate).get_child(ns.bse.comment, domain=entity, range=string)
ext = StubExtractor()
- self.assertSetEqual(set(ext.predicates()), {p_author, p_comment} | set(schema.predicates()))
+ self.assertSetEqual(set(ext.principals),
+ {p_author, p_comment} | set(schema.predicates()) - {schema.predicate(ns.bsfs.Predicate)})
## main ##