2016-07-05 2 views
0

У меня есть сова файл, содержащая некоторые аксиомы:Как протеже показывает OWL аксиомы в читаемом формате

<rdfs:subClassOf> 
    <owl:Restriction> 
     <owl:onProperty rdf:resource="namespace#Gender"/> 
     <owl:hasValue>M</owl:hasValue> 
    </owl:Restriction> 
</rdfs:subClassOf> 
<rdfs:subClassOf> 
    <owl:Restriction> 
     <owl:onProperty rdf:resource="namespace#Address"/> 
     <owl:minQualifiedCardinality rdf:datatype="&xsd;nonNegativeInteger">1</owl:minQualifiedCardinality> 
     <owl:onDataRange rdf:resource="&xsd;string"/> 
    </owl:Restriction> 
</rdfs:subClassOf> 

Для выше двух аксиом протеже показывают читаемую строку как:

Gender value "M" 
Address min 1 xsd:string 

Вопрос заключается в том, как протеже генерирует эту читаемые строки из файла OWL?

Также, если я хочу создать новую аксиому из этих строк, как это сделать? (преобразование аксиомы в читаемую строку, а затем преобразование читаемой строки в аксиому назад)

ответ

3

Показанный формат, который вы показываете, является синтаксисом Манчестера OWL.

Для того, чтобы вывести онтология в этом формате, вы можете использовать сову код API:

OWLOntology ontology = ...// load or create the ontology 
OutputStream out = ... // any output stream will do 
ontology.getOWLOntologyManager().saveOntology(ontology, new ManchesterSyntaxDocumentFormat(), out); 
out.close(); 

Синтаксический полную онтологию в формате синтаксиса Манчестер происходит, как и любой другой онтологии: ontologyManager.loadOntologyFromOntologyDocument() с входом файл.

Разбор одиночных аксиом возможен, но гораздо сложнее, поскольку формат опирается на префиксы, установленные один раз для целостной онтологии; поэтому требуется много кода установки. Я бы не рекомендовал делать это в качестве стартового проекта.

+1

Приведенный выше код отлично подходит для всей онтологии. но есть ли способ обрабатывать каждую аксиому отдельно? Также как преобразовать читаемую строку в аксиому, чтобы я мог ее обновить в OWL-файл? – SuhasD

+2

'ManchesterOWLSyntaxObjectRenderer' и' ManchesterOWLSyntaxEditorParser' - классы, которые будут использоваться в этом случае. – AKSW

+0

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