In the case of inference then yes there is also an upfront cost of computing the inferences. Once computed these are typically cached (though this depends on the rule set) and any changes to the data might invalidate that cache. You can call prepare() on the InfModel to incur the initial computation cost separately, otherwise the initial computation cost is incurred by whatever operation first accesses the InfModel. And as your email shows subsequent calls don't incur that cost and are much faster.
I don't disagree, but I think there's a problem of scale here: even with a cold JVM and a not-too-efficient reasoner, it seems totally unreasonable that a reasoner would take 60 full seconds (that's what Marc's test is taking on my machine) to run inference on a very small dataset already loaded in memory... 60s for such a small operation really seems to indicate a bug to me. But maybe it doesn't...
Thank you, -- Elie
