diff options
Diffstat (limited to 'bsie/extractor/generic/path.py')
-rw-r--r-- | bsie/extractor/generic/path.py | 19 |
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 ## |