Для Вашего третьего вопроса возможно, trace
модуль - то, в чем Вы нуждаетесь:
>>> def y(a): return a*a
>>> def x(a): return y(a)
>>> import trace
>>> tracer = trace.Trace(countfuncs = 1)
>>> tracer.runfunc(x, 2)
4
>>> res = tracer.results()
>>> res.calledfuncs
{('', '', 'y'): 1, ('', '', 'x'): 1}
res.calledfuncs
содержит функции, которые были вызваны. Если Вы определяете countcallers = 1
при создании трассировщика, можно получить отношения вызывающей стороны/вызываемого. Посмотрите документы trace
модуль для получения дополнительной информации.
можно также попытаться получить вызовы через статический анализ, но это может быть опасно из-за динамического характера Python.
Я не думаю, что вы можете использовать QName в значении атрибута XML; например, значение rdf: около
. Итак, рассмотрите эту строку из вашего файла RDF / XML:
<bibo:Journal rdf:about="ex:bibdienst">
Я думаю, что на самом деле здесь говорится о том, что URI субъекта - ex: bibdienst. Это синтаксически допустимый URI, но это не тот же URI, который отображается как объект тройки, соответствующей этой строке:
Yep Stephen C is totally correct that you can't use QNames in XML attributes, you can use XML entities instead which you define in a DTD block at the top of your document like so:
eg.
<!DOCTYPE rdf:RDF[
<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<!ENTITY rdfs 'http://www.w3.org/2000/01/rdf-schema#'>
<!ENTITY xsd 'http://www.w3.org/2001/XMLSchema#'>
<!ENTITY ex 'http://example.org/thesis/'>
<!ENTITY dc 'http://purl.org/dc/elements/1.1/'>
<!ENTITY foaf 'http://xmlns.com/foaf/0.1/'>
<!ENTITY bibo 'http://purl.org/ontology/bibo/'>
]>
Then you can define attributes like so:
<bibo:Journal rdf:about="&ex;bibdienst">