import%20marimo%0A%0A__generated_with%20%3D%20%220.24.2%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%201.%20Provide%20data%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20pandas%20as%20pd%0A%20%20%20%20df%20%3D%20pd.read_csv('demo.csv'%2C%20)%0A%20%20%20%20df%20%3D%20df.convert_dtypes()%0A%20%20%20%20for%20_c%20in%20df.columns%3A%0A%20%20%20%20%20%20%20%20if%20df%5B_c%5D.dtype%20%3D%3D%20'string'%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_%20%3D%20df%5B_c%5D.str.strip()%0A%20%20%20%20%20%20%20%20%20%20%20%20del%20df%5B_c%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20df%5B_c.strip()%5D%20%3D%20_%0A%20%20%20%20df%0A%20%20%20%20return%20(df%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%202.%20Define%20mappings%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%20%20%20%20_%20%3D%20open('demo.mapping.rq')%0A%20%20%20%20_%20%3D%20_.read()%0A%20%20%20%20_%20%3D%20mo.ui.code_editor(_%2C%20language%3D'sparql')%0A%20%20%20%20_%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%203.%20Run%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(df)%3A%0A%20%20%20%20from%20rdf_rules%20import%20mkrule%0A%20%20%20%20data%20%3D%20mkrule(df%2C%20name%3D'demo')%20%23%20can%20also%20pass%20Path(demo.csv)%20but%20that%20would%20not%20allow%20the%20above%20(pre-)processing%20%0A%20%20%20%20from%20rdf_rules%20import%20run%0A%20%20%20%20from%20pyoxigraph%20import%20Store%0A%20%20%20%20from%20pathlib%20import%20Path%0A%20%20%20%20db%20%3D%20run(%0A%20%20%20%20%20%20%20%20%23%20db%20%3D%20in%20memory%20default%0A%20%20%20%20%20%20%20%20data_rules%3D%5Bdata%5D%2C%0A%20%20%20%20%20%20%20%20rules%3D%5BPath('demo.mapping.rq')%5D%2C%0A%20%20%20%20%20%20%20%20validate%3DFalse%2C%20infer%3DFalse)%0A%20%20%20%20return%20(db%2C)%0A%0A%0A%40app.cell%0Adef%20_(db)%3A%0A%20%20%20%20def%20ttl(triples%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20prefixes%3D%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'foaf'%3A%20'http%3A%2F%2Fxmlns.com%2Ffoaf%2F0.1%2F'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20'ppl'%3A%20%20'urn%3Aexample%3Apeople%3A'%0A%20%20%20%20%20%20%20%20%20%7D)%3A%0A%20%20%20%20%20%20%20%20from%20pyoxigraph%20import%20serialize%2C%20RdfFormat%0A%20%20%20%20%20%20%20%20_%20%3D%20serialize(triples%2C%20format%3DRdfFormat.TURTLE%2C%20prefixes%3Dprefixes)%0A%20%20%20%20%20%20%20%20_%20%3D%20_.decode()%0A%20%20%20%20%20%20%20%20return%20_%0A%20%20%20%20from%20rdf_rules.queries%20import%20query%0A%20%20%20%20_%20%3D%20query(db%2C%20'mapped_and_inferred')%20%23%20special%20name%0A%20%20%20%20_%20%3D%20ttl(_)%0A%20%20%20%20print(_)%0A%20%20%20%20return%20(ttl%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%204.%20Iterate%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_(db%2C%20ttl)%3A%0A%20%20%20%20%23%20query%20editing%20helper%0A%20%20%20%20_%20%20%3D%20open('demo.mapping.rq')%0A%20%20%20%20_%20%3D%20_.read()%0A%20%20%20%20_%20%3D%20db.query(_)%0A%20%20%20%20try%3A%0A%20%20%20%20%20%20%20%20_%20%3D%20ttl(_)%0A%20%20%20%20except%3A%0A%20%20%20%20%20%20%20%20_%20%3D%20map(tuple%2C%20_)%0A%20%20%20%20print(_)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
451a6133c81fb08276140a413fac7c9a