On 08/03/14 13:05, Miguel Bento Alves wrote:
I have an ontology where is defined that several sports are played by
several people. if you want to consult it, the file is in the following
link:
https://www.dropbox.com/s/vcazac9vdvx4me6/schema_data_Sport2.xml
I have the follow jena rule:
(?x exa:seaPartner ?y) <-
(?x exa:playSport ?s1),
(?y exa:playSport ?s2),
notEqual(?x, ?y),
(?s1 rdf:type exa:SeaSport),
(?s2 rdf:type exa:SeaSport).
When I execute the follow SPARQL command:
prefix exa: <http://www.example.org/example#>
select ?x ?y
where {
?x exa:sportPartner ?y .
}
I assume you mean exa:seaPartner.
the output is:
x -> exa:Ricardo; y -> exa:Miguel;
x -> exa:Miguel; y -> exa:Ricardo;
x -> exa:Miguel; y -> null:null;
x -> exa:Ricardo; y -> null:null;
I don't understand why the last two rows are listed.
Works for me:
"""
String NS = "http://www.example.org/example#";
PrintUtil.registerPrefix("eax", NS);
Model data =
FileManager.get().loadModel("data/schema_data_Sport2.rdf");
List<Rule> rules = Rule.rulesFromURL("file:data/test.rules");
GenericRuleReasoner reasoner = new GenericRuleReasoner(rules);
InfModel inf = ModelFactory.createInfModel(reasoner, data);
inf.setNsPrefixes(data);
printStatements(inf, null, inf.createProperty(NS + "seaPartner"),
null);
String query = "prefix exa: <http://www.example.org/example#>
select ?x ?y where { ?x exa:seaPartner ?y . }";
QueryExecution qexec = QueryExecutionFactory.create(query, inf);
ResultSetFormatter.out( qexec.execSelect() );
"""
where test.rules is your rule, produces:
- (eax:Ricardo eax:seaPartner eax:Miguel)
- (eax:Miguel eax:seaPartner eax:Ricardo)
---------------------------------------------------------------------------------------
| x | y
|
=======================================================================================
| <http://www.example.org/example#Ricardo> |
<http://www.example.org/example#Miguel> |
| <http://www.example.org/example#Miguel> |
<http://www.example.org/example#Ricardo> |
---------------------------------------------------------------------------------------
Perhaps you have some other rules, such as the OWL rules?
Dave