2016-02-26 2 views
0

Это часть моего CS.owl, которая показывает индивидуальную DropBox класса CloudService.извлечение людей из файла OWL с использованием запроса sparql Jena

<!-- http://www.semanticweb.org/ontologies/SaaS-24-03-2013.owl#DropBox --> 
    <owl:NamedIndividual rdf:about="&SaaS-24-03-2013;DropBox"> 
     <rdf:type rdf:resource="&SaaS-24-03-2013;CloudService"/> 
     <hasPriceModel rdf:resource="&SaaS-24-03-2013;Freemium"/> 
     <hasDeliveryModel rdf:resource="&SaaS-24-03-2013;Software-as-a-Service"/> 
    </owl:NamedIndividual> 

Мне нужно найти людей (таких как DropBox) класса CloudService с помощью Jena. Следующий запрос SPARQL отлично работает в Protege 4.3. Он извлекает множество сервисов, включая «DropBox». Мне нужно запустить его с помощью Йены. Вот мой код

 String query = "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+ 
         "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 : <http://www.semanticweb.org/ontologies/SaaS-24-03-2013.owl#> "+ 
             "SELECT ?Service "+ 
               " WHERE {"+ 
              " ?Service a :CloudService} "; 
      model = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RULE_INF); 
       model.read("ontologies/CS.owl"); 
     Query query = QueryFactory.create(SparqlQuery); 
       QueryExecution qe = QueryExecutionFactory.create(query, model); 
       com.hp.hpl.jena.query.ResultSet results = qe.execSelect();   
    qe.close(); 
ResultSetFormatter.out(System.out, results); 
} 

Запрос возвращает пустой результат под заголовком столбца Хотя он работает по результатам протеже и возвращает (в том числе DropBox) Что случилось с моим кодом?

ответ

1

Вы закрыли выполнение qe, а затем попытались распечатать результаты. Код должен завершить работу с результатами, вызвавшими qe.close. Переместите линию ResultSetFormatter.

+0

Большое спасибо @AndyS –

+0

Я также использовал следующее для отображения результатов в то время как (results.hasNext()) { \t \t \t QuerySolution QS = results.next(); \t \t \t System.out.println (qs); \t} –

+0

Если у вас есть другой вопрос, либо открыть новый поток, либо если он тесно связан, измените существующий вопрос, пожалуйста. – AKSW

Смежные вопросы