update person page generation workflow to adopt TRR workflow #5

Merged
adina merged 9 commits from contributors into main 2026-02-20 08:21:17 +00:00
Member

As a start toward #4, I have made a first pass at updating the person page generation workflow to be in line with that that @msz and @mih developed for the TRR379 website. Testing locally it doesn't seem to break, but I haven't curated any updated person records to really see if it works much differently than the old workflow in what it generates. At the very least, it should fix the dtc read-pages issue that has been making the current workflows fail :)

As a start toward https://hub.psychoinformatics.de/www/www-from-model/issues/4, I have made a first pass at updating the person page generation workflow to be in line with that that @msz and @mih developed for the TRR379 website. Testing locally it doesn't seem to break, but I haven't curated any updated person records to really see if it works much differently than the old workflow in what it generates. At the very least, it should fix the `dtc read-pages` issue that has been making the current workflows fail :)
update workflow to auto-update person pages
Some checks failed
update_person_pages.yaml / update workflow to auto-update person pages (push) Failing after 0s
dbe22641ba
j.goddard changed title from update person page generation workflow to adopt TRR workflow to WIP: update person page generation workflow to adopt TRR workflow 2026-02-19 09:46:25 +00:00
@ -15,0 +30,4 @@
get_file_content: false
path: code
- name: Download extra data
Member

The data in this step isn't actually used in other places in this workflow. On the trr workflow it is used to infer the TRR-related affiliation of a person (infer-site.py), but we would not need this and are not running it. This step can in my opinion be removed.

The data in this step isn't actually used in other places in this workflow. On the [trr workflow](https://hub.trr379.de/q04/www.trr379.de/src/branch/main/.forgejo/workflows/contributors.yml) it is used to infer the TRR-related affiliation of a person ([infer-site.py](https://hub.trr379.de/q02/pool-publication-page/src/branch/main/filters/infer-site.py)), but we would not need this and are not running it. This step can in my opinion be removed.
@ -33,1 +64,4 @@
cd ${{ steps.codecheckout.outputs.path }}
uv sync --locked
dtc read-pages https://pool.psychoinformatics.de/api/public/records/p/XYZPerson \
| qrg filter-linked-pid --api-url https://pool.psychoinformatics.de/api public xyzrsens:projects/4b434ab4-929e-4d64-97e0-ff334c6a6ff2 associated_with \
Member

