@@ -74,6 +74,7 @@ public abstract class AbstractOntologyService implements OntologyService {
7474 }
7575
7676 /* settings (applicable for next initialization) */
77+ private LanguageLevel nextLanguageLevel = LanguageLevel .FULL ;
7778 private InferenceMode nextInferenceMode = InferenceMode .TRANSITIVE ;
7879 private boolean nextProcessImports = true ;
7980 private boolean nextSearchEnabled = true ;
@@ -91,12 +92,30 @@ public abstract class AbstractOntologyService implements OntologyService {
9192 private Set <Restriction > additionalRestrictions ;
9293 private boolean isInitialized = false ;
9394 @ Nullable
95+ private LanguageLevel languageLevel = null ;
96+ @ Nullable
9497 private InferenceMode inferenceMode = null ;
9598 @ Nullable
9699 private Boolean processImports = null ;
97100 @ Nullable
98101 private Boolean searchEnabled = null ;
99102
103+ @ Override
104+ public LanguageLevel getLanguageLevel () {
105+ Lock lock = rwLock .readLock ();
106+ try {
107+ lock .lock ();
108+ return this .languageLevel != null ? this .languageLevel : nextLanguageLevel ;
109+ } finally {
110+ lock .unlock ();
111+ }
112+ }
113+
114+ @ Override
115+ public void setLanguageLevel ( LanguageLevel languageLevel ) {
116+ this .nextLanguageLevel = languageLevel ;
117+ }
118+
100119 @ Override
101120 public InferenceMode getInferenceMode () {
102121 Lock lock = rwLock .readLock ();
@@ -162,6 +181,7 @@ private void initialize( @Nullable InputStream stream, boolean forceLoad, boolea
162181 String ontologyUrl = getOntologyUrl ();
163182 String ontologyName = getOntologyName ();
164183 String cacheName = getCacheName ();
184+ LanguageLevel languageLevel = nextLanguageLevel ;
165185 InferenceMode inferenceMode = nextInferenceMode ;
166186 boolean processImports = nextProcessImports ;
167187 boolean searchEnabled = nextSearchEnabled ;
@@ -196,7 +216,7 @@ private void initialize( @Nullable InputStream stream, boolean forceLoad, boolea
196216 return ;
197217
198218 try {
199- OntologyModel m = stream != null ? loadModelFromStream ( stream , processImports , inferenceMode ) : loadModel ( processImports , inferenceMode ); // can take a while.
219+ OntologyModel m = stream != null ? loadModelFromStream ( stream , processImports , languageLevel , inferenceMode ) : loadModel ( processImports , languageLevel , inferenceMode ); // can take a while.
200220 if ( m instanceof OntologyModelImpl ) {
201221 model = ( ( OntologyModelImpl ) m ).getOntModel ();
202222 } else {
@@ -254,6 +274,7 @@ private void initialize( @Nullable InputStream stream, boolean forceLoad, boolea
254274 this .additionalRestrictions = additionalRestrictions ;
255275 this .index = index ;
256276 this .isInitialized = true ;
277+ this .languageLevel = languageLevel ;
257278 this .inferenceMode = inferenceMode ;
258279 this .processImports = processImports ;
259280 this .searchEnabled = searchEnabled ;
@@ -615,13 +636,13 @@ public void waitForInitializationThread() throws InterruptedException {
615636 * Delegates the call as to load the model into memory or leave it on disk. Simply delegates to either
616637 * OntologyLoader.loadMemoryModel( url ); OR OntologyLoader.loadPersistentModel( url, spec );
617638 */
618- protected abstract OntologyModel loadModel ( boolean processImports , InferenceMode inferenceMode ) throws IOException ;
639+ protected abstract OntologyModel loadModel ( boolean processImports , LanguageLevel languageLevel , InferenceMode inferenceMode ) throws IOException ;
619640
620641
621642 /**
622643 * Load a model from a given input stream.
623644 */
624- protected abstract OntologyModel loadModelFromStream ( InputStream stream , boolean processImports , InferenceMode inferenceMode ) throws IOException ;
645+ protected abstract OntologyModel loadModelFromStream ( InputStream stream , boolean processImports , LanguageLevel languageLevel , InferenceMode inferenceMode ) throws IOException ;
625646
626647 /**
627648 * A name for caching this ontology, or null to disable caching.
@@ -633,17 +654,6 @@ protected String getCacheName() {
633654 return getOntologyName ();
634655 }
635656
636- private OntModelSpec getSpec ( InferenceMode inferenceMode ) {
637- switch ( inferenceMode ) {
638- case TRANSITIVE :
639- return OntModelSpec .OWL_MEM_TRANS_INF ;
640- case NONE :
641- return OntModelSpec .OWL_MEM ;
642- default :
643- throw new UnsupportedOperationException ( String .format ( "Unsupported inference level %s." , inferenceMode ) );
644- }
645- }
646-
647657 @ Override
648658 public void index ( boolean force ) {
649659 String cacheName = getCacheName ();
0 commit comments