2013-02-14 2 views
0

Я пытается запустить DL запрос с использованием OWL API, используя DL Query Пример (http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java)Обработка ограничений значений данных в ЭБ запросе

hasExperience некоторые (Опыт и hasYearsOfExperience некоторые INT [> = 1])

Это прекрасно работает и отображает ожидаемый результат в Protege, но возвращает следующее сообщение об ошибке в Java:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Prefix not registered for prefix name: : 
    at org.semanticweb.owlapi.util.DefaultPrefixManager.getIRI(DefaultPrefixManager.java:199) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.getIRI(ManchesterOWLSyntaxEditorParser.java:3112) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.getOWLDatatype(ManchesterOWLSyntaxEditorParser.java:563) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseDataRangePrimary(ManchesterOWLSyntaxEditorParser.java:1032) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseDataUnionOf(ManchesterOWLSyntaxEditorParser.java:1013) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseDataIntersectionOf(ManchesterOWLSyntaxEditorParser.java:995) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseDataRange(ManchesterOWLSyntaxEditorParser.java:988) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseDataRestriction(ManchesterOWLSyntaxEditorParser.java:908) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseNonNaryClassExpression(ManchesterOWLSyntaxEditorParser.java:787) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseUnion(ManchesterOWLSyntaxEditorParser.java:688) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseIntersection(ManchesterOWLSyntaxEditorParser.java:663) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseNestedClassExpression(ManchesterOWLSyntaxEditorParser.java:1212) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseObjectRestriction(ManchesterOWLSyntaxEditorParser.java:819) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseNonNaryClassExpression(ManchesterOWLSyntaxEditorParser.java:783) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseUnion(ManchesterOWLSyntaxEditorParser.java:688) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseIntersection(ManchesterOWLSyntaxEditorParser.java:663) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseNestedClassExpression(ManchesterOWLSyntaxEditorParser.java:1212) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseObjectRestriction(ManchesterOWLSyntaxEditorParser.java:819) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseNonNaryClassExpression(ManchesterOWLSyntaxEditorParser.java:783) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseUnion(ManchesterOWLSyntaxEditorParser.java:688) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseIntersection(ManchesterOWLSyntaxEditorParser.java:663) 
    at org.coode.owlapi.manchesterowlsyntax.ManchesterOWLSyntaxEditorParser.parseClassExpression(ManchesterOWLSyntaxEditorParser.java:650) 
    at org.coode.owlapi.examples.DLQueryParser.parseClassExpression(DLQueryManager.java:413) 
    at org.coode.owlapi.examples.DLQueryEngine.getInstances(DLQueryManager.java:324) 
    at org.coode.owlapi.examples.DLQueryManager.getInstances(DLQueryManager.java:127) 

Любые идеи, как это исправить?

ответ

1

Проблема, похоже, связана с тем, как вы обрабатываете префиксы, а не из DL-запроса.

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

В своем коде вы должны иметь что-то подобное тоже:

String base = "http://example.com/"; 
PrefixManager pm = new DefaultPrefixManager(base); 

Вы также можете посмотреть на documentation, чтобы узнать больше о префиксов.

+0

Проблема была связана с несоответствием типа. Литерал OWL - это Integer, тогда как я запрашивал int. Я исправил проблему, заменив int [> = 1] на xsd: integer [> = 1]. –