I believe this used to point to the psychoinformatics Project, but its PID was changed (search for it in https://pool.psychoinformatics.de/ui/?sh%3ANodeShape=xyzri%3AXYZProject). I believe the pid should be xyzrins:. (yes, just a dot)

I believe this used to point to the psychoinformatics Project, but its PID was changed (search for it in https://pool.psychoinformatics.de/ui/?sh%3ANodeShape=xyzri%3AXYZProject). I believe the pid should be ``xyzrins:.`` (yes, just a dot)
Member

For completeness, here is the query (without the last line with persons.py) that I'm running, and its output (jq only for better readability)

❱ dtc read-pages https://pool.psychoinformatics.de/api/public/records/p/XYZPerson | qrg filter-linked-pid --api-url https://pool.psychoinformatics.de/api public  xyzrins:. associated_with  | qrg inline-records --api-url https://pool.psychoinformatics.de/api -c public -p delegated_by -p delegated_by::roles -p identifiers::creator | jq
output
  "annotations": {
    "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
    "sio:SIO_001083": "2025-12-11T21:28:29.786108"
  },
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/alex-waite",
  "family_name": "Waite",
  "given_name": "Alex"
}
{
  "delegated_by": [
    {
      "schema_type": "dlthings:Delegation",
      "object": "ror:02nv7yv05",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2020-05-01",
        "schema_type": "dlthings:Start"
      }
    }
  ],
  "annotations": {
    "obo:NCIT_C54269": "c.moench@fz-juelich.de",
    "sio:SIO_001083": "2026-01-16T11:25:25.370013"
  },
  "identifiers": [
    {
      "creator": {
        "annotations": {
          "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de",
          "sio:SIO_001083": "2026-01-19T17:44:59.765383"
        },
        "characterized_by": [
          {
            "object": "http://orcid.org/",
            "predicate": "rdfs:seeAlso"
          },
          {
            "object": "https://en.wikipedia.org/wiki/ORCID",
            "predicate": "rdfs:seeAlso"
          }
        ],
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:04fa4r544",
        "name": "ORCID",
        "at_location": "geodata:4348599"
      },
      "notation": "0000-0002-3092-0612",
      "schema_type": "xyzri:ORCID"
    }
  ],
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/christian-moench",
  "family_name": "Mönch",
  "given_name": "Christian",
  "honorific_name_prefix": "Dr"
}
{
  "annotations": {
    "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
    "sio:SIO_001083": "2025-12-11T08:33:17.970329"
  },
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/falko-kaule",
  "additional_names": [
    "R."
  ],
  "family_name": "Kaule",
  "given_name": "Falko"
}
{
  "delegated_by": [
    {
      "schema_type": "dlthings:Delegation",
      "object": "ror:02nv7yv05",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2025-02-01",
        "schema_type": "dlthings:Start"
      }
    }
  ],
  "annotations": {
    "obo:NCIT_C54269": "j.goddard@fz-juelich.de",
    "sio:SIO_001083": "2026-01-20T13:45:32.500706"
  },
  "identifiers": [
    {
      "creator": {
        "schema_type": "xyzri:XYZOrganization",
        "pid": "rrid:SCR_002630",
        "name": "GitHub"
      },
      "notation": "jennaswa",
      "schema_type": "dlthings:Identifier"
    },
    {
      "creator": {
        "annotations": {
          "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de",
          "sio:SIO_001083": "2026-01-19T17:44:59.765383"
        },
        "characterized_by": [
          {
            "object": "http://orcid.org/",
            "predicate": "rdfs:seeAlso"
          },
          {
            "object": "https://en.wikipedia.org/wiki/ORCID",
            "predicate": "rdfs:seeAlso"
          }
        ],
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:04fa4r544",
        "name": "ORCID",
        "at_location": "geodata:4348599"
      },
      "notation": "0000-0002-0181-0828",
      "schema_type": "xyzri:ORCID"
    }
  ],
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/jenna-swarthout-goddard",
  "family_name": "Swarthout Goddard",
  "given_name": "Jenna",
  "honorific_name_prefix": "Dr"
}
{
  "delegated_by": [
    {
      "attributes": [
        {
          "schema_type": "dlthings:AttributeSpecification",
          "value": "l.waite@fz-juelich.de",
          "predicate": "vcard:Email"
        }
      ],
      "schema_type": "dlthings:Delegation",
      "object": "ror:02nv7yv05",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2019-04-01",
        "schema_type": "dlthings:Start"
      }
    }
  ],
  "annotations": {
    "sio:SIO_001083": "2025-12-22T10:18:32.267474",
    "obo:NCIT_C54269": "laura@waite.eu"
  },
  "identifiers": [
    {
      "creator": {
        "annotations": {
          "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de",
          "sio:SIO_001083": "2026-01-19T17:44:59.765383"
        },
        "characterized_by": [
          {
            "object": "http://orcid.org/",
            "predicate": "rdfs:seeAlso"
          },
          {
            "object": "https://en.wikipedia.org/wiki/ORCID",
            "predicate": "rdfs:seeAlso"
          }
        ],
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:04fa4r544",
        "name": "ORCID",
        "at_location": "geodata:4348599"
      },
      "notation": "0000-0003-2213-7465",
      "schema_type": "xyzri:ORCID"
    },
    {
      "creator": {
        "schema_type": "xyzri:XYZOrganization",
        "pid": "rrid:SCR_002630",
        "name": "GitHub"
      },
      "notation": "loj",
      "schema_type": "dlthings:Identifier"
    }
  ],
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/laura-waite",
  "family_name": "Waite",
  "given_name": "Laura"
}
{
  "delegated_by": [
    {
      "attributes": [
        {
          "schema_type": "dlthings:AttributeSpecification",
          "value": "michael.hanke@hhu.de",
          "predicate": "vcard:Email"
        }
      ],
      "schema_type": "dlthings:Delegation",
      "object": "ror:024z2rq82",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2019-04-01",
        "schema_type": "dlthings:Start"
      }
    },
    {
      "attributes": [
        {
          "schema_type": "dlthings:AttributeSpecification",
          "value": "m.hanke@fz-juelich.de",
          "predicate": "vcard:Email"
        }
      ],
      "schema_type": "dlthings:Delegation",
      "object": "ror:02nv7yv05",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2019-04-01",
        "schema_type": "dlthings:Start"
      }
    },
    {
      "schema_type": "dlthings:Delegation",
      "object": "xyzrins:organizations/55dda01f-1556-4b34-bf5c-5f2f7cb0a20a",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2013-04-01",
        "schema_type": "dlthings:Start"
      },
      "ended": {
        "at_time": "2019-03-31",
        "schema_type": "dlthings:End"
      }
    },
    {
      "schema_type": "dlthings:Delegation",
      "object": {
        "annotations": {
          "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
          "sio:SIO_001083": "2025-12-14T22:12:07.509568"
        },
        "schema_type": "xyzri:XYZPerson",
        "pid": "xyzrins:persons/simon-eickhoff",
        "additional_names": [
          "B"
        ],
        "family_name": "Eickhoff",
        "given_name": "Simon"
      },
      "roles": [
        {
          "annotations": {
            "sio:SIO_001083": "2025-12-15T06:48:40.322168",
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de"
          },
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/NCIT_C134832"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/b248c1cc-135c-4e06-8366-6d38539fb825",
          "name": "Supervisor"
        }
      ],
      "started": {
        "at_time": "2019-04-01",
        "schema_type": "dlthings:Start"
      }
    }
  ],
  "annotations": {
    "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
    "sio:SIO_001083": "2025-12-17T19:54:49.339965"
  },
  "identifiers": [
    {
      "creator": {
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:008f3q107",
        "name": "ResearchGate"
      },
      "notation": "Michael-Hanke-4",
      "schema_type": "dlthings:Identifier"
    },
    {
      "creator": {
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:02fyxhe35",
        "name": "LinkedIn"
      },
      "notation": "mhanke",
      "schema_type": "dlthings:Identifier"
    },
    {
      "creator": {
        "schema_type": "xyzri:XYZOrganization",
        "pid": "rrid:SCR_006638",
        "name": "Debian"
      },
      "notation": "mih",
      "schema_type": "dlthings:Identifier"
    },
    {
      "creator": {
        "annotations": {
          "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de",
          "sio:SIO_001083": "2026-01-19T17:44:59.765383"
        },
        "characterized_by": [
          {
            "object": "http://orcid.org/",
            "predicate": "rdfs:seeAlso"
          },
          {
            "object": "https://en.wikipedia.org/wiki/ORCID",
            "predicate": "rdfs:seeAlso"
          }
        ],
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:04fa4r544",
        "name": "ORCID",
        "at_location": "geodata:4348599"
      },
      "notation": "0000-0001-6398-6370",
      "schema_type": "xyzri:ORCID"
    },
    {
      "creator": {
        "schema_type": "xyzri:XYZOrganization",
        "pid": "rrid:SCR_002630",
        "name": "GitHub"
      },
      "notation": "mih",
      "schema_type": "dlthings:Identifier"
    },
    {
      "creator": "https://mas.to",
      "notation": "@mih",
      "schema_type": "dlthings:Identifier"
    }
  ],
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/michael-hanke",
  "family_name": "Hanke",
  "given_name": "Michael"
}
{
  "delegated_by": [
    {
      "attributes": [
        {
          "schema_type": "dlthings:AttributeSpecification",
          "value": "m.szczepanik@fz-juelich.de",
          "predicate": "vcard:Email"
        }
      ],
      "schema_type": "dlthings:Delegation",
      "object": "ror:02nv7yv05",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2021-09-01",
        "schema_type": "dlthings:Start"
      }
    }
  ],
  "annotations": {
    "sio:SIO_001083": "2026-01-19T18:47:44.957271",
    "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de"
  },
  "description": "Apparent in some Psychoinformatics projects, but hidden from others, his myth is both his curse and inconsistency brought to the research software engineering. Once believed to be led by research centers unknown, only curiosity now leads this wandering postdoc through the plains of research data management.",
  "identifiers": [
    {
      "creator": {
        "annotations": {
          "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de",
          "sio:SIO_001083": "2026-01-19T17:44:59.765383"
        },
        "characterized_by": [
          {
            "object": "http://orcid.org/",
            "predicate": "rdfs:seeAlso"
          },
          {
            "object": "https://en.wikipedia.org/wiki/ORCID",
            "predicate": "rdfs:seeAlso"
          }
        ],
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:04fa4r544",
        "name": "ORCID",
        "at_location": "geodata:4348599"
      },
      "notation": "0000-0002-4028-2087",
      "schema_type": "xyzri:ORCID"
    },
    {
      "creator": {
        "schema_type": "xyzri:XYZOrganization",
        "pid": "rrid:SCR_002630",
        "name": "GitHub"
      },
      "notation": "mslw",
      "schema_type": "dlthings:Identifier"
    },
    {
      "creator": "https://masto.ai/",
      "notation": "@doktorpanik",
      "schema_type": "dlthings:Identifier"
    }
  ],
  "attributes": [
    {
      "schema_type": "dlthings:AttributeSpecification",
      "value": "https://mszczepanik.eu/",
      "predicate": "foaf:homepage"
    }
  ],
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/michal-szczepanik",
  "family_name": "Szczepanik",
  "given_name": "Michał",
  "honorific_name_prefix": "Dr"
}
{
  "delegated_by": [
    {
      "schema_type": "dlthings:Delegation",
      "object": "ror:02nv7yv05",
      "roles": [
        {
          "annotations": {
            "obo:NCIT_C54269": "m.hanke@fz-juelich.de",
            "sio:SIO_001083": "2025-12-14T21:58:59.526429"
          },
          "display_label": "Employer",
          "exact_mappings": [
            "http://purl.obolibrary.org/obo/OMRSE_00000087"
          ],
          "schema_type": "xyzri:XYZAgentRole",
          "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87",
          "name": "Employer"
        }
      ],
      "started": {
        "at_time": "2021-04-01",
        "schema_type": "dlthings:Start"
      }
    }
  ],
  "annotations": {
    "sio:SIO_001083": "2026-01-16T08:40:30.249635",
    "obo:NCIT_C54269": "s.heunis@fz-juelich.de"
  },
  "identifiers": [
    {
      "creator": {
        "annotations": {
          "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de",
          "sio:SIO_001083": "2026-01-19T17:44:59.765383"
        },
        "characterized_by": [
          {
            "object": "http://orcid.org/",
            "predicate": "rdfs:seeAlso"
          },
          {
            "object": "https://en.wikipedia.org/wiki/ORCID",
            "predicate": "rdfs:seeAlso"
          }
        ],
        "schema_type": "xyzri:XYZOrganization",
        "pid": "ror:04fa4r544",
        "name": "ORCID",
        "at_location": "geodata:4348599"
      },
      "notation": "0000-0003-3503-9872",
      "schema_type": "xyzri:ORCID"
    }
  ],
  "schema_type": "xyzri:XYZPerson",
  "pid": "xyzrins:persons/stephan-heunis",
  "family_name": "Heunis",
  "given_name": "Stephan",
  "honorific_name_prefix": "Dr"
}
For completeness, here is the query (without the last line with ``persons.py``) that I'm running, and its output (``jq`` only for better readability) ``` ❱ dtc read-pages https://pool.psychoinformatics.de/api/public/records/p/XYZPerson | qrg filter-linked-pid --api-url https://pool.psychoinformatics.de/api public xyzrins:. associated_with | qrg inline-records --api-url https://pool.psychoinformatics.de/api -c public -p delegated_by -p delegated_by::roles -p identifiers::creator | jq ``` <details><summary>output</summary> ```{ "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-11T21:28:29.786108" }, "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/alex-waite", "family_name": "Waite", "given_name": "Alex" } { "delegated_by": [ { "schema_type": "dlthings:Delegation", "object": "ror:02nv7yv05", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2020-05-01", "schema_type": "dlthings:Start" } } ], "annotations": { "obo:NCIT_C54269": "c.moench@fz-juelich.de", "sio:SIO_001083": "2026-01-16T11:25:25.370013" }, "identifiers": [ { "creator": { "annotations": { "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de", "sio:SIO_001083": "2026-01-19T17:44:59.765383" }, "characterized_by": [ { "object": "http://orcid.org/", "predicate": "rdfs:seeAlso" }, { "object": "https://en.wikipedia.org/wiki/ORCID", "predicate": "rdfs:seeAlso" } ], "schema_type": "xyzri:XYZOrganization", "pid": "ror:04fa4r544", "name": "ORCID", "at_location": "geodata:4348599" }, "notation": "0000-0002-3092-0612", "schema_type": "xyzri:ORCID" } ], "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/christian-moench", "family_name": "Mönch", "given_name": "Christian", "honorific_name_prefix": "Dr" } { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-11T08:33:17.970329" }, "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/falko-kaule", "additional_names": [ "R." ], "family_name": "Kaule", "given_name": "Falko" } { "delegated_by": [ { "schema_type": "dlthings:Delegation", "object": "ror:02nv7yv05", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2025-02-01", "schema_type": "dlthings:Start" } } ], "annotations": { "obo:NCIT_C54269": "j.goddard@fz-juelich.de", "sio:SIO_001083": "2026-01-20T13:45:32.500706" }, "identifiers": [ { "creator": { "schema_type": "xyzri:XYZOrganization", "pid": "rrid:SCR_002630", "name": "GitHub" }, "notation": "jennaswa", "schema_type": "dlthings:Identifier" }, { "creator": { "annotations": { "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de", "sio:SIO_001083": "2026-01-19T17:44:59.765383" }, "characterized_by": [ { "object": "http://orcid.org/", "predicate": "rdfs:seeAlso" }, { "object": "https://en.wikipedia.org/wiki/ORCID", "predicate": "rdfs:seeAlso" } ], "schema_type": "xyzri:XYZOrganization", "pid": "ror:04fa4r544", "name": "ORCID", "at_location": "geodata:4348599" }, "notation": "0000-0002-0181-0828", "schema_type": "xyzri:ORCID" } ], "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/jenna-swarthout-goddard", "family_name": "Swarthout Goddard", "given_name": "Jenna", "honorific_name_prefix": "Dr" } { "delegated_by": [ { "attributes": [ { "schema_type": "dlthings:AttributeSpecification", "value": "l.waite@fz-juelich.de", "predicate": "vcard:Email" } ], "schema_type": "dlthings:Delegation", "object": "ror:02nv7yv05", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2019-04-01", "schema_type": "dlthings:Start" } } ], "annotations": { "sio:SIO_001083": "2025-12-22T10:18:32.267474", "obo:NCIT_C54269": "laura@waite.eu" }, "identifiers": [ { "creator": { "annotations": { "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de", "sio:SIO_001083": "2026-01-19T17:44:59.765383" }, "characterized_by": [ { "object": "http://orcid.org/", "predicate": "rdfs:seeAlso" }, { "object": "https://en.wikipedia.org/wiki/ORCID", "predicate": "rdfs:seeAlso" } ], "schema_type": "xyzri:XYZOrganization", "pid": "ror:04fa4r544", "name": "ORCID", "at_location": "geodata:4348599" }, "notation": "0000-0003-2213-7465", "schema_type": "xyzri:ORCID" }, { "creator": { "schema_type": "xyzri:XYZOrganization", "pid": "rrid:SCR_002630", "name": "GitHub" }, "notation": "loj", "schema_type": "dlthings:Identifier" } ], "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/laura-waite", "family_name": "Waite", "given_name": "Laura" } { "delegated_by": [ { "attributes": [ { "schema_type": "dlthings:AttributeSpecification", "value": "michael.hanke@hhu.de", "predicate": "vcard:Email" } ], "schema_type": "dlthings:Delegation", "object": "ror:024z2rq82", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2019-04-01", "schema_type": "dlthings:Start" } }, { "attributes": [ { "schema_type": "dlthings:AttributeSpecification", "value": "m.hanke@fz-juelich.de", "predicate": "vcard:Email" } ], "schema_type": "dlthings:Delegation", "object": "ror:02nv7yv05", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2019-04-01", "schema_type": "dlthings:Start" } }, { "schema_type": "dlthings:Delegation", "object": "xyzrins:organizations/55dda01f-1556-4b34-bf5c-5f2f7cb0a20a", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2013-04-01", "schema_type": "dlthings:Start" }, "ended": { "at_time": "2019-03-31", "schema_type": "dlthings:End" } }, { "schema_type": "dlthings:Delegation", "object": { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T22:12:07.509568" }, "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/simon-eickhoff", "additional_names": [ "B" ], "family_name": "Eickhoff", "given_name": "Simon" }, "roles": [ { "annotations": { "sio:SIO_001083": "2025-12-15T06:48:40.322168", "obo:NCIT_C54269": "m.hanke@fz-juelich.de" }, "exact_mappings": [ "http://purl.obolibrary.org/obo/NCIT_C134832" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/b248c1cc-135c-4e06-8366-6d38539fb825", "name": "Supervisor" } ], "started": { "at_time": "2019-04-01", "schema_type": "dlthings:Start" } } ], "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-17T19:54:49.339965" }, "identifiers": [ { "creator": { "schema_type": "xyzri:XYZOrganization", "pid": "ror:008f3q107", "name": "ResearchGate" }, "notation": "Michael-Hanke-4", "schema_type": "dlthings:Identifier" }, { "creator": { "schema_type": "xyzri:XYZOrganization", "pid": "ror:02fyxhe35", "name": "LinkedIn" }, "notation": "mhanke", "schema_type": "dlthings:Identifier" }, { "creator": { "schema_type": "xyzri:XYZOrganization", "pid": "rrid:SCR_006638", "name": "Debian" }, "notation": "mih", "schema_type": "dlthings:Identifier" }, { "creator": { "annotations": { "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de", "sio:SIO_001083": "2026-01-19T17:44:59.765383" }, "characterized_by": [ { "object": "http://orcid.org/", "predicate": "rdfs:seeAlso" }, { "object": "https://en.wikipedia.org/wiki/ORCID", "predicate": "rdfs:seeAlso" } ], "schema_type": "xyzri:XYZOrganization", "pid": "ror:04fa4r544", "name": "ORCID", "at_location": "geodata:4348599" }, "notation": "0000-0001-6398-6370", "schema_type": "xyzri:ORCID" }, { "creator": { "schema_type": "xyzri:XYZOrganization", "pid": "rrid:SCR_002630", "name": "GitHub" }, "notation": "mih", "schema_type": "dlthings:Identifier" }, { "creator": "https://mas.to", "notation": "@mih", "schema_type": "dlthings:Identifier" } ], "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/michael-hanke", "family_name": "Hanke", "given_name": "Michael" } { "delegated_by": [ { "attributes": [ { "schema_type": "dlthings:AttributeSpecification", "value": "m.szczepanik@fz-juelich.de", "predicate": "vcard:Email" } ], "schema_type": "dlthings:Delegation", "object": "ror:02nv7yv05", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2021-09-01", "schema_type": "dlthings:Start" } } ], "annotations": { "sio:SIO_001083": "2026-01-19T18:47:44.957271", "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de" }, "description": "Apparent in some Psychoinformatics projects, but hidden from others, his myth is both his curse and inconsistency brought to the research software engineering. Once believed to be led by research centers unknown, only curiosity now leads this wandering postdoc through the plains of research data management.", "identifiers": [ { "creator": { "annotations": { "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de", "sio:SIO_001083": "2026-01-19T17:44:59.765383" }, "characterized_by": [ { "object": "http://orcid.org/", "predicate": "rdfs:seeAlso" }, { "object": "https://en.wikipedia.org/wiki/ORCID", "predicate": "rdfs:seeAlso" } ], "schema_type": "xyzri:XYZOrganization", "pid": "ror:04fa4r544", "name": "ORCID", "at_location": "geodata:4348599" }, "notation": "0000-0002-4028-2087", "schema_type": "xyzri:ORCID" }, { "creator": { "schema_type": "xyzri:XYZOrganization", "pid": "rrid:SCR_002630", "name": "GitHub" }, "notation": "mslw", "schema_type": "dlthings:Identifier" }, { "creator": "https://masto.ai/", "notation": "@doktorpanik", "schema_type": "dlthings:Identifier" } ], "attributes": [ { "schema_type": "dlthings:AttributeSpecification", "value": "https://mszczepanik.eu/", "predicate": "foaf:homepage" } ], "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/michal-szczepanik", "family_name": "Szczepanik", "given_name": "Michał", "honorific_name_prefix": "Dr" } { "delegated_by": [ { "schema_type": "dlthings:Delegation", "object": "ror:02nv7yv05", "roles": [ { "annotations": { "obo:NCIT_C54269": "m.hanke@fz-juelich.de", "sio:SIO_001083": "2025-12-14T21:58:59.526429" }, "display_label": "Employer", "exact_mappings": [ "http://purl.obolibrary.org/obo/OMRSE_00000087" ], "schema_type": "xyzri:XYZAgentRole", "pid": "xyzrins:agent-roles/7f9ac7fa-6f5a-4651-88aa-914689eb4e87", "name": "Employer" } ], "started": { "at_time": "2021-04-01", "schema_type": "dlthings:Start" } } ], "annotations": { "sio:SIO_001083": "2026-01-16T08:40:30.249635", "obo:NCIT_C54269": "s.heunis@fz-juelich.de" }, "identifiers": [ { "creator": { "annotations": { "obo:NCIT_C54269": "m.szczepanik@fz-juelich.de", "sio:SIO_001083": "2026-01-19T17:44:59.765383" }, "characterized_by": [ { "object": "http://orcid.org/", "predicate": "rdfs:seeAlso" }, { "object": "https://en.wikipedia.org/wiki/ORCID", "predicate": "rdfs:seeAlso" } ], "schema_type": "xyzri:XYZOrganization", "pid": "ror:04fa4r544", "name": "ORCID", "at_location": "geodata:4348599" }, "notation": "0000-0003-3503-9872", "schema_type": "xyzri:ORCID" } ], "schema_type": "xyzri:XYZPerson", "pid": "xyzrins:persons/stephan-heunis", "family_name": "Heunis", "given_name": "Stephan", "honorific_name_prefix": "Dr" } ``` </details>
Author
Member

