{"id":13469898,"url":"https://github.com/annotation/text-fabric","last_synced_at":"2026-01-16T11:20:15.339Z","repository":{"id":57474645,"uuid":"73742167","full_name":"annotation/text-fabric","owner":"annotation","description":"File format, model, API, and apps for manipulating text and its annotated features","archived":false,"fork":false,"pushed_at":"2026-01-15T12:07:39.000Z","size":1842889,"stargazers_count":75,"open_issues_count":1,"forks_count":26,"subscribers_count":10,"default_branch":"master","last_synced_at":"2026-01-15T16:45:08.457Z","etag":null,"topics":["annotation","bhsa","cuneiform","etcbc","etcbc-data","greek","greek-bible","hebrew","hebrew-bible","sanskrit-language","search-algorithm","search-engine","sumerian","text-fabric"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/annotation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2016-11-14T20:00:34.000Z","updated_at":"2026-01-15T12:07:41.000Z","dependencies_parsed_at":"2025-04-17T19:21:27.513Z","dependency_job_id":"7bb103ef-ee36-4534-9be1-b65551d9ef79","html_url":"https://github.com/annotation/text-fabric","commit_stats":{"total_commits":795,"total_committers":9,"mean_commits":88.33333333333333,"dds":0.2666666666666667,"last_synced_commit":"032a9079f5468bfcac04aa9be26a85c125f09dfd"},"previous_names":[],"tags_count":478,"template":false,"template_full_name":null,"purl":"pkg:github/annotation/text-fabric","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/annotation%2Ftext-fabric","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/annotation%2Ftext-fabric/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/annotation%2Ftext-fabric/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/annotation%2Ftext-fabric/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/annotation","download_url":"https://codeload.github.com/annotation/text-fabric/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/annotation%2Ftext-fabric/sbom","scorecard":{"id":197582,"data":{"date":"2025-08-11","repo":{"name":"github.com/annotation/text-fabric","commit":"84d1a8d4a89d011d0121be06cf7cfc9fb376b469"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":5,"reason":"7 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"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":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"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":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","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":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"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":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v10.2.4 not signed: https://api.github.com/repos/annotation/text-fabric/releases/76806561","Warn: release artifact v10.2.4 does not have provenance: https://api.github.com/repos/annotation/text-fabric/releases/76806561"],"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1: pin your Docker image by updating python:3.11 to python:3.11@sha256:ef1a087ab1b49fd2789169e483bacead126dbc8d1cf4c91eefb656b1a5dd5edc","Info:   0 out of   1 containerImage dependencies pinned"],"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"}}]},"last_synced_at":"2025-08-16T22:06:39.546Z","repository_id":57474645,"created_at":"2025-08-16T22:06:39.546Z","updated_at":"2025-08-16T22:06:39.546Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478202,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["annotation","bhsa","cuneiform","etcbc","etcbc-data","greek","greek-bible","hebrew","hebrew-bible","sanskrit-language","search-algorithm","search-engine","sumerian","text-fabric"],"created_at":"2024-07-31T16:00:18.487Z","updated_at":"2026-01-16T11:20:15.327Z","avatar_url":"https://github.com/annotation.png","language":"Jupyter Notebook","readme":"\u003cimg src=\"/tf/docs/images/tf-small.png\" align=\"left\"/\u003e\n\n# Text-Fabric\n\n[![SWH](https://archive.softwareheritage.org/badge/origin/https://github.com/annotation/text-fabric/)](https://archive.softwareheritage.org/browse/origin/https://github.com/annotation/text-fabric/)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.1008899.svg)](https://doi.org/10.5281/zenodo.592193)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/2592/badge)](https://bestpractices.coreinfrastructure.org/projects/2592)\n[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active)\n\n---\n\n\u003e Everything about us, everything around us, everything we know and can know of\n\u003e is composed ultimately of patterns of nothing;\n\u003e that’s the bottom line, the final truth.\n\u003e So where we find we have any control over those patterns,\n\u003e why not make the most elegant ones, the most enjoyable and good ones,\n\u003e in our own terms?\n\u003e\n\u003e -- **Iain M. Banks**.\n[Consider Phlebas](https://read.amazon.com/kp/kshare?asin=B002TXZRQI\u0026id=NpPGzf_HT5aADabyiDDSIQ\u0026reshareId=RZ91SGMZJPWK9S1Y4EZX\u0026reshareChannel=system):\nA Culture Novel (Culture series)\n\n---\n\n\u003e ... of days that are no more,\n\u003e but which run on like a warp\n\u003e to which the future weaves its weft.\n\u003e\n\u003e -- **Alastair McIntosh**.\n[Poacher's Pilgrimage](https://www.waterstones.com/book/poachers-pilgrimage/alastair-mcintosh/9781780278131):\nIntroduction to a Gaelic evening prayer\n\n---\n\nA corpus of ancient texts and (linguistic) annotations represents a large body of knowledge.\nText-Fabric makes that knowledge accessible to programmers and non-programmers.\n\nText-Fabric is machinery for processing such corpora as annotated graphs.\nIt treats corpora and annotations as data, much like big tables, but without\nloosing the rich structure of text, such as embedding and multiple representations.\nIt deals with text in a state where all markup is gone, but where the complete logical\nstructure still sits in the data.\n\nAll about Text-Fabric is in the\n[docs](https://annotation.github.io/text-fabric/tf).\n\nSee also\n[text-fabric-factory](https://github.com/annotation/text-fabric-factory)\nfor programs to convert other formats to TF.\n\nWant to contribute?\n\nStart with the [contribution notes](codestyle/contributing.md).\n\nFound a vulnerability? Please read the [security note](SECURITY.md).\n\n# Author\n\n[Dirk Roorda](https://github.com/dirkroorda)\n\n---\n\n**This repository is being archived continuously by the \n[Software Heritage Archive](https://archive.softwareheritage.org).\nIf you want to cite snippets of the code of this repository, the Software Archive\noffers an easy and elegant way to do so.\nAs an example, here I quote the \n[*stitching* algorithm](https://archive.softwareheritage.org/swh:1:cnt:6169c074089ddc8a0e048cb67e1fec57857ef54d;lines=3224-3270/),\nby means of which Text-Fabric Search collects the solutions of a\n[search template](https://annotation.github.io/text-fabric/tf/about/use.html).\nThe quote refers directly to specific lines of code, deeply buried in\na Python file within a particular version of Text-Fabric.**\n","funding_links":[],"categories":["Formats"],"sub_categories":["Text-Fabric"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fannotation%2Ftext-fabric","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fannotation%2Ftext-fabric","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fannotation%2Ftext-fabric/lists"}