[Pellet-users] Detaching Pellet model from a base model
Todor Dimitrov
todor.dimitrov at stud.uni-due.de
Fri Jul 25 10:19:47 UTC 2008
Hi Evren,
the following code works also fine for me, but I get the
OutOfMemoryError:
/**
* @author Todor Dimitrov (todor.dimitrov at stud.uni-due.de)
* @version Jun 23, 2008 3:26:02 PM
*/
public class TestJenaPellet {
/** The base URI for the domain model */
public static final String MODEL_URI = "http://www.owl-ontologies.com/domain-ontology.owl#
";
/** The base URI for the instances model */
public static final String INSTANCES_URI = "http://www.owl-ontologies.com/test-ontology.owl#
";
/** Prefix for all SPAQL queries */
public static final String SPARQL_PREFIX = "PREFIX domain: <" +
MODEL_URI
+ ">\n"
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"
+ "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"
+ "PREFIX owl: <http://www.w3.org/2002/07/owl#>\n"
+ "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>\n";
static {
final OntDocumentManager manager = OntDocumentManager.getInstance();
final String modelUri = MODEL_URI.substring(0, MODEL_URI
.lastIndexOf("#"));
try {
manager.addAltEntry(modelUri, TestJenaPellet.class.getResource(
"domain-ontology.owl").toString());
} catch (Exception ex) {
throw new RuntimeException(ex);
}
}
/**
* Retrieves the pellet model
*
* @return the non-null model
*/
private static OntModel getPelletModel() {
return
ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC);
}
/**
* Retrieves the base model
*
* @return the non-null base model
*/
private static OntModel getBaseModel() {
final OntModel ontModel = ModelFactory
.createOntologyModel(OntModelSpec.OWL_DL_MEM);
final String modelUri = MODEL_URI.substring(0, MODEL_URI
.lastIndexOf("#"));
final String instanceUri = INSTANCES_URI.substring(0, INSTANCES_URI
.lastIndexOf("#"));
final Ontology ontology = ontModel.createOntology(instanceUri);
ontology.addImport(ontModel.createResource(modelUri));
ontModel.loadImports();
return ontModel;
}
/**
* Executes SPARQL queries
*/
@Test
public void testQueries() throws Exception {
final OntModel model = getBaseModel();
final String queryString = "select ?room where {?room rdf:type
domain:Room.}";
final Set<Individual> rooms = new HashSet<Individual>();
for (int i = 0; i < 10000; i++) {
rooms.clear();
final OntModel pelletModel = getPelletModel();
pelletModel.addSubModel(model);
final QueryExecution qe = QueryExecutionFactory.create(
SPARQL_PREFIX + queryString, pelletModel);
try {
// Execute the query and obtain results
final ResultSet result = qe.execSelect();
while (result.hasNext()) {
final QuerySolution solution = result.nextSolution();
final RDFNode node = solution.get("room");
final Individual room = model.getIndividual(node.asNode()
.getURI());
rooms.add(room);
}
} finally {
// Important - free up resources used running the query
qe.close();
}
System.out.println("Iteration " + (i + 1) + " :: number of rooms: "
+ rooms.size());
pelletModel.removeSubModel(model, false);
pelletModel.close();
}
}
}
I'll try to send another example with the previously discussed behavior!
Best regards,
Todor
On 24.07.2008, at 20:50, Evren Sirin wrote:
> I was not able to reproduce this problem with the given code
> snippet. Are there any additional steps you are doing? Can you
> provide a complete program that demonstrates the problem?
>
> Thanks,
> Evren
>
> On 7/16/08 12:16 PM, Todor Dimitrov wrote:
>> Hi everybody,
>>
>> is there a possibility of detaching a Pellet model from its base
>> model.
>> What I have tried is to add the base model as a sub-model and later
>> on to
>> remove it. The problem is though that whenever I call close() on the
>> Pellet model, the base model also gets closed. Here is the example
>> code:
>>
>> ...
>> m_pelletModel = ModelFactory.
>> createOntologyModel(PelletReasonerFactory.THE_SPEC);
>> m_pelletModel.addSubModel(m_baseModel);
>> ...
>>
>> ...
>> m_pelletModel.removeSubModel(m_baseModel, false);
>> m_pelletModel.close();
>> ...
>>
>> If I then call for example:
>>
>> ...
>> final OntClass ontClass = m_baseModel.getOntClass(classUri);
>> final Individual individual = ontClass
>> .createIndividual(instanceUri);
>> ...
>>
>> I get the following exception:
>>
>> Caused by: com.hp.hpl.jena.shared.ClosedException: already closed
>> at
>> com.hp.hpl.jena.graph.impl.GraphBase.checkOpen(GraphBase.java:62)
>> at com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:
>> 239)
>> at
>> org
>> .mindswap
>> .pellet
>> .jena.DisjointMultiUnion.graphBaseFind(DisjointMultiUnion.java:125)
>> at com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:
>> 240)
>> at
>> com.hp.hpl.jena.graph.impl.GraphBase.graphBaseFind(GraphBase.java:
>> 260)
>> at com.hp.hpl.jena.graph.impl.GraphBase.find(GraphBase.java:
>> 257)
>> at
>> org.mindswap.pellet.jena.OWLLoader.hasObject(OWLLoader.java:396)
>> at
>> org.mindswap.pellet.jena.OWLLoader.node2term(OWLLoader.java:657)
>> at
>> org
>> .mindswap
>> .pellet
>> .jena.DisjointMultiUnion.addABoxChange(DisjointMultiUnion.java:446)
>> at
>> org
>> .mindswap
>> .pellet
>> .jena.DisjointMultiUnion.notifyAddTriple(DisjointMultiUnion.java:172)
>> at
>> com
>> .hp
>> .hpl
>> .jena
>> .graph
>> .impl.SimpleEventManager.notifyAddTriple(SimpleEventManager.java:60)
>> at
>> com.hp.hpl.jena.graph.impl.GraphBase.notifyAdd(GraphBase.java:133)
>> at com.hp.hpl.jena.graph.impl.GraphBase.add(GraphBase.java:
>> 200)
>> at
>> com.hp.hpl.jena.graph.compose.MultiUnion.performAdd(MultiUnion.java:
>> 116)
>> at com.hp.hpl.jena.graph.impl.GraphBase.add(GraphBase.java:
>> 199)
>> at com.hp.hpl.jena.rdf.model.impl.ModelCom.add(ModelCom.java:
>> 939)
>> at
>> com
>> .hp
>> .hpl.jena.rdf.model.impl.ResourceImpl.addProperty(ResourceImpl.java:
>> 245)
>> at
>> com
>> .hp
>> .hpl
>> .jena
>> .ontology.impl.OntModelImpl.getResourceWithType(OntModelImpl.java:
>> 2963)
>> at
>> com
>> .hp
>> .hpl
>> .jena
>> .ontology.impl.OntModelImpl.createOntResource(OntModelImpl.java:1836)
>> at
>> com
>> .hp
>> .hpl
>> .jena.ontology.impl.OntModelImpl.createIndividual(OntModelImpl.java:
>> 1137)
>> at
>> com
>> .hp
>> .hpl
>> .jena.ontology.impl.OntClassImpl.createIndividual(OntClassImpl.java:
>> 679)
>>
>>
>> Any clues on what I might be doing wrong?
>>
>>
>> Thanks in advance,
>>
>> Todor
>>
>>
>> _______________________________________________
>> Pellet-users mailing list
>> Pellet-users at lists.owldl.com
>> http://lists.owldl.com/mailman/listinfo/pellet-users
>> _______________________________________________
>>
>> Sponsored by Clark & Parsia, LLC http://clarkparsia.com/
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.owldl.com/pipermail/pellet-users/attachments/20080725/56a7e0cb/attachment-0001.htm
More information about the Pellet-users
mailing list