Jena показывает неправильное пространство имен для классов онтологии

У меня есть локальная онтология с несколькими классами, например 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/#, и я не верю, что это правильно. Что я делаю не так?


person cgf    schedule 24.05.2014    source источник
comment
Вы используете относительные URI, и они разрешаются по пути к файлу. Это та же проблема, описанная в URI ресурса RDF в модели Jena< /а>.   -  person Joshua Taylor    schedule 25.05.2014


Ответы (1)


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

означает разрешение «Пользователь» по базовому URI, который представляет собой файл:///home/myusername/. Это верно.

Либо установите базовый URI на то, что вам нужно в операции model.read, либо вы можете указать URI: полезная сущность XML: определите сущность и в rdf:ID=".." и xmlns:domain=".."

person AndyS    schedule 24.05.2014