Hi Christopher,
This is indeed a bug in OWLIM-Lite - the same thing happens when OWLIM
is used locally.
Strangely, calling clear() with a context seems to work correctly, it is
only calling it with no parameters that causes the number returned from
size() to jump up.
I have added it to our bug tracker and plan to have it fixed for the
next release of owlim, ~end of june.
Thanks for reporting it.
barry
On 15/05/12 17:12, Lott, Christopher M wrote:
I am working with owlim-lite-5.0.5001 accessed as a remote HTTP repository using Sesame
2.6.5. I noticed that invoking the clear method doesn't seem to clear things out; in fact
on a new repository, the size *increases* after I call the clear method. This seems to
be a consequence of using RDFS reasoning rules, because if I use a repository with
"empty" rule set, the size behaves the same as an in-memory or MySQL
repository, namely that clear() returns it to zero. Would someone please explain?
I've attached a program that demonstrates the behavior. Also see below for the
transcript of using the sesame console application to create an empty
repository on which I ran the program.
---
import org.openrdf.model.Resource;
import org.openrdf.model.URI;
import org.openrdf.model.ValueFactory;
import org.openrdf.model.vocabulary.RDF;
import org.openrdf.repository.Repository;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.repository.http.HTTPRepository;
import org.openrdf.repository.sail.SailRepository;
import org.openrdf.sail.memory.MemoryStore;
import org.openrdf.sail.rdbms.mysql.MySqlStore;
/**
* Tests Sesame repository implementation of size method. On an in-memory or a
* MySQL repository, after calling the clear() method the size() method returns
* zero. On a remote Owlim repository that uses rule-set "rdfs", after calling
* clear() the size() method returns a number larger than before the clear().
*
* @author clott
*/
public class TestAddRemoveClear {
/**
* Arguments control which repository implementation is used. Invoke
with:
*<UL>
*<LI>1 argument: the URI of a remote repository
*<LI>4 arguments: the host name, database name, user name and password
for
* a MySQL repository
*<LI>Other argument count: ignores arguments, uses an in-memory
* repository.
*</UL>
*
* @param args
*/
public static void main(String[] args) {
try {
// Get started
Repository repo = null;
if (args.length == 4) {
System.out.println("Using mysql repository on host
" + args[0]);
MySqlStore sqlStore = new MySqlStore(args[1]);
sqlStore.setServerName(args[0]);
sqlStore.setPortNumber(3306);
sqlStore.setUser(args[2]);
sqlStore.setPassword(args[3]);
repo = new SailRepository(sqlStore);
} else if (args.length == 1) {
System.out.println("Using remote repository at
" + args[0]);
repo = new HTTPRepository(args[0]);
} else {
System.out.println("Creating an in-memory Sail
repository");
repo = new SailRepository(new MemoryStore());
}
// Init the repo and connect
System.out.println("Initializating and connecting");
repo.initialize();
RepositoryConnection con = repo.getConnection();
// Get the initial size
Long beforeSize = con.size();
System.out.println("Size at start is " + beforeSize);
// Create some resources and literals to use in
statements
ValueFactory f = repo.getValueFactory();
String namespace = "http://example.org/ontology#";
URI personClassUri = f.createURI(namespace + "Person");
// Add the entity
System.out.println("Adding entity of type Person");
Resource entity = f.createBNode();
con.add(entity, RDF.TYPE, personClassUri);
// Get the modified size
Long modSize = con.size();
System.out.println("Size after add is " + modSize);
// Remove the newly added statements
System.out.println("Removing the newly added entity");
con.remove(entity, RDF.TYPE, personClassUri);
long afterSize = con.size();
System.out.println("Size after remove is " + afterSize);
System.out.println("Clearing repo");
con.clear();
long clearSize = con.size();
System.out.println("Size after clear is " + clearSize);
// Drop connection and release the lock on the
repository
System.out.println("Closing connection and shutting
down");
con.close();
repo.shutDown();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
---
$ openrdf-sesame-2.6.5/bin/console.sh
11:03:59.830 [main] DEBUG info.aduna.platform.PlatformFactory - os.name = linux
11:03:59.834 [main] DEBUG info.aduna.platform.PlatformFactory - Detected Posix
platform
Connected to default data directory
Commands end with '.' at the end of a line
Type 'help.' for help
connect http://localhost:8080/openrdf-sesame .
Disconnecting from default data directory
Connected to http://localhost:8080/openrdf-sesame
create owlim-lite .
Please specify values for the following variables:
Repository ID [owlim-lite-test]: lott
Repository title [OWLIM-Lite test repository]: Lott rdfs
Storage folder [storage]:
Rule-set [owl-horst-optimized]: rdfs
Base URL [http://example.org/owlim#]:
Entity index size [200000]:
No Persistence [false]:
Imported RDF files(';' delimited):
Default namespaces for imports(';' delimited):
Repository created
quit .
Disconnecting from http://localhost:8080/openrdf-sesame
Bye
_______________________________________________
Owlim-discussion mailing list
[email protected]
http://ontomail.semdata.org/cgi-bin/mailman/listinfo/owlim-discussion
_______________________________________________
Owlim-discussion mailing list
[email protected]
http://ontomail.semdata.org/cgi-bin/mailman/listinfo/owlim-discussion