2011-08-22 8 views
3

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() + " . }"); 
} 

가 나는 또한이 시도. 어떤 아이디어? 졸업 증서 논문에 필요합니다. 감사합니다

+1

안녕하세요 viktor, 마지막으로 문제를 해결 했습니까? –

답변

0

나는 늦을지도 모르지만 추측에 포함 된 모든 규칙을 얻으려면 올빼미가 가득 찬 것으로 전환해야한다고 생각합니다.