Thanks - I realized I did actually make this change locally but didn't push it, so will do that with the next round of updates.

Thanks - I realized I did actually make this change locally but didn't push it, so will do that with the next round of updates.
@ -33,3 +67,3 @@
| qrg filter-linked-pid --api-url https://pool.psychoinformatics.de/api public xyzrsens:projects/4b434ab4-929e-4d64-97e0-ff334c6a6ff2 associated_with \
| qrg inline-records --api-url https://pool.psychoinformatics.de/api -c public -p delegated_by -p delegated_by::roles -p identifiers::creator \
| qrg render-record page_templates/person.md.j2 'content/{__pid_curie_reference}/_index.md'
| uv run person.py - ${{ steps.websitecheckout.outputs.path }}/content/persons
Member

At the moment, running person.py from https://hub.trr379.de/q02/pool-publication-page/src/branch/main/person.py doesn't do anything (not even overwriting existing person pages). There is a check whether the PID starts with a trr-related prefix, and only if there is, a record is written. The person records in the Psyinf pool use xyzrins as a prefix.

For now, to get the workflow to run again, I believe we should keep the previous

qrg render-record page_templates/person.md.j2 'content/{__pid_curie_reference}/_index.md'

This works out of the box. When I let this run locally, it creates person records under their new name:

