This reasoner, implemented in Java, is built upon PELLET (OWL-DL reasoner) to reason on similarities. The provided API consists of a SPARQL interface which allows accessing the reasoner’s functionalities pervasively.

This API uses the following libraries:

Similarities can be defined according to the ontology similarity (examples in the file similarity.owl).

A full similarity (or similarity-on-undividual) can be defined as follows:

<owl:NamedIndividual rdf:about="">
    <rdf:type rdf:resource=""/>
    <similarTo rdf:resource=""/>

That OWL statement defines un1 as an uncertainty (uncertainElement) similar to Flavio (in the context of the ontology UC1).

Partial similarity (or similarity-on-property) can be defined as in the example below:

<owl:NamedIndividual rdf:about="">
    <rdf:type rdf:resource=""/>
    <similarTo rdf:resource=""/>
    <onProperty rdf:datatype=""></onProperty>
    <onProperty rdf:datatype=""></onProperty>

The individual un1 is stated similar to Flavio only on the properties detectedAt and lives.

Finally, similarity-on-value can be defined as follows:

<owl:NamedIndividual rdf:about="">
    <rdf:type rdf:resource=""/>
    <similarTo rdf:resource=""/>
    <onValue rdf:datatype="">,</onValue>

The individual un5 is declared similar to Mary but also of type surfer.

The class includes a simple code to reason on the similarities (defined in similarity.owl) in the context of the example ontology in the file UC1.owl.

Current version:

Previous versions:

Run the example below ( to quickly get started:

// The CONTEXT ontology + The SIMILARITY ontology
private String	ontology	= "file:///Users/spileggi/Desktop/UC1.owl";
private String	similarity	= "file:///Users/spileggi/Desktop/similarity.owl";

private String similarityPrefix = "";
String queryString =        
    "select ?surfer "+
    "where { "+
    "?surfer a <>  "+
    "} \n ";
public void run() {

	SFactorRS rs = new SFactorRS();
	SFactorRS rs1 = new SFactorRS();
	//The class similarityOnIndividual considers ONLY full similarities (similarity-on-individual)
	rs = new similarityOnIndividual(similarityPrefix).QueryOnSimilarity(ontology, similarity, queryString);
	/*The class similarityOnProperty processes both full similarities (similarity-on-individual)
	and partial similarities (similarity-on-property)*/
	rs1 = new similarityOnProperty(similarityPrefix).QueryOnSimilarity(ontology, similarity, queryString);