@prefix dc1: <http://purl.org/dc/terms/> .
@prefix dul: <http://www.ontologydesignpatterns.org/ont/dul/DUL.owl#> .
@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/RAeN7hAGFyfkrR9qLCvZw-rf2WcMuzpHyrNwejn7-1l-g#> .
@prefix this: <http://purl.org/np/RAeN7hAGFyfkrR9qLCvZw-rf2WcMuzpHyrNwejn7-1l-g> .
@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 {
  <http://purl.org/np/RA1tMKEVOzP9NfBlYQVq3maUfJJ1r2qpSlZjHduUNsH_M#step> pplan:isStepOfPlan sub:_plan ;
    dul:precedes <http://purl.org/np/RASA94tmKMm5f73Dr8scBkLIXU8SuYTRuI2RCjD8721Is#step> , <http://purl.org/np/RAXUp9jRTBMy6siObBOVZ80CudZKemn0TUXlBZIY2uKQQ#step> .
  <http://purl.org/np/RASA94tmKMm5f73Dr8scBkLIXU8SuYTRuI2RCjD8721Is#step> pplan:isStepOfPlan sub:_plan ;
    dul:precedes <http://purl.org/np/RAXUp9jRTBMy6siObBOVZ80CudZKemn0TUXlBZIY2uKQQ#step> .
  <http://purl.org/np/RAXUp9jRTBMy6siObBOVZ80CudZKemn0TUXlBZIY2uKQQ#step> pplan:isStepOfPlan sub:_plan .
  <http://purl.org/np/RAaGSB8JBOjNSuGj4OkNh-3pst_n_TD6bQDctI-sXT4Dc#step> pplan:isStepOfPlan sub:_plan ;
    dul:precedes <http://purl.org/np/RA1tMKEVOzP9NfBlYQVq3maUfJJ1r2qpSlZjHduUNsH_M#step> .
  sub:_LinguisticSystem a schema:ComputerLanguage ;
    rdfs:label "python" ;
    rdfs:seeAlso <https://www.wikidata.org/wiki/Q28865> ;
    owl:versionInfo "3.9.15.final.0" .
  sub:_plan dc1:description """@is_fairworkflow(label='My model training workflow')
def training_workflow(n_jobs: int):

    # Define models hyper params
    hyper_params = {
        'n_jobs': n_jobs,
        'random_state': 42
    }

    data = load_data()
    y = load_data_y()

    # Train model (here we use a stub dataset just to make the example clear)
    model = fit_classifier(hyper_params, data, y)

    # Evaluate the model using your own metrics
    scores = evaluate(model)

    # Save the model generated to the models/ folder
    loaded_model = save_model(
        model,
        \"models/my_model\",
        sample_data=data,
        scores=scores,
        hyper_params=hyper_params,
    )
    return loaded_model
    # Optionally you can save other files (dataframes, JSON objects) in the data/ folder
""" ;
    dc1:language sub:_LinguisticSystem ;
    a pplan:Plan ;
    rdfs:label "My model training workflow" .
  <http://purl.org/np/RAsSPLHyQeZ0x8aggu6aJz05MUWLMF3BxyrXS4AJ-pkMw#step> pplan:isStepOfPlan sub:_plan ;
    dul:precedes <http://purl.org/np/RA1tMKEVOzP9NfBlYQVq3maUfJJ1r2qpSlZjHduUNsH_M#step> , <http://purl.org/np/RAXUp9jRTBMy6siObBOVZ80CudZKemn0TUXlBZIY2uKQQ#step> .
  <http://www.example.org/unpublished-evaluate#out1> pplan:bindsTo <http://www.example.org/unpublished-save_model#scores> .
  <http://www.example.org/unpublished-fit_classifier#out1> pplan:bindsTo <http://www.example.org/unpublished-evaluate#model> , <http://www.example.org/unpublished-save_model#model> .
  <http://www.example.org/unpublished-load_data#out1> pplan:bindsTo <http://www.example.org/unpublished-fit_classifier#data> , <http://www.example.org/unpublished-save_model#sample_data> .
  <http://www.example.org/unpublished-load_data_y#out1> pplan:bindsTo <http://www.example.org/unpublished-fit_classifier#y> .
  <http://www.example.org/unpublished-save_model#out1> pplan:bindsTo sub:_result .
}
sub:provenance {
  sub:assertion prov:generatedAtTime "2023-01-10T11:06:45.485880"^^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 "KFLij45oZdbHmYF1wpFWI9+qkQXae2TnrjvPymZHcz1wrF4fWc3+gj3Ho5ufQQItRf5WMSWn7FYmAqKxzIwAAx8V0A9xJqgPr6nhwFkuvEMwS3WTVynf5x75v2xrdee4UAKlgpqzKXBPFmZKKqSLdD8c9HOYxKYHyNPEC415wSbJolLgllQ7XLr2xPGwTYPIGQfly3yKt6+w/AKmUv2wS3jeoM6Le9syoEMBtBmPn+bJ3xbdaX6zMcpNvIO98bp7ufh6zUMI7l2ZJOFBUE8Bk5vw2SIhJvJeVM2vx8tEw4T4rJdGW9QWbu5Bs/dH/M7gHP9mOTjffatzts67nrwhng==" ;
    npx:hasSignatureTarget this: .
  this: prov:wasAttributedTo orcid:0000-0000-0000-0000 .
}