adina@muninn in ~/repos/websites/www-from-model on git:contributors
❱ git st
On branch contributors
Your branch is up to date with 'origin/contributors'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	content/persons/alex-waite/
	content/persons/christian-moench/
	content/persons/falko-kaule/
	content/persons/jenna-swarthout-goddard/
	content/persons/laura-waite/
	content/persons/michael-hanke/
	content/persons/michal-szczepanik/
	content/persons/stephan-heunis/

This is good and expected, we should remove the old records with non-human-readable pids.

At the moment, running ``person.py`` from https://hub.trr379.de/q02/pool-publication-page/src/branch/main/person.py doesn't do anything (not even overwriting existing person pages). There is a check whether the PID starts with a trr-related prefix, and only if there is, a record is written. The person records in the Psyinf pool use ``xyzrins`` as a prefix. For now, to get the workflow to run again, I believe we should keep the previous ``` qrg render-record page_templates/person.md.j2 'content/{__pid_curie_reference}/_index.md' ``` This works out of the box. When I let this run locally, it creates person records under their new name: ``` adina@muninn in ~/repos/websites/www-from-model on git:contributors ❱ git st On branch contributors Your branch is up to date with 'origin/contributors'. Untracked files: (use "git add <file>..." to include in what will be committed) content/persons/alex-waite/ content/persons/christian-moench/ content/persons/falko-kaule/ content/persons/jenna-swarthout-goddard/ content/persons/laura-waite/ content/persons/michael-hanke/ content/persons/michal-szczepanik/ content/persons/stephan-heunis/ ``` This is good and expected, we should remove the old records with non-human-readable pids.
Member

