def predicates_in_tripleexpr(expression: ShExJ.tripleExpr, cntxt: Context) -> Set[IRIREF]: predicates = set() def triple_expr_visitor(predicates: Set[IRIREF], expr: ShExJ.tripleExpr, cntxt_: Context) -> None: if isinstance(expr, ShExJ.TripleConstraint): predicates.add(expr.predicate) cntxt.visit_triple_expressions(expression, triple_expr_visitor, predicates) return predicates
def triple_constraints_in_expression( expression: ShExJ.shapeExpr, cntxt: Context) -> List[ShExJ.TripleConstraint]: tes = [] def triple_expr_visitor(tes: List[ShExJ.TripleConstraint], expr: ShExJ.TripleConstraint, _: Context) -> None: if isinstance(expr, ShExJ.TripleConstraint): tes.append(expr) cntxt.visit_triple_expressions(expression, triple_expr_visitor, tes) return tes
def triple_expr_finder(predicates: Dict[IRIREF, PredDirection], expr: ShExJ.shapeExpr, cntxt_: Context) -> None: if isinstance(expr, ShExJ.Shape) and expr.expression is not None: cntxt_.visit_triple_expressions(expr.expression, predicate_finder, predicates)
def triple_expr_finder(predicates: List[URIRef], expr: ShExJ.shapeExpr, cntxt: Context) -> None: if isinstance(expr, ShExJ.Shape) and expr.expression is not None: cntxt.visit_triple_expressions(expr.expression, predicate_finder, predicates)