Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 是否可以读取类的datatype属性的允许值?_Java_Rdf_Jena_Ontology_Rdfs - Fatal编程技术网

Java 是否可以读取类的datatype属性的允许值?

Java 是否可以读取类的datatype属性的允许值?,java,rdf,jena,ontology,rdfs,Java,Rdf,Jena,Ontology,Rdfs,我正在使用一个本体,我在其中创建了一个名为“USER”的类。此类包含名为“性别”的数据类型属性。然后,我为这个数据类型插入了两个允许的值,即“男性”和“女性”。我想提取这些数据类型属性值,以便将它们插入到网页中。但是我没有找到正确的方法。我甚至不知道是否可以读取这些值。 这是我的本体论的一部分。我真的非常感谢任何帮助或建议 <owl:DatatypeProperty rdf:ID="Gender"> <rdfs:domain rdf:resource="#USER"/&

我正在使用一个本体,我在其中创建了一个名为“USER”的类。此类包含名为“性别”的数据类型属性。然后,我为这个数据类型插入了两个允许的值,即“男性”和“女性”。我想提取这些数据类型属性值,以便将它们插入到网页中。但是我没有找到正确的方法。我甚至不知道是否可以读取这些值。
这是我的本体论的一部分。我真的非常感谢任何帮助或建议

<owl:DatatypeProperty rdf:ID="Gender">
    <rdfs:domain rdf:resource="#USER"/>
    <rdfs:range>
      <owl:DataRange>
        <owl:oneOf rdf:parseType="Resource">
          <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
          >male</rdf:first>
          <rdf:rest rdf:parseType="Resource">
            <rdf:first rdf:datatype="http://www.w3.org/2001/XMLSchema#string"
            >female</rdf:first>
            <rdf:rest rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"/>
          </rdf:rest>
        </owl:oneOf>
      </owl:DataRange>
    </rdfs:range>
  </owl:DatatypeProperty>
我在最近的代码中发现了2个强制转换错误,所以我尝试修复它。这是我的密码:

package test1;

import java.io.StringReader;

import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;

public class SafwenExample
{
    public static String NS = "http://www.owl-ontologies.com/Ontology_profile.owl#";

    public static String SOURCE = "@prefix : <http://www.owl-ontologies.com/Ontologyprofile.owl#> .\n" +
            "@prefix owl: <http://www.w3.org/2002/07/owl#>.\n" +
            "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n" +
            "@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n" +
            ":User a owl:Class.\n" +
            ":gender a owl:DatatypeProperty ;\n" +
            "  rdfs:domain :User ;\n" +
            "  rdfs:range [\n" +
            "    a owl:DataRange ;\n" +
            "    owl:oneOf ( \"male\"^^xsd:string \"female\"^^xsd:string )\n" +
            "].";

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