At the moment, running person.py from https://hub.trr379.de/q02/pool-publication-page/src/branch/main/person.py doesn't do anything (not even overwriting existing person pages). There is a check whether the PID starts with a trr-related prefix, and only if there is, a record is written. The person records in the Psyinf pool use xyzrins as a prefix.

I agree with this analysis. The prefix should become configurable in the TRR tool (likely not the only thing that needs to change).

More broadly speaking, filtering by prefix in TRR is a combination of assumptions and convenience; these assumptions can be challenged:

  • using trroot: namespace in the PID currently means that a page is desired and defines the location of the page within the website (different namespace could be used for e.g. external contributors who do not get a page on the TRR website but can still be referenced in the pool)
  • we could instead rely on the relationship with a given project; in this workflow here we already filter the Person records for being associated with the Psychoinformatics project; for TRR people are typically associated with a subproject (that information is also being incorporated, but it is easier to filter by PID)
> At the moment, running person.py from https://hub.trr379.de/q02/pool-publication-page/src/branch/main/person.py doesn't do anything (not even overwriting existing person pages). There is a check whether the PID starts with a trr-related prefix, and only if there is, a record is written. The person records in the Psyinf pool use xyzrins as a prefix. I agree with this analysis. The prefix should become configurable in the TRR tool (likely not the only thing that needs to change). More broadly speaking, filtering by prefix in TRR is a combination of assumptions and convenience; these assumptions can be challenged: - using trroot: namespace in the PID currently means that a page is desired and defines the location of the page within the website (different namespace could be used for e.g. external contributors who do not get a page on the TRR website but can still be referenced in the pool) - we could instead rely on the relationship with a given project; in this workflow here we already filter the Person records for being associated with the Psychoinformatics project; for TRR people are typically associated with a subproject (that information is also being incorporated, but it is easier to filter by PID)
@ -15,0 +28,4 @@
with:
repository: https://hub.trr379.de/q02/pool-publication-page
get_file_content: false
path: code
Member

