aboutsummaryrefslogtreecommitdiffstats
path: root/bsie/extractor/generic/path.py
diff options
context:
space:
mode:
Diffstat (limited to 'bsie/extractor/generic/path.py')
-rw-r--r--bsie/extractor/generic/path.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/bsie/extractor/generic/path.py b/bsie/extractor/generic/path.py
index 00c1121..30d75cf 100644
--- a/bsie/extractor/generic/path.py
+++ b/bsie/extractor/generic/path.py
@@ -25,6 +25,13 @@ class Path(base.Extractor):
def __init__(self):
super().__init__(bsfs.schema.from_string(base.SCHEMA_PREAMBLE + '''
+ bse:dirname rdfs:subClassOf bsfs:Predicate ;
+ rdfs:domain bsn:Entity ;
+ rdfs:range xsd:string ;
+ rdfs:label "File path"^^xsd:string ;
+ schema:description "File path in some filesystem."^^xsd:string ;
+ bsfs:unique "true"^^xsd:boolean .
+
bse:filename rdfs:subClassOf bsfs:Predicate ;
rdfs:domain bsn:Entity ;
rdfs:range xsd:string ;
@@ -66,4 +73,16 @@ class Path(base.Extractor):
# errors)
return None
+ def __dirname(self, path: str) -> typing.Optional[str]:
+ try:
+ return os.path.dirname(os.path.abspath(os.path.normpath(path)))
+ except Exception: # pylint: disable=broad-except # we explicitly want to catch everything
+ # some error, skip
+ # FIXME: some kind of error reporting (e.g. logging)?
+ # Options: (a) Fail silently (current); (b) Skip and report to log;
+ # (c) Raise ExtractorError (aborts extraction); (d) separate content type
+ # checks from basename errors (report content type errors, skip basename
+ # errors)
+ return None
+
## EOF ##