2017-02-01 3 views
0

Эй, я сделал учебник протеже для pizzas. У меня есть файл совы. Я сохранил файл как формат RDF/XML. Теперь я пытаюсь получить некоторую информацию о данных в файле. Вещи вроде:Sparql запрос на отношения

"Select * where { 
?s rdfs:subClassOf owl:Thing 
} 

работа. Теперь я хочу получить все предметы и объекты, которые связаны с «hasTopping».

OntModel m = ModelFactory.createOntologyModel(OWL_MEM); 

    InputStream in = FileManager.get().open("pizza1.owl"); 
    m.read(in, "RDF/XML"); 
    String queryString = 
        "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> " + 
        "PREFIX : <http://www.pizza.com/ontologies/pizza.owl> " + 
        "PREFIX owl: <http://www.w3.org/2002/07/owl#>" + 
        "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>" + 
        "PREFIX xml: <http://www.w3.org/XML/1998/namespace>" + 
        "SELECT * WHERE" + 
        "{" + 
        "?s :hasTopping ?o" + 
        "}"; 
    Query query = QueryFactory.create(queryString); 
    QueryExecution qexec = QueryExecutionFactory.create(query,m); 
    try { 
     ResultSet results = qexec.execSelect(); 
     while(results.hasNext()) { 
      QuerySolution soln = results.nextSolution(); 
      RDFNode name = soln.get("s"); 
      RDFNode name1 = soln.get("o"); 


      //RDFNode name2 = soln.get("s"); 
      System.out.println("Subject:" + name); 
      System.out.println("Object:" + name1); 

      //System.out.println(name2); 
     } 
    } finally { 
     qexec.close(); 
    } 

Но результат всегда пуст. Надеюсь, кто-нибудь может мне помочь.

Прошу прощения!

ответ

1

В префиксном объявлении : отсутствует разделитель, такой как # или / - зависит от его определения в онтологии.

Без него, используя :hasTopping Результаты URI http://www.pizza.com/ontologies/pizza.owlhasTopping