2013-10-09 2 views
0

Я загрузил OWL-файл из Интернета, и мне нужно знать, как он был написан с использованием Jena. Я могу писать простые документы RDF, но я не могу понять, что писать OWL-документы. Содержимое файла OWL приведено ниже.Как создать документ OWL

<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:dc="http://purl.org/dc/elements/1.1/"> 

    <!-- OWL Header Example --> 
    <owl:Ontology rdf:about="http://www.linkeddatatools.com/plants"> 
     <dc:title>The LinkedDataTools.com Example Plant Ontology</dc:title> 
     <dc:description>An example ontology written for the LinkedDataTools.com RDFS & OWL introduction tutorial</dc:description> 
    </owl:Ontology> 

    <!-- OWL Class Definition Example --> 
    <owl:Class rdf:about="http://www.linkeddatatools.com/plants#planttype"> 
     <rdfs:label>The plant type</rdfs:label> 
     <rdfs:comment>The class of plant types.</rdfs:comment> 
     <rdfs:description> Plant type description </rdfs:description> 
    </owl:Class> 
</rdf:RDF> 

ответ

6

Нет никакой разницы. Онтология OWL, закодированная в RDF, является еще одним документом RDF - нет ничего особенного в синтаксисе OWL, насколько это касается Йены. В документе RDF важно то, что он содержит в тройках: поэтому вы можете закодировать RDF в XML, Turtle или N-тройках, и все они эквивалентны - просто разные способы записи тех же троек.

Как только инструмент RDF загрузил тройки в график (т. Е. Model в Йене), тогда он может дать другую интерпретацию терминам из пространства имен owl:.

Update

ОК, следующий запрос в комментарии здесь код, который генерирует свой выходной образец:

package example; 

import com.hp.hpl.jena.ontology.*; 
import com.hp.hpl.jena.rdf.model.ModelFactory; 
import com.hp.hpl.jena.vocabulary.*; 

public class OWLOutputExample 
{ 
    public static final String PLANTS = "http://www.linkeddatatools.com/plants"; 

    public static void main(String[] args) { 
     new OWLOutputExample().run(); 
    } 

    public void run() { 
     OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM); 

     setNamespaces(m); 
     populateOntology(m); 
     writeOntology(m); 
    } 

    private void setNamespaces(OntModel m) { 
     m.setNsPrefix("owl", OWL.getURI()); 
     m.setNsPrefix("rdf", RDF.getURI()); 
     m.setNsPrefix("rdfs", RDFS.getURI()); 
     m.setNsPrefix("dc", DC_11.getURI()); 
     m.setNsPrefix("plants", PLANTS); 
    } 

    private void populateOntology(OntModel m) { 
     Ontology ont = m.createOntology(PLANTS); 
     ont.addProperty(DC_11.title, "The LinkedDataTools.com Example Plant Ontology") 
      .addProperty(DC_11.description, "An example ontology written for the " + 
               "LinkedDataTools.com RDFS & OWL introduction tutorial"); 

     OntClass plantType = m.createClass(PLANTS + "#planttype"); 
     plantType.addProperty(RDFS.label, "The plant type") 
       .addProperty(RDFS.comment, "The class of plant types."); 
    } 

    private void writeOntology(OntModel m) { 
     m.write(System.out, "RDF/XML-ABBREV"); 
    } 
} 

Выход:

<rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:plants="http://www.linkeddatatools.com/plants" 
    xmlns:owl="http://www.w3.org/2002/07/owl#" 
    xmlns:dc="http://purl.org/dc/elements/1.1/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema#" 
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> 
    <owl:Ontology rdf:about="http://www.linkeddatatools.com/plants"> 
    <dc:description>An example ontology written for the LinkedDataTools.com RDFS &amp; OWL introduction tutorial</dc:description> 
    <dc:title>The LinkedDataTools.com Example Plant Ontology</dc:title> 
    </owl:Ontology> 
    <owl:Class rdf:about="http://www.linkeddatatools.com/plants#planttype"> 
    <rdfs:comment>The class of plant types.</rdfs:comment> 
    <rdfs:label>The plant type</rdfs:label> 
    </owl:Class> 
</rdf:RDF> 

Обратите внимание, что rdfs:description не известно RDFS, поэтому я его оставил.

+0

Я понимаю, что вы говорите. Но я хочу знать, как написать выше документ OWL в Йене. Можете ли вы дать мне код для создания этого документа OWL. – user360321

+0

Фантастический !!!! Большое спасибо. Это именно то, что я хотел знать. Если вы не возражаете, у меня есть еще один вопрос для вас. Я хочу использовать этот документ OWL и динамически добавлять подкласс для классов, которые у меня есть в этом документе OWL? Можете ли вы предложить мне хороший способ для этого? – user360321

+1

@ user360321 Это действительно отдельный вопрос. [Этот ответ] (http://stackoverflow.com/a/18804302/1281433) содержит некоторые примеры добавления подклассов. –