The schema optimizer assumes that the whole schema is available. An example: The schema optimizer assumes that an instance
will always have a corresponding schema information for "Person":
When you create ontologies with OntoStudio then it is always safe to turn on the schema optimizer. When you manually edit ontologies you have to check if you have the correct schema information in your ontology before activating the schema optimizer.
If you have a rule:
p(?X,?V) :- ?X:"Person" AND ?X["hasName"->?V].
If the "hasName" only occurs for the concept "Person" then we just change the rule to
p(?X,?V) :- ?X["hasName"->?V].
This might improve performance dramatically, especially if you have many instances of "Person".
But it is possible that no schema information exists. In this example using the schema optimizer will produce wrong results if the
is missing. Using the Schema Optimizer means enormous time-savings in an integration scenario.
NOTE: Because of performance issues, do not use the schema optimizer and the frame optimizer at the same time. When ontology imports are used then we recommend using the MergeImports OntoConfig option. MergeImports cannot be used in an OntoStudio context.