コード例 #1
0
ファイル: logicterm_transformer.py プロジェクト: RTXteam/kgx
 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()
コード例 #2
0
ファイル: logicterm_transformer.py プロジェクト: RTXteam/kgx
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()
コード例 #3
0
ファイル: lpgen.py プロジェクト: robertdigital/biolinkml
 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()
コード例 #4
0
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)"

コード例 #5
0
 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()