public class OntTools extends Object
Some general utilities and algorithms to support developers working with the
general classes in the Jena ontology API. Warning these
utilities are experimental. Extensive testing has not yet
occurred (see TestOntTools
in the
test area for basic unit tests),
and in particular performance testing has not been carried out yet.
Users are advised to exercise caution before relying on these utilities in
production code. Please send any comments or suggestions to the
Jena support email list.
Modifier and Type | Class and Description |
---|---|
static class |
OntTools.DisjointSet
A simple representation of disjoint sets
|
static class |
OntTools.LCAIndex
Simple data structure mapping RDF nodes to disjoint sets, and
pairs of resources to their LCA.
|
static class |
OntTools.Path
|
static class |
OntTools.PredicatesFilter
A filter which accepts statements whose predicate matches one of a collection
of predicates held by the filter object.
|
Constructor and Description |
---|
OntTools() |
Modifier and Type | Method and Description |
---|---|
static OntTools.Path |
findShortestPath(Model m,
Resource start,
RDFNode end,
Predicate<Statement> onPath)
Answer the shortest path from the
start resource to the end RDF node,
such that every step on the path is accepted by the given filter. |
static OntClass |
getLCA(OntModel m,
OntClass u,
OntClass v)
Answer the lowest common ancestor of two classes in a given ontology.
|
static OntClass |
getLCA(OntModel m,
OntClass root,
OntClass u,
OntClass v)
Answer the lowest common ancestor of two classes, assuming that the given
class is the root concept to start searching from.
|
static List<OntClass> |
namedHierarchyRoots(OntModel m)
Answer a list of the named hierarchy roots of a given
OntModel . |
public static OntClass getLCA(OntModel m, OntClass u, OntClass v)
Answer the lowest common ancestor of two classes in a given ontology. This
is the class that is farthest from the root concept (defaulting to
owl:Thing
which is a super-class of both u
and v
. The algorithm is based on
Tarjan's
off-line LCA. The current implementation expects that the given model:
subClassOf
relationBoth of these conditions are true of the built-in Jena OWL reasoners,
such as OntModelSpec.OWL_MEM_MICRO_RULE_INF
, and external DL
reasoners such as Pellet.
m
- The ontology model being queried to find the LCA, which should conform
to the reasoner capabilities described aboveu
- An ontology classv
- An ontology classu
and v
JenaException
- if the language profile of the given model does not
define a top concept (e.g. owl:Thing
)public static OntClass getLCA(OntModel m, OntClass root, OntClass u, OntClass v)
getLCA(OntModel, OntClass, OntClass)
for details.m
- The ontology model being queried to find the LCA, which should conform
to the reasoner capabilities described aboveroot
- The root concept, which will be the starting point for the algorithmu
- An ontology classv
- An ontology classu
and v
JenaException
- if the language profile of the given model does not
define a top concept (e.g. owl:Thing
)public static OntTools.Path findShortestPath(Model m, Resource start, RDFNode end, Predicate<Statement> onPath)
Answer the shortest path from the start
resource to the end
RDF node,
such that every step on the path is accepted by the given filter. A path is a List
of RDF Statement
s. The subject of the first statement in the list is start
,
and the object of the last statement in the list is end
.
The onPath
argument is a Predicate
, which accepts a statement and returns
true if the statement should be considered to be on the path. To search for an unconstrained
path, pass ()->true
as an argument. To search for a path whose predicates match a
fixed restricted set of property names, pass an instance of OntTools.PredicatesFilter
.
If there is more than one path of minimal length from start
to end
,
this method returns an arbitrary one. The algorithm is blind breadth-first search,
with loop detection.
m
- The model in which we are seeking a pathstart
- The starting resourceend
- The end, or goal, nodeonPath
- A filter which determines whether a given statement can be considered part
of the pathstart
,
and whose last object is end
, or null if no such path exists.public static List<OntClass> namedHierarchyRoots(OntModel m)
OntModel
. This
will be similar to the results of OntModel.listHierarchyRootClasses()
,
with the added constraint that every member of the returned iterator will be a
named class, not an anonymous class expression. The named root classes are
calculated from the root classes, by recursively replacing every anonymous class
with its direct sub-classes. Thus it can be seen that the values in the list
consists of the shallowest fringe of named classes in the hierarchy.m
- An ontology modelm
Licenced under the Apache License, Version 2.0