I realized while testing the workflow that there already is a code directory in this repository, and cloning of pool-publication-page fails cloning into code. But as we are not yet using the scripts from the repository, I will comment out this step.

I realized while testing the workflow that there already is a code directory in this repository, and cloning of ``pool-publication-page`` fails cloning into ``code``. But as we are not yet using the scripts from the repository, I will comment out this step.
adina force-pushed contributors from abd2392acc
Some checks failed
Update person pages / create_pages (push) Failing after 23s
to 93cff6be97
Some checks failed
Update person pages / create_pages (push) Failing after 23s
2026-02-20 07:17:23 +00:00
Compare
@ -31,3 +57,2 @@
run: |
read-pages https://pool.psychoinformatics.de/api/public/records/p/XYZPerson \
| qrg filter-linked-pid --api-url https://pool.psychoinformatics.de/api public xyzrsens:projects/4b434ab4-929e-4d64-97e0-ff334c6a6ff2 associated_with \
uv sync --locked
Member

what is the reason for running uv synced --locked here? I see an error: No `pyproject.toml` found in current directory or any parent directory

what is the reason for running ``uv synced --locked`` here? I see an ``error: No `pyproject.toml` found in current directory or any parent directory``
Member

I have removed this piece

I have removed this piece
adina force-pushed contributors from a6d26c5967
All checks were successful
Update person pages / create_pages (push) Successful in 27s
to 3ce1ebaa89 2026-02-20 07:25:52 +00:00
Compare
adina changed title from WIP: update person page generation workflow to adopt TRR workflow to update person page generation workflow to adopt TRR workflow 2026-02-20 07:26:04 +00:00
Member

