2016-04-15 6 views
0

Я использую rdflib-jsonld для анализа некоторых данных NoSQL и вставки в Sesame. Это проблематично часть кода:rdflib-jsonld генерирует ложный url, когда '<' используется в '@id'

context = { 
    "@context": { 
    "isGiven": URIRef('<'+'http://purl.org/net/something#isGiven'+rdfLizerItem['FooByBar']+'>'), 
    "administeredAs": URIRef('<'+'http://purl.org/net/something#administeredAs'+'>'), 
    "type":URIRef('<'+'http://www.w3.org/1999/02/22-rdf-syntax-ns#type'+'>'), 
    } 
    } 
    recipient=URIRef('<'+someUrl+rdfLizerItem['FooRecipient']+'>') 
    jsonldOutputIsAdmin = {"@id": recipient,"isGiven": URIRef('<'+someUrl+ rdfLizerItem['Quantity']+'>')} 
    print jsonldOutputIsAdmin 
    g = Graph() 
    g.parse(data=json.dumps(jsonldOutputIsAdmin), format='json-ld', context=context) 
    g.close() 
    for s,p,o in g: 
     pprint.pprint ((s,p,o)) 

Вопрос заключается при добавлении < и > к URL для @id, URL-адрес объекта становится полный путь к нему. Например:

(rdflib.term.URIRef(u'file:///C:/path/to/the/url/<http:/purl.org/net/ontologyName#subject>'), 
rdflib.term.URIRef(u'<http://purl.org/net/ontologyName#predicate>'), 
rdflib.term.Literal(u'<http://purl.org/net/ontologyName#object>')) 

Я хочу только URL-адрес объекта, а не путь к файлу. Что вызывает проблему и как я могу ее решить?

Мне нужно < и >, чтобы иметь возможность экспортировать троек в кунжут.

ответ

1

Чтобы избежать путь в файловой системе применяется в качестве префикса, необходимо обеспечить контекст со значением для base IRI

JSON-LD позволяет Айрис быть указаны в относительной форме, решен против основание документа согласно разделу 5.1 Установка Базовый URI [RFC3986]. Базовый IRI может быть явно задан с помощью контекста с использованием ключевого слова @base.

Например, если вы измените контекст, как это:

context['@context']['@base'] = '.'

вы не увидите путь Приставка @Id значение.

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