def __init__(self, source: Union[Transformer, nx.MultiDiGraph] = None, output_format=None, **args): super().__init__(source=source, **args) if output_format is not None and output_format == 'prolog': self.renderer = PrologRenderer() else: self.renderer = SExpressionRenderer()
class LogicTermTransformer(Transformer): """ TODO: Motivation for LogicTermTransformer? """ def __init__(self, source: Union[Transformer, nx.MultiDiGraph] = None, output_format=None, **args): super().__init__(source=source, **args) if output_format is not None and output_format == 'prolog': self.renderer = PrologRenderer() else: self.renderer = SExpressionRenderer() def export_nodes(self) -> pd.DataFrame: items = [] for n, data in self.graph.nodes(data=True): for k, v in data.items(): self.write_term('node_prop', n, k, v) def export_edges(self) -> pd.DataFrame: items = [] for o, s, data in self.graph.edges(data=True): el = data.get('edge_label', None) self.write_term('edge', el, o, s) for k, v in data.items(): self.write_term('edge_prop', el, o, s, k, v) def write_term(self, pred: str, *args): t = Term(pred, *args) self.file.write(self.renderer.render(t) + "\n") def save(self, filename: str, format='sxpr', zipmode='w', **kwargs): """ """ with open(filename, 'w') as file: self.file = file self.export_nodes() self.export_edges()
def __init__(self, schema: Union[str, TextIO, SchemaDefinition], fmt: Optional[str] = None) -> None: super().__init__(schema, fmt) self.P = TermGenerator() self.R = PrologRenderer() if fmt == 'lp' else SExpressionRenderer()
from prologterms import TermGenerator, PrologRenderer, Program, Var, SExpressionRenderer P = TermGenerator() X = Var('X') Y = Var('Y') Z = Var('Z') R = PrologRenderer() S = SExpressionRenderer() def test_term(): t = P.member(X, [1, 2, 3]) print("TERM: {}\n".format(R.render(t))) assert R.render(t) == "member(X, [1, 2, 3])" assert S.render(t) == "(member ?X (list 1 2 3))" def test_atom(): t = P.foo() print("TERM: {}\n".format(R.render(t))) assert R.render(t) == "foo" assert S.render(t) == "(foo )" def test_unary_neg(): t = (-X) print("TERM: {}\n".format(R.render(t))) assert R.render(t) == "-(X)" assert S.render(t) == "(- ?X)"
def __init__(self, schema: Union[str, TextIO, SchemaDefinition], **kwargs) -> None: super().__init__(schema, **kwargs) self.P = TermGenerator() self.R = PrologRenderer( ) if self.format == 'lp' else SExpressionRenderer()