2015-03-17 7 views
0

Я уже здесь несколько часов, пытаясь заставить Пелле работать с Дженной. Теперь я, наконец, дошел до того, что он работал. Запросы классов и классов с неудовлетворительными результатами идут хорошо. Например:Jena and Pellet поиск по метке возвращает ошибку

SELECT * WHERE { ?x rdf:type uni:Adult} 

Однако при попытке запроса для метки с помощью этого:

SELECT * WHERE { ?x ?y "Vincent"^^xsd:string} 

возвращается:

[email protected] 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX uni: <http://localhost/SemanticSearch/semanticsearch.owl#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 

SELECT * 
WHERE 
    { ?x ?y "Vincent"^^xsd:string } 

    { 
     "head": { 
     "vars": [ "x" , "y" ] 
     } , 
     "results": { 
     "bindings": [ 
    mrt 18, 2015 1:06:41 PM org.mindswap.pellet.jena.graph.loader.DefaultGraphLoader addUnsupportedFeature 
    WARNING: Unsupported axiom: Ignoring range axiom for AnnotationProperty http://www.w3.org/2000/01/rdf-schema#label 
    mrt 18, 2015 1:06:41 PM org.mindswap.pellet.jena.graph.loader.DefaultGraphLoader addUnsupportedFeature 
    WARNING: Unsupported axiom: Ignoring range axiom for AnnotationProperty http://localhost/SemanticSearch/semanticsearch.owl#altLabel 

     ] 
     } 
    } 

Мой полный код выглядит следующим образом:

  Model rawModel = ModelFactory.createDefaultModel(); 
      Reasoner r = PelletReasonerFactory.theInstance().create(); 
      Model data = FileManager.get().loadModel("file:C:/wamp/www/SemanticSearch/workspace/SemanticSearch/src/semanticsearch.owl"); 

      InfModel model = ModelFactory.createInfModel(r, data); 
      InputStream in = new FileInputStream(new File("C:/wamp/www/SemanticSearch/semanticsearch.owl")); 

      System.out.println(model.getReasoner()); 


      String sparqlQueryString1= "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>" + 
       "PREFIX owl: <http://www.w3.org/2002/07/owl#>"+ 
        " PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>"+ 
        " PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>"+ 
        " PREFIX uni: <http://localhost/SemanticSearch/semanticsearch.owl#>"+ 
        " SELECT * WHERE { ?x ?y \"Vincent\"^^xsd:string}"; 
       System.out.println(sparqlQueryString1); 


          Query query = QueryFactory.create(sparqlQueryString1); 
          QueryExecution qexec = QueryExecutionFactory.create(query, model); 

          ResultSet results = qexec.execSelect(); 
         //ORGINEEL ResultSetFormatter.out(System.out, results, query);  
         //ALS RDF ResultSetFormatter.outputAsRDF("", results);  
          ResultSetFormatter.outputAsJSON(results); 
         qexec.close() ; 
     } 

Не запрашиваются строки запроса i n Йена? Даже когда я использую Пелле? Есть ли какой-либо другой способ запросить альтлябелы моей онтологии с помощью Йены и Пелле?

ответ

0

Хорошо, это было просто глупо. Оказалось, что я случайно экспортировал свою онтологию с использованием OWL/XML, сохраняя ее как RDF/XML.

0

Это предупреждение говорит только о том, что аргумент игнорирует диапазоны, объявленные по свойствам аннотации. На ваш запрос не следует влиять.

+0

Да, это то, что я понял, однако, когда я выполняю запрос на сервере Protege или Fuseki, он возвращает результаты. Используя тот же самый запрос в java, Jena возвращает 0, а запрос класса работает –