/* * Created on Dec 16, 2004 */ package org.mindswap.owl; import java.io.OutputStream; import java.io.Writer; import java.net.URI; import java.util.List; import java.util.Map; import java.util.Set; import org.mindswap.exceptions.LockNotSupportedException; import org.mindswap.exceptions.UnboundVariableException; import org.mindswap.owl.list.ListVocabulary; import org.mindswap.owl.list.RDFList; import org.mindswap.owls.generic.expression.Expression; import org.mindswap.owls.generic.list.OWLSObjList; import org.mindswap.owls.grounding.Grounding; import org.mindswap.owls.grounding.JavaAtomicGrounding; import org.mindswap.owls.grounding.MessageMap; import org.mindswap.owls.grounding.UPnPAtomicGrounding; import org.mindswap.owls.grounding.WSDLAtomicGrounding; import org.mindswap.owls.grounding.WSDLOperationRef; import org.mindswap.owls.process.AnyOrder; import org.mindswap.owls.process.AtomicProcess; import org.mindswap.owls.process.BindingList; import org.mindswap.owls.process.Choice; import org.mindswap.owls.process.CompositeProcess; import org.mindswap.owls.process.Condition; import org.mindswap.owls.process.ControlConstruct; import org.mindswap.owls.process.ControlConstructBag; import org.mindswap.owls.process.ControlConstructList; import org.mindswap.owls.process.ForEach; import org.mindswap.owls.process.IfThenElse; import org.mindswap.owls.process.Input; import org.mindswap.owls.process.InputBinding; import org.mindswap.owls.process.Local; import org.mindswap.owls.process.Output; import org.mindswap.owls.process.OutputBinding; import org.mindswap.owls.process.Parameter; import org.mindswap.owls.process.Perform; import org.mindswap.owls.process.Process; import org.mindswap.owls.process.Produce; import org.mindswap.owls.process.RepeatUntil; import org.mindswap.owls.process.RepeatWhile; import org.mindswap.owls.process.Result; import org.mindswap.owls.process.Sequence; import org.mindswap.owls.process.Split; import org.mindswap.owls.process.SplitJoin; import org.mindswap.owls.process.ValueData; import org.mindswap.owls.process.ValueOf; import org.mindswap.owls.profile.Profile; import org.mindswap.owls.profile.ServiceParameter; import org.mindswap.owls.service.Service; import org.mindswap.query.ABoxQuery; import org.mindswap.query.ValueMap; import org.mindswap.swrl.AtomList; /** * An abstract view for querying a KnowledgeBase or a single ontology. * * @author Evren Sirin */ public interface OWLModel { /** * Return the implementation specific object for this model. * * @return */ public Object getImplementation(); /** * Refresh the data in this model from the original source. */ public void refresh(); /** * Check if the model is consistent or not. This functions will simply return true if * there is no reasoner attached or the reasoner used does not support consistency check. * * @return */ public boolean isConsistent(); /** * Prepare the reasoner associated with this model. */ public void prepare(); /** * Tell the reasoner to compute the subclass relations between all the named classes and find * the instances of each class. The results will be cached and subsequent calls to queyr the * model will use the cache. This call has no effect if reasoner does not support * classification. */ public void classify(); /** * Returns true if the model is classifed. */ public boolean isClassified(); /** * Set the reasoner of this model using a reasner name. See OWLFactory.getReasoners() for * available reasoner names. * *
For Jena based implementation available reasoner names are: *
setProperty(prop, OWLFactory.createDataValue(value))
.
*
* @param prop
* @param value
*/
/**
* @param ind
* @param prop
* @param value
*/
public void setProperty(OWLIndividual ind, OWLDataProperty prop, Object value);
public void addProperty(OWLIndividual ind, OWLProperty prop, OWLValue value);
/**
* @param ind
* @param prop
* @param value
*/
public void addProperty(OWLIndividual ind, OWLDataProperty prop, OWLDataValue value);
public void addProperty(OWLIndividual ind, OWLDataProperty prop, Object value);
public void addProperty(OWLIndividual ind, OWLDataProperty prop, String value);
/**
* Removes all RDF statements from the model with the given OWLIndividual in
* its object or subject therefore removing each occurrence of the given individual.
* This is a convenience method for removeIndividuals(ind, false)
*
* @param ind the individual to remove
* @see #removeIndividuals(OWLIndividual, boolean)
*/
public void removeIndividuals(OWLIndividual ind);
/**
* Removes all RDF statements from the model with the given OWLIndividual in
* its object or subject therefore removing each occurrence of the given individual.
* If the recursive
parameter is set, the method iterates recursively
* through all properties of the given individual and removes them all.
*
* ATTENTION: Use the recursive mode only when you are sure that your data is
* structured in a tree and not in a graph (as OWL and OWL-S usually is). Otherwise
* unexpected behaviour may be observed.
*
* @param ind the individual to remove
* @param recursive true, if recursive removal is desired. false otherwise
*/
public void removeIndividuals(OWLIndividual ind, boolean recursive);
/**
* @param ind
* @param prop
*/
public void removeProperties(OWLIndividual ind, OWLProperty prop);
/**
* Removes the specified triple from the Model.
* @param theInd OWLIndividual
* @param theProp OWLProperty
* @param theValue OWLValue
*/
public void removeProperty(OWLIndividual theInd, OWLProperty theProp, OWLValue theValue);
/**
* @param ind
* @param prop
* @param value
*/
public void addProperty(OWLIndividual ind, OWLObjectProperty prop, OWLIndividual value);
/**
* @param ind
* @param prop
* @param value
*/
public void setProperty(OWLIndividual ind, OWLObjectProperty prop, OWLIndividual value);
/**
* @param ind
* @param c
*/
public void addType(OWLIndividual ind, OWLClass c);
/**
* @param ind
*/
public void removeTypes(OWLIndividual ind);
/**
* Returns true if c is an enumerated class (defined with owl:oneOf)
*
* @param c
* @return
*/
public boolean isEnumerated(OWLClass c);
/**
* Returns the enumeration for the class (the list of individuals declared in the
* owl:oneOf list).
*
* @param c
* @return List of individuals or null if the class is not enumerated
*/
public OWLIndividualList getEnumerations(OWLClass c);
/**
* Check if one class is subclass of another
*
* @param c1
* @param c2
* @return
*/
public boolean isSubClassOf(OWLClass c1, OWLClass c2);
/**
* Check if one datatype is subtype of another
*
* @param uri1
* @param uri2
* @return
*/
/**
* @param t1
* @param t2
* @return
*/
public boolean isSubTypeOf(OWLDataType t1, OWLDataType t2);
/**
* Check if one type is subsumed by another
*
* @param uri1
* @param uri2
* @return
*/
/**
* @param t1
* @param t2
* @return
*/
public boolean isSubTypeOf(OWLType t1, OWLType t2);
/**
* @param t1
* @param t2
* @return
*/
public boolean isEquivalent(OWLType t1, OWLType t2);
/**
* @param t1
* @param t2
* @return
*/
public boolean isDisjoint(OWLType t1, OWLType t2);
/**
* Check if two classes are disjoint. Returns true if there can possibly be no
* individual that may belong ot both classes.
*
* @param uri1
* @param uri2
* @return
*/
/**
* @param c1
* @param c2
* @return
*/
public boolean isDisjoint(OWLClass c1, OWLClass c2);
/**
* Get all the subclasses of the given class
*
* @param uri
* @return
*/
/**
* @param c
* @return
*/
public Set getSubClasses(OWLClass c);
/**
* Get all the (direct) subclasses of the given class
*
* @param c
* @param direct
* @return
*/
public Set getSubClasses(OWLClass c, boolean direct);
/**
* Get all the superclasses of the given class
*
* @param c
* @return
*/
public Set getSuperClasses(OWLClass c);
/**
* Get all the (direct) subclasses of the given class
*
* @param c
* @param direct
* @return
*/
public Set getSuperClasses(OWLClass c, boolean direct);
/**
* @param c
* @return
*/
public Set getEquivalentClasses(OWLClass c);
/**
* @param p
* @return
*/
public Set getSubProperties(OWLProperty p);
/**
* @param p
* @return
*/
public Set getSuperProperties(OWLProperty p);
/**
* @param p
* @return
*/
public Set getEquivalentProperties(OWLProperty p);
/**
* @param c
* @return
*/
public OWLIndividualList getInstances(OWLClass c);
/**
* @param ind
* @param c
* @return
*/
public boolean isType(OWLIndividual ind, OWLClass c);
/**
* @param ind
* @return
*/
public OWLClass getType(OWLIndividual ind);
/**
* @param ind
* @return
*/
public Set getTypes(OWLIndividual ind);
/**
* @param ind
* @param prop
* @return
*/
public OWLIndividual getProperty(OWLIndividual ind, OWLObjectProperty prop);
/**
* @param ind
* @param prop
* @return
*/
public OWLIndividualList getProperties(OWLIndividual ind, OWLObjectProperty prop);
/**
* @param ind
* @return
*/
public Map getProperties(OWLIndividual ind);
/**
* Returns all properties for a class. Note that a class is an instance in OWL and therefore
* the properties given to the instance at definition are returned and NOT the
* properties that are declared for this class. Use
* getDeclaredProperties(OWLClass claz)
instead.
*
* @param claz the class whose properties will be returned
* @return all properties (data- and object-properties) of the given class
* @see #getDeclaredProperties(OWLClass)
*/
public Map getProperties(OWLClass claz);
/**
* Returns all declared properties for a class. Use
* getDeclaredProperties(OWLClass claz)
if you want the properties
* of the instance at class defintion.
*
* @param claz the class whose properties will be returned
* @return all properties (data- and object-properties) of the given class
* @see #getDeclaredProperties(OWLClass)
*/
public List getDeclaredProperties(OWLClass claz);
/**
* Returns all declared properties for a class. Use
* getDeclaredProperties(OWLClass claz)
if you want the properties
* of the instance at class defintion.
*
* @param claz the class whose properties will be returned
* @param direct true, if only properties of the given class itself should be returned. false, if properties of superclasses should be returned too
* @return all properties (data- and object-properties) of the given class
* @see #getDeclaredProperties(OWLClass)
*/
public List getDeclaredProperties(OWLClass claz, boolean direct);
/**
* @param ind
* @param prop
* @return
*/
public OWLDataValue getProperty(OWLIndividual ind, OWLDataProperty prop);
/**
* @param ind
* @param prop
* @param lang
* @return
*/
public OWLDataValue getProperty(OWLIndividual ind, OWLDataProperty prop, String lang);
/**
* @param ind
* @param prop
* @return
*/
public OWLDataValueList getProperties(OWLIndividual ind, OWLDataProperty prop);
/**
* @param prop
* @param ind
* @return
*/
public OWLIndividual getIncomingProperty(OWLObjectProperty prop, OWLIndividual ind);
/**
* @param prop
* @param ind
* @return
*/
public OWLIndividualList getIncomingProperties(OWLObjectProperty prop, OWLIndividual ind);
public OWLIndividualList getIncomingProperties(OWLIndividual ind);
/**
* @param prop
* @param value
* @return
*/
public OWLIndividual getIncomingProperty(OWLDataProperty prop, OWLDataValue value);
/**
* @param prop
* @param value
* @return
*/
public OWLIndividualList getIncomingProperties(OWLDataProperty prop, OWLDataValue value);
/**
* @param ind
* @param prop
* @return
*/
public boolean hasProperty(OWLIndividual ind, OWLProperty prop);
/**
* @param ind
* @param prop
* @param value
* @return
*/
public boolean hasProperty(OWLIndividual ind, OWLProperty prop, OWLValue value);
/**
* Apply the given set of (ground) atoms to the model. Simply adds new assertions to the
* model.
*
* @param atoms
* @throws UnboundVariableException
*/
public void apply(AtomList atoms) throws UnboundVariableException;
/**
* Similar to apply but simply skips the nonground atoms instead of throwing an
* exception.
*
* @param atoms
*/
public void applyGround(AtomList atoms);
/**
* Check if the conjunction of given atoms is entailed by the model.
*
* @param expr
* @return
*/
public boolean isTrue(ABoxQuery query);
/**
* Check if the condition is true in this model. The condition is transformed into an
* ABoxQuery
and then it is checked if the conjunction of atoms in the
* query is entailed by the model. This is equivalent to the call
* isTrue( condition.getBody().toQuery() ).
*
* @param expr
* @return
*/
public boolean isTrue(Condition condition);
/**
* Apply the given binding to the condition, thus grounding some of the variables,
* and then check if this condition is true in this model.
*
* @param expr
* @return
*/
public boolean isTrue(Condition condition, ValueMap binding);
/**
* Answer the given ABoxQuery and return a List of ValueMap's that contains the
* bindings for the result variables of the query. An empty list of answers
* indicates there are no answers for the query. If the query is ground, i.e.
* no variables in the body, then the returned list contains a single empty
* ValueMap object if the atoms in the query are entailed (again an empty list
* in case of failure)
*
* @param query
* @return
*/
public List query(ABoxQuery query);
/**
* Answer the given ABoxQuery passing in an initial binding of some of the variables
* in the query. This function returns a List of ValueMap's that contains the
* bindings for the result variables of the query. An empty list of answers
* indicates there are no answers for the query. If the query is ground, i.e.
* no variables in the body, then the returned list contains a single empty
* ValueMap object if the atoms in the query are entailed (again an empty list
* in case of failure)
*
* @param query
* @param values
* @return
*/
public List query(ABoxQuery query, ValueMap values);
/**
*
* @param query
* @return
*/
public List query(String query);
/**
* Checks if this implementation supports locking for concurrent access;
*
* @return
*/
public boolean isLockSupported();
/**
* Lock the model for read operations. Multiple read operations are allowed for the same
* model. When the model is locked for reading no operation that would modify the model
* should be called. Throws an error if the model does not support concurrency, i.e.
* isLockSupported function returns false.
*
* @throws LockNotSupportedException
*/
public void lockForRead() throws LockNotSupportedException;
/**
* Lock the model for write operations. No other thread can access the model while there is
* a write lock. Throws an error if the model does not support concurrency, i.e.
* isLockSupported function returns false.
*
* @throws LockNotSupportedException
*/
public void lockForWrite() throws LockNotSupportedException;
/**
* Releases the lock form the matching lockForXXX function.
*/
public void releaseLock() throws LockNotSupportedException;
public List getServices();
public Service getService(URI serviceURI);
public List getProfiles();
public Profile getProfile(URI profileURI);
public List getProcesses();
public List getProcesses(int type);
public Process getProcess(URI processURI);
public AnyOrder createAnyOrder();
public AnyOrder createAnyOrder(URI uri);
public AtomicProcess createAtomicProcess();
public AtomicProcess createAtomicProcess(URI uri);
public Choice createChoice();
public Choice createChoice(URI uri);
public CompositeProcess createCompositeProcess();
public CompositeProcess createCompositeProcess(URI uri);
public Condition createSWRLCondition();
public Condition createSWRLCondition(URI uri);
public ControlConstructList createControlConstructList(ControlConstruct item);
public ControlConstructBag createControlConstructBag(ControlConstruct item);
public Expression createSWRLExpression();
public Expression createSWRLExpression(URI uri);
public ForEach createForEach();
public ForEach createForEach(URI uri);
public Grounding createGrounding();
public Grounding createGrounding(URI uri);
public IfThenElse createIfThenElse();
public IfThenElse createIfThenElse(URI uri);
public Input createInput();
public Input createInput(URI uri);
public InputBinding createInputBinding();
public InputBinding createInputBinding(URI uri);
public Local createLocal();
public Local createLocal(URI uri);
public MessageMap createWSDLInputMessageMap();
public MessageMap createWSDLInputMessageMap(URI uri);
public MessageMap createWSDLOutputMessageMap();
public MessageMap createWSDLOutputMessageMap(URI uri);
public MessageMap createUPnPMessageMap();
public MessageMap createUPnPMessageMap(URI uri);
public Output createOutput();
public Output createOutput(URI uri);
public OutputBinding createOutputBinding();
public OutputBinding createOutputBinding(URI uri);
public Perform createPerform();
public Perform createPerform(URI uri);
public Perform createPerform(OWLIndividual individual);
public Produce createProduce();
public Produce createProduce(URI uri);
public Profile createProfile();
public Profile createProfile(URI uri);
public RepeatUntil createRepeatUntil();
public RepeatUntil createRepeatUntil(URI uri);
public RepeatWhile createRepeatWhile();
public RepeatWhile createRepeatWhile(URI uri);
public Result createResult();
public Result createResult(URI uri);
public Sequence createSequence();
public Sequence createSequence(URI uri);
public Service createService();
public Service createService(URI uri);
public ServiceParameter createServiceParameter();
public ServiceParameter createServiceParameter(URI uri);
public Split createSplit();
public Split createSplit(URI uri);
public SplitJoin createSplitJoin();
public SplitJoin createSplitJoin(URI uri);
//added 15.4.2005 by Michael Daenzer for Java-Grounding
public JavaAtomicGrounding createJavaAtomicGrounding();
public JavaAtomicGrounding createJavaAtomicGrounding(URI uri);
public Grounding createJavaGrounding();
public Grounding createJavaGrounding(URI uri);
// end added
public UPnPAtomicGrounding createUPnPAtomicGrounding();
public UPnPAtomicGrounding createUPnPAtomicGrounding(URI uri);
public ValueOf createValueOf();
public ValueOf createValueOf(URI uri);
public WSDLAtomicGrounding createWSDLAtomicGrounding();
public WSDLAtomicGrounding createWSDLAtomicGrounding(URI uri);
public WSDLOperationRef createWSDLOperationRef();
public WSDLOperationRef createWSDLOperationRef(URI uri);
public ValueData createValueData(OWLValue dataValue);
public OWLSObjList createList();
public OWLSObjList createList(OWLIndividual item);
public OWLSObjList createList(OWLIndividualList items);
public RDFList createList(ListVocabulary vocabulary);
public RDFList createList(ListVocabulary vocabulary, OWLIndividual item);
public RDFList createList(ListVocabulary vocabulary, OWLIndividualList items);
/**
* Turn the RDF/XML representation into an OWLIndividual
* @param literal
* @return
*/
public OWLIndividual parseLiteral(String literal);
/**
* Return true if given two individuals are same as each other as dictated by the
* semantics of owl:sameAs.
*
* @param ind1
* @param ind2
* @return
*/
public boolean isSameAs(OWLIndividual ind1, OWLIndividual ind2);
public OWLIndividualList getSameIndividuals(OWLIndividual ind);
/**
* Return true if given two individuals are different from each other as
* dictated by the semantics of owl:differentFrom.
*
* @param ind1
* @param ind2
* @return
*/
public boolean isDifferentFrom(OWLIndividual ind1, OWLIndividual ind2);
public OWLIndividualList getDifferentIndividuals(OWLIndividual ind);
public OWLWriter getWriter();
public void write(Writer writer);
public void write(Writer writer, URI baseURI);
public void write(OutputStream out);
public void write(OutputStream out, URI baseURI);
/**
* Returns a list with all individuals that do not belong to the OWL-S language
* definition and its base and helpers languages such as OWL, RDF or SWRL.
*
* @return all individuals do not belong to the OWL-S language definition
*/
public List getNonLanguageIndividuals();
/**
* Returns a list with all classes that do not belong to the OWL-S language
* definition and its base and helpers languages such as OWL, RDF or SWRL.
*
* @return all classes do not belong to the OWL-S language definition
*/
public List getNonLanguageClasses();
/**
* Returns a list with all object properties that do not belong to the OWL-S language
* definition and its base and helpers languages such as OWL, RDF or SWRL.
*
* @return all object properties do not belong to the OWL-S language definition
*/
public List getNonLanguageObjectProperties();
/**
* Returns a list with all datatype properties that do not belong to the OWL-S language
* definition and its base and helpers languages such as OWL, RDF or SWRL.
*
* @return all datatype do not belong to the OWL-S language definition
*/
public List getNonLanguageDataProperties();
public BindingList getBindingsFor(Parameter parameter);
}