Yep that is perfectly possible. Just take a look at the Core.retrieve... functions
Yes,
IDataTable table = Core.retrieveOQLDataTable(IContext context, java.lang.String oqlQuery);
or other variants, see API doc