This PR is LGTM from my point of view. It has already ran once and committed updated person records under their new pid - this is why the PR now also removes person records filed under the old pid.

One thing I noted is that there is no token involved. It is my understanding that all content from the pool is public and a token is thus not needed, but if we ever need to fetch protected data, a token should be added.

This PR is LGTM from my point of view. It has already ran once and committed updated person records under their new pid - this is why the PR now also removes person records filed under the old pid. One thing I noted is that there is no token involved. It is my understanding that all content from the pool is public and a token is thus not needed, but if we ever need to fetch protected data, a token should be added.
@ -16,3 +36,1 @@
uses: astral-sh/setup-uv@v6
- name: Install qrg suite
run: uv tool install https://hub.psychoinformatics.de/datalink/query-rse-group.git --with-executables-from dump-things-pyclient
run: curl -LsSf https://astral.sh/uv/install.sh | sh
Owner

I think using the install action was fine.

I think using the install action was fine.
Member

brought it back

brought it back
Owner

The workflow uses a TRR379-related email. This should change. Maybe use the domain that forgejo already knows.

The workflow uses a TRR379-related email. This should change. Maybe use the domain that forgejo already knows.
adina force-pushed contributors from f31d0dc114
Some checks failed
Update person pages / create_pages (push) Failing after 28s
to 6825d0078d
Some checks failed
Update person pages / create_pages (push) Failing after 28s
2026-02-20 08:05:56 +00:00
Compare
adina force-pushed contributors from 3084680cb2
Some checks failed
Update person pages / create_pages (push) Failing after 28s
to dff4780754
Some checks failed
Update person pages / create_pages (push) Failing after 28s
2026-02-20 08:17:21 +00:00
Compare
adina force-pushed contributors from dff4780754
Some checks failed
Update person pages / create_pages (push) Failing after 28s
to 82ff5dee01
All checks were successful
Update person pages / create_pages (push) Successful in 28s
2026-02-20 08:19:28 +00:00
Compare
adina force-pushed contributors from 82ff5dee01
All checks were successful
Update person pages / create_pages (push) Successful in 28s
to bc6fbc1fb5
All checks were successful
Update person pages / create_pages (push) Successful in 28s
2026-02-20 08:20:07 +00:00
Compare
adina force-pushed contributors from bc6fbc1fb5
All checks were successful
Update person pages / create_pages (push) Successful in 28s
to 66a731a7b9 2026-02-20 08:20:44 +00:00
Compare
adina merged commit 7304378d12 into main 2026-02-20 08:21:17 +00:00
adina deleted branch contributors 2026-02-20 08:21:26 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
www/www-from-model!5
No description provided.