    public void run() {
        OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
        m.read( new StringReader( SOURCE ), null, "Turtle" );

        OntProperty gender = m.getOntProperty( NS + "gender" );

        DataRange genderRange = (DataRange) gender.getRange().as( DataRange.class );
        for (ExtendedIterator i = genderRange.listOneOf(); i.hasNext(); ) {
            Literal l = (Literal) i.next();
            System.out.println( "DataRange has value " + l.getLexicalForm() +
                                " with datatype: " + l.getDatatype() );
        }
    }
}
包测试1;
导入java.io.StringReader;
导入com.hp.hpl.jena.ontology.*;
导入com.hp.hpl.jena.rdf.model.Literal;
导入com.hp.hpl.jena.rdf.model.ModelFactory;
导入com.hp.hpl.jena.util.iterator.ExtendedIterator;
公共类示例
{
公共静态字符串NS=”http://www.owl-ontologies.com/Ontology_profile.owl#";
公共静态字符串源=“@前缀:。\n”+
“@前缀owl:。\n”+
“@前缀rdfs:。\n”+
“@前缀xsd:。\n”+
“:用户a owl:类。\n”+
“:性别owl:DatatypeProperty;\n”+
“rdfs:域:用户;\n”+
“rdfs:范围[\n”+
“owl:DataRange;\n”+
“owl:oneOf(\'male\'^^xsd:string\'female\'^^xsd:string)\n”+
"].";
公共静态void main(字符串[]args){
新建SafwenExample().run();
}
公开募捐{
OntModel m=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
m、 read(新StringReader(源代码),空,“海龟”);
OntProperty性别=m.getOntProperty(NS+“性别”);
DataRange genderRange=(DataRange)gender.getRange().as(DataRange.class);
for(ExtendedIterator i=genderRange.listOneOf();i.hasNext();){
文字l=(文字)i.next();
System.out.println(“DataRange有值”+l.getLexicalForm()+
数据类型为“+l.getDatatype()”;
}
}
}

Ps:非常感谢您的回答:)

是的,您可以使用Jena的:

包示例;
导入java.io.StringReader;
导入com.hp.hpl.jena.ontology.*;
导入com.hp.hpl.jena.rdf.model.Literal;
导入com.hp.hpl.jena.rdf.model.ModelFactory;
导入com.hp.hpl.jena.util.iterator.ExtendedIterator;
公共类示例
{
公共静态字符串NS=”http://example.com/example#";
公共静态字符串源=“@前缀:。\n”+
“@前缀owl:。\n”+
“@前缀rdfs:。\n”+
“@前缀xsd:。\n”+
“:用户a owl:类。\n”+
“:性别owl:DatatypeProperty;\n”+
“rdfs:域:用户;\n”+
“rdfs:范围[\n”+
“owl:DataRange;\n”+
“owl:oneOf(\'male\'^^xsd:string\'female\'^^xsd:string)\n”+
"].";
公共静态void main(字符串[]args){
新建SafwenExample().run();
}
公开募捐{
OntModel m=ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
m、 read(新StringReader(源代码),空,“海龟”);
OntProperty性别=m.getOntProperty(NS+“性别”);
DataRange genderRange=gender.getRange().as(DataRange.class);
for(ExtendedIterator i=genderRange.listOneOf();i.hasNext();){
文字l=i.next();
System.out.println(“DataRange有值”+l.getLexicalForm()+
数据类型为“+l.getDatatype()”;
}
}
}

顺便说一句,我确定了你的名字:class
User
(大写,然后是驼色),property
gender
(小写)。

我一直在等待你的建议:)上面的评论。这段代码使用JDK1.7.0和Jena的2.10.0版运行,没有任何更改。请问我还需要使用其他库吗?我已经安装了JDK1.7.0和jena 2.4.6,因为我有旧的版本,但仍然有一个错误。thnaksVersion 2.4.6太旧了。使用当前版本2.10.0。我仍在获取以下错误:线程“main”java.lang.NoClassDefFoundError中的异常:org/slf4j/LoggerFactory位于com.hp.hpl.jena.util.Metadata。(Metadata.java:39)位于com.hp.hpl.jena.JenaRuntime。(JenaRuntime.java:34)我是否应该将slf4j库添加到项目的libs中?您正在运行哪个版本的Java和Jena?我注意到您将泛型迭代器
扩展迭代器I
更改为
扩展迭代器I
,这表明Java的版本非常旧。如果您的Jena安装没有将
Turtle
识别为输入语法,那么它肯定非常古老!
package test1;

import java.io.StringReader;

import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;

public class SafwenExample
{
    public static String NS = "http://www.owl-ontologies.com/Ontology_profile.owl#";

    public static String SOURCE = "@prefix : <http://www.owl-ontologies.com/Ontologyprofile.owl#> .\n" +
            "@prefix owl: <http://www.w3.org/2002/07/owl#>.\n" +
            "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n" +
            "@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n" +
            ":User a owl:Class.\n" +
            ":gender a owl:DatatypeProperty ;\n" +
            "  rdfs:domain :User ;\n" +
            "  rdfs:range [\n" +
            "    a owl:DataRange ;\n" +
            "    owl:oneOf ( \"male\"^^xsd:string \"female\"^^xsd:string )\n" +
            "].";

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

    public void run() {
        OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
        m.read( new StringReader( SOURCE ), null, "Turtle" );

        OntProperty gender = m.getOntProperty( NS + "gender" );

        DataRange genderRange = (DataRange) gender.getRange().as( DataRange.class );
        for (ExtendedIterator i = genderRange.listOneOf(); i.hasNext(); ) {
            Literal l = (Literal) i.next();
            System.out.println( "DataRange has value " + l.getLexicalForm() +
                                " with datatype: " + l.getDatatype() );
        }
    }
}
package example;

import java.io.StringReader;

import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.Literal;
import com.hp.hpl.jena.rdf.model.ModelFactory;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;

public class SafwenExample
{
    public static String NS = "http://example.com/example#";

    public static String SOURCE = "@prefix : <http://example.com/example#> .\n" +
            "@prefix owl: <http://www.w3.org/2002/07/owl#>.\n" +
            "@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.\n" +
            "@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.\n" +
            ":User a owl:Class.\n" +
            ":gender a owl:DatatypeProperty ;\n" +
            "  rdfs:domain :User ;\n" +
            "  rdfs:range [\n" +
            "    a owl:DataRange ;\n" +
            "    owl:oneOf ( \"male\"^^xsd:string \"female\"^^xsd:string )\n" +
            "].";

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

    public void run() {
        OntModel m = ModelFactory.createOntologyModel( OntModelSpec.OWL_MEM );
        m.read( new StringReader( SOURCE ), null, "Turtle" );

        OntProperty gender = m.getOntProperty( NS + "gender" );

        DataRange genderRange = gender.getRange().as( DataRange.class );
        for (ExtendedIterator<Literal> i = genderRange.listOneOf(); i.hasNext(); ) {
            Literal l = i.next();
            System.out.println( "DataRange has value " + l.getLexicalForm() +
                                " with datatype: " + l.getDatatype() );
        }
    }
}