{"id":37022696,"url":"https://github.com/phenopackets/phenopacket-reference-implementation","last_synced_at":"2026-01-14T02:42:52.920Z","repository":{"id":57739821,"uuid":"52059126","full_name":"phenopackets/phenopacket-reference-implementation","owner":"phenopackets","description":"Reference java implementation for phenopackets","archived":true,"fork":false,"pushed_at":"2018-09-25T08:44:27.000Z","size":693,"stargazers_count":6,"open_issues_count":23,"forks_count":9,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-07-04T12:33:34.670Z","etag":null,"topics":["disease","json","monarchinitiative","phenopackets","phenotypes","pxf","yaml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phenopackets.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-19T03:38:54.000Z","updated_at":"2023-05-01T15:29:54.000Z","dependencies_parsed_at":"2022-09-01T11:52:10.018Z","dependency_job_id":null,"html_url":"https://github.com/phenopackets/phenopacket-reference-implementation","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/phenopackets/phenopacket-reference-implementation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phenopackets%2Fphenopacket-reference-implementation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phenopackets%2Fphenopacket-reference-implementation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phenopackets%2Fphenopacket-reference-implementation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phenopackets%2Fphenopacket-reference-implementation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phenopackets","download_url":"https://codeload.github.com/phenopackets/phenopacket-reference-implementation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phenopackets%2Fphenopacket-reference-implementation/sbom","scorecard":{"id":730928,"data":{"date":"2025-08-11","repo":{"name":"github.com/phenopackets/phenopacket-reference-implementation","commit":"de5447f351b774d7d79314f198cc943ed637c011"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.4,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":5,"reason":"Found 8/16 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENCE.txt:0","Info: FSF or OSI recognized license: BSD 3-Clause \"New\" or \"Revised\" License: LICENCE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"83 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-h46c-h94j-95f3","Warn: Project is vulnerable to: GHSA-wf8f-6423-gfxg","Warn: Project is vulnerable to: GHSA-288c-cq4h-88gq","Warn: Project is vulnerable to: GHSA-4gq5-ch57-c2mg","Warn: Project is vulnerable to: GHSA-4w82-r329-3q67","Warn: Project is vulnerable to: GHSA-57j2-w4cx-62h2","Warn: Project is vulnerable to: GHSA-5949-rw7g-wx7w","Warn: Project is vulnerable to: GHSA-5r5r-6hpj-8gg9","Warn: Project is vulnerable to: GHSA-5ww9-j83m-q7qx","Warn: Project is vulnerable to: GHSA-645p-88qh-w398","Warn: Project is vulnerable to: GHSA-6fpp-rgj9-8rwc","Warn: Project is vulnerable to: GHSA-6wqp-v4v6-c87c","Warn: Project is vulnerable to: GHSA-85cw-hj65-qqv9","Warn: Project is vulnerable to: GHSA-89qr-369f-5m5x","Warn: Project is vulnerable to: GHSA-8c4j-34r4-xr8g","Warn: Project is vulnerable to: GHSA-8w26-6f25-cm9x","Warn: Project is vulnerable to: GHSA-9gph-22xh-8x98","Warn: Project is vulnerable to: GHSA-9m6f-7xcq-8vf8","Warn: Project is vulnerable to: GHSA-9mxf-g3x6-wv74","Warn: Project is vulnerable to: GHSA-c8hm-7hpq-7jhg","Warn: Project is vulnerable to: GHSA-cf6r-3wgc-h863","Warn: Project is vulnerable to: GHSA-cggj-fvv3-cqwv","Warn: Project is vulnerable to: GHSA-cjjf-94ff-43w7","Warn: Project is vulnerable to: GHSA-cmfg-87vq-g5g4","Warn: Project is vulnerable to: GHSA-cvm9-fjm9-3572","Warn: Project is vulnerable to: GHSA-f3j5-rmmp-3fc5","Warn: Project is vulnerable to: GHSA-f9hv-mg5h-xcw9","Warn: Project is vulnerable to: GHSA-f9xh-2qgp-cq57","Warn: Project is vulnerable to: GHSA-fmmc-742q-jg75","Warn: Project is vulnerable to: GHSA-fqwf-pjwf-7vqv","Warn: Project is vulnerable to: GHSA-gjmw-vf9h-g25v","Warn: Project is vulnerable to: GHSA-gwp4-hfv6-p7hw","Warn: Project is vulnerable to: GHSA-gww7-p5w4-wrfv","Warn: Project is vulnerable to: GHSA-h3cw-g4mq-c5x2","Warn: Project is vulnerable to: GHSA-h592-38cm-4ggp","Warn: Project is vulnerable to: GHSA-h822-r4r5-v8jg","Warn: Project is vulnerable to: GHSA-jjjh-jjxp-wpff","Warn: Project is vulnerable to: GHSA-m6x4-97wx-4q27","Warn: Project is vulnerable to: GHSA-mph4-vhrx-mv67","Warn: Project is vulnerable to: GHSA-mx7p-6679-8g3q","Warn: Project is vulnerable to: GHSA-mx9v-gmh4-mgqw","Warn: Project is vulnerable to: GHSA-p43x-xfjf-5jhr","Warn: Project is vulnerable to: GHSA-q93h-jc49-78gg","Warn: Project is vulnerable to: GHSA-qjw2-hr98-qgfh","Warn: Project is vulnerable to: GHSA-qr7j-h6gg-jmgc","Warn: Project is vulnerable to: GHSA-qxxx-2pp7-5hmx","Warn: Project is vulnerable to: GHSA-r3gr-cxrf-hg25","Warn: Project is vulnerable to: GHSA-r695-7vr9-jgc2","Warn: Project is vulnerable to: GHSA-rfx6-vp9g-rh7v","Warn: Project is vulnerable to: GHSA-rgv9-q543-rqg4","Warn: Project is vulnerable to: GHSA-rpr3-cw39-3pxh","Warn: Project is vulnerable to: GHSA-v585-23hc-c647","Warn: Project is vulnerable to: GHSA-vfqx-33qm-g869","Warn: Project is vulnerable to: GHSA-w3f4-3q6j-rh82","Warn: Project is vulnerable to: GHSA-wh8g-3j2c-rqj5","Warn: Project is vulnerable to: GHSA-x2w5-5m2g-7h5m","Warn: Project is vulnerable to: GHSA-5mg8-w23w-74h3","Warn: Project is vulnerable to: GHSA-7g45-4rm6-3mm3","Warn: Project is vulnerable to: GHSA-mvr2-9pj6-7w5j","Warn: Project is vulnerable to: GHSA-78wr-2p64-hpwj","Warn: Project is vulnerable to: GHSA-gwrp-pvrq-jmwv","Warn: Project is vulnerable to: GHSA-j288-q9x7-2f5v","Warn: Project is vulnerable to: GHSA-2qrg-x229-3v8q","Warn: Project is vulnerable to: GHSA-65fg-84f6-3jq3","Warn: Project is vulnerable to: GHSA-f7vh-qwp3-x37m","Warn: Project is vulnerable to: GHSA-fp5r-v3w9-4333","Warn: Project is vulnerable to: GHSA-w9p3-5cr8-m3jj","Warn: Project is vulnerable to: GHSA-7r82-7xv7-xcpj","Warn: Project is vulnerable to: GHSA-7rp6-w7mg-h8rw","Warn: Project is vulnerable to: GHSA-rj7p-rfgp-852x","Warn: Project is vulnerable to: GHSA-wjxj-f8rg-99wx","Warn: Project is vulnerable to: GHSA-3mc7-4q67-w48m","Warn: Project is vulnerable to: GHSA-98wm-3w3q-mw94","Warn: Project is vulnerable to: GHSA-9w3m-gqgf-c4p9","Warn: Project is vulnerable to: GHSA-c4r9-r8fh-9vj2","Warn: Project is vulnerable to: GHSA-hhhw-99gj-p3c3","Warn: Project is vulnerable to: GHSA-mjmj-j48q-9wg2","Warn: Project is vulnerable to: GHSA-rvwf-54qp-4r6v","Warn: Project is vulnerable to: GHSA-w37g-rhq8-7m4j","Warn: Project is vulnerable to: GHSA-7j4h-8wpf-rqfh","Warn: Project is vulnerable to: GHSA-h65f-jvqw-m9fj","Warn: Project is vulnerable to: GHSA-vmqm-g3vh-847m","Warn: Project is vulnerable to: GHSA-w4jq-qh47-hvjq"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T14:23:01.753Z","repository_id":57739821,"created_at":"2025-08-22T14:23:01.753Z","updated_at":"2025-08-22T14:23:01.753Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28408712,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["disease","json","monarchinitiative","phenopackets","phenotypes","pxf","yaml"],"created_at":"2026-01-14T02:42:52.292Z","updated_at":"2026-01-14T02:42:52.907Z","avatar_url":"https://github.com/phenopackets.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/phenopackets/phenopacket-reference-implementation.svg?branch=master)](https://travis-ci.org/phenopackets/phenopacket-reference-implementation)\n[![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.phenopackets/phenopackets-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.phenopackets/phenopackets-api)\n[![Javadoc](https://javadoc-emblem.rhcloud.com/doc/org.phenopackets/phenopackets-api/badge.svg)](http://www.javadoc.io/doc/org.phenopackets/phenopackets-api)\n\n## CAUTION! THIS REPO HAS BEED RETIRED!\n\nThis initial implementation has now been archived - please refer to the [phenopacket-schema](https://github.com/phenopackets/phenopacket-schema) repository for the current implementation.\n\n# Phenopackets/PXF Reference Implementation\n\nThis project provides a reference java implementation for the Phenotype eXchange Format (PXF). Jackson annotations are \nused to describe the mapping to the JSON serialization of PXF. We are also experimenting with generating the JSON Schema \nfrom the reference implementation.\n\nSee [phenopacket-format repo](https://github.com/phenopackets/phenopacket-format) and the [src/test/resources](https://github.com/phenopackets/phenopacket-reference-implementation/tree/master/src/test/resources) package of this repo for examples of \nthe serialised JSON and YAML formats. The phenopacket-format repo [wiki](https://github.com/phenopackets/phenopacket-format/wiki) contains more details on the project \nin general.\n\n# Including phenopackets-api in your code:\n## Maven\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eorg.phenopackets\u003c/groupId\u003e\n    \u003cartifactId\u003ephenopackets-api\u003c/artifactId\u003e\n    \u003cversion\u003e${project.version}\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n## Gradle\n```groovy\ncompile 'org.phenopackets:phenopackets-api:${project.version}'\n```\n\n## Installing a development snapshot\nWhen developing against an unreleased snapshot version of the API, you can use Maven to install it in your local m2 repository:\n\n```\nmvn -Dgpg.skip install\n```\n\n# Using it\n\n[![Javadoc](https://javadoc-emblem.rhcloud.com/doc/org.phenopackets/phenopackets-api/badge.svg)](http://www.javadoc.io/doc/org.phenopackets/phenopackets-api)\nMost of these examples have been taken from the [test](https://github.com/phenopackets/phenopacket-reference-implementation/tree/master/src/test) package.\nCheck there for more thorough examples. \n\n## UML Diagram\n\nThis diagram shows the object model:\n\n![img](images/phenopackets-uml.png)\n\n### Reading a JSON/YAML file\n```java\nPhenoPacket phenoPacket = YamlReader.readFile(\"phenopacket.yaml\");\n```\n\n### Creating a Phenopacket\nWhere possible the Builder pattern is used to provide a fluent API for building objects and create immutable instances. \nThe PhenoPacket class is immutable, although instances of classes from the org.phenopackets.api.model.condition and \norg.phenopackets.api.model.entity package are not.\n\n```java\nPhenoPacket phenoPacket = PhenoPacket.newBuilder()\n                .id(\"PXF:000001\")\n                .title(\"Empty phenopacket\")\n                .build();\n```\n### Entities\nEntities refer to things such as individuals of an organism/people, variants or diseases. For example here is a new Person:\n```java\nPerson person = new Person();\nperson.setId(\"person#1\");\nperson.setLabel(\"Joe Bloggs\");\nperson.setSex(\"M\");\n```\nhere is the disease Pfeiffer syndrome\n```java\nDisease disease = new Disease();\ndisease.setId(\"OMIM:101600\");\ndisease.setLabel(\"Pfeiffer syndrome\");\ndisease.setTypes(ImmutableList.of(\n        OntologyClass.of(\"EFO:0000508\", \"genetic disorder\")\n));\n```\n\n### Conditions\nA Condition is usually defined with a phenotype, location, time of onset/offset\nthe severity and the environment in which this condition was observed. A condition could simply be a phenotype - here is \none from the [HPO](http://human-phenotype-ontology.org), with a negative type too (i.e. this was tested for and not observed).\n```java\nPhenotype phenotype = new Phenotype();\nphenotype.setTypes(ImmutableList.of(\n        OntologyClass.of(\"HP:0000272\", \"Malar flattening\")\n));\nphenotype.setNegatedTypes(ImmutableList.of(\n        OntologyClass.of(\"HP:0001249\", \"Intellectual disability\")\n));\n```\nor an occurrence of a disease\n```java\nDiseaseOccurrence diseaseOccurrence = new DiseaseOccurrence();\nDiseaseStage stage = new DiseaseStage();\nstage.setDescription(\"Childhood onset\");\nstage.setTypes(ImmutableList.of(\n        OntologyClass.of(\"HP:0011463\", \"Childhood onset\")\n));\ndiseaseOccurrence.setStage(stage);\n```\nand a disease phenotype\n```java\nPhenotype diseasePhenotype = new Phenotype();\ndiseasePhenotype.setTypes(ImmutableList.of(\n                           OntologyClass.of(\"HP:0000272\", \"Malar flattening\"),\n                           OntologyClass.of(\"HP:0005347\", \"Cartilaginous trachea\"),\n                           OntologyClass.of(\"HP:0001249\", \"Intellectual disability\"),\n                           OntologyClass.of(\"HP:0005048\", \"Synostosis of carpal bones\"),\n                           OntologyClass.of(\"HP:0004440\", \"Coronal craniosynostosis\"),\n                           OntologyClass.of(\"HP:0001156\", \"Brachydactyly syndrome\")\n));\n```\n\nTypically an observation is accompanied with some kind of evidence attribution - here we have a journal\n```java\nEvidence journalEvidence = new Evidence();\njournalEvidence.setTypes(ImmutableList.of(OntologyClass.of(\"ECO:0000033\", \"TAS\")));\nPublication pub = new Publication.Builder().setId(\"PMID:23455423\").build();\njournalEvidence.setSupportingPublications(ImmutableList.of(pub));\n```\n\n### Associating Entities with Conditions\nEntities can have associated Conditions.Entities and Conditions are linked by an Association.\nAssociations are also immutable objects which use a Builder. \n\nHere we're going to associate the phenotype with the person from the previous examples.\n```java\nPhenotypeAssociation patientPhenotypeAssociation = new PhenotypeAssociation.Builder(phenotype)\n        .setEntity(person)\n        .addEvidence(journalEvidence)\n        .build();\n```\nand the Disease with the DiseaseAssociation\n```java\nDiseaseOccurrenceAssociation diseaseOccurrenceAssociation = new DiseaseOccurrenceAssociation.Builder(diseaseOccurrence)\n        .setEntity(disease)\n        .build();\n```\nand the typically observed phenotypes for this disease\n ```java\n PhenotypeAssociation diseasePhenotypeAssociation = new PhenotypeAssociation.Builder(diseasePhenotype)\n         .setEntity(disease)\n         .build();\n ```\n\n### Adding Entities and Associations to a PhenoPacket\nUsing the API it s now trivial to create a phenopacket containing the person and their observed phenotype. \n```java\nPhenoPacket pk = PhenoPacket.newBuilder()\n                .id(id)\n                .title(\"Patient with a phenotype\")\n                .addPerson(person)\n                .addPhenotypeAssociation(patientPhenotypeAssociation)\n                .build();\n```\nor a disease as characterised by its associated phenotypes and its time of onset\n```java\nPhenoPacket pk = PhenoPacket.newBuilder()\n                .id(id)\n                .title(\"Description of a disease its phenotype and time of onset\")\n                .addDisease(disease)\n                .addDiseaseOccurrenceAssociation(diseaseOccurrenceAssociation)\n                .addPhenotypeAssociation(diseasePhenotypeAssociation)\n                .build();\n```\n\n### Writing to JSON/YAML\n```java\nPhenoPacket phenoPacket ...\nString yamlString = YamlGenerator.render(phenoPacket);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphenopackets%2Fphenopacket-reference-implementation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphenopackets%2Fphenopacket-reference-implementation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphenopackets%2Fphenopacket-reference-implementation/lists"}