{"action":"created","issue":{"url":"https://api.github.com/repos/ontodev/robot/issues/24","repository_url":"https://api.github.com/repos/ontodev/robot","labels_url":"https://api.github.com/repos/ontodev/robot/issues/24/labels{/name}","comments_url":"https://api.github.com/repos/ontodev/robot/issues/24/comments","events_url":"https://api.github.com/repos/ontodev/robot/issues/24/events","html_url":"https://github.com/ontodev/robot/issues/24","id":73998139,"number":24,"title":"Implement query operation","user":{"login":"jamesaoverton","id":292409,"avatar_url":"https://avatars.githubusercontent.com/u/292409?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesaoverton","html_url":"https://github.com/jamesaoverton","followers_url":"https://api.github.com/users/jamesaoverton/followers","following_url":"https://api.github.com/users/jamesaoverton/following{/other_user}","gists_url":"https://api.github.com/users/jamesaoverton/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesaoverton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesaoverton/subscriptions","organizations_url":"https://api.github.com/users/jamesaoverton/orgs","repos_url":"https://api.github.com/users/jamesaoverton/repos","events_url":"https://api.github.com/users/jamesaoverton/events{/privacy}","received_events_url":"https://api.github.com/users/jamesaoverton/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"jamesaoverton","id":292409,"avatar_url":"https://avatars.githubusercontent.com/u/292409?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesaoverton","html_url":"https://github.com/jamesaoverton","followers_url":"https://api.github.com/users/jamesaoverton/followers","following_url":"https://api.github.com/users/jamesaoverton/following{/other_user}","gists_url":"https://api.github.com/users/jamesaoverton/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesaoverton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesaoverton/subscriptions","organizations_url":"https://api.github.com/users/jamesaoverton/orgs","repos_url":"https://api.github.com/users/jamesaoverton/repos","events_url":"https://api.github.com/users/jamesaoverton/events{/privacy}","received_events_url":"https://api.github.com/users/jamesaoverton/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/ontodev/robot/milestones/1","html_url":"https://github.com/ontodev/robot/milestones/OBI","labels_url":"https://api.github.com/repos/ontodev/robot/milestones/1/labels","id":1104964,"number":1,"title":"OBI","description":"ROBOT should be able to replace the current custom build tools for the Ontology for Biomedical Investigations: https://sourceforge.net/p/obi/code/HEAD/tree/trunk/src/tools/build/","creator":{"login":"jamesaoverton","id":292409,"avatar_url":"https://avatars.githubusercontent.com/u/292409?v=3","gravatar_id":"","url":"https://api.github.com/users/jamesaoverton","html_url":"https://github.com/jamesaoverton","followers_url":"https://api.github.com/users/jamesaoverton/followers","following_url":"https://api.github.com/users/jamesaoverton/following{/other_user}","gists_url":"https://api.github.com/users/jamesaoverton/gists{/gist_id}","starred_url":"https://api.github.com/users/jamesaoverton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jamesaoverton/subscriptions","organizations_url":"https://api.github.com/users/jamesaoverton/orgs","repos_url":"https://api.github.com/users/jamesaoverton/repos","events_url":"https://api.github.com/users/jamesaoverton/events{/privacy}","received_events_url":"https://api.github.com/users/jamesaoverton/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":3,"state":"open","created_at":"2015-05-11T14:53:11Z","updated_at":"2016-05-20T01:33:23Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2015-05-07T14:01:03Z","updated_at":"2016-06-14T19:57:23Z","closed_at":null,"body":"The query operation should allow arbitrary SPARQL select and update queries to be run against the ontology, saving the results to files. I'm most familiar with [Apache Jena](http://jena.apache.org), so I plan to use that. Things will be simpler if we load the ontology into the default RDF graph, and don't use named graphs.\r\n\r\nWe may want to run multiple queries, but we only want to load the ontology into an RDF graph once. The current chaining implementation passes state as an OWLOntology, and I'd like to stick with that simple solution as long as possible. So I propose this command-line interface:\r\n\r\n- `--select INPUT OUTPUT` (`-s`) take an input SPARQL file, run the select query, and save to a file; the output format will be determined by the file extension\r\n- `--update INPUT` (`-u`) take an input SPARQL file, run the update query\r\n\r\nYou can specify these options multiple times. Apache CLI should keep them in the right order. When all queries have been run, we'll load the default RDF graph into an ontology for further processing. Suggestions for the best way to do this are appreciated!\r\n\r\nJena supports these output file formats, and we'll use these file extensions:\r\n\r\n- text `.txt`\r\n- CSV `.csv`\r\n- TSV `.tsv`\r\n- XML `.xml`\r\n- JSON `.js` or `.json`\r\n\r\nNote that the text format is *close* to some of the table formats accepted by various Markdown parsers: http://pandoc.org/README.html#tables\r\n\r\nExample:\r\n\r\n    robot query --input example.owl \\\r\n      --select query1.rq result1.csv \\\r\n      --select query2.rq result2.csv \\\r\n      --update update1.rq \\\r\n      --update update2.rq \\\r\n      --output updated.owl"},"comment":{"url":"https://api.github.com/repos/ontodev/robot/issues/comments/225997614","html_url":"https://github.com/ontodev/robot/issues/24#issuecomment-225997614","issue_url":"https://api.github.com/repos/ontodev/robot/issues/24","id":225997614,"user":{"login":"cmungall","id":50745,"avatar_url":"https://avatars.githubusercontent.com/u/50745?v=3","gravatar_id":"","url":"https://api.github.com/users/cmungall","html_url":"https://github.com/cmungall","followers_url":"https://api.github.com/users/cmungall/followers","following_url":"https://api.github.com/users/cmungall/following{/other_user}","gists_url":"https://api.github.com/users/cmungall/gists{/gist_id}","starred_url":"https://api.github.com/users/cmungall/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmungall/subscriptions","organizations_url":"https://api.github.com/users/cmungall/orgs","repos_url":"https://api.github.com/users/cmungall/repos","events_url":"https://api.github.com/users/cmungall/events{/privacy}","received_events_url":"https://api.github.com/users/cmungall/received_events","type":"User","site_admin":false},"created_at":"2016-06-14T19:57:23Z","updated_at":"2016-06-14T19:57:23Z","body":"Hmm, I'd like to avoid the need for another repo\r\n\r\nWe use code.berkeleybop.org for OWLTools, but we really messed people up when that was down for a few days.\r\n\r\nI'm torn between having ROBOT be a simple one-stop-shop for their release pipelines vs keeping things more modular. Maybe we should start with a standalone tool? "}}
{"actor":{"display_login":"cmungall"}}