SWRL 규칙을 사용하여 온톨로지를 작성합니다. Protege에서 SQWRL 질의를하면 잘 동작합니다. 문제는 내가 Jena로 Pellet을 사용하려고 할 때, Pellet이 쿼리에 SWRL 규칙을 포함하지 않는 것처럼 보입니다. 나는이 같은 펠렛을 포함한다 :펠렛에 내 SWRL 규칙이 없습니다.
Reasoner r = PelletReasonerFactory.theInstance().create();
InfModel inferenceModel = ModelFactory.createInfModel(r, model);
하지만 진행 :
InputStream in = new FileInputStream(new File("D:\\Fakultet\\WeatherHealthcast1.owl"));
Model model = ModelFactory.createDefaultModel();
model.read(in, null);
OntModel ontology = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC, model);
// Create a new query
String queryString =
"PREFIX WeatherHealthcast: <http://www.semanticweb.org/ontologies/2011/2/WeatherHealthcast.owl#> " +
"PREFIX foaf: <http://xmlns.com/foaf/0.1/> " +
"PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " +
"SELECT ?disease " +
"WHERE { " +
" ?person rdf:type WeatherHealthcast:Person." +
" ?person foaf:firstName ?fn." +
" ?person foaf:lastName ?ln." +
" FILTER regex(str(?fn), \"Viktor\")." +
" FILTER regex(str(?ln), \"Taneski\")." +
" ?disease rdf:type WeatherHealthcast:Disease. " +
" ?person WeatherHealthcast:suffersFrom ?disease." +
"}";
Query query = QueryFactory.create(queryString);
// Execute the query and obtain results
QueryExecution qe = QueryExecutionFactory.create(query, ontology);
ResultSet resultSet = qe.execSelect();
System.out.println("TEST");
while (resultSet.hasNext())
{
QuerySolution result = resultSet.next();
RDFNode disease = result.get("disease");
Resource resource = disease.asResource();
System.out.println(" { Suffers from: " + resource.getLocalName() + " . }");
}
가 나는 또한이 시도. 어떤 아이디어? 졸업 증서 논문에 필요합니다. 감사합니다
안녕하세요 viktor, 마지막으로 문제를 해결 했습니까? –