Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Jena将.owl文件导入eclipse并创建其实例_Java_Eclipse_Jena_Ontology - Fatal编程技术网

Java 如何使用Jena将.owl文件导入eclipse并创建其实例

Java 如何使用Jena将.owl文件导入eclipse并创建其实例,java,eclipse,jena,ontology,Java,Eclipse,Jena,Ontology,您好,我已经使用protege(.owl文件)创建了一个本体。现在我希望将其导入一个java程序(在eclipse上使用jena)并创建它的实例(我的意思是,我的本体表示一些通用的、一系列的状态,这些实例应该表示一个特定的状态) 需要导入和创建 稍后,我计划比较用户输入(即包含实例的文件)并输出实例所处的状态 我是新来的,非常新。因此,我们非常感谢所有的帮助 多谢各位 owl文件的内容如下: <?xml version="1.0"?> <!DOCTYPE rdf:RDF

您好,我已经使用protege(.owl文件)创建了一个本体。现在我希望将其导入一个java程序(在eclipse上使用jena)并创建它的实例(我的意思是,我的本体表示一些通用的、一系列的状态,这些实例应该表示一个特定的状态) 需要导入和创建

稍后,我计划比较用户输入(即包含实例的文件)并输出实例所处的状态

我是新来的,非常新。因此,我们非常感谢所有的帮助

多谢各位

owl文件的内容如下:

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

]>

问题陈述相当不清楚,因此我刚刚创建了一个基本的框架应用程序,它将向您展示基本步骤。顺便说一下,您的输入本体存在许多问题:

  • 它不会在您用作命名空间的URL上发布-这不是致命的,但您应该在某个时候修复它。我通过使用Jena内置的备用定位机制解决了这个问题

  • 属性名称以大写字母开头(例如,
    HasDuration
    )。RDF样式是使用前导大写字母作为类本地名称,使用前导小写字母作为属性本地名称(因此:
    hasDuration

  • 但事实上,一般的惯例是无论如何都要去掉像has和is这样的前缀(所以:
    duration

  • 您有一些名为
    0
    1
    2
    等的类,它们是
    攻击
    的超类,似乎没有任何用途

无论如何,这里有一个框架应用程序,您可以根据自己的需要进行调整:

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 .
@前缀rdfs:。
@前缀owl:。
@前缀xsd:。
@前缀rdf:。
@前缀st:。
攻击01
a:攻击;
st:HasDuration“10”^^xsd:int。