Jena为本体类显示错误的命名空间

时间:2014-05-24 14:29:22

标签: rdf jena rdfs

我有一个包含多个类的本地本体,例如User

<rdf:RDF 
     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
     xmlns:foaf="http://xmlns.com/foaf/0.1/" 
     xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
     xmlns:domain="http://www.somedomain.com/data/#">

    <rdfs:Class rdf:ID="User"> 
        <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Agent" />
        <rdfs:comment> 
            The class of users.
        </rdfs:comment>  
    </rdfs:Class>

</rdf:RDF>

如果我尝试打印这样的所有类:

/* Lists all classes */
ExtendedIterator<OntClass> classIterator = model.listClasses(); 
while (classIterator.hasNext()) { 
    OntClass ontClass = classIterator.next(); 
    System.out.println(ontClass.toString()); 
}

我用本地路径获取它们:

file:///home/myusername/#User

而不是

http://www.somedomain.com/data/#User

这非常令人讨厌,因为我在耶拿的名称空间是file:///home/myusername/#,我不相信这是正确的。我做错了什么?

1 个答案:

答案 0 :(得分:1)

<rdfs:Class rdf:ID="User">

意味着解决&#34;用户&#34;针对基URI,即file:/// home / myusername /。这是正确的。

将基本URI设置为model.read操作中所需的URI,或者您可以给出URI:一个有用的XML实体:定义实体并在rdf中:ID =&#34; ..&#34;和xmlns:domain =&#34; ..&#34;