2014-09-16 3 views
0

У меня есть существующий rdf-график, который я хочу изменить. Я хочу добавить информацию в переменную n.Python rdflib Элементы вложения

# source graph 
g = source.graph 

#new entry 
n = (URIRef(obj.pid), URIRef('info:symplectic/symplectic-elements:def/model#hasPublicUrl'), URIRef('http://itemlocation.com')) 

#add to graph 
g.add(n) 

#save back to source 
source.graph = g 

Выход:

<?xml version="1.0" encoding="UTF-8"?> 
<rdf:RDF 
    xmlns:fedora-model="info:fedora/fedora-system:def/model#" 
    xmlns:ns1="info:symplectic/symplectic-elements:def/model#" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <rdf:Description rdf:about="info:fedora/sympOE:mq5zf"> 
    <fedora-model:hasModel rdf:resource="info:fedora/emory-control:PublishedArticle-1.0"/> 
    </rdf:Description> 
    <rdf:Description rdf:about="sympOE:mq5zf"> 
    <ns1:hasPublicUrl rdf:resource="http://itemlocation.com"/> 
    </rdf:Description> 
</rdf:RDF> 

Все почти правильно, но я хочу, чтобы это было иначе в двух отношениях:

  1. Я хочу, чтобы только один РДФ: Описание раздела который содержит обе записи.
  2. Я хочу NS1 псевдоним быть Symp

Спасибо за помощь!

ответ

0

Я хочу, чтобы был только один раздел rdf: Описание, содержащее обе записи.

У вас должно быть два URI здесь info:fedora/sympOE:mq5zf и sympOE:mq5zf.

Попробуйте переписывать новую запись строку:

uri = URIRef('info:fedora/' + obj.pid) 
g.add(
    (uri, URIRef('info:symplectic/symplectic-elements:def/model#hasPublicUrl'), URIRef('http://itemlocation.com')) 
) 

Я хочу ns1 псевдоним быть Symp

Вы хотите связать пространство имен для графа. См. Примеры внизу this page.

Это будет выглядеть примерно так:

from rdflib import Namespace 
ns = Namespace('http://localhost/symp#') 
g.bind('symp', ns) 
+0

выпуск 1 - красивый – Alex

+0

выпуск 2 - красивая – Alex

Смежные вопросы