Components ========== This is a rough sketch of the involved components of this project. Look at `componets.png` for a little illustration of the involved components. `Collector` ----------- * Given some source of ULO/RDF files (Git repository, HTTP server, local file system), the `Collector` processes/cleans up these files and forwards them to the `Importer`. * Implement core functionality as library with command line and web front end. * Can be implemented in any language. I'll probably pick Go as I'm pretty productive in it. `Harvester` ----------- * Low Priority. Just an idea I had. But it might go against the idea of using MathHub as a centralized place for data. * Converts arbitrary source data (e.g. Coq) to ULO/RDF. * The generated RDF is *volatile*, it does not need to be stored to any repository. Rather it is directly forwarded to a `Collector`. * I'm not sure if this makes any sense actually as it might be difficult to track changes and so on. * Can be implemented in any language that makes sense for the given source format. `Importer` ---------- * Essentially a wrapper around a database. Written in the language that best fits the database. In particular, GraphDB only has good Java/JVM programming support. * Accessed w/ a simple file upload API. You upload a file and get a path returned that shows you the current state of the import. `Endpoint` ---------- * Again, like the `Importer`, this is a wrapper around the database. * Might be optional if applications accesses the database directly. Certainly when it comes to querying I will not introduce a custom API as querying is a problem way way more complicated than a simple import.