@prefix this: . @prefix sub: . @prefix bpmn: . @prefix np: . @prefix npx: . @prefix pplan: . @prefix xsd: . @prefix dcterms: . @prefix rdfs: . @prefix prov: . sub:Head { this: np:hasAssertion sub:assertion; np:hasProvenance sub:provenance; np:hasPublicationInfo sub:pubInfo; a np:Nanopublication . } sub:assertion { sub:imgStr a "str", pplan:Variable; rdfs:label "imgStr" . sub:rotate_image-output1 a "str", pplan:Variable; rdfs:label "rotate_image-output1" . sub:step dcterms:description """@is_fairstep(label='Rotate image') def rotate_image(imgStr:str) -> str: \"\"\"Rotate image\"\"\" image = Image.open(io.BytesIO(imgStr)) new_image = image.transpose(Image.ROTATE_90) imgOut = io.BytesIO() new_image.save(imgOut, format=\"png\") return imgOut.getvalue() """; pplan:hasInputVar sub:imgStr; pplan:hasOutputVar sub:rotate_image-output1; a bpmn:ScriptTask, pplan:Step; rdfs:label "Rotate image" . } sub:provenance { sub:assertion prov:generatedAtTime "2021-01-26T12:19:22.209684"^^xsd:dateTime . } sub:pubInfo { sub:sig npx:hasAlgorithm "RSA"; npx:hasPublicKey "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCOqbrPT5RmzxsvRXGHZSAXPzeRLt9ogiosL3tcPKC0g5J8B1577lnJ3oVKSfD80lgPJdr9K671RazGL/mkZ/yu/uCNqne07Q9jd6OIAEi3fldiVfGK8ZDh43rGWRuG+BlvbZ1lZRFrWsURTKTpMgh0C6vJFRIMkWH6ImbZC5JbbQIDAQAB"; npx:hasSignature "S+r5MKvBLZv18fc07pGIGn72CHAZLV+CZKbFb6ZFBmQnsFNA5iDt99S3+mDrtc4rj1yamc5E9uOElJ1e8qcFY9GtolMC5QNl4PpjatKgEEqtNQdjREUijyOVUWzzYmm9WP8yPIl4baNUzF9/rRK7Mgn5l/e5hEY+ClG0OWglP7g="; npx:hasSignatureTarget this: . this: npx:introduces sub:step; prov:generatedAtTime "2021-01-26T12:19:22.209684"^^xsd:dateTime; prov:wasAttributedTo . }