@prefix bpmn: <http://dkm.fbk.eu/index.php/BPMN2_Ontology#> .
@prefix dc1: <http://purl.org/dc/terms/> .
@prefix np: <http://www.nanopub.org/nschema#> .
@prefix npx: <http://purl.org/nanopub/x/> .
@prefix orcid: <https://orcid.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix pplan: <http://purl.org/net/p-plan#> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix schema: <https://schema.org/> .
@prefix sub: <http://purl.org/np/RA9zynERhvXYGsX1QHuXIjspHs1tcEEPcPVn50SAeRpbs#> .
@prefix this: <http://purl.org/np/RA9zynERhvXYGsX1QHuXIjspHs1tcEEPcPVn50SAeRpbs> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
sub:Head {
  this: np:hasAssertion sub:assertion ;
    np:hasProvenance sub:provenance ;
    np:hasPublicationInfo sub:pubinfo ;
    a np:Nanopublication .
}
sub:assertion {
  sub:_LinguisticSystem a schema:ComputerLanguage ;
    rdfs:label "python" ;
    rdfs:seeAlso <https://www.wikidata.org/wiki/Q28865> ;
    owl:versionInfo "3.9.15.final.0" .
  sub:_hyper_params a pplan:Variable ;
    rdfs:comment "None" ;
    rdfs:label "hyper_params" .
  sub:_model a pplan:Variable ;
    rdfs:comment "None" ;
    rdfs:label "model" .
  sub:_out1 a pplan:Variable ;
    rdfs:comment "str" ;
    rdfs:label "out1" .
  sub:_path a pplan:Variable ;
    rdfs:comment "None" ;
    rdfs:label "path" .
  sub:_sample_data a pplan:Variable ;
    rdfs:comment "None" ;
    rdfs:label "sample_data" .
  sub:_scores a pplan:Variable ;
    rdfs:comment "None" ;
    rdfs:label "scores" .
  sub:_step dc1:description """@is_fairstep(label='Save a model')
def save(
    model,
    path,
    sample_data,
    scores = None,
    hyper_params = None,
    # model: Any,
    # path: str,
    # sample_data: Any,
    # scores: Optional[Dict] = None,
    # hyper_params: Optional[Dict] = None,
) -> str:
    model_name = path.rsplit('/', 1)[-1]
    # print(os.path.isabs(path))
    # if not os.path.isabs(path):
    #     path = os.path.join(os.getcwd(), path)
    log.info(f\"💾 Saving model in {path}\")

    # mlem_model = MlemModel.from_obj(model, sample_data=sample_data)
    # mlem_model.dump(path)
    # print(mlem_model)
    mlem.save(model, path, sample_data=sample_data)

    g = get_run_metadata(scores, sample_data, hyper_params, model_name)
    g.serialize(f\"{path}.ttl\", format='ttl')
    # os.chmod(f\"{path}.ttl\", 0o644)
    # os.chmod(f\"{path}.mlem\", 0o644)

    # TODO: generate and store RDF metadata
    return path
""" ;
    dc1:language sub:_LinguisticSystem ;
    pplan:hasInputVar sub:_hyper_params , sub:_model , sub:_path , sub:_sample_data , sub:_scores ;
    pplan:hasOutputVar sub:_out1 ;
    a bpmn:ScriptTask , pplan:Step ;
    rdfs:label "Save a model" .
}
sub:provenance {
  sub:assertion prov:generatedAtTime "2022-12-21T14:36:28.480401"^^xsd:dateTime .
}
sub:pubinfo {
  sub:sig npx:hasAlgorithm "RSA" ;
    npx:hasPublicKey "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlKZel+uM9w+JiWuhs0NHtaXdRrGkGAjvnnLFQL2nmgZDGIjX+is2YJBd6R2kBkr67lYiUDWdtih0F0yqUlAW5GdYUihk1MBiWyLe4RNt7I5iC/5wwK/i5vV6/YKa6Zwf4oymwChpdXddlKc6d73StgFqOafQPeNeBUHTZbkmUKFAqGXf0nAclB23DEeN5qVl6XRa1qqtL91AKW+UxTvlZR3pFNFn8xKTfbOSgmuAkYSUwJrp84rNI92qXYtOJ12oH0oT/enzcThxcfPLomGc9BMd+QBCj08LdrtuAArHzcivMKDzreDCD+haZ/GdObRWHpQ5O4bEWIx3dZVQq7t0KQIDAQAB" ;
    npx:hasSignature "C42VLM9VmWnQ/vu+lnp12zJ9gpDo2W8jZG/ASQrQl0UlJS/I6amhhnOA1+UV8pDs2m2DTb5LnY4ZLlm/KVrsdLzXClp5TW/MpnDyf0iPKNf4zBJGyAFKp7zkIQSzL93cvoTQ4nTFPTvE5mvXIG8awh6tmlkM9PTc3w9RmKatel6sBLoTmDryTwlQcKeeT6DjOJFCLKiF+rwi+MNpgA+x8xtSHpNkTTSaaXXdu8ZlOefYSbVr8AizxlPhZnqmCTEQzBnio7E+n2qodZwUSZfwqRe1ihiXKSVB6hYJNfZ9Wg3JFiSMNShvWVwFMFaMFuLC+sbCI8kd1n5tydtimhA4RQ==" ;
    npx:hasSignatureTarget this: .
  this: prov:wasAttributedTo orcid:0000-0000-0000-0000 .
}