我使用TopBraid作为IDE和耶拿在Java中。 出于同样的SPARQL查询和相同的文件,我得到两个不同的结果集。 本体可以在这里找到, https://dl.dropboxusercontent.com/u/108022472/ontology.owl
该SPARQL是:
select ?individual ?type ?label where {
?individual rdf:type ?type .
?individual rdfs:label ?label
filter (?type in (wo:Kingdom))
}
我的Java代码:
public class ExeSparql {
static String prefix = "PREFIX owl: <http://www.w3.org/2002/07/owl#> " +
"PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> " +
"PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> " +
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +
"PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> " +
"PREFIX : <http://dbpedia.org/resource/> " +
"PREFIX dbpedia2: <http://dbpedia.org/property/> " +
"PREFIX wo:<http://purl.org/ontology/wo/>" +
"PREFIX dbpedia: <http://dbpedia.org/> ";
public static ResultSet execute(String queryString){
queryString = prefix + queryString;
Model model = null;
try {
InputStream in = new FileInputStream(new File("/home/noor/TBCMEWorkspace/recreate/index.rdf"));
// Create an empty in-memory model and populate it from the graph
model = ModelFactory.createOntologyModel();
model.read(in,null); // null base URI, since model URIs are absolute
in.close();
} catch (IOException e) {
e.printStackTrace();
}
Query query = QueryFactory.create(queryString);
// Execute the query and obtain results
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results, query);
//qe = QueryExecutionFactory.create(query, model);
//results = qe.execSelect();
return results;
}
}
是否存在与耶拿代码的任何问题吗? 使用topbraid,结果是好的,同时与耶拿,结果是错误的。
结果应该是:
| WO:王国| “动物” | | | WO:王国| “动物界”
但随着耶拿,其返回一组与不正确类型的结果