Hi i have created an ontology using protege(.owl file).Now i wish to import this into a java program(using jena on eclipse) and create instances of it(What i mean is that my ontology represents something general, a range of states, The instances should represent a specific state.) The importing and creation is required.
Later on i plan to compare user inputs(which are files containing instances) and output what state that instance is in.
I am new to this,extremely new. So all help is appreciated.
Thank you
The contents of the owl file are as follows:
<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY owl "http://www.w3.org/2002/07/owl#" >
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
<!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
<!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
<!ENTITY Ontology1365003423152 "http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#" >
]>
<rdf:RDF xmlns="http://www.w3.org/2002/07/owl#"
xml:base="http://www.w3.org/2002/07/owl"
xmlns:Ontology1365003423152="http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#">
<Ontology rdf:about="http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl"/>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Datatypes
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Data properties
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#HasDuration -->
<DatatypeProperty rdf:about="&Ontology1365003423152;HasDuration">
<rdf:type rdf:resource="&owl;FunctionalProperty"/>
<rdfs:domain rdf:resource="&Ontology1365003423152;Attack"/>
<rdfs:range rdf:resource="&xsd;positiveInteger"/>
</DatatypeProperty>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#HasFlag -->
<DatatypeProperty rdf:about="&Ontology1365003423152;HasFlag">
<rdf:type rdf:resource="&owl;FunctionalProperty"/>
<rdfs:domain rdf:resource="&Ontology1365003423152;Attack"/>
<rdfs:range rdf:resource="&xsd;string"/>
</DatatypeProperty>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#HasProtocol -->
<DatatypeProperty rdf:about="&Ontology1365003423152;HasProtocol">
<rdf:type rdf:resource="&owl;FunctionalProperty"/>
<rdfs:domain rdf:resource="&Ontology1365003423152;Attack"/>
<rdfs:range rdf:resource="&xsd;string"/>
</DatatypeProperty>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#HasService -->
<DatatypeProperty rdf:about="&Ontology1365003423152;HasService">
<rdf:type rdf:resource="&owl;FunctionalProperty"/>
<rdfs:domain rdf:resource="&Ontology1365003423152;Attack"/>
<rdfs:range rdf:resource="&xsd;string"/>
</DatatypeProperty>
<!--
///////////////////////////////////////////////////////////////////////////////////////
//
// Classes
//
///////////////////////////////////////////////////////////////////////////////////////
-->
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#0 -->
<Class rdf:about="&Ontology1365003423152;0">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackDuration"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#1 -->
<Class rdf:about="&Ontology1365003423152;1">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackDuration"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#2 -->
<Class rdf:about="&Ontology1365003423152;2">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackDuration"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#6 -->
<Class rdf:about="&Ontology1365003423152;6">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackDuration"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Attack -->
<Class rdf:about="&Ontology1365003423152;Attack"/>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#AttackDuration -->
<Class rdf:about="&Ontology1365003423152;AttackDuration"/>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#AttackFlag -->
<Class rdf:about="&Ontology1365003423152;AttackFlag"/>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#AttackProtocolType -->
<Class rdf:about="&Ontology1365003423152;AttackProtocolType"/>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#AttackService -->
<Class rdf:about="&Ontology1365003423152;AttackService"/>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Domain_u -->
<Class rdf:about="&Ontology1365003423152;Domain_u">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Eco_i -->
<Class rdf:about="&Ontology1365003423152;Eco_i">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Ecr_i -->
<Class rdf:about="&Ontology1365003423152;Ecr_i">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Finger -->
<Class rdf:about="&Ontology1365003423152;Finger">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Ftp_data -->
<Class rdf:about="&Ontology1365003423152;Ftp_data">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Http -->
<Class rdf:about="&Ontology1365003423152;Http">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Icmp -->
<Class rdf:about="&Ontology1365003423152;Icmp">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackProtocolType"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Mailbomb -->
<Class rdf:about="&Ontology1365003423152;Mailbomb">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;Attack"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#NoAttack -->
<Class rdf:about="&Ontology1365003423152;NoAttack">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;Attack"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Private -->
<Class rdf:about="&Ontology1365003423152;Private">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#SF -->
<Class rdf:about="&Ontology1365003423152;SF">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackFlag"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Smtp -->
<Class rdf:about="&Ontology1365003423152;Smtp">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackService"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Smurf -->
<Class rdf:about="&Ontology1365003423152;Smurf">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;Attack"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Tcp -->
<Class rdf:about="&Ontology1365003423152;Tcp">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackProtocolType"/>
</Class>
<!-- http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#Udp -->
<Class rdf:about="&Ontology1365003423152;Udp">
<rdfs:subClassOf rdf:resource="&Ontology1365003423152;AttackProtocolType"/>
</Class>
</rdf:RDF>
<!-- Generated by the OWL API (version 3.2.3.1824) http://owlapi.sourceforge.net -->
The problem statement is rather unclear, so I've just created a basic skeleton application that will show you the basic steps. By the way, there are a number of problems with your input ontology:
it's not published at the URL you are using as a namespace - not fatal, but you should fix this at some point. I've worked around it by using the alternate location mechanism built-in to Jena
you have property names beginning with capital letters (eg HasDuration
). RDF style is to use a leading capital letter for class local names, and a leading lower case letter for property local names (so: hasDuration
)
but in fact the general convention is to leave off prefixes like 'has' and 'is' anyway (so: duration
)
you have some classes called 0
, 1
, 2
etc, that are super-classes of Attack
and that don't seem to have any purpose
Anyway, here's a skeleton application which you can adapt to your needs:
package examples;
import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.util.FileManager;
public class SamThomasExample
{
/***********************************/
/* Constants */
/***********************************/
// where the ontology should be
public static final String SOURCE_URL = "http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl";
// where we've stashed it on disk for the time being
protected static final String SOURCE_FILE = "./src/main/resources/Ontology1365003423152.owl";
// the namespace of the ontology
public static final String NS = SOURCE_URL + "#";
/***********************************/
/* External signature methods */
/***********************************/
public static void main( String[] args ) {
new SamThomasExample().run();
}
public void run() {
OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
loadModel( m );
// get an OntClass reference to one of the classes in the model
// note: ideally, we would delegate this step to Jena's schemagen tool
OntClass attack = m.getOntClass( NS + "Attack" );
// similarly a reference to the attack duration property,
// and again, using schemagen would be better
OntProperty attackDuration = m.getDatatypeProperty( NS + "HasDuration" );
// create an instance of the attack class to represent the current attack
Individual attack01 = m.createIndividual( NS + "attack01", attack );
// add a duration to the attack
attack01.addProperty( attackDuration, m.createTypedLiteral( 10 ) );
// finally, print out the model to show that we have some data
m.write( System.out, "Turtle" );
}
/***********************************/
/* Internal implementation methods */
/***********************************/
/** read the ontology and add it as a sub-model of the given ontmodel */
protected void loadModel( OntModel m ) {
FileManager.get().getLocationMapper().addAltEntry( SOURCE_URL, SOURCE_FILE );
Model baseOntology = FileManager.get().loadModel( SOURCE_URL );
m.addSubModel( baseOntology );
// for compactness, add a prefix declaration st: (for Sam Thomas)
m.setNsPrefix( "st", NS );
}
}
And here's the output I get:
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix st: <http://www.semanticweb.org/ontologies/2013/3/Ontology1365003423152.owl#> .
st:attack01
a st:Attack ;
st:HasDuration "10"^^xsd:int .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.