{"id":30201516,"url":"https://github.com/esipfed/provisium","last_synced_at":"2025-08-13T10:50:38.341Z","repository":{"id":72788884,"uuid":"108038167","full_name":"ESIPFed/provisium","owner":"ESIPFed","description":"Implementation of the W3C PROV-AQ note","archived":false,"fork":false,"pushed_at":"2019-03-05T10:57:41.000Z","size":50944,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-03-18T07:00:50.823Z","etag":null,"topics":["esip-lab"],"latest_commit_sha":null,"homepage":"https://provisium.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ESIPFed.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,"governance":null}},"created_at":"2017-10-23T20:52:12.000Z","updated_at":"2019-03-05T10:57:42.000Z","dependencies_parsed_at":"2023-09-22T08:21:38.267Z","dependency_job_id":"63dad343-2b5a-48d3-9c0c-11d9202796a4","html_url":"https://github.com/ESIPFed/provisium","commit_stats":{"total_commits":49,"total_committers":3,"mean_commits":"16.333333333333332","dds":0.5102040816326531,"last_synced_commit":"d5f81304644f0668e176a25ea38055b600891eb3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ESIPFed/provisium","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ESIPFed%2Fprovisium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ESIPFed%2Fprovisium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ESIPFed%2Fprovisium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ESIPFed%2Fprovisium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ESIPFed","download_url":"https://codeload.github.com/ESIPFed/provisium/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ESIPFed%2Fprovisium/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270228429,"owners_count":24548817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"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":["esip-lab"],"created_at":"2025-08-13T10:50:23.018Z","updated_at":"2025-08-13T10:50:38.300Z","avatar_url":"https://github.com/ESIPFed.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Provisium (THROUGHPUT revision)\n\n## Update\nThis a fork of the Provisium code started under \nESIP (https://github.com/ESIPFed/provisium).  It is \ndramatically different to apply lessons learned.  It has\nbeen updated as part of EarthCube THROUGHPUT.\n\nThe plan will be to merge these changes back into the ESIP \nversion to synchronize the two code bases back into one.  \n\nThe search and a few things like a resource display need to \nbe implemented still.  All the plumbing is there though, just need \ntime to flesh out some templates and structures.  \n\n## Running\nProvisium has two run time dependencies.  These can be launched\nvia a Docker compose file locate in deployments. Later this package \nwill build to a docker file and one compose file will bring up the \nentire service.     \n\nThe package currently builds to a docker container now.   We need \nto push that out and modify the compose file to reflect that.  \n\nYou also need to set three environment variables for this code.\nYou can use something like the script setenvs.sh in the scripts\ndirectory to do this.  These are the settings for the Minio \nsystem and the location of your SPARQL endpoint.  \n\nOnce set up a simple\n\n```\ngo run cmd/provisium/main.go \n```\n\nwill get you started.  I need to get some more details here though.\nThis is rather sketch on how to get started.  \n\n### Dependency: Jena/Fuseki (Triplestore)\nAn instance of Jena Fuseki in Docker that can be used for Provisium.\nNote any SPARQL 1.1 (including update) compliant triples store should \nwork.\n\n* https://cloud.docker.com/u/fcore/repository/docker/fcore/jena\n* https://www.w3.org/TR/sparql11-update/\n* https://www.w3.org/TR/sparql11-protocol/\n\n### Dependency: Minio/S3 (Objectstore)\nAn instance of Minio to supply S3 API compliant object store.  \nNote any S3 compliant system such as OpenStack Swift or even \nAWS S3 itself will work.\n\n* https://hub.docker.com/r/minio/minio\n* https://wiki.openstack.org/wiki/Swift\n* https://aws.amazon.com/s3/\n\n## Notes\n\n### Points\n\n* All submissions come in and get put in an object store (minio)\nwith basic metadata about them (requester info) and the package\n* RDF packages are validated prior to archiving.  Once in the object\nstore, they move into the graph (Jena)\n* Non-RDF package are validated prior to archiving.  These are likely\njust URL lists as defined by the PROV-AQ spec.  \n* Non-RDF input is also stored in a separate named graph with sufficient triples\nto allow query across the default graph to work for both types of\nsubmissions.\n\n### Known Issues\n\n\n```\nRequest \"hosting\" a prov record  (require RDF for this one) (ttl, nt, json-ld)\nLoad to graph with a unique QUAD (what if it comes with quads?)\nDon't allow quads  :)   screw your graph!  (can't allow JSON-LD then...)\n\n\nSection 2 Access Section and 3  Locating Prov records\ndirect access with 303 redirection\nIn this case doc/id is really a page about the hosted PROVURI\nit could give examples of link or query header or RDF graph\nalso the pingback ID\n\nSection 4  query service  (direct and SPARQL)\nNOTE this needs a ?q= or more and we need to support SPARQL too\n\nSection 5 pingback (URI list, or has query service or RDF)\nDue to the nature of pingback we can simply hold the POST in an object store.\nIf we did accept RDF, we could place that in a graph, but it would be incomplete and care\nwould need to be taken to include the other info.   That pingback bundle could be\nconverted to RDF but we need to ensure a singable or deterministic serialization\ntext/uri-list (which is doable)\n\nThough not part of the Note, a GET service can be called to present past pingbacks\nPotentially, this might be restricted to the authors of a resource, though here no\nauthentication or authorization is imposed.  Simple OpenID for ID with some auth policy\ncould be built in.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesipfed%2Fprovisium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesipfed%2Fprovisium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesipfed%2Fprovisium/lists"}