Source code for provit.utils

#!/usr/bin/env python3

from rdflib import Graph
import json
import os
from itertools import combinations

from .config import get_config

cfg = get_config()


[docs]def provit_uri(slug): return cfg.base_uri.format(slug)
[docs]def load_jsonld(filepath): """ Reads json-ld file and returns (rdfslib) graph and context """ if not os.path.exists(filepath): return (None, None) if os.path.getsize(filepath) == 0: return (None, None) with open(filepath) as f: file_data = json.load(f) # check for emtpy prov file if not file_data: return (None, None) if "@graph" in file_data: graph = file_data["@graph"] else: graph = file_data try: context = file_data["@context"] except Exception: raise IOError("JSON-LD Error: Context missing.") g = Graph().parse(data=json.dumps(graph), format="json-ld", context=context) return (g, context)
[docs]def walk_up(start_dir): """ Walks up directory tree from :start_dir: and returns directory paths """ up_dir = os.path.abspath(start_dir) yield up_dir while up_dir != "/": up_dir = os.path.split(up_dir)[0] yield up_dir