2013-04-13 34 views
3

嗨,我已经创建使用门生(.owl文件)的本体。现在我想导入到一个java程序(使用Eclipse的耶拿)这一点,并创建它的实例(我的意思是,我的本体代表的东西一般情况下,一个国家范围内的,该实例应该代表一个特定的状态。) 的进口和需要创造。如何使用耶拿导入.owl文件到Eclipse,并创建它的实例

后来我打算比较用户输入(这是包含实例文件)和输出什么状态实例中。

我是新来这个,非常新。所以所有的帮助表示赞赏。

谢谢

猫头鹰文件的内容如下:

<?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 --> 

回答

7

问题描述比较混乱,所以我刚刚创建了一个基本框架的应用程序,会告诉你的基本脚步。顺便说一句,有一些与您输入的本体问题:

  • 这不是你正在使用的命名空间中的URL发布 - 不是致命的,但你应该在某个时候解决这个问题。我已经使用备用位置机制内置在耶拿

  • 围绕它的工作,你有属性名称以大写字母(例如HasDuration)开始。 RDF风格是使用领先的大写字母作为本地名称,并且使用领先的小写字母表示本地名称(例如:hasDuration

  • 但实际上,一般约定是省略“has”和“是,”无论如何(所以:duration

  • 你似乎有一些类称为012等,是的Attack超类和不具有任何目的

总之,这里是一个骨架应用程序,它可以适应您的需求:

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); 
    } 

} 

和这里的输出我得到:

@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 .