, NAME
and ADDRESS
are
string constants. When you register your schema with the ontology, such
constants become part of the vocabulary of the ontology.
Schemas that describe concepts support inheritance. You can define the
concept Man
as a refinement of the concept Person
:
ConceptSchema manSchema = new ConceptSchema(MAN);
manSchema.addSuperSchema(personSchema);
Each element schema can be associated with a Java class to map elements of
the ontology that comply with a schema with Java objects of that class. The
following is a class that might be associated with the Person
schema:
public class Person extends Concept {
private String name = null;
private Address address = null;
public void setName(String name) {
this.name = name;
}
public void setAddress(Address address) {
this.address = address;
}
public String getName() {
return name;
}
public Address getAddress() {
return address;
}
}
When sending/receiving messages you can represent your content in terms of
objects belonging to classes that the ontology associates with schemas.
As the previous example suggests, you cannot use objects of class
Person
when asking for the value of some attribute, e.g., when
asking for the value of address
. Basically, the problem is that
you cannot 'assign' a variable to an attribute of an object, i.e.
you cannot write something like:
person.setName(new Variable("X"))
.
In order to solve this problem, you can describe your content in terms of
abstract descriptors. An abstract descriptor is an
object that reifies an element of the ontology.
The following is the creation of an abstract
descriptor for a concept of type Man
:
AbsConcept absMan = new AbsConcept(MAN);
absMan.setSlot(NAME, "John");
absMan.setSlot(ADDRESS, absAddress);
where absAddress
is the abstract descriptor for John's
address:
AbsConcept absAddress = new AbsConcept(ADDRESS);
absAddress.setSlot(CITY, "London");
Objects of class Ontology
allows you to:
- register schemas with associated (i) a mandatory term of the
vocabulary e.g.
NAME
and (ii) an optional Java class,
e.g. Person
;
- retrieve the registered information through various keys.
The framework already provides two ontologies that you can use for building your
application-specific ontologies:
BasicOntology
: that provides all basic elements, i.e.,
primitive data types, aggregate types, etc.
ACLOntology
: that extends the BasicOntology
and
provides the elements corresponding to the FIPA ACL performatives
Application-specific ontologies should be implemented extending one of them
- Author:
- Federico Bergenti - Universita` di Parma, Giovanni Caire - TILAB
- See Also:
Concept
,
AbsConcept
,
ConceptSchema
,
ACLOntology
,
BasicOntology
, Serialized Form
Constructor Summary |
Ontology(java.lang.String name,
Introspector introspector)
Construct an Ontology object with a given name
that uses a given Introspector to
convert between Java objects and abstract descriptors. |
Ontology(java.lang.String name,
Ontology base)
Construct an Ontology object with a given name
that extends a given ontology.
|
Ontology(java.lang.String name,
Ontology[] base,
Introspector introspector)
Construct an Ontology object with a given name
that extends a given set of ontologies and that uses a given Introspector to
convert between Java objects and abstract descriptors. |
Ontology(java.lang.String name,
Ontology base,
Introspector introspector)
Construct an Ontology object with a given name
that extends a given ontology and that uses a given Introspector to
convert between Java objects and abstract descriptors. |
Method Summary |
void |
add(ObjectSchema schema)
Adds a schema to this ontology |
void |
add(ObjectSchema schema,
java.lang.Class javaClass)
Adds a schema to the ontology and associates it to the class
javaClass |
static void |
checkIsTerm(java.lang.Object obj)
Check whether a given object is a valid term.
|
AbsObject |
fromObject(java.lang.Object obj)
Converts a Java object into a proper abstract descriptor. |
protected AbsObject |
fromObject(java.lang.Object obj,
Ontology globalOnto)
Converts a Java object into a proper abstract descriptor. |
java.lang.Class |
getClassForElement(java.lang.String name)
Retrieves the concrete class associated with name in
the vocabulary. |
java.lang.String |
getName()
Retrieves the name of this ontology. |
ObjectSchema |
getSchema(java.lang.String name)
Retrieves the schema associated with name . |
java.lang.Object |
toObject(AbsObject abs)
Converts an abstract descriptor to a Java object of the proper class. |
protected java.lang.Object |
toObject(AbsObject abs,
java.lang.String lcType,
Ontology globalOnto)
Converts an abstract descriptor to a Java object of the proper class. |
Methods inherited from class java.lang.Object |
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
Ontology
public Ontology(java.lang.String name,
Ontology base)
- Construct an Ontology object with a given
name
that extends a given ontology.
The ReflectiveIntrospector
is used by default to
convert between Java objects and abstract descriptors.
- Parameters:
name
- The identifier of the ontology.base
- The base ontology.
Ontology
public Ontology(java.lang.String name,
Introspector introspector)
- Construct an Ontology object with a given
name
that uses a given Introspector to
convert between Java objects and abstract descriptors.
- Parameters:
name
- The identifier of the ontology.introspector
- The introspector.
Ontology
public Ontology(java.lang.String name,
Ontology base,
Introspector introspector)
- Construct an Ontology object with a given
name
that extends a given ontology and that uses a given Introspector to
convert between Java objects and abstract descriptors.
- Parameters:
name
- The identifier of the ontology.base
- The base ontology.introspector
- The introspector.
Ontology
public Ontology(java.lang.String name,
Ontology[] base,
Introspector introspector)
- Construct an Ontology object with a given
name
that extends a given set of ontologies and that uses a given Introspector to
convert between Java objects and abstract descriptors.
- Parameters:
name
- The identifier of the ontology.base
- The base ontology.introspector
- The introspector.
getName
public java.lang.String getName()
- Retrieves the name of this ontology.
- Returns:
- the name of this ontology.
add
public void add(ObjectSchema schema)
throws OntologyException
- Adds a schema to this ontology
- Parameters:
schema
- The schema to add- Throws:
- OntologyException -
add
public void add(ObjectSchema schema,
java.lang.Class javaClass)
throws OntologyException
- Adds a schema to the ontology and associates it to the class
javaClass
- Parameters:
schema
- the schema.javaClass
- the concrete class.- Throws:
- OntologyException -
getSchema
public ObjectSchema getSchema(java.lang.String name)
throws OntologyException
- Retrieves the schema associated with
name
. The
search is extended to the base ontologies if the schema is not
found.
- Parameters:
name
- the name of the schema in the vocabulary.- Returns:
- the schema or
null
if the schema is not found. - Throws:
- OntologyException -
toObject
public java.lang.Object toObject(AbsObject abs)
throws OntologyException,
UngroundedException
- Converts an abstract descriptor to a Java object of the proper class.
- Parameters:
abs
- the abstract descriptor.- Returns:
- the object
- Throws:
- UngroundedException - if the abstract descriptor contains a
variable
- OntologyException - if some mismatch with the schema is found
- See Also:
fromObject(Object)
fromObject
public AbsObject fromObject(java.lang.Object obj)
throws OntologyException
- Converts a Java object into a proper abstract descriptor.
- Parameters:
obj
- the object- Returns:
- the abstract descriptor.
- Throws:
- OntologyException - if some mismatch with the schema is found
- See Also:
toObject(AbsObject)
getClassForElement
public java.lang.Class getClassForElement(java.lang.String name)
throws OntologyException
- Retrieves the concrete class associated with
name
in
the vocabulary. The search is extended to the base ontologies
- Parameters:
name
- the name of the schema.- Returns:
- the Java class or null if no schema called
name
is found or if no class is associated to that schema. - Throws:
- OntologyException - if name is null
toObject
protected java.lang.Object toObject(AbsObject abs,
java.lang.String lcType,
Ontology globalOnto)
throws jade.content.onto.UnknownSchemaException,
UngroundedException,
OntologyException
- Converts an abstract descriptor to a Java object of the proper class.
- Parameters:
abs
- the abstract descriptor.lcType
- the type of the abstract descriptor to be translated
aconverted into lower case. This is passed as parameters to avoid
making the conversion to lower case for each base ontology.globalOnto
- The ontology this ontology is part of (i.e. the
ontology that extends this ontology).- Returns:
- the object
- Throws:
- jade.content.onto.UnknownSchemaException - If no schema for the abs descriptor
to be translated is defined in this ontology.
- UngroundedException - if the abstract descriptor contains a
variable
- OntologyException - if some mismatch with the schema is found * ontology. In this case UnknownSchema
fromObject
protected AbsObject fromObject(java.lang.Object obj,
Ontology globalOnto)
throws jade.content.onto.UnknownSchemaException,
OntologyException
- Converts a Java object into a proper abstract descriptor.
- Parameters:
obj
- the objectglobalOnto
- The ontology this ontology is part of (i.e. the
ontology that extends this ontology).- Returns:
- the abstract descriptor.
- Throws:
- jade.content.onto.UnknownSchemaException - If no schema for the object to be
translated is defined in this ontology.
- OntologyException - if some mismatch with the schema is found
checkIsTerm
public static void checkIsTerm(java.lang.Object obj)
throws OntologyException
- Check whether a given object is a valid term.
If it is an Aggregate (i.e. a
List
) it also check
the elements.
- Throws:
- OntologyException - if the given object is not a valid term