SPARQL-запрос для поиска в онтологии с использованием Jena API - PullRequest
0 голосов
/ 26 февраля 2019

Привет, я работаю над Проектом Финального Года , который в основном Поисковая система вакансий с использованием онтологии .Я использую технологию Java.

Способ, которым он работает, заключается в том, что пользователь ищет любую работу, например: Java-разработчик, а затем это ключевое слово должно идти в созданной онтологии и соответствовать в онтологии.После сопоставления он отправляет файл XML, который содержит все задания и получает только сопоставленные задания.

Онтология успешно создана, и единственная проблема заключается в том, что у меня возникают проблемы с пониманием и записью SPARQL-запрос с Jena API , который будет принимать введенное пользователем ключевое слово и переходить в файл OWL или RDF Ontology , затем находить совпадение, затем переходить к файлу данных XML и получать толькосопоставление данных и отображение их на странице.

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

    OntModel model = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM_MICRO_RULE_INF);
    String inputFileName="e:/springmvc/jena/bin/jena/ontology14.owl";
    InputStream in = FileManager.get().open( inputFileName );
    if (in == null) {
        throw new IllegalArgumentException(
             "File: " + inputFileName + " not found");
    }
    model.read(in, null);

    String queryString =
            "prefix rdfs: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "+       
            "prefix owl: <http://www.w3.org/2002/07/owl#> "+       
            "select ?ab where {?person owl:equivalentClass ?ab " +
            "}";
    Query query = QueryFactory.create(queryString);
    QueryExecution qe = QueryExecutionFactory.create(query, model);
    ResultSet results =  qe.execSelect();
    while(results.hasNext()){
        QuerySolution soln = results.nextSolution();
        Literal jobs = soln.getLiteral("x");
        System.out.println(jobs);
    }
    qe.close();

Ошибка, которую я получаю:

Exception in thread "main" java.lang.ClassCastException: com.hp.hpl.jena.rdf.model.impl.ResourceImpl cannot be cast to com.hp.hpl.jena.rdf.model.Literal
at com.hp.hpl.jena.sparql.core.QuerySolutionBase.getLiteral(QuerySolutionBase.java:41)
at jena.jeena.main(jeena.java:79)
...