Пеллет не включает мои правила SWRL - PullRequest
3 голосов
/ 22 августа 2011

Я строю онтологию, которая использует правила SWRL для вывода. Когда я делаю SQWRL-запросы в Protege, он работает нормально. Проблема в том, что когда я хочу использовать Pellet с Jena, кажется, что Pellet не включает в запрос правила SWRL. Я включаю пеллету так:

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

Я тоже пробовал это:

Reasoner r = PelletReasonerFactory.theInstance().create();
InfModel inferenceModel = ModelFactory.createInfModel(r, model);

но без прогресса. Есть идеи? Мне это нужно для дипломной работы. Спасибо

Ответы [ 2 ]

1 голос
/ 05 сентября 2014

Насколько я знаю, пеллет не может поддерживать SQWRL. С другой стороны, он поддерживает SWRL, но с некоторыми ограничениями (см. http://clarkparsia.com/pellet/faq/rules).

0 голосов
/ 06 марта 2014

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

...