-
Notifications
You must be signed in to change notification settings - Fork 22
/
pyRdfa-pysrc.html
1162 lines (1152 loc) · 289 KB
/
pyRdfa-pysrc.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>pyRdfa</title>
<link rel="stylesheet" href="epydoc.css" type="text/css" />
<script type="text/javascript" src="epydoc.js"></script>
</head>
<body bgcolor="white" text="black" link="blue" vlink="#204080"
alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
<tr valign="middle">
<!-- Tree link -->
<th> <a
href="module-tree.html">Trees</a> </th>
<!-- Index link -->
<th> <a
href="identifier-index.html">Indices</a> </th>
<!-- Help link -->
<th> <a
href="help.html">Help</a> </th>
<th class="navbar" width="100%"></th>
</tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
<tr valign="top">
<td width="100%">
<span class="breadcrumbs">
Package pyRdfa
</span>
</td>
<td>
<table cellpadding="0" cellspacing="0">
<!-- hide/show private -->
<tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide private</a>]</span></td></tr>
<tr><td align="right"><span class="options"
>[<a href="frames.html" target="_top">frames</a
>] | <a href="pyRdfa-pysrc.html"
target="_top">no frames</a>]</span></td></tr>
</table>
</td>
</tr>
</table>
<h1 class="epydoc">Source Code for <a href="pyRdfa-module.html">Package pyRdfa</a></h1>
<pre class="py-src">
<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># -*- coding: utf-8 -*-</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring">RDFa 1.1 parser, also referred to as a “RDFa Distiller”. It is</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring">deployed, via a CGI front-end, on the U{W3C RDFa 1.1 Distiller page<http://www.w3.org/2012/pyRdfa/>}.</tt> </tt>
<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring">For details on RDFa, the reader should consult the U{RDFa Core 1.1<http://www.w3.org/TR/rdfa-core/>}, U{XHTML+RDFa1.1<http://www.w3.org/TR/2010/xhtml-rdfa>}, and the U{RDFa 1.1 Lite<http://www.w3.org/TR/rdfa-lite/>} documents.</tt> </tt>
<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring">The U{RDFa 1.1 Primer<http://www.w3.org/TR/owl2-primer/>} may also prove helpful.</tt> </tt>
<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring">This package can also be downloaded U{from GitHub<https://github.com/RDFLib/pyrdfa3>}. The</tt> </tt>
<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-docstring">distribution also includes the CGI front-end and a separate utility script to be run locally.</tt> </tt>
<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-docstring">Note that this package is an updated version of a U{previous RDFa distiller<http://www.w3.org/2007/08/pyRdfa>} that was developed</tt> </tt>
<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-docstring">for RDFa 1.0. Although it reuses large portions of that code, it has been quite thoroughly rewritten, hence put in a completely</tt> </tt>
<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-docstring">different project. (The version numbering has been continued, though, to avoid any kind of misunderstandings. This version has version numbers "3.0.0" or higher.)</tt> </tt>
<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring">(Simple) Usage</tt> </tt>
<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">==============</tt> </tt>
<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">From a Python file, expecting a Turtle output::</tt> </tt>
<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring"> from pyRdfa import pyRdfa</tt> </tt>
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring"> print pyRdfa().rdf_from_source('filename')</tt> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">Other output formats are also possible. E.g., to produce RDF/XML output, one could use::</tt> </tt>
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring"> from pyRdfa import pyRdfa</tt> </tt>
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring"> print pyRdfa().rdf_from_source('filename', outputFormat='pretty-xml')</tt> </tt>
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring">It is also possible to embed an RDFa processing. Eg, using::</tt> </tt>
<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"> from pyRdfa import pyRdfa</tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring"> graph = pyRdfa().graph_from_source('filename')</tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-docstring">returns an RDFLib.Graph object instead of a serialization thereof. See the the description of the</tt> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring">L{pyRdfa class<pyRdfa.pyRdfa>} for further possible entry points details.</tt> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring">There is also, as part of this module, a L{separate entry for CGI calls<processURI>}.</tt> </tt>
<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring">Return (serialization) formats</tt> </tt>
<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring">------------------------------</tt> </tt>
<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring">The package relies on RDFLib. By default, it relies therefore on the serializers coming with the local RDFLib distribution. However, there has been some issues with serializers of older RDFLib releases; also, some output formats, like JSON-LD, are not (yet) part of the standard RDFLib distribution. A companion package, called pyRdfaExtras, is part of the download, and it includes some of those extra serializers. The extra format (not part of the RDFLib core) is U{JSON-LD<http://json-ld.org/spec/latest/json-ld-syntax/>}, whose 'key' is 'json', when used in the 'parse' method of an RDFLib graph.</tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring">(Note in 2018: the bugs that needed pyRdfaExtras are gone with the RDFLib versions, and the json-ld serializer and parser can be U{downloaded from github<https://github.com/RDFLib/rdflib-jsonld>} (or installed via pip). This means that importing pyRdfaExtras is done only when running older (i.e., 2.X.X) RDFLib versions and can be safely ignored these days.) </tt> </tt>
<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring">Options</tt> </tt>
<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring">=======</tt> </tt>
<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring">The package also implements some optional features that are not part of the RDFa recommendations. At the moment these are:</tt> </tt>
<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"> - possibility for plain literals to be normalized in terms of white spaces. Default: false. (The RDFa specification requires keeping the white spaces and leave applications to normalize them, if needed)</tt> </tt>
<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> - inclusion of embedded RDF: Turtle content may be enclosed in a C{script} element and typed as C{text/turtle}, U{defined by the RDF Working Group<http://www.w3.org/TR/turtle/>}. Alternatively, some XML dialects (e.g., SVG) allows the usage of RDF/XML as part of their core content to define metadata in RDF. For both of these cases pyRdfa parses these serialized RDF content and adds the resulting triples to the output Graph. Default: true.</tt> </tt>
<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> - extra, built-in transformers are executed on the DOM tree prior to RDFa processing (see below). These transformers can be provided by the end user.</tt> </tt>
<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring">Options are collected in an instance of the L{Options} class and may be passed to the processing functions as an extra argument. E.g., to allow the inclusion of embedded content::</tt> </tt>
<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> from pyRdfa.options import Options</tt> </tt>
<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> options = Options(embedded_rdf=True)</tt> </tt>
<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> print pyRdfa(options=options).rdf_from_source('filename')</tt> </tt>
<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring">See the description of the L{Options} class for the details.</tt> </tt>
<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring">Host Languages</tt> </tt>
<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring">==============</tt> </tt>
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring">RDFa 1.1. Core is defined for generic XML; there are specific documents to describe how the generic specification is applied to</tt> </tt>
<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring">XHTML and HTML5.</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring">pyRdfa makes an automatic switch among these based on the content type of the source as returned by an HTTP request. The following are the</tt> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring">possible host languages:</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> - if the content type is C{text/html}, the content is HTML5</tt> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> - if the content type is C{application/xhtml+xml} I{and} the right DTD is used, the content is XHTML1</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> - if the content type is C{application/xhtml+xml} and no or an unknown DTD is used, the content is XHTML5</tt> </tt>
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> - if the content type is C{application/svg+xml}, the content type is SVG</tt> </tt>
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> - if the content type is C{application/atom+xml}, the content type is SVG</tt> </tt>
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> - if the content type is C{application/xml} or C{application/xxx+xml} (but 'xxx' is not 'atom' or 'svg'), the content type is XML</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring">If local files are used, pyRdfa makes a guess on the content type based on the file name suffix: C{.html} is for HTML5, C{.xhtml} for XHTML1, C{.svg} for SVG, anything else is considered to be general XML. Finally, the content type may be set by the caller when initializing the L{pyRdfa class<pyRdfa.pyRdfa>}.</tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring">Beyond the differences described in the RDFa specification, the main difference is the parser used to parse the source. In the case of HTML5, pyRdfa uses an U{HTML5 parser<http://code.google.com/p/html5lib/>}; for all other cases the simple XML parser, part of the core Python environment, is used. This may be significant in the case of erroneous sources: indeed, the HTML5 parser may do adjustments on</tt> </tt>
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring">the DOM tree before handing it over to the distiller. Furthermore, SVG is also recognized as a type that allows embedded RDF in the form of RDF/XML.</tt> </tt>
<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring">See the variables in the L{host} module if a new host language is added to the system. The current host language information is available for transformers via the option argument, too, and can be used to control the effect of the transformer.</tt> </tt>
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring">Vocabularies</tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring">============</tt> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring">RDFa 1.1 has the notion of vocabulary files (using the C{@vocab} attribute) that may be used to expand the generated RDF graph. Expansion is based on some very simply RDF Schema and OWL statements on sub-properties and sub-classes, and equivalences.</tt> </tt>
<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring">pyRdfa implements this feature, although it does not do this by default. The extra C{vocab_expansion} parameter should be used for this extra step, for example::</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> from pyRdfa.options import Options</tt> </tt>
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> options = Options(vocab_expansion=True)</tt> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> print pyRdfa(options=options).rdf_from_source('filename')</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring">The triples in the vocabulary files themselves (i.e., the small ontology in RDF Schema and OWL) are removed from the result, leaving the inferred property and type relationships only (additionally to the “core” RDF content).</tt> </tt>
<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring">Vocabulary caching</tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring">------------------</tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring">By default, pyRdfa uses a caching mechanism instead of fetching the vocabulary files each time their URI is met as a C{@vocab} attribute value. (This behavior can be switched off setting the C{vocab_cache} option to false.)</tt> </tt>
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring">Caching happens in a file system directory. The directory itself is determined by the platform the tool is used on, namely:</tt> </tt>
<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> - On Windows, it is the C{pyRdfa-cache} subdirectory of the C{%APPDATA%} environment variable</tt> </tt>
<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> - On MacOS, it is the C{~/Library/Application Support/pyRdfa-cache}</tt> </tt>
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> - Otherwise, it is the C{~/.pyRdfa-cache}</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring">This automatic choice can be overridden by the C{PyRdfaCacheDir} environment variable.</tt> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring">Caching can be set to be read-only, i.e., the setup might generate the cache files off-line instead of letting the tool writing its own cache when operating, e.g., as a service on the Web. This can be achieved by making the cache directory read only.</tt> </tt>
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring">If the directories are neither readable nor writable, the vocabulary files are retrieved via HTTP every time they are hit. This may slow down processing, it is advised to avoid such a setup for the package.</tt> </tt>
<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring">The cache includes a separate index file and a file for each vocabulary file. Cache control is based upon the C{EXPIRES} header of a vocabulary file’s HTTP return header: when first seen, this data is stored in the index file and controls whether the cache has to be renewed or not. If the HTTP return header does not have this entry, the date is artificially set ot the current date plus one day.</tt> </tt>
<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring">(The cache files themselves are dumped and loaded using U{Python’s built in cPickle package<http://docs.python.org/release/2.7/library/pickle.html#module-cPickle>}. These are binary files. Care should be taken if they are managed by CVS: they must be declared as binary files when adding them to the repository.)</tt> </tt>
<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring">RDFa 1.1 vs. RDFa 1.0</tt> </tt>
<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring">=====================</tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring">Unfortunately, RDFa 1.1 is I{not} fully backward compatible with RDFa 1.0, meaning that, in a few cases, the triples generated from an RDFa 1.1 source are not the same as for RDFa 1.0. (See the separate U{section in the RDFa 1.1 specification<http://www.w3.org/TR/rdfa-core/#major-differences-with-rdfa-syntax-1.0>} for some further details.)</tt> </tt>
<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring">This distiller’s default behavior is RDFa 1.1. However, if the source includes, in the top element of the file (e.g., the C{html} element) a C{@version} attribute whose value contains the C{RDFa 1.0} string, then the distiller switches to a RDFa 1.0 mode. (Although the C{@version} attribute is not required in RDFa 1.0, it is fairly commonly used.) Similarly, if the RDFa 1.0 DTD is used in the XHTML source, it will be taken into account (a very frequent setup is that an XHTML file is defined with that DTD and is served as text/html; pyRdfa will consider that file as XHTML5, i.e., parse it with the HTML5 parser, but interpret the RDFa attributes under the RDFa 1.0 rules).</tt> </tt>
<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring">Transformers</tt> </tt>
<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring">============</tt> </tt>
<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring">The package uses the concept of 'transformers': the parsed DOM tree is possibly</tt> </tt>
<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring">transformed I{before} performing the real RDFa processing. This transformer structure makes it possible to</tt> </tt>
<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring">add additional 'services' without distoring the core code of RDFa processing.</tt> </tt>
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring">A transformer is a function with three arguments:</tt> </tt>
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> - C{node}: a DOM node for the top level element of the DOM tree</tt> </tt>
<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> - C{options}: the current L{Options} instance</tt> </tt>
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> - C{state}: the current L{ExecutionContext} instance, corresponding to the top level DOM Tree element</tt> </tt>
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring">The function may perform any type of change on the DOM tree; the typical behavior is to add or remove attributes on specific elements. Some transformations are included in the package and can be used as examples; see the L{transform} module of the distribution. These are:</tt> </tt>
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> - The C{@name} attribute of the C{meta} element is copied into a C{@property} attribute of the same element</tt> </tt>
<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> - Interpreting the 'openid' references in the header. See L{transform.OpenID} for further details.</tt> </tt>
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> - Implementing the Dublin Core dialect to include DC statements from the header. See L{transform.DublinCore} for further details.</tt> </tt>
<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring">The user of the package may refer add these transformers to L{Options} instance. Here is a possible usage with the “openid” transformer added to the call::</tt> </tt>
<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> from pyRdfa.options import Options</tt> </tt>
<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> from pyRdfa.transform.OpenID import OpenID_transform</tt> </tt>
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> options = Options(transformers=[OpenID_transform])</tt> </tt>
<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> print pyRdfa(options=options).rdf_from_source('filename')</tt> </tt>
<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring">@summary: RDFa parser (distiller)</tt> </tt>
<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring">@requires: Python version 2.7 or python 3.8 or up</tt> </tt>
<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring">@requires: U{RDFLib<http://rdflib.net>}; version 3.X is preferred.</tt> </tt>
<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring">@requires: U{html5lib<http://code.google.com/p/html5lib/>} for the HTML5 parsing (note that version 1.0b1 and 1.0b2 should be avoided, it may lead to unicode encoding problems)</tt> </tt>
<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring">@requires: U{httpheader<http://deron.meranda.us/python/httpheader/>}; however, a small modification had to make on the original file, so for this reason and to make distribution easier this module (single file) is added to the package.</tt> </tt>
<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring">@organization: U{World Wide Web Consortium<http://www.w3.org>}</tt> </tt>
<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring">@author: U{Ivan Herman<a href="http://www.w3.org/People/Ivan/">}</tt> </tt>
<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring">@license: This software is available for use under the</tt> </tt>
<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring">U{W3C® SOFTWARE NOTICE AND LICENSE<href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">}</tt> </tt>
<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring">@var builtInTransformers: List of built-in transformers that are to be run regardless, because they are part of the RDFa spec</tt> </tt>
<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring">@var CACHE_DIR_VAR: Environment variable used to define cache directories for RDFa vocabularies in case the default setting does not work or is not appropriate.</tt> </tt>
<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring">@var rdfa_current_version: Current "official" version of RDFa that this package implements by default. This can be changed at the invocation of the package</tt> </tt>
<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring">@var uri_schemes: List of registered (or widely used) URI schemes; used for warnings...</tt> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt>
<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-string">"4.0.0"</tt> </tt>
<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable pyRdfa.__author__=pyRdfa-module.html#__author__"><a title="pyRdfa.__author__" class="py-name" href="#" onclick="return doclink('link-0', '__author__', 'link-0');">__author__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Ivan Herman'</tt> </tt>
<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-name">__contact__</tt> <tt class="py-op">=</tt> <tt class="py-string">'Ivan Herman, ivan@w3.org'</tt> </tt>
<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable pyRdfa.__license__=pyRdfa-module.html#__license__"><a title="pyRdfa.__license__" class="py-name" href="#" onclick="return doclink('link-1', '__license__', 'link-1');">__license__</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'W3C® SOFTWARE NOTICE AND LICENSE, http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231'</tt> </tt>
<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> </tt>
<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable pyRdfa.name=pyRdfa-module.html#name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-2', 'name', 'link-2');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"pyRdfa3"</tt> </tt>
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> </tt>
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable pyRdfa.PY3=pyRdfa-module.html#PY3,Variable pyRdfa.rdfs.cache.PY3=pyRdfa.rdfs.cache-module.html#PY3"><a title="pyRdfa.PY3
pyRdfa.rdfs.cache.PY3" class="py-name" href="#" onclick="return doclink('link-3', 'PY3', 'link-3');">PY3</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">>=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> </tt>
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-4" class="py-name"><a title="pyRdfa.PY3
pyRdfa.rdfs.cache.PY3" class="py-name" href="#" onclick="return doclink('link-4', 'PY3', 'link-3');">PY3</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">io</tt> <tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">StringIO</tt> <tt class="py-keyword">import</tt> <tt class="py-name">StringIO</tt> </tt>
<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> </tt>
<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Variable pyRdfa.host.MediaTypes.xml=pyRdfa.host.MediaTypes-class.html#xml"><a title="pyRdfa.host.MediaTypes.xml" class="py-name" href="#" onclick="return doclink('link-5', 'xml', 'link-5');">xml</a></tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt> </tt>
<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-6" class="py-name"><a title="pyRdfa.PY3
pyRdfa.rdfs.cache.PY3" class="py-name" href="#" onclick="return doclink('link-6', 'PY3', 'link-3');">PY3</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Module pyRdfa.parse=pyRdfa.parse-module.html,Method pyRdfa.rdflibparsers.HTurtleParser.parse()=pyRdfa.rdflibparsers.HTurtleParser-class.html#parse,Method pyRdfa.rdflibparsers.RDFa10Parser.parse()=pyRdfa.rdflibparsers.RDFa10Parser-class.html#parse,Method pyRdfa.rdflibparsers.RDFaParser.parse()=pyRdfa.rdflibparsers.RDFaParser-class.html#parse,Method pyRdfa.rdflibparsers.StructuredDataParser.parse()=pyRdfa.rdflibparsers.StructuredDataParser-class.html#parse"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-7', 'parse', 'link-7');">parse</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt>
<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">rdflib</tt> </tt>
<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">URIRef</tt> </tt>
<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Literal</tt> </tt>
<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">BNode</tt> </tt>
<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Namespace</tt> </tt>
<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">rdflib</tt><tt class="py-op">.</tt><tt class="py-name">__version__</tt> <tt class="py-op">>=</tt> <tt class="py-string">"3.0.0"</tt> <tt class="py-op">:</tt> </tt>
<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">RDF</tt> <tt class="py-keyword">as</tt> <tt id="link-8" class="py-name" targets="Variable pyRdfa.rdfs.ns_rdf=pyRdfa.rdfs-module.html#ns_rdf"><a title="pyRdfa.rdfs.ns_rdf" class="py-name" href="#" onclick="return doclink('link-8', 'ns_rdf', 'link-8');">ns_rdf</a></tt> </tt>
<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">RDFS</tt> <tt class="py-keyword">as</tt> <tt id="link-9" class="py-name" targets="Variable pyRdfa.rdfs.ns_rdfs=pyRdfa.rdfs-module.html#ns_rdfs"><a title="pyRdfa.rdfs.ns_rdfs" class="py-name" href="#" onclick="return doclink('link-9', 'ns_rdfs', 'link-9');">ns_rdfs</a></tt> </tt>
<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Graph</tt> </tt>
<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt><tt class="py-op">.</tt><tt class="py-name">RDFS</tt> <tt class="py-keyword">import</tt> <tt class="py-name">RDFSNS</tt> <tt class="py-keyword">as</tt> <tt id="link-10" class="py-name"><a title="pyRdfa.rdfs.ns_rdfs" class="py-name" href="#" onclick="return doclink('link-10', 'ns_rdfs', 'link-9');">ns_rdfs</a></tt> </tt>
<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt><tt class="py-op">.</tt><tt class="py-name">RDF</tt> <tt class="py-keyword">import</tt> <tt class="py-name">RDFNS</tt> <tt class="py-keyword">as</tt> <tt id="link-11" class="py-name"><a title="pyRdfa.rdfs.ns_rdf" class="py-name" href="#" onclick="return doclink('link-11', 'ns_rdf', 'link-8');">ns_rdf</a></tt> </tt>
<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">rdflib</tt><tt class="py-op">.</tt><tt class="py-name">Graph</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Graph</tt> </tt>
<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt>
<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-comment"># Namespace, in the RDFLib sense, for the rdfa vocabulary</tt> </tt>
<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable pyRdfa.ns_rdfa=pyRdfa-module.html#ns_rdfa,Variable pyRdfa.rdfs.ns_rdfa=pyRdfa.rdfs-module.html#ns_rdfa"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-12', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Namespace</tt><tt class="py-op">(</tt><tt class="py-string">"http://www.w3.org/ns/rdfa#"</tt><tt class="py-op">)</tt> </tt>
<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> </tt>
<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt class="py-name">extras</tt><tt class="py-op">.</tt><tt class="py-name">httpheader</tt> <tt class="py-keyword">import</tt> <tt class="py-name">acceptable_content_type</tt><tt class="py-op">,</tt> <tt class="py-name">content_type</tt> </tt>
<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Package pyRdfa.transform=pyRdfa.transform-module.html"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-13', 'transform', 'link-13');">transform</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Module pyRdfa.transform.prototype=pyRdfa.transform.prototype-module.html"><a title="pyRdfa.transform.prototype" class="py-name" href="#" onclick="return doclink('link-14', 'prototype', 'link-14');">prototype</a></tt> <tt class="py-keyword">import</tt> <tt id="link-15" class="py-name" targets="Function pyRdfa.transform.prototype.handle_prototypes()=pyRdfa.transform.prototype-module.html#handle_prototypes"><a title="pyRdfa.transform.prototype.handle_prototypes" class="py-name" href="#" onclick="return doclink('link-15', 'handle_prototypes', 'link-15');">handle_prototypes</a></tt> </tt>
<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-comment"># Vocabulary terms for vocab reporting</tt> </tt>
<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"><tt id="link-16" class="py-name" targets="Variable pyRdfa.RDFA_VOCAB=pyRdfa-module.html#RDFA_VOCAB"><a title="pyRdfa.RDFA_VOCAB" class="py-name" href="#" onclick="return doclink('link-16', 'RDFA_VOCAB', 'link-16');">RDFA_VOCAB</a></tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-17', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"usesVocabulary"</tt><tt class="py-op">]</tt> </tt>
<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt>
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-comment"># Namespace, in the RDFLib sense, for the XSD Datatypes</tt> </tt>
<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt id="link-18" class="py-name" targets="Variable pyRdfa.ns_xsd=pyRdfa-module.html#ns_xsd,Variable pyRdfa.rdfs.ns_xsd=pyRdfa.rdfs-module.html#ns_xsd"><a title="pyRdfa.ns_xsd
pyRdfa.rdfs.ns_xsd" class="py-name" href="#" onclick="return doclink('link-18', 'ns_xsd', 'link-18');">ns_xsd</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Namespace</tt><tt class="py-op">(</tt><tt class="py-string">'http://www.w3.org/2001/XMLSchema#'</tt><tt class="py-op">)</tt> </tt>
<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> </tt>
<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"><tt class="py-comment"># Namespace, in the RDFLib sense, for the distiller vocabulary, used as part of the processor graph</tt> </tt>
<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable pyRdfa.ns_distill=pyRdfa-module.html#ns_distill,Variable pyRdfa.rdfs.ns_distill=pyRdfa.rdfs-module.html#ns_distill"><a title="pyRdfa.ns_distill
pyRdfa.rdfs.ns_distill" class="py-name" href="#" onclick="return doclink('link-19', 'ns_distill', 'link-19');">ns_distill</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Namespace</tt><tt class="py-op">(</tt><tt class="py-string">"http://www.w3.org/2007/08/pyRdfa/vocab#"</tt><tt class="py-op">)</tt> </tt>
<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> </tt>
<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable pyRdfa.debug=pyRdfa-module.html#debug"><a title="pyRdfa.debug" class="py-name" href="#" onclick="return doclink('link-20', 'debug', 'link-20');">debug</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> </tt>
<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-comment">#########################################################################################################</tt> </tt>
<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> </tt>
<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-comment"># Exception/error handling. Essentially, all the different exceptions are re-packaged into</tt> </tt>
<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-comment"># separate exception class, to allow for an easier management on the user level</tt> </tt>
<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> </tt>
<a name="RDFaError"></a><div id="RDFaError-def"><a name="L217"></a><tt class="py-lineno">217</tt> <a class="py-toggle" href="#" id="RDFaError-toggle" onclick="return toggle('RDFaError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyRdfa.RDFaError-class.html">RDFaError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="RDFaError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RDFaError-expanded"><a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-docstring">"""Superclass exceptions representing error conditions defined by the RDFa 1.1 specification.</tt> </tt>
<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> It does not add any new functionality to the</tt> </tt>
<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> Exception class."""</tt> </tt>
<a name="RDFaError.__init__"></a><div id="RDFaError.__init__-def"><a name="L221"></a><tt class="py-lineno">221</tt> <a class="py-toggle" href="#" id="RDFaError.__init__-toggle" onclick="return toggle('RDFaError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.RDFaError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="RDFaError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="RDFaError.__init__-expanded"><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt> </tt>
<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">Exception</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method pyRdfa.FailedSource.__init__()=pyRdfa.FailedSource-class.html#__init__,Method pyRdfa.HTTPError.__init__()=pyRdfa.HTTPError-class.html#__init__,Method pyRdfa.RDFaError.__init__()=pyRdfa.RDFaError-class.html#__init__,Method pyRdfa.options.Options.__init__()=pyRdfa.options.Options-class.html#__init__,Method pyRdfa.options.ProcessorGraph.__init__()=pyRdfa.options.ProcessorGraph-class.html#__init__,Method pyRdfa.property.ProcessProperty.__init__()=pyRdfa.property.ProcessProperty-class.html#__init__,Method pyRdfa.pyRdfa.__init__()=pyRdfa.pyRdfa-class.html#__init__,Method pyRdfa.rdflibparsers.HTurtle.__init__()=pyRdfa.rdflibparsers.HTurtle-class.html#__init__,Method pyRdfa.rdfs.cache.CachedVocab.__init__()=pyRdfa.rdfs.cache.CachedVocab-class.html#__init__,Method pyRdfa.rdfs.cache.CachedVocabIndex.__init__()=pyRdfa.rdfs.cache.CachedVocabIndex-class.html#__init__,Method pyRdfa.rdfs.process.MiniOWL.__init__()=pyRdfa.rdfs.process.MiniOWL-class.html#__init__,Method pyRdfa.state.ExecutionContext.__init__()=pyRdfa.state.ExecutionContext-class.html#__init__,Method pyRdfa.state.ListStructure.__init__()=pyRdfa.state.ListStructure-class.html#__init__,Method pyRdfa.termorcurie.InitialContext.__init__()=pyRdfa.termorcurie.InitialContext-class.html#__init__,Method pyRdfa.termorcurie.TermOrCurie.__init__()=pyRdfa.termorcurie.TermOrCurie-class.html#__init__,Method pyRdfa.utils.URIOpener.__init__()=pyRdfa.utils.URIOpener-class.html#__init__,Method pyRdfaExtras.MyGraph.__init__()=pyRdfaExtras.MyGraph-class.html#__init__"><a title="pyRdfa.FailedSource.__init__
pyRdfa.HTTPError.__init__
pyRdfa.RDFaError.__init__
pyRdfa.options.Options.__init__
pyRdfa.options.ProcessorGraph.__init__
pyRdfa.property.ProcessProperty.__init__
pyRdfa.pyRdfa.__init__
pyRdfa.rdflibparsers.HTurtle.__init__
pyRdfa.rdfs.cache.CachedVocab.__init__
pyRdfa.rdfs.cache.CachedVocabIndex.__init__
pyRdfa.rdfs.process.MiniOWL.__init__
pyRdfa.state.ExecutionContext.__init__
pyRdfa.state.ListStructure.__init__
pyRdfa.termorcurie.InitialContext.__init__
pyRdfa.termorcurie.TermOrCurie.__init__
pyRdfa.utils.URIOpener.__init__
pyRdfaExtras.MyGraph.__init__" class="py-name" href="#" onclick="return doclink('link-21', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt>
<a name="FailedSource"></a><div id="FailedSource-def"><a name="L225"></a><tt class="py-lineno">225</tt> <a class="py-toggle" href="#" id="FailedSource-toggle" onclick="return toggle('FailedSource');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyRdfa.FailedSource-class.html">FailedSource</a><tt class="py-op">(</tt><tt class="py-base-class">RDFaError</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="FailedSource-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FailedSource-expanded"><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-docstring">"""Raised when the original source cannot be accessed. It does not add any new functionality to the</tt> </tt>
<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"><tt class="py-docstring"> Exception class."""</tt> </tt>
<a name="FailedSource.__init__"></a><div id="FailedSource.__init__-def"><a name="L228"></a><tt class="py-lineno">228</tt> <a class="py-toggle" href="#" id="FailedSource.__init__-toggle" onclick="return toggle('FailedSource.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.FailedSource-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">msg</tt><tt class="py-op">,</tt> <tt class="py-param">http_code</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="FailedSource.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="FailedSource.__init__-expanded"><a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">msg</tt> </tt>
<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_code</tt> <tt class="py-op">=</tt> <tt class="py-name">http_code</tt> </tt>
<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt id="link-22" class="py-name" targets="Class pyRdfa.RDFaError=pyRdfa.RDFaError-class.html"><a title="pyRdfa.RDFaError" class="py-name" href="#" onclick="return doclink('link-22', 'RDFaError', 'link-22');">RDFaError</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="pyRdfa.FailedSource.__init__
pyRdfa.HTTPError.__init__
pyRdfa.RDFaError.__init__
pyRdfa.options.Options.__init__
pyRdfa.options.ProcessorGraph.__init__
pyRdfa.property.ProcessProperty.__init__
pyRdfa.pyRdfa.__init__
pyRdfa.rdflibparsers.HTurtle.__init__
pyRdfa.rdfs.cache.CachedVocab.__init__
pyRdfa.rdfs.cache.CachedVocabIndex.__init__
pyRdfa.rdfs.process.MiniOWL.__init__
pyRdfa.state.ExecutionContext.__init__
pyRdfa.state.ListStructure.__init__
pyRdfa.termorcurie.InitialContext.__init__
pyRdfa.termorcurie.TermOrCurie.__init__
pyRdfa.utils.URIOpener.__init__
pyRdfaExtras.MyGraph.__init__" class="py-name" href="#" onclick="return doclink('link-23', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
<a name="HTTPError"></a><div id="HTTPError-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="HTTPError-toggle" onclick="return toggle('HTTPError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyRdfa.HTTPError-class.html">HTTPError</a><tt class="py-op">(</tt><tt class="py-base-class">RDFaError</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="HTTPError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="HTTPError-expanded"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-docstring">"""Raised when HTTP problems are detected. It does not add any new functionality to the</tt> </tt>
<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> Exception class."""</tt> </tt>
<a name="HTTPError.__init__"></a><div id="HTTPError.__init__-def"><a name="L236"></a><tt class="py-lineno">236</tt> <a class="py-toggle" href="#" id="HTTPError.__init__-toggle" onclick="return toggle('HTTPError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.HTTPError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_msg</tt><tt class="py-op">,</tt> <tt class="py-param">http_code</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="HTTPError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="HTTPError.__init__-expanded"><a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">http_msg</tt> </tt>
<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_code</tt> <tt class="py-op">=</tt> <tt class="py-name">http_code</tt> </tt>
<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt id="link-24" class="py-name"><a title="pyRdfa.RDFaError" class="py-name" href="#" onclick="return doclink('link-24', 'RDFaError', 'link-22');">RDFaError</a></tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="pyRdfa.FailedSource.__init__
pyRdfa.HTTPError.__init__
pyRdfa.RDFaError.__init__
pyRdfa.options.Options.__init__
pyRdfa.options.ProcessorGraph.__init__
pyRdfa.property.ProcessProperty.__init__
pyRdfa.pyRdfa.__init__
pyRdfa.rdflibparsers.HTurtle.__init__
pyRdfa.rdfs.cache.CachedVocab.__init__
pyRdfa.rdfs.cache.CachedVocabIndex.__init__
pyRdfa.rdfs.process.MiniOWL.__init__
pyRdfa.state.ExecutionContext.__init__
pyRdfa.state.ListStructure.__init__
pyRdfa.termorcurie.InitialContext.__init__
pyRdfa.termorcurie.TermOrCurie.__init__
pyRdfa.utils.URIOpener.__init__
pyRdfaExtras.MyGraph.__init__" class="py-name" href="#" onclick="return doclink('link-25', '__init__', 'link-21');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt><tt class="py-name">http_msg</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> </tt>
<a name="ProcessingError"></a><div id="ProcessingError-def"><a name="L241"></a><tt class="py-lineno">241</tt> <a class="py-toggle" href="#" id="ProcessingError-toggle" onclick="return toggle('ProcessingError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyRdfa.ProcessingError-class.html">ProcessingError</a><tt class="py-op">(</tt><tt class="py-base-class">RDFaError</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="ProcessingError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ProcessingError-expanded"><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-docstring">"""Error found during processing. It does not add any new functionality to the</tt> </tt>
<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> Exception class."""</tt> </tt>
<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> </tt>
<a name="pyRdfaError"></a><div id="pyRdfaError-def"><a name="L246"></a><tt class="py-lineno">246</tt> <a class="py-toggle" href="#" id="pyRdfaError-toggle" onclick="return toggle('pyRdfaError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyRdfa.pyRdfaError-class.html">pyRdfaError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfaError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="pyRdfaError-expanded"><a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-docstring">"""Superclass exceptions representing error conditions outside the RDFa 1.1 specification."""</tt> </tt>
<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> </tt>
<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-comment"># Error and Warning RDFS classes</tt> </tt>
<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt id="link-26" class="py-name" targets="Variable pyRdfa.RDFA_Error=pyRdfa-module.html#RDFA_Error"><a title="pyRdfa.RDFA_Error" class="py-name" href="#" onclick="return doclink('link-26', 'RDFA_Error', 'link-26');">RDFA_Error</a></tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-27', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"Error"</tt><tt class="py-op">]</tt> </tt>
<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt id="link-28" class="py-name" targets="Variable pyRdfa.RDFA_Warning=pyRdfa-module.html#RDFA_Warning"><a title="pyRdfa.RDFA_Warning" class="py-name" href="#" onclick="return doclink('link-28', 'RDFA_Warning', 'link-28');">RDFA_Warning</a></tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-29', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"Warning"</tt><tt class="py-op">]</tt> </tt>
<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt id="link-30" class="py-name" targets="Variable pyRdfa.RDFA_Info=pyRdfa-module.html#RDFA_Info"><a title="pyRdfa.RDFA_Info" class="py-name" href="#" onclick="return doclink('link-30', 'RDFA_Info', 'link-30');">RDFA_Info</a></tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-31', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"Information"</tt><tt class="py-op">]</tt> </tt>
<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt id="link-32" class="py-name" targets="Variable pyRdfa.NonConformantMarkup=pyRdfa-module.html#NonConformantMarkup"><a title="pyRdfa.NonConformantMarkup" class="py-name" href="#" onclick="return doclink('link-32', 'NonConformantMarkup', 'link-32');">NonConformantMarkup</a></tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-33', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"DocumentError"</tt><tt class="py-op">]</tt> </tt>
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt id="link-34" class="py-name" targets="Variable pyRdfa.UnresolvablePrefix=pyRdfa-module.html#UnresolvablePrefix"><a title="pyRdfa.UnresolvablePrefix" class="py-name" href="#" onclick="return doclink('link-34', 'UnresolvablePrefix', 'link-34');">UnresolvablePrefix</a></tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-35', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"UnresolvedCURIE"</tt><tt class="py-op">]</tt> </tt>
<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt id="link-36" class="py-name" targets="Variable pyRdfa.UnresolvableReference=pyRdfa-module.html#UnresolvableReference"><a title="pyRdfa.UnresolvableReference" class="py-name" href="#" onclick="return doclink('link-36', 'UnresolvableReference', 'link-36');">UnresolvableReference</a></tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-37', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"UnresolvedCURIE"</tt><tt class="py-op">]</tt> </tt>
<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt id="link-38" class="py-name" targets="Variable pyRdfa.UnresolvableTerm=pyRdfa-module.html#UnresolvableTerm"><a title="pyRdfa.UnresolvableTerm" class="py-name" href="#" onclick="return doclink('link-38', 'UnresolvableTerm', 'link-38');">UnresolvableTerm</a></tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-39', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"UnresolvedTerm"</tt><tt class="py-op">]</tt> </tt>
<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt id="link-40" class="py-name" targets="Variable pyRdfa.VocabReferenceError=pyRdfa-module.html#VocabReferenceError"><a title="pyRdfa.VocabReferenceError" class="py-name" href="#" onclick="return doclink('link-40', 'VocabReferenceError', 'link-40');">VocabReferenceError</a></tt> <tt class="py-op">=</tt> <tt id="link-41" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-41', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"VocabReferenceError"</tt><tt class="py-op">]</tt> </tt>
<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt id="link-42" class="py-name" targets="Variable pyRdfa.PrefixRedefinitionWarning=pyRdfa-module.html#PrefixRedefinitionWarning"><a title="pyRdfa.PrefixRedefinitionWarning" class="py-name" href="#" onclick="return doclink('link-42', 'PrefixRedefinitionWarning', 'link-42');">PrefixRedefinitionWarning</a></tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="pyRdfa.ns_rdfa
pyRdfa.rdfs.ns_rdfa" class="py-name" href="#" onclick="return doclink('link-43', 'ns_rdfa', 'link-12');">ns_rdfa</a></tt><tt class="py-op">[</tt><tt class="py-string">"PrefixRedefinition"</tt><tt class="py-op">]</tt> </tt>
<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> </tt>
<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt id="link-44" class="py-name" targets="Variable pyRdfa.FileReferenceError=pyRdfa-module.html#FileReferenceError"><a title="pyRdfa.FileReferenceError" class="py-name" href="#" onclick="return doclink('link-44', 'FileReferenceError', 'link-44');">FileReferenceError</a></tt> <tt class="py-op">=</tt> <tt id="link-45" class="py-name"><a title="pyRdfa.ns_distill
pyRdfa.rdfs.ns_distill" class="py-name" href="#" onclick="return doclink('link-45', 'ns_distill', 'link-19');">ns_distill</a></tt><tt class="py-op">[</tt><tt class="py-string">"FileReferenceError"</tt><tt class="py-op">]</tt> </tt>
<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt id="link-46" class="py-name" targets="Variable pyRdfa.HTError=pyRdfa-module.html#HTError"><a title="pyRdfa.HTError" class="py-name" href="#" onclick="return doclink('link-46', 'HTError', 'link-46');">HTError</a></tt> <tt class="py-op">=</tt> <tt id="link-47" class="py-name"><a title="pyRdfa.ns_distill
pyRdfa.rdfs.ns_distill" class="py-name" href="#" onclick="return doclink('link-47', 'ns_distill', 'link-19');">ns_distill</a></tt><tt class="py-op">[</tt><tt class="py-string">"HTTPError"</tt><tt class="py-op">]</tt> </tt>
<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt id="link-48" class="py-name" targets="Variable pyRdfa.IncorrectPrefixDefinition=pyRdfa-module.html#IncorrectPrefixDefinition"><a title="pyRdfa.IncorrectPrefixDefinition" class="py-name" href="#" onclick="return doclink('link-48', 'IncorrectPrefixDefinition', 'link-48');">IncorrectPrefixDefinition</a></tt> <tt class="py-op">=</tt> <tt id="link-49" class="py-name"><a title="pyRdfa.ns_distill
pyRdfa.rdfs.ns_distill" class="py-name" href="#" onclick="return doclink('link-49', 'ns_distill', 'link-19');">ns_distill</a></tt><tt class="py-op">[</tt><tt class="py-string">"IncorrectPrefixDefinition"</tt><tt class="py-op">]</tt> </tt>
<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt id="link-50" class="py-name" targets="Variable pyRdfa.IncorrectBlankNodeUsage=pyRdfa-module.html#IncorrectBlankNodeUsage"><a title="pyRdfa.IncorrectBlankNodeUsage" class="py-name" href="#" onclick="return doclink('link-50', 'IncorrectBlankNodeUsage', 'link-50');">IncorrectBlankNodeUsage</a></tt> <tt class="py-op">=</tt> <tt id="link-51" class="py-name"><a title="pyRdfa.ns_distill
pyRdfa.rdfs.ns_distill" class="py-name" href="#" onclick="return doclink('link-51', 'ns_distill', 'link-19');">ns_distill</a></tt><tt class="py-op">[</tt><tt class="py-string">"IncorrectBlankNodeUsage"</tt><tt class="py-op">]</tt> </tt>
<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt id="link-52" class="py-name" targets="Variable pyRdfa.IncorrectLiteral=pyRdfa-module.html#IncorrectLiteral"><a title="pyRdfa.IncorrectLiteral" class="py-name" href="#" onclick="return doclink('link-52', 'IncorrectLiteral', 'link-52');">IncorrectLiteral</a></tt> <tt class="py-op">=</tt> <tt id="link-53" class="py-name"><a title="pyRdfa.ns_distill
pyRdfa.rdfs.ns_distill" class="py-name" href="#" onclick="return doclink('link-53', 'ns_distill', 'link-19');">ns_distill</a></tt><tt class="py-op">[</tt><tt class="py-string">"IncorrectLiteral"</tt><tt class="py-op">]</tt> </tt>
<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> </tt>
<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-comment"># Error message texts</tt> </tt>
<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt id="link-54" class="py-name" targets="Variable pyRdfa.err_no_blank_node=pyRdfa-module.html#err_no_blank_node"><a title="pyRdfa.err_no_blank_node" class="py-name" href="#" onclick="return doclink('link-54', 'err_no_blank_node', 'link-54');">err_no_blank_node</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Blank node in %s position is not allowed; ignored"</tt> </tt>
<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> </tt>
<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt id="link-55" class="py-name" targets="Variable pyRdfa.err_redefining_URI_as_prefix=pyRdfa-module.html#err_redefining_URI_as_prefix"><a title="pyRdfa.err_redefining_URI_as_prefix" class="py-name" href="#" onclick="return doclink('link-55', 'err_redefining_URI_as_prefix', 'link-55');">err_redefining_URI_as_prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"'%s' a registered or an otherwise used URI scheme, but is defined as a prefix here; is this a mistake? (see, eg, http://en.wikipedia.org/wiki/URI_scheme or http://www.iana.org/assignments/uri-schemes.html for further information for most of the URI schemes)"</tt> </tt>
<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt id="link-56" class="py-name" targets="Variable pyRdfa.err_xmlns_deprecated=pyRdfa-module.html#err_xmlns_deprecated"><a title="pyRdfa.err_xmlns_deprecated" class="py-name" href="#" onclick="return doclink('link-56', 'err_xmlns_deprecated', 'link-56');">err_xmlns_deprecated</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"The usage of 'xmlns' for prefix definition is deprecated; please use the 'prefix' attribute instead (definition for '%s')"</tt> </tt>
<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt id="link-57" class="py-name" targets="Variable pyRdfa.err_bnode_local_prefix=pyRdfa-module.html#err_bnode_local_prefix"><a title="pyRdfa.err_bnode_local_prefix" class="py-name" href="#" onclick="return doclink('link-57', 'err_bnode_local_prefix', 'link-57');">err_bnode_local_prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"The '_' local CURIE prefix is reserved for blank nodes, and cannot be defined as a prefix"</tt> </tt>
<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt id="link-58" class="py-name" targets="Variable pyRdfa.err_col_local_prefix=pyRdfa-module.html#err_col_local_prefix"><a title="pyRdfa.err_col_local_prefix" class="py-name" href="#" onclick="return doclink('link-58', 'err_col_local_prefix', 'link-58');">err_col_local_prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"The character ':' is not valid in a CURIE Prefix, and cannot be used in a prefix definition (definition for '%s')"</tt> </tt>
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt id="link-59" class="py-name" targets="Variable pyRdfa.err_missing_URI_prefix=pyRdfa-module.html#err_missing_URI_prefix"><a title="pyRdfa.err_missing_URI_prefix" class="py-name" href="#" onclick="return doclink('link-59', 'err_missing_URI_prefix', 'link-59');">err_missing_URI_prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Missing URI in prefix declaration for '%s' (in '%s')"</tt> </tt>
<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt id="link-60" class="py-name" targets="Variable pyRdfa.err_invalid_prefix=pyRdfa-module.html#err_invalid_prefix"><a title="pyRdfa.err_invalid_prefix" class="py-name" href="#" onclick="return doclink('link-60', 'err_invalid_prefix', 'link-60');">err_invalid_prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Invalid prefix declaration '%s' (in '%s')"</tt> </tt>
<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt id="link-61" class="py-name" targets="Variable pyRdfa.err_no_default_prefix=pyRdfa-module.html#err_no_default_prefix"><a title="pyRdfa.err_no_default_prefix" class="py-name" href="#" onclick="return doclink('link-61', 'err_no_default_prefix', 'link-61');">err_no_default_prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Default prefix cannot be changed (in '%s')"</tt> </tt>
<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt id="link-62" class="py-name" targets="Variable pyRdfa.err_prefix_and_xmlns=pyRdfa-module.html#err_prefix_and_xmlns"><a title="pyRdfa.err_prefix_and_xmlns" class="py-name" href="#" onclick="return doclink('link-62', 'err_prefix_and_xmlns', 'link-62');">err_prefix_and_xmlns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"@prefix setting for '%s' overrides the 'xmlns:%s' setting; may be a source of problem if same file is run through RDFa 1.0"</tt> </tt>
<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt id="link-63" class="py-name" targets="Variable pyRdfa.err_non_ncname_prefix=pyRdfa-module.html#err_non_ncname_prefix"><a title="pyRdfa.err_non_ncname_prefix" class="py-name" href="#" onclick="return doclink('link-63', 'err_non_ncname_prefix', 'link-63');">err_non_ncname_prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Non NCNAME '%s' in prefix definition (in '%s'); ignored"</tt> </tt>
<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt id="link-64" class="py-name" targets="Variable pyRdfa.err_absolute_reference=pyRdfa-module.html#err_absolute_reference"><a title="pyRdfa.err_absolute_reference" class="py-name" href="#" onclick="return doclink('link-64', 'err_absolute_reference', 'link-64');">err_absolute_reference</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"CURIE Reference part contains an authority part: %s (in '%s'); ignored"</tt> </tt>
<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"><tt id="link-65" class="py-name" targets="Variable pyRdfa.err_query_reference=pyRdfa-module.html#err_query_reference"><a title="pyRdfa.err_query_reference" class="py-name" href="#" onclick="return doclink('link-65', 'err_query_reference', 'link-65');">err_query_reference</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"CURIE Reference query part contains an unauthorized character: %s (in '%s'); ignored"</tt> </tt>
<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"><tt id="link-66" class="py-name" targets="Variable pyRdfa.err_fragment_reference=pyRdfa-module.html#err_fragment_reference"><a title="pyRdfa.err_fragment_reference" class="py-name" href="#" onclick="return doclink('link-66', 'err_fragment_reference', 'link-66');">err_fragment_reference</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"CURIE Reference fragment part contains an unauthorized character: %s (in '%s'); ignored"</tt> </tt>
<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"><tt id="link-67" class="py-name" targets="Variable pyRdfa.err_lang=pyRdfa-module.html#err_lang"><a title="pyRdfa.err_lang" class="py-name" href="#" onclick="return doclink('link-67', 'err_lang', 'link-67');">err_lang</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"There is a problem with language setting; either both xml:lang and lang used on an element with different values, or, for (X)HTML5, only xml:lang is used."</tt> </tt>
<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"><tt id="link-68" class="py-name" targets="Variable pyRdfa.err_URI_scheme=pyRdfa-module.html#err_URI_scheme"><a title="pyRdfa.err_URI_scheme" class="py-name" href="#" onclick="return doclink('link-68', 'err_URI_scheme', 'link-68');">err_URI_scheme</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Unusual URI scheme used in <%s>; may that be a mistake, e.g., resulting from using an undefined CURIE prefix or an incorrect CURIE?"</tt> </tt>
<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"><tt id="link-69" class="py-name" targets="Variable pyRdfa.err_illegal_safe_CURIE=pyRdfa-module.html#err_illegal_safe_CURIE"><a title="pyRdfa.err_illegal_safe_CURIE" class="py-name" href="#" onclick="return doclink('link-69', 'err_illegal_safe_CURIE', 'link-69');">err_illegal_safe_CURIE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Illegal safe CURIE: %s; ignored"</tt> </tt>
<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"><tt id="link-70" class="py-name" targets="Variable pyRdfa.err_no_CURIE_in_safe_CURIE=pyRdfa-module.html#err_no_CURIE_in_safe_CURIE"><a title="pyRdfa.err_no_CURIE_in_safe_CURIE" class="py-name" href="#" onclick="return doclink('link-70', 'err_no_CURIE_in_safe_CURIE', 'link-70');">err_no_CURIE_in_safe_CURIE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Safe CURIE is used, but the value does not correspond to a defined CURIE: [%s]; ignored"</tt> </tt>
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"><tt id="link-71" class="py-name" targets="Variable pyRdfa.err_undefined_terms=pyRdfa-module.html#err_undefined_terms"><a title="pyRdfa.err_undefined_terms" class="py-name" href="#" onclick="return doclink('link-71', 'err_undefined_terms', 'link-71');">err_undefined_terms</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"'%s' is used as a term, but has not been defined as such; ignored"</tt> </tt>
<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"><tt id="link-72" class="py-name" targets="Variable pyRdfa.err_non_legal_CURIE_ref=pyRdfa-module.html#err_non_legal_CURIE_ref"><a title="pyRdfa.err_non_legal_CURIE_ref" class="py-name" href="#" onclick="return doclink('link-72', 'err_non_legal_CURIE_ref', 'link-72');">err_non_legal_CURIE_ref</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Relative URI is not allowed in this position (or not a legal CURIE reference) '%s'; ignored"</tt> </tt>
<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"><tt id="link-73" class="py-name" targets="Variable pyRdfa.err_undefined_CURIE=pyRdfa-module.html#err_undefined_CURIE"><a title="pyRdfa.err_undefined_CURIE" class="py-name" href="#" onclick="return doclink('link-73', 'err_undefined_CURIE', 'link-73');">err_undefined_CURIE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Undefined CURIE: '%s'; ignored"</tt> </tt>
<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt id="link-74" class="py-name" targets="Variable pyRdfa.err_prefix_redefinition=pyRdfa-module.html#err_prefix_redefinition"><a title="pyRdfa.err_prefix_redefinition" class="py-name" href="#" onclick="return doclink('link-74', 'err_prefix_redefinition', 'link-74');">err_prefix_redefinition</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Prefix '%s' (defined in the initial RDFa context or in an ancestor) is redefined"</tt> </tt>
<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> </tt>
<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt id="link-75" class="py-name" targets="Variable pyRdfa.err_unusual_char_in_URI=pyRdfa-module.html#err_unusual_char_in_URI"><a title="pyRdfa.err_unusual_char_in_URI" class="py-name" href="#" onclick="return doclink('link-75', 'err_unusual_char_in_URI', 'link-75');">err_unusual_char_in_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Unusual character in uri: %s; possible error?"</tt> </tt>
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> </tt>
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-comment">#############################################################################################</tt> </tt>
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> </tt>
<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Module pyRdfa.state=pyRdfa.state-module.html"><a title="pyRdfa.state" class="py-name" href="#" onclick="return doclink('link-76', 'state', 'link-76');">state</a></tt> <tt class="py-keyword">import</tt> <tt id="link-77" class="py-name" targets="Class pyRdfa.state.ExecutionContext=pyRdfa.state.ExecutionContext-class.html"><a title="pyRdfa.state.ExecutionContext" class="py-name" href="#" onclick="return doclink('link-77', 'ExecutionContext', 'link-77');">ExecutionContext</a></tt> </tt>
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-78', 'parse', 'link-7');">parse</a></tt> <tt class="py-keyword">import</tt> <tt id="link-79" class="py-name" targets="Function pyRdfa.parse.parse_one_node()=pyRdfa.parse-module.html#parse_one_node"><a title="pyRdfa.parse.parse_one_node" class="py-name" href="#" onclick="return doclink('link-79', 'parse_one_node', 'link-79');">parse_one_node</a></tt> </tt>
<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Module pyRdfa.options=pyRdfa.options-module.html"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-80', 'options', 'link-80');">options</a></tt> <tt class="py-keyword">import</tt> <tt id="link-81" class="py-name" targets="Class pyRdfa.options.Options=pyRdfa.options.Options-class.html"><a title="pyRdfa.options.Options" class="py-name" href="#" onclick="return doclink('link-81', 'Options', 'link-81');">Options</a></tt> </tt>
<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-82', 'transform', 'link-13');">transform</a></tt> <tt class="py-keyword">import</tt> <tt id="link-83" class="py-name" targets="Function pyRdfa.transform.top_about()=pyRdfa.transform-module.html#top_about"><a title="pyRdfa.transform.top_about" class="py-name" href="#" onclick="return doclink('link-83', 'top_about', 'link-83');">top_about</a></tt><tt class="py-op">,</tt> <tt id="link-84" class="py-name" targets="Function pyRdfa.transform.empty_safe_curie()=pyRdfa.transform-module.html#empty_safe_curie"><a title="pyRdfa.transform.empty_safe_curie" class="py-name" href="#" onclick="return doclink('link-84', 'empty_safe_curie', 'link-84');">empty_safe_curie</a></tt><tt class="py-op">,</tt> <tt id="link-85" class="py-name" targets="Function pyRdfa.transform.vocab_for_role()=pyRdfa.transform-module.html#vocab_for_role"><a title="pyRdfa.transform.vocab_for_role" class="py-name" href="#" onclick="return doclink('link-85', 'vocab_for_role', 'link-85');">vocab_for_role</a></tt> </tt>
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Module pyRdfa.utils=pyRdfa.utils-module.html"><a title="pyRdfa.utils" class="py-name" href="#" onclick="return doclink('link-86', 'utils', 'link-86');">utils</a></tt> <tt class="py-keyword">import</tt> <tt id="link-87" class="py-name" targets="Class pyRdfa.utils.URIOpener=pyRdfa.utils.URIOpener-class.html"><a title="pyRdfa.utils.URIOpener" class="py-name" href="#" onclick="return doclink('link-87', 'URIOpener', 'link-87');">URIOpener</a></tt> </tt>
<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-88" class="py-name" targets="Package pyRdfa.host=pyRdfa.host-module.html"><a title="pyRdfa.host" class="py-name" href="#" onclick="return doclink('link-88', 'host', 'link-88');">host</a></tt> <tt class="py-keyword">import</tt> <tt id="link-89" class="py-name" targets="Class pyRdfa.host.HostLanguage=pyRdfa.host.HostLanguage-class.html"><a title="pyRdfa.host.HostLanguage" class="py-name" href="#" onclick="return doclink('link-89', 'HostLanguage', 'link-89');">HostLanguage</a></tt><tt class="py-op">,</tt> <tt id="link-90" class="py-name" targets="Class pyRdfa.host.MediaTypes=pyRdfa.host.MediaTypes-class.html"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-90', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">,</tt> <tt id="link-91" class="py-name" targets="Variable pyRdfa.host.preferred_suffixes=pyRdfa.host-module.html#preferred_suffixes"><a title="pyRdfa.host.preferred_suffixes" class="py-name" href="#" onclick="return doclink('link-91', 'preferred_suffixes', 'link-91');">preferred_suffixes</a></tt><tt class="py-op">,</tt> <tt id="link-92" class="py-name" targets="Variable pyRdfa.host.content_to_host_language=pyRdfa.host-module.html#content_to_host_language"><a title="pyRdfa.host.content_to_host_language" class="py-name" href="#" onclick="return doclink('link-92', 'content_to_host_language', 'link-92');">content_to_host_language</a></tt> </tt>
<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> </tt>
<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"><tt class="py-comment"># Environment variable used to characterize cache directories for RDFa vocabulary files.</tt> </tt>
<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"><tt id="link-93" class="py-name" targets="Variable pyRdfa.CACHE_DIR_VAR=pyRdfa-module.html#CACHE_DIR_VAR"><a title="pyRdfa.CACHE_DIR_VAR" class="py-name" href="#" onclick="return doclink('link-93', 'CACHE_DIR_VAR', 'link-93');">CACHE_DIR_VAR</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"PyRdfaCacheDir"</tt> </tt>
<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt>
<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"><tt class="py-comment"># current "official" version of RDFa that this package implements. This can be changed at the invocation of the package</tt> </tt>
<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"><tt id="link-94" class="py-name" targets="Variable pyRdfa.rdfa_current_version=pyRdfa-module.html#rdfa_current_version"><a title="pyRdfa.rdfa_current_version" class="py-name" href="#" onclick="return doclink('link-94', 'rdfa_current_version', 'link-94');">rdfa_current_version</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"1.1"</tt> </tt>
<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> </tt>
<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"><tt class="py-comment"># I removed schemes that would not appear as a prefix anyway, like iris.beep</tt> </tt>
<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"><tt class="py-comment"># http://en.wikipedia.org/wiki/URI_scheme seems to be a good source of information</tt> </tt>
<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-comment"># as well as http://www.iana.org/assignments/uri-schemes.html</tt> </tt>
<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-comment"># There are some overlaps here, but better more than not enough...</tt> </tt>
<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> </tt>
<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"><tt class="py-comment"># This comes from wikipedia</tt> </tt>
<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"><tt id="link-95" class="py-name" targets="Variable pyRdfa.registered_iana_schemes=pyRdfa-module.html#registered_iana_schemes"><a title="pyRdfa.registered_iana_schemes" class="py-name" href="#" onclick="return doclink('link-95', 'registered_iana_schemes', 'link-95');">registered_iana_schemes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-string">"aaa"</tt><tt class="py-op">,</tt><tt class="py-string">"aaas"</tt><tt class="py-op">,</tt><tt class="py-string">"acap"</tt><tt class="py-op">,</tt><tt class="py-string">"cap"</tt><tt class="py-op">,</tt><tt class="py-string">"cid"</tt><tt class="py-op">,</tt><tt class="py-string">"crid"</tt><tt class="py-op">,</tt><tt class="py-string">"data"</tt><tt class="py-op">,</tt><tt class="py-string">"dav"</tt><tt class="py-op">,</tt><tt class="py-string">"dict"</tt><tt class="py-op">,</tt><tt class="py-string">"did"</tt><tt class="py-op">,</tt><tt class="py-string">"dns"</tt><tt class="py-op">,</tt><tt class="py-string">"fax"</tt><tt class="py-op">,</tt><tt class="py-string">"file"</tt><tt class="py-op">,</tt> <tt class="py-string">"ftp"</tt><tt class="py-op">,</tt><tt class="py-string">"geo"</tt><tt class="py-op">,</tt><tt class="py-string">"go"</tt><tt class="py-op">,</tt> </tt>
<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-string">"gopher"</tt><tt class="py-op">,</tt><tt class="py-string">"h323"</tt><tt class="py-op">,</tt><tt class="py-string">"http"</tt><tt class="py-op">,</tt><tt class="py-string">"https"</tt><tt class="py-op">,</tt><tt class="py-string">"iax"</tt><tt class="py-op">,</tt><tt class="py-string">"icap"</tt><tt class="py-op">,</tt><tt class="py-string">"im"</tt><tt class="py-op">,</tt><tt class="py-string">"imap"</tt><tt class="py-op">,</tt><tt class="py-string">"info"</tt><tt class="py-op">,</tt><tt class="py-string">"ipp"</tt><tt class="py-op">,</tt><tt class="py-string">"iris"</tt><tt class="py-op">,</tt><tt class="py-string">"ldap"</tt><tt class="py-op">,</tt> <tt class="py-string">"lsid"</tt><tt class="py-op">,</tt> </tt>
<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-string">"mailto"</tt><tt class="py-op">,</tt><tt class="py-string">"mid"</tt><tt class="py-op">,</tt><tt class="py-string">"modem"</tt><tt class="py-op">,</tt><tt class="py-string">"msrp"</tt><tt class="py-op">,</tt><tt class="py-string">"msrps"</tt><tt class="py-op">,</tt> <tt class="py-string">"mtqp"</tt><tt class="py-op">,</tt> <tt class="py-string">"mupdate"</tt><tt class="py-op">,</tt><tt class="py-string">"news"</tt><tt class="py-op">,</tt><tt class="py-string">"nfs"</tt><tt class="py-op">,</tt><tt class="py-string">"nntp"</tt><tt class="py-op">,</tt><tt class="py-string">"opaquelocktoken"</tt><tt class="py-op">,</tt> </tt>
<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-string">"pop"</tt><tt class="py-op">,</tt><tt class="py-string">"pres"</tt><tt class="py-op">,</tt> <tt class="py-string">"prospero"</tt><tt class="py-op">,</tt><tt class="py-string">"rstp"</tt><tt class="py-op">,</tt><tt class="py-string">"rsync"</tt><tt class="py-op">,</tt> <tt class="py-string">"service"</tt><tt class="py-op">,</tt><tt class="py-string">"shttp"</tt><tt class="py-op">,</tt><tt class="py-string">"sieve"</tt><tt class="py-op">,</tt><tt class="py-string">"sip"</tt><tt class="py-op">,</tt><tt class="py-string">"sips"</tt><tt class="py-op">,</tt> <tt class="py-string">"sms"</tt><tt class="py-op">,</tt> <tt class="py-string">"snmp"</tt><tt class="py-op">,</tt> <tt class="py-string">"soap"</tt><tt class="py-op">,</tt> <tt class="py-string">"tag"</tt><tt class="py-op">,</tt> </tt>
<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-string">"tel"</tt><tt class="py-op">,</tt><tt class="py-string">"telnet"</tt><tt class="py-op">,</tt> <tt class="py-string">"tftp"</tt><tt class="py-op">,</tt> <tt class="py-string">"thismessage"</tt><tt class="py-op">,</tt><tt class="py-string">"tn3270"</tt><tt class="py-op">,</tt><tt class="py-string">"tip"</tt><tt class="py-op">,</tt><tt class="py-string">"tv"</tt><tt class="py-op">,</tt><tt class="py-string">"urn"</tt><tt class="py-op">,</tt><tt class="py-string">"vemmi"</tt><tt class="py-op">,</tt><tt class="py-string">"wais"</tt><tt class="py-op">,</tt><tt class="py-string">"ws"</tt><tt class="py-op">,</tt> <tt class="py-string">"wss"</tt><tt class="py-op">,</tt> <tt class="py-string">"xmpp"</tt> </tt>
<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> </tt>
<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-comment"># This comes from wikipedia, too</tt> </tt>
<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt id="link-96" class="py-name" targets="Variable pyRdfa.unofficial_common=pyRdfa-module.html#unofficial_common"><a title="pyRdfa.unofficial_common" class="py-name" href="#" onclick="return doclink('link-96', 'unofficial_common', 'link-96');">unofficial_common</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-string">"about"</tt><tt class="py-op">,</tt> <tt class="py-string">"adiumxtra"</tt><tt class="py-op">,</tt> <tt class="py-string">"aim"</tt><tt class="py-op">,</tt> <tt class="py-string">"apt"</tt><tt class="py-op">,</tt> <tt class="py-string">"afp"</tt><tt class="py-op">,</tt> <tt class="py-string">"aw"</tt><tt class="py-op">,</tt> <tt class="py-string">"bitcoin"</tt><tt class="py-op">,</tt> <tt class="py-string">"bolo"</tt><tt class="py-op">,</tt> <tt class="py-string">"callto"</tt><tt class="py-op">,</tt> <tt class="py-string">"chrome"</tt><tt class="py-op">,</tt> <tt class="py-string">"coap"</tt><tt class="py-op">,</tt> </tt>
<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-string">"content"</tt><tt class="py-op">,</tt> <tt class="py-string">"cvs"</tt><tt class="py-op">,</tt> <tt class="py-string">"doi"</tt><tt class="py-op">,</tt> <tt class="py-string">"ed2k"</tt><tt class="py-op">,</tt> <tt class="py-string">"facetime"</tt><tt class="py-op">,</tt> <tt class="py-string">"feed"</tt><tt class="py-op">,</tt> <tt class="py-string">"finger"</tt><tt class="py-op">,</tt> <tt class="py-string">"fish"</tt><tt class="py-op">,</tt> <tt class="py-string">"git"</tt><tt class="py-op">,</tt> <tt class="py-string">"gg"</tt><tt class="py-op">,</tt> </tt>
<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-string">"gizmoproject"</tt><tt class="py-op">,</tt> <tt class="py-string">"gtalk"</tt><tt class="py-op">,</tt> <tt class="py-string">"irc"</tt><tt class="py-op">,</tt> <tt class="py-string">"ircs"</tt><tt class="py-op">,</tt> <tt class="py-string">"irc6"</tt><tt class="py-op">,</tt> <tt class="py-string">"itms"</tt><tt class="py-op">,</tt> <tt class="py-string">"jar"</tt><tt class="py-op">,</tt> <tt class="py-string">"javascript"</tt><tt class="py-op">,</tt> </tt>
<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-string">"keyparc"</tt><tt class="py-op">,</tt> <tt class="py-string">"lastfm"</tt><tt class="py-op">,</tt> <tt class="py-string">"ldaps"</tt><tt class="py-op">,</tt> <tt class="py-string">"magnet"</tt><tt class="py-op">,</tt> <tt class="py-string">"maps"</tt><tt class="py-op">,</tt> <tt class="py-string">"market"</tt><tt class="py-op">,</tt> <tt class="py-string">"message"</tt><tt class="py-op">,</tt> <tt class="py-string">"mms"</tt><tt class="py-op">,</tt> </tt>
<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-string">"msnim"</tt><tt class="py-op">,</tt> <tt class="py-string">"mumble"</tt><tt class="py-op">,</tt> <tt class="py-string">"mvn"</tt><tt class="py-op">,</tt> <tt class="py-string">"notes"</tt><tt class="py-op">,</tt> <tt class="py-string">"palm"</tt><tt class="py-op">,</tt> <tt class="py-string">"paparazzi"</tt><tt class="py-op">,</tt> <tt class="py-string">"psync"</tt><tt class="py-op">,</tt> <tt class="py-string">"rmi"</tt><tt class="py-op">,</tt> </tt>
<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-string">"secondlife"</tt><tt class="py-op">,</tt> <tt class="py-string">"sgn"</tt><tt class="py-op">,</tt> <tt class="py-string">"skype"</tt><tt class="py-op">,</tt> <tt class="py-string">"spotify"</tt><tt class="py-op">,</tt> <tt class="py-string">"ssh"</tt><tt class="py-op">,</tt> <tt class="py-string">"sftp"</tt><tt class="py-op">,</tt> <tt class="py-string">"smb"</tt><tt class="py-op">,</tt> <tt class="py-string">"soldat"</tt><tt class="py-op">,</tt> </tt>
<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-string">"steam"</tt><tt class="py-op">,</tt> <tt class="py-string">"svn"</tt><tt class="py-op">,</tt> <tt class="py-string">"teamspeak"</tt><tt class="py-op">,</tt> <tt class="py-string">"things"</tt><tt class="py-op">,</tt> <tt class="py-string">"udb"</tt><tt class="py-op">,</tt> <tt class="py-string">"unreal"</tt><tt class="py-op">,</tt> <tt class="py-string">"ut2004"</tt><tt class="py-op">,</tt> </tt>
<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-string">"ventrillo"</tt><tt class="py-op">,</tt> <tt class="py-string">"view-source"</tt><tt class="py-op">,</tt> <tt class="py-string">"webcal"</tt><tt class="py-op">,</tt> <tt class="py-string">"wtai"</tt><tt class="py-op">,</tt> <tt class="py-string">"wyciwyg"</tt><tt class="py-op">,</tt> <tt class="py-string">"xfire"</tt><tt class="py-op">,</tt> <tt class="py-string">"xri"</tt><tt class="py-op">,</tt> <tt class="py-string">"ymsgr"</tt> </tt>
<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> </tt>
<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-comment"># These come from the IANA page</tt> </tt>
<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"><tt id="link-97" class="py-name" targets="Variable pyRdfa.historical_iana_schemes=pyRdfa-module.html#historical_iana_schemes"><a title="pyRdfa.historical_iana_schemes" class="py-name" href="#" onclick="return doclink('link-97', 'historical_iana_schemes', 'link-97');">historical_iana_schemes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-string">"fax"</tt><tt class="py-op">,</tt> <tt class="py-string">"mailserver"</tt><tt class="py-op">,</tt> <tt class="py-string">"modem"</tt><tt class="py-op">,</tt> <tt class="py-string">"pack"</tt><tt class="py-op">,</tt> <tt class="py-string">"prospero"</tt><tt class="py-op">,</tt> <tt class="py-string">"snews"</tt><tt class="py-op">,</tt> <tt class="py-string">"videotex"</tt><tt class="py-op">,</tt> <tt class="py-string">"wais"</tt> </tt>
<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> </tt>
<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"><tt id="link-98" class="py-name" targets="Variable pyRdfa.provisional_iana_schemes=pyRdfa-module.html#provisional_iana_schemes"><a title="pyRdfa.provisional_iana_schemes" class="py-name" href="#" onclick="return doclink('link-98', 'provisional_iana_schemes', 'link-98');">provisional_iana_schemes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-string">"afs"</tt><tt class="py-op">,</tt> <tt class="py-string">"dtn"</tt><tt class="py-op">,</tt> <tt class="py-string">"dvb"</tt><tt class="py-op">,</tt> <tt class="py-string">"icon"</tt><tt class="py-op">,</tt> <tt class="py-string">"ipn"</tt><tt class="py-op">,</tt> <tt class="py-string">"jms"</tt><tt class="py-op">,</tt> <tt class="py-string">"oid"</tt><tt class="py-op">,</tt> <tt class="py-string">"rsync"</tt><tt class="py-op">,</tt> <tt class="py-string">"ni"</tt> </tt>
<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> </tt>
<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt id="link-99" class="py-name" targets="Variable pyRdfa.other_used_schemes=pyRdfa-module.html#other_used_schemes"><a title="pyRdfa.other_used_schemes" class="py-name" href="#" onclick="return doclink('link-99', 'other_used_schemes', 'link-99');">other_used_schemes</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-string">"hdl"</tt><tt class="py-op">,</tt> <tt class="py-string">"isbn"</tt><tt class="py-op">,</tt> <tt class="py-string">"issn"</tt><tt class="py-op">,</tt> <tt class="py-string">"mstp"</tt><tt class="py-op">,</tt> <tt class="py-string">"rtmp"</tt><tt class="py-op">,</tt> <tt class="py-string">"rtspu"</tt><tt class="py-op">,</tt> <tt class="py-string">"stp"</tt> </tt>
<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> </tt>
<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt id="link-100" class="py-name" targets="Variable pyRdfa.uri_schemes=pyRdfa-module.html#uri_schemes"><a title="pyRdfa.uri_schemes" class="py-name" href="#" onclick="return doclink('link-100', 'uri_schemes', 'link-100');">uri_schemes</a></tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="pyRdfa.registered_iana_schemes" class="py-name" href="#" onclick="return doclink('link-101', 'registered_iana_schemes', 'link-95');">registered_iana_schemes</a></tt> <tt class="py-op">+</tt> <tt id="link-102" class="py-name"><a title="pyRdfa.unofficial_common" class="py-name" href="#" onclick="return doclink('link-102', 'unofficial_common', 'link-96');">unofficial_common</a></tt> <tt class="py-op">+</tt> <tt id="link-103" class="py-name"><a title="pyRdfa.historical_iana_schemes" class="py-name" href="#" onclick="return doclink('link-103', 'historical_iana_schemes', 'link-97');">historical_iana_schemes</a></tt> <tt class="py-op">+</tt> <tt id="link-104" class="py-name"><a title="pyRdfa.provisional_iana_schemes" class="py-name" href="#" onclick="return doclink('link-104', 'provisional_iana_schemes', 'link-98');">provisional_iana_schemes</a></tt> <tt class="py-op">+</tt> <tt id="link-105" class="py-name"><a title="pyRdfa.other_used_schemes" class="py-name" href="#" onclick="return doclink('link-105', 'other_used_schemes', 'link-99');">other_used_schemes</a></tt> </tt>
<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> </tt>
<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-comment"># List of built-in transformers that are to be run regardless, because they are part of the RDFa spec</tt> </tt>
<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt id="link-106" class="py-name" targets="Variable pyRdfa.builtInTransformers=pyRdfa-module.html#builtInTransformers"><a title="pyRdfa.builtInTransformers" class="py-name" href="#" onclick="return doclink('link-106', 'builtInTransformers', 'link-106');">builtInTransformers</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt id="link-107" class="py-name"><a title="pyRdfa.transform.empty_safe_curie" class="py-name" href="#" onclick="return doclink('link-107', 'empty_safe_curie', 'link-84');">empty_safe_curie</a></tt><tt class="py-op">,</tt> <tt id="link-108" class="py-name"><a title="pyRdfa.transform.top_about" class="py-name" href="#" onclick="return doclink('link-108', 'top_about', 'link-83');">top_about</a></tt><tt class="py-op">,</tt> <tt id="link-109" class="py-name"><a title="pyRdfa.transform.vocab_for_role" class="py-name" href="#" onclick="return doclink('link-109', 'vocab_for_role', 'link-85');">vocab_for_role</a></tt> </tt>
<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> </tt>
<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-comment">#########################################################################################################</tt> </tt>
<a name="pyRdfa"></a><div id="pyRdfa-def"><a name="L355"></a><tt class="py-lineno">355</tt> <a class="py-toggle" href="#" id="pyRdfa-toggle" onclick="return toggle('pyRdfa');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="pyRdfa.pyRdfa-class.html">pyRdfa</a> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfa-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="pyRdfa-expanded"><a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-docstring">"""Main processing class for the distiller</tt> </tt>
<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-docstring"> @ivar options: an instance of the L{Options} class</tt> </tt>
<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"><tt class="py-docstring"> @ivar media_type: the preferred default media type, possibly set at initialization</tt> </tt>
<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> @ivar base: the base value, possibly set at initialization</tt> </tt>
<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> @ivar http_status: HTTP Status, to be returned when the package is used via a CGI entry. Initially set to 200, may be modified by exception handlers</tt> </tt>
<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="pyRdfa.__init__"></a><div id="pyRdfa.__init__-def"><a name="L363"></a><tt class="py-lineno">363</tt> <a class="py-toggle" href="#" id="pyRdfa.__init__-toggle" onclick="return toggle('pyRdfa.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.pyRdfa-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">base</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">media_type</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">rdfa_version</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfa.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="pyRdfa.__init__-expanded"><a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> @keyword options: Options for the distiller</tt> </tt>
<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> @type options: L{Options}</tt> </tt>
<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> @keyword base: URI for the default "base" value (usually the URI of the file to be processed)</tt> </tt>
<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> @keyword media_type: explicit setting of the preferred media type (a.k.a. content type) of the the RDFa source</tt> </tt>
<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-docstring"> @keyword rdfa_version: the RDFa version that should be used. If not set, the value of the global L{rdfa_current_version} variable is used</tt> </tt>
<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-number">200</tt> </tt>
<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> </tt>
<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">base</tt> </tt>
<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">base</tt> <tt class="py-op">==</tt> <tt class="py-string">""</tt> <tt class="py-op">:</tt> </tt>
<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-op">=</tt> <tt class="py-name">base</tt> </tt>
<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charset</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> </tt>
<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-comment"># predefined content type</tt> </tt>
<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt class="py-name">media_type</tt> </tt>
<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> </tt>
<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-110" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-110', 'options', 'link-80');">options</a></tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-111', 'options', 'link-80');">options</a></tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="pyRdfa.options.Options" class="py-name" href="#" onclick="return doclink('link-112', 'Options', 'link-81');">Options</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-113', 'options', 'link-80');">options</a></tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-114', 'options', 'link-80');">options</a></tt> </tt>
<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> </tt>
<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_type</tt> <tt class="py-op">!=</tt> <tt class="py-string">""</tt> <tt class="py-op">:</tt> </tt>
<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-115', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method pyRdfa.options.Options.set_host_language()=pyRdfa.options.Options-class.html#set_host_language"><a title="pyRdfa.options.Options.set_host_language" class="py-name" href="#" onclick="return doclink('link-116', 'set_host_language', 'link-116');">set_host_language</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt><tt class="py-op">)</tt> </tt>
<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> </tt>
<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">rdfa_version</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt> <tt class="py-op">=</tt> <tt class="py-name">rdfa_version</tt> </tt>
<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
</div><a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> </tt>
<a name="pyRdfa._get_input"></a><div id="pyRdfa._get_input-def"><a name="L396"></a><tt class="py-lineno">396</tt> <a class="py-toggle" href="#" id="pyRdfa._get_input-toggle" onclick="return toggle('pyRdfa._get_input');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.pyRdfa-class.html#_get_input">_get_input</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfa._get_input-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="pyRdfa._get_input-expanded"><a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> Trying to guess whether "name" is a URI or a string (for a file); it then tries to open this source accordingly,</tt> </tt>
<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"> returning a file-like object. If name is none of these, it returns the input argument (that should</tt> </tt>
<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> be, supposedly, a file-like object already).</tt> </tt>
<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"><tt class="py-docstring"> If the media type has not been set explicitly at initialization of this instance,</tt> </tt>
<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-docstring"> the method also sets the media_type based on the HTTP GET response or the suffix of the file. See</tt> </tt>
<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"><tt class="py-docstring"> L{host.preferred_suffixes} for the suffix to media type mapping.</tt> </tt>
<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"><tt class="py-docstring"> @param name: identifier of the input source</tt> </tt>
<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"><tt class="py-docstring"> @type name: string or a file-like object</tt> </tt>
<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-docstring"> @return: a file like object if opening "name" is possible and successful, "name" otherwise</tt> </tt>
<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-comment"># Python 2 branch</tt> </tt>
<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">isstring</tt> <tt class="py-op">=</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-117" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-117', 'name', 'link-2');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt> </tt>
<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">:</tt> </tt>
<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-comment"># Python 3 branch</tt> </tt>
<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-name">isstring</tt> <tt class="py-op">=</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-118" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-118', 'name', 'link-2');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> </tt>
<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isstring</tt> <tt class="py-op">:</tt> </tt>
<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-comment"># check if this is a URI, ie, if there is a valid 'scheme' part</tt> </tt>
<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-comment"># otherwise it is considered to be a simple file</tt> </tt>
<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-119" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-119', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">""</tt> <tt class="py-op">:</tt> </tt>
<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-name">url_request</tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="pyRdfa.utils.URIOpener" class="py-name" href="#" onclick="return doclink('link-120', 'URIOpener', 'link-87');">URIOpener</a></tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-121', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">url_request</tt><tt class="py-op">.</tt><tt class="py-name">location</tt> </tt>
<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt> <tt class="py-op">==</tt> <tt class="py-string">""</tt> <tt class="py-op">:</tt> </tt>
<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">url_request</tt><tt class="py-op">.</tt><tt class="py-name">content_type</tt> <tt class="py-keyword">in</tt> <tt id="link-122" class="py-name"><a title="pyRdfa.host.content_to_host_language" class="py-name" href="#" onclick="return doclink('link-122', 'content_to_host_language', 'link-92');">content_to_host_language</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt class="py-name">url_request</tt><tt class="py-op">.</tt><tt class="py-name">content_type</tt> </tt>
<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-123', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="pyRdfa.host.MediaTypes.xml" class="py-name" href="#" onclick="return doclink('link-124', 'xml', 'link-5');">xml</a></tt> </tt>
<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-125', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="pyRdfa.options.Options.set_host_language" class="py-name" href="#" onclick="return doclink('link-126', 'set_host_language', 'link-116');">set_host_language</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt><tt class="py-op">)</tt> </tt>
<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charset</tt> <tt class="py-op">=</tt> <tt class="py-name">url_request</tt><tt class="py-op">.</tt><tt class="py-name">charset</tt> </tt>
<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-127', 'name', 'link-2');">name</a></tt> </tt>
<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">url_request</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> </tt>
<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-comment"># Creating a File URI for this thing</tt> </tt>
<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-op">=</tt> <tt class="py-string">"file://"</tt> <tt class="py-op">+</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">getcwd</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-128" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-128', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt> <tt class="py-op">==</tt> <tt class="py-string">""</tt> <tt class="py-op">:</tt> </tt>
<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-129', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="pyRdfa.host.MediaTypes.xml" class="py-name" href="#" onclick="return doclink('link-130', 'xml', 'link-5');">xml</a></tt> </tt>
<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-comment"># see if the default should be overwritten</tt> </tt>
<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">suffix</tt> <tt class="py-keyword">in</tt> <tt id="link-131" class="py-name"><a title="pyRdfa.host.preferred_suffixes" class="py-name" href="#" onclick="return doclink('link-131', 'preferred_suffixes', 'link-91');">preferred_suffixes</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-132" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-132', 'name', 'link-2');">name</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-name">suffix</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name"><a title="pyRdfa.host.preferred_suffixes" class="py-name" href="#" onclick="return doclink('link-133', 'preferred_suffixes', 'link-91');">preferred_suffixes</a></tt><tt class="py-op">[</tt><tt class="py-name">suffix</tt><tt class="py-op">]</tt> </tt>
<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charset</tt> <tt class="py-op">=</tt> <tt class="py-string">'utf-8'</tt> </tt>
<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-134', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="pyRdfa.options.Options.set_host_language" class="py-name" href="#" onclick="return doclink('link-135', 'set_host_language', 'link-116');">set_host_language</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">media_type</tt><tt class="py-op">)</tt> </tt>
<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-136" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-136', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-137" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-137', 'name', 'link-2');">name</a></tt> </tt>
<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-138" class="py-name" targets="Class pyRdfa.HTTPError=pyRdfa.HTTPError-class.html"><a title="pyRdfa.HTTPError" class="py-name" href="#" onclick="return doclink('link-138', 'HTTPError', 'link-138');">HTTPError</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-139" class="py-name"><a title="pyRdfa.RDFaError" class="py-name" href="#" onclick="return doclink('link-139', 'RDFaError', 'link-22');">RDFaError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt> <tt class="py-op">:</tt> </tt>
<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">:</tt> </tt>
<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt id="link-140" class="py-name" targets="Variable pyRdfa.rdfs.process.type=pyRdfa.rdfs.process-module.html#type"><a title="pyRdfa.rdfs.process.type" class="py-name" href="#" onclick="return doclink('link-140', 'type', 'link-140');">type</a></tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">traceback</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-141" class="py-name" targets="Class pyRdfa.FailedSource=pyRdfa.FailedSource-class.html"><a title="pyRdfa.FailedSource" class="py-name" href="#" onclick="return doclink('link-141', 'FailedSource', 'link-141');">FailedSource</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
</div><a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> </tt>
<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-comment">####################################################################################################################</tt> </tt>
<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-comment"># Externally used methods</tt> </tt>
<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-comment">#</tt> </tt>
<a name="pyRdfa.graph_from_DOM"></a><div id="pyRdfa.graph_from_DOM-def"><a name="L461"></a><tt class="py-lineno">461</tt> <a class="py-toggle" href="#" id="pyRdfa.graph_from_DOM-toggle" onclick="return toggle('pyRdfa.graph_from_DOM');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.pyRdfa-class.html#graph_from_DOM">graph_from_DOM</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">dom</tt><tt class="py-op">,</tt> <tt class="py-param">graph</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">pgraph</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfa.graph_from_DOM-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="pyRdfa.graph_from_DOM-expanded"><a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"><tt class="py-docstring"> Extract the RDF Graph from a DOM tree. This is where the real processing happens. All other methods get down to this</tt> </tt>
<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"><tt class="py-docstring"> one, eventually (e.g., after opening a URI and parsing it into a DOM).</tt> </tt>
<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"><tt class="py-docstring"> @param dom: a DOM Node element, the top level entry node for the whole tree (i.e., the C{dom.documentElement} is used to initiate processing down the node hierarchy)</tt> </tt>
<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"><tt class="py-docstring"> @keyword graph: an RDF Graph (if None, than a new one is created)</tt> </tt>
<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"><tt class="py-docstring"> @type graph: rdflib Graph instance.</tt> </tt>
<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"><tt class="py-docstring"> @keyword pgraph: an RDF Graph to hold (possibly) the processor graph content. If None, and the error/warning triples are to be generated, they will be added to the returned graph. Otherwise they are stored in this graph.</tt> </tt>
<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"><tt class="py-docstring"> @type pgraph: rdflib Graph instance</tt> </tt>
<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"><tt class="py-docstring"> @return: an RDF Graph</tt> </tt>
<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: rdflib Graph instance</tt> </tt>
<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">copyGraph</tt><tt class="py-op">(</tt><tt class="py-param">tog</tt><tt class="py-op">,</tt> <tt class="py-param">fromg</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">t</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fromg</tt> <tt class="py-op">:</tt> </tt>
<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-name">tog</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name" targets="Method pyRdfaExtras.MyGraph.add()=pyRdfaExtras.MyGraph-class.html#add"><a title="pyRdfaExtras.MyGraph.add" class="py-name" href="#" onclick="return doclink('link-142', 'add', 'link-142');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">ns</tt> <tt class="py-keyword">in</tt> <tt class="py-name">fromg</tt><tt class="py-op">.</tt><tt class="py-name">namespaces</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-name">tog</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">ns</tt><tt class="py-op">)</tt> </tt>
</div><a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> </tt>
<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">graph</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-comment"># Create the RDF Graph, that will contain the return triples...</tt> </tt>
<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-name">graph</tt> <tt class="py-op">=</tt> <tt class="py-name">Graph</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> </tt>
<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-comment"># this will collect the content, the 'default graph', as called in the RDFa spec</tt> </tt>
<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">default_graph</tt> <tt class="py-op">=</tt> <tt class="py-name">Graph</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> </tt>
<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-comment"># get the DOM tree</tt> </tt>
<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-name">topElement</tt> <tt class="py-op">=</tt> <tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">documentElement</tt> </tt>
<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> </tt>
<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-comment"># Create the initial state. This takes care of things</tt> </tt>
<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-comment"># like base, top level namespace settings, etc.</tt> </tt>
<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt id="link-143" class="py-name"><a title="pyRdfa.state" class="py-name" href="#" onclick="return doclink('link-143', 'state', 'link-76');">state</a></tt> <tt class="py-op">=</tt> <tt id="link-144" class="py-name"><a title="pyRdfa.state.ExecutionContext" class="py-name" href="#" onclick="return doclink('link-144', 'ExecutionContext', 'link-77');">ExecutionContext</a></tt><tt class="py-op">(</tt><tt class="py-name">topElement</tt><tt class="py-op">,</tt> <tt class="py-name">default_graph</tt><tt class="py-op">,</tt> <tt class="py-name">base</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_base</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt> <tt class="py-keyword">else</tt> <tt class="py-string">""</tt><tt class="py-op">,</tt> <tt id="link-145" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-145', 'options', 'link-80');">options</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-146', 'options', 'link-80');">options</a></tt><tt class="py-op">,</tt> <tt class="py-name">rdfa_version</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt><tt class="py-op">)</tt> </tt>
<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> </tt>
<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-comment"># Perform the built-in and external transformations on the HTML tree.</tt> </tt>
<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">trans</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-147', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">transformers</tt> <tt class="py-op">+</tt> <tt id="link-148" class="py-name"><a title="pyRdfa.builtInTransformers" class="py-name" href="#" onclick="return doclink('link-148', 'builtInTransformers', 'link-106');">builtInTransformers</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">trans</tt><tt class="py-op">(</tt><tt class="py-name">topElement</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-149', 'options', 'link-80');">options</a></tt><tt class="py-op">,</tt> <tt id="link-150" class="py-name"><a title="pyRdfa.state" class="py-name" href="#" onclick="return doclink('link-150', 'state', 'link-76');">state</a></tt><tt class="py-op">)</tt> </tt>
<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> </tt>
<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-comment"># This may have changed if the state setting detected an explicit version information:</tt> </tt>
<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt> <tt class="py-op">=</tt> <tt id="link-151" class="py-name"><a title="pyRdfa.state" class="py-name" href="#" onclick="return doclink('link-151', 'state', 'link-76');">state</a></tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt> </tt>
<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> </tt>
<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-comment"># The top level subject starts with the current document; this</tt> </tt>
<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-comment"># is used by the recursion</tt> </tt>
<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-comment"># this function is the real workhorse</tt> </tt>
<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt id="link-152" class="py-name"><a title="pyRdfa.parse.parse_one_node" class="py-name" href="#" onclick="return doclink('link-152', 'parse_one_node', 'link-79');">parse_one_node</a></tt><tt class="py-op">(</tt><tt class="py-name">topElement</tt><tt class="py-op">,</tt> <tt class="py-name">default_graph</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-153" class="py-name"><a title="pyRdfa.state" class="py-name" href="#" onclick="return doclink('link-153', 'state', 'link-76');">state</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> </tt>
<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-comment"># Massage the output graph in term of rdfa:Pattern and rdfa:copy</tt> </tt>
<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt id="link-154" class="py-name"><a title="pyRdfa.transform.prototype.handle_prototypes" class="py-name" href="#" onclick="return doclink('link-154', 'handle_prototypes', 'link-15');">handle_prototypes</a></tt><tt class="py-op">(</tt><tt class="py-name">default_graph</tt><tt class="py-op">)</tt> </tt>
<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> </tt>
<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-comment"># If the RDFS expansion has to be made, here is the place...</tt> </tt>
<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-155', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">vocab_expansion</tt> <tt class="py-op">:</tt> </tt>
<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Package pyRdfa.rdfs=pyRdfa.rdfs-module.html"><a title="pyRdfa.rdfs" class="py-name" href="#" onclick="return doclink('link-156', 'rdfs', 'link-156');">rdfs</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Module pyRdfa.rdfs.process=pyRdfa.rdfs.process-module.html"><a title="pyRdfa.rdfs.process" class="py-name" href="#" onclick="return doclink('link-157', 'process', 'link-157');">process</a></tt> <tt class="py-keyword">import</tt> <tt id="link-158" class="py-name" targets="Function pyRdfa.rdfs.process.process_rdfa_sem()=pyRdfa.rdfs.process-module.html#process_rdfa_sem"><a title="pyRdfa.rdfs.process.process_rdfa_sem" class="py-name" href="#" onclick="return doclink('link-158', 'process_rdfa_sem', 'link-158');">process_rdfa_sem</a></tt> </tt>
<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt id="link-159" class="py-name"><a title="pyRdfa.rdfs.process.process_rdfa_sem" class="py-name" href="#" onclick="return doclink('link-159', 'process_rdfa_sem', 'link-158');">process_rdfa_sem</a></tt><tt class="py-op">(</tt><tt class="py-name">default_graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-160', 'options', 'link-80');">options</a></tt><tt class="py-op">)</tt> </tt>
<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> </tt>
<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-comment"># Experimental feature: nothing for now, this is kept as a placeholder</tt> </tt>
<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-161', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">experimental_features</tt> <tt class="py-op">:</tt> </tt>
<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> </tt>
<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-comment"># What should be returned depends on the way the options have been set up</tt> </tt>
<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-162', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">output_default_graph</tt> <tt class="py-op">:</tt> </tt>
<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-name">copyGraph</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">default_graph</tt><tt class="py-op">)</tt> </tt>
<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-163', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">output_processor_graph</tt> <tt class="py-op">:</tt> </tt>
<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pgraph</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">copyGraph</tt><tt class="py-op">(</tt><tt class="py-name">pgraph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-164', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt class="py-name">graph</tt><tt class="py-op">)</tt> </tt>
<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-name">copyGraph</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-165', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt class="py-name">graph</tt><tt class="py-op">)</tt> </tt>
<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-166', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">output_processor_graph</tt> <tt class="py-op">:</tt> </tt>
<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pgraph</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-name">copyGraph</tt><tt class="py-op">(</tt><tt class="py-name">pgraph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-167', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt class="py-name">graph</tt><tt class="py-op">)</tt> </tt>
<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-name">copyGraph</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-168', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt class="py-name">graph</tt><tt class="py-op">)</tt> </tt>
<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> </tt>
<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-comment"># this is necessary if several DOM trees are handled in a row...</tt> </tt>
<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-169', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Method pyRdfa.options.Options.reset_processor_graph()=pyRdfa.options.Options-class.html#reset_processor_graph"><a title="pyRdfa.options.Options.reset_processor_graph" class="py-name" href="#" onclick="return doclink('link-170', 'reset_processor_graph', 'link-170');">reset_processor_graph</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> </tt>
<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">graph</tt> </tt>
</div><a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> </tt>
<a name="pyRdfa.graph_from_source"></a><div id="pyRdfa.graph_from_source-def"><a name="L536"></a><tt class="py-lineno">536</tt> <a class="py-toggle" href="#" id="pyRdfa.graph_from_source-toggle" onclick="return toggle('pyRdfa.graph_from_source');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.pyRdfa-class.html#graph_from_source">graph_from_source</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">graph</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">rdfOutput</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">pgraph</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfa.graph_from_source-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="pyRdfa.graph_from_source-expanded"><a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"><tt class="py-docstring"> Extract an RDF graph from an RDFa source. The source is parsed, the RDF extracted, and the RDFa Graph is</tt> </tt>
<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"><tt class="py-docstring"> returned. This is a front-end to the L{pyRdfa.graph_from_DOM} method.</tt> </tt>
<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"><tt class="py-docstring"> @param name: a URI, a file name, or a file-like object</tt> </tt>
<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"><tt class="py-docstring"> @param graph: rdflib Graph instance. If None, a new one is created.</tt> </tt>
<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"><tt class="py-docstring"> @param pgraph: rdflib Graph instance for the processor graph. If None, and the error/warning triples are to be generated, they will be added to the returned graph. Otherwise they are stored in this graph.</tt> </tt>
<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"><tt class="py-docstring"> @param rdfOutput: whether runtime exceptions should be turned into RDF and returned as part of the processor graph</tt> </tt>
<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"><tt class="py-docstring"> @return: an RDF Graph</tt> </tt>
<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: rdflib Graph instance</tt> </tt>
<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">copyErrors</tt><tt class="py-op">(</tt><tt class="py-param">tog</tt><tt class="py-op">,</tt> <tt class="py-param">options</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">tog</tt> <tt class="py-op">==</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-name">tog</tt> <tt class="py-op">=</tt> <tt class="py-name">Graph</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-171" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-171', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">output_processor_graph</tt> <tt class="py-op">:</tt> </tt>
<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">t</tt> <tt class="py-keyword">in</tt> <tt id="link-172" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-172', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt class="py-name">graph</tt> <tt class="py-op">:</tt> </tt>
<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> <tt class="py-name">tog</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="pyRdfaExtras.MyGraph.add" class="py-name" href="#" onclick="return doclink('link-173', 'add', 'link-142');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pgraph</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> <tt class="py-name">pgraph</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="pyRdfaExtras.MyGraph.add" class="py-name" href="#" onclick="return doclink('link-174', 'add', 'link-142');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">ns</tt> <tt class="py-keyword">in</tt> <tt id="link-175" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-175', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt class="py-name">graph</tt><tt class="py-op">.</tt><tt class="py-name">namespaces</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-name">tog</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">ns</tt><tt class="py-op">)</tt> </tt>
<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pgraph</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> <tt class="py-name">pgraph</tt><tt class="py-op">.</tt><tt class="py-name">bind</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt><tt class="py-name">ns</tt><tt class="py-op">)</tt> </tt>
<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt id="link-176" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-176', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="pyRdfa.options.Options.reset_processor_graph" class="py-name" href="#" onclick="return doclink('link-177', 'reset_processor_graph', 'link-170');">reset_processor_graph</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tog</tt> </tt>
</div><a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> </tt>
<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-comment"># Separating this for a forward Python 3 compatibility</tt> </tt>
<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-comment"># Python 2 branch</tt> </tt>
<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-name">isstring</tt> <tt class="py-op">=</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-178" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-178', 'name', 'link-2');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt> </tt>
<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">:</tt> </tt>
<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-comment"># Python 3 branch</tt> </tt>
<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-name">isstring</tt> <tt class="py-op">=</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-179" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-179', 'name', 'link-2');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt> </tt>
<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> </tt>
<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-comment"># First, open the source... Possible HTTP errors are returned as error triples</tt> </tt>
<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-name">input</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-name">input</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name" targets="Method pyRdfa.pyRdfa._get_input()=pyRdfa.pyRdfa-class.html#_get_input"><a title="pyRdfa.pyRdfa._get_input" class="py-name" href="#" onclick="return doclink('link-180', '_get_input', 'link-180');">_get_input</a></tt><tt class="py-op">(</tt><tt id="link-181" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-181', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-182" class="py-name"><a title="pyRdfa.FailedSource" class="py-name" href="#" onclick="return doclink('link-182', 'FailedSource', 'link-141');">FailedSource</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">ex</tt> <tt class="py-op">:</tt> </tt>
<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-number">400</tt> </tt>
<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">rdfOutput</tt> <tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-name">ex</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-183', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name" targets="Method pyRdfa.options.Options.add_error()=pyRdfa.options.Options-class.html#add_error"><a title="pyRdfa.options.Options.add_error" class="py-name" href="#" onclick="return doclink('link-184', 'add_error', 'link-184');">add_error</a></tt><tt class="py-op">(</tt><tt class="py-name">ex</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt id="link-185" class="py-name"><a title="pyRdfa.FileReferenceError" class="py-name" href="#" onclick="return doclink('link-185', 'FileReferenceError', 'link-44');">FileReferenceError</a></tt><tt class="py-op">,</tt> <tt id="link-186" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-186', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-187', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method pyRdfa.options.ProcessorGraph.add_http_context()=pyRdfa.options.ProcessorGraph-class.html#add_http_context"><a title="pyRdfa.options.ProcessorGraph.add_http_context" class="py-name" href="#" onclick="return doclink('link-188', 'add_http_context', 'link-188');">add_http_context</a></tt><tt class="py-op">(</tt><tt class="py-name">err</tt><tt class="py-op">,</tt> <tt class="py-number">400</tt><tt class="py-op">)</tt> </tt>
<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">copyErrors</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-189', 'options', 'link-80');">options</a></tt><tt class="py-op">)</tt> </tt>
<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-190" class="py-name"><a title="pyRdfa.HTTPError" class="py-name" href="#" onclick="return doclink('link-190', 'HTTPError', 'link-138');">HTTPError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">ex</tt> <tt class="py-op">:</tt> </tt>
<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"> <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-name">h</tt><tt class="py-op">.</tt><tt class="py-name">http_code</tt> </tt>
<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">rdfOutput</tt> <tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-name">ex</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-191', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="pyRdfa.options.Options.add_error" class="py-name" href="#" onclick="return doclink('link-192', 'add_error', 'link-184');">add_error</a></tt><tt class="py-op">(</tt><tt class="py-string">"HTTP Error: %s (%s)"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">h</tt><tt class="py-op">.</tt><tt class="py-name">http_code</tt><tt class="py-op">,</tt><tt class="py-name">h</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-193" class="py-name"><a title="pyRdfa.HTError" class="py-name" href="#" onclick="return doclink('link-193', 'HTError', 'link-46');">HTError</a></tt><tt class="py-op">,</tt> <tt id="link-194" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-194', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-195', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="pyRdfa.options.ProcessorGraph.add_http_context" class="py-name" href="#" onclick="return doclink('link-196', 'add_http_context', 'link-188');">add_http_context</a></tt><tt class="py-op">(</tt><tt class="py-name">err</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">.</tt><tt class="py-name">http_code</tt><tt class="py-op">)</tt> </tt>
<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">copyErrors</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-197', 'options', 'link-80');">options</a></tt><tt class="py-op">)</tt> </tt>
<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-198" class="py-name"><a title="pyRdfa.RDFaError" class="py-name" href="#" onclick="return doclink('link-198', 'RDFaError', 'link-22');">RDFaError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">ex</tt><tt class="py-op">:</tt> </tt>
<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-number">500</tt> </tt>
<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> <tt class="py-comment"># Something nasty happened:-(</tt> </tt>
<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">rdfOutput</tt> <tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">Exception</tt><tt class="py-op">(</tt><tt class="py-name">ex</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-199', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="pyRdfa.options.Options.add_error" class="py-name" href="#" onclick="return doclink('link-200', 'add_error', 'link-184');">add_error</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">ex</tt><tt class="py-op">.</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-201', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-202', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="pyRdfa.options.ProcessorGraph.add_http_context" class="py-name" href="#" onclick="return doclink('link-203', 'add_http_context', 'link-188');">add_http_context</a></tt><tt class="py-op">(</tt><tt class="py-name">err</tt><tt class="py-op">,</tt> <tt class="py-number">500</tt><tt class="py-op">)</tt> </tt>
<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">copyErrors</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-204', 'options', 'link-80');">options</a></tt><tt class="py-op">)</tt> </tt>
<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt> <tt class="py-keyword">as</tt> <tt class="py-name">ex</tt> <tt class="py-op">:</tt> </tt>
<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-number">500</tt> </tt>
<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-comment"># Something nasty happened:-(</tt> </tt>
<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">rdfOutput</tt> <tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">ex</tt> </tt>
<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-205', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="pyRdfa.options.Options.add_error" class="py-name" href="#" onclick="return doclink('link-206', 'add_error', 'link-184');">add_error</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-207', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-208', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="pyRdfa.options.ProcessorGraph.add_http_context" class="py-name" href="#" onclick="return doclink('link-209', 'add_http_context', 'link-188');">add_http_context</a></tt><tt class="py-op">(</tt><tt class="py-name">err</tt><tt class="py-op">,</tt> <tt class="py-number">500</tt><tt class="py-op">)</tt> </tt>
<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">copyErrors</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-210', 'options', 'link-80');">options</a></tt><tt class="py-op">)</tt> </tt>
<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> </tt>
<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-name">dom</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-211', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">host_language</tt> <tt class="py-op">==</tt> <tt id="link-212" class="py-name"><a title="pyRdfa.host.HostLanguage" class="py-name" href="#" onclick="return doclink('link-212', 'HostLanguage', 'link-89');">HostLanguage</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name" targets="Variable pyRdfa.host.HostLanguage.html5=pyRdfa.host.HostLanguage-class.html#html5,Module pyRdfa.host.html5=pyRdfa.host.html5-module.html"><a title="pyRdfa.host.HostLanguage.html5
pyRdfa.host.html5" class="py-name" href="#" onclick="return doclink('link-213', 'html5', 'link-213');">html5</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">warnings</tt> </tt>
<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">filterwarnings</tt><tt class="py-op">(</tt><tt class="py-string">"ignore"</tt><tt class="py-op">,</tt> <tt class="py-name">category</tt><tt class="py-op">=</tt><tt class="py-name">DeprecationWarning</tt><tt class="py-op">)</tt> </tt>
<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt id="link-214" class="py-name" targets="Variable pyRdfa.rdflibparsers.html5lib=pyRdfa.rdflibparsers-module.html#html5lib"><a title="pyRdfa.rdflibparsers.html5lib" class="py-name" href="#" onclick="return doclink('link-214', 'html5lib', 'link-214');">html5lib</a></tt> </tt>
<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt id="link-215" class="py-name"><a title="pyRdfa.rdflibparsers.html5lib" class="py-name" href="#" onclick="return doclink('link-215', 'html5lib', 'link-214');">html5lib</a></tt><tt class="py-op">.</tt><tt class="py-name">HTMLParser</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">=</tt><tt id="link-216" class="py-name"><a title="pyRdfa.rdflibparsers.html5lib" class="py-name" href="#" onclick="return doclink('link-216', 'html5lib', 'link-214');">html5lib</a></tt><tt class="py-op">.</tt><tt class="py-name">treebuilders</tt><tt class="py-op">.</tt><tt class="py-name">getTreeBuilder</tt><tt class="py-op">(</tt><tt class="py-string">"dom"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">charset</tt> <tt class="py-op">:</tt> </tt>
<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-comment"># This means the HTTP header has provided a charset, or the</tt> </tt>
<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-comment"># file is a local file when we suppose it to be a utf-8</tt> </tt>
<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-comment">#</tt> </tt>
<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> <tt class="py-comment"># 2020-01-20, Ivan Herman</tt> </tt>
<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-comment"># for some reasons the python3 version ran into a problem with this html5lib call</tt> </tt>
<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-comment"># the override_encoding argument was not accepted.</tt> </tt>
<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-comment"># dom = parser.parse(input, override_encoding=self.charset)</tt> </tt>
<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-name">dom</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-217', 'parse', 'link-7');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">)</tt> </tt>
<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-comment"># No charset set. The HTMLLib parser tries to sniff into the</tt> </tt>
<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-comment"># the file to find a meta header for the charset; if that</tt> </tt>
<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-comment"># works, fine, otherwise it falls back on window-...</tt> </tt>
<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-name">dom</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-218', 'parse', 'link-7');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">)</tt> </tt>
<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> </tt>
<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isstring</tt> <tt class="py-op">:</tt> </tt>
<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-name">input</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt class="py-name">input</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="pyRdfa.pyRdfa._get_input" class="py-name" href="#" onclick="return doclink('link-219', '_get_input', 'link-180');">_get_input</a></tt><tt class="py-op">(</tt><tt id="link-220" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-220', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt class="py-name">input</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="pyRdfa.host" class="py-name" href="#" onclick="return doclink('link-221', 'host', 'link-88');">host</a></tt> <tt class="py-keyword">import</tt> <tt id="link-222" class="py-name" targets="Function pyRdfa.host.adjust_html_version()=pyRdfa.host-module.html#adjust_html_version"><a title="pyRdfa.host.adjust_html_version" class="py-name" href="#" onclick="return doclink('link-222', 'adjust_html_version', 'link-222');">adjust_html_version</a></tt> </tt>
<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt> <tt class="py-op">=</tt> <tt id="link-223" class="py-name"><a title="pyRdfa.host.adjust_html_version" class="py-name" href="#" onclick="return doclink('link-223', 'adjust_html_version', 'link-222');">adjust_html_version</a></tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt><tt class="py-op">)</tt> </tt>
<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">:</tt> </tt>
<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-comment"># if anything goes wrong, it is not really important; rdfa version stays what it was...</tt> </tt>
<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> </tt>
<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="pyRdfa.host" class="py-name" href="#" onclick="return doclink('link-224', 'host', 'link-88');">host</a></tt> <tt class="py-keyword">import</tt> <tt id="link-225" class="py-name" targets="Function pyRdfa.host.adjust_xhtml_and_version()=pyRdfa.host-module.html#adjust_xhtml_and_version"><a title="pyRdfa.host.adjust_xhtml_and_version" class="py-name" href="#" onclick="return doclink('link-225', 'adjust_xhtml_and_version', 'link-225');">adjust_xhtml_and_version</a></tt> </tt>
<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">,</tt> <tt class="py-name">StringIO</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">,</tt> <tt class="py-name">file</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> <tt id="link-226" class="py-name"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-226', 'parse', 'link-7');">parse</a></tt> <tt class="py-op">=</tt> <tt id="link-227" class="py-name"><a title="pyRdfa.host.MediaTypes.xml" class="py-name" href="#" onclick="return doclink('link-227', 'xml', 'link-5');">xml</a></tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-228', 'parse', 'link-7');">parse</a></tt> </tt>
<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"> <tt id="link-229" class="py-name"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-229', 'parse', 'link-7');">parse</a></tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="pyRdfa.host.MediaTypes.xml" class="py-name" href="#" onclick="return doclink('link-230', 'xml', 'link-5');">xml</a></tt><tt class="py-op">.</tt><tt class="py-name">dom</tt><tt class="py-op">.</tt><tt class="py-name">minidom</tt><tt class="py-op">.</tt><tt class="py-name">parseString</tt> </tt>
<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> <tt class="py-name">dom</tt> <tt class="py-op">=</tt> <tt id="link-231" class="py-name"><a title="pyRdfa.parse
pyRdfa.rdflibparsers.HTurtleParser.parse
pyRdfa.rdflibparsers.RDFa10Parser.parse
pyRdfa.rdflibparsers.RDFaParser.parse
pyRdfa.rdflibparsers.StructuredDataParser.parse" class="py-name" href="#" onclick="return doclink('link-231', 'parse', 'link-7');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">input</tt><tt class="py-op">)</tt> </tt>
<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">adjusted_host_language</tt><tt class="py-op">,</tt> <tt class="py-name">version</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="pyRdfa.host.adjust_xhtml_and_version" class="py-name" href="#" onclick="return doclink('link-232', 'adjust_xhtml_and_version', 'link-225');">adjust_xhtml_and_version</a></tt><tt class="py-op">(</tt><tt class="py-name">dom</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-233', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">host_language</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt><tt class="py-op">)</tt> </tt>
<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-234', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">host_language</tt> <tt class="py-op">=</tt> <tt class="py-name">adjusted_host_language</tt> </tt>
<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">rdfa_version</tt> <tt class="py-op">=</tt> <tt class="py-name">version</tt> </tt>
<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt> <tt class="py-op">:</tt> </tt>
<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-string">"HTML5 parser not available. Try installing html5lib <http://code.google.com/p/html5lib>"</tt> </tt>
<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt> <tt class="py-op">:</tt> </tt>
<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-comment"># These are various parsing exception. Per spec, this is a case when</tt> </tt>
<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt class="py-comment"># error triples MUST be returned, ie, the usage of rdfOutput (which switches between an HTML formatted</tt> </tt>
<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-comment"># return page or a graph with error triples) does not apply</tt> </tt>
<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-235', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="pyRdfa.options.Options.add_error" class="py-name" href="#" onclick="return doclink('link-236', 'add_error', 'link-184');">add_error</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt id="link-237" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-237', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-number">400</tt> </tt>
<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-238', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="pyRdfa.options.ProcessorGraph.add_http_context" class="py-name" href="#" onclick="return doclink('link-239', 'add_http_context', 'link-188');">add_http_context</a></tt><tt class="py-op">(</tt><tt class="py-name">err</tt><tt class="py-op">,</tt> <tt class="py-number">400</tt><tt class="py-op">)</tt> </tt>
<a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">copyErrors</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-240', 'options', 'link-80');">options</a></tt><tt class="py-op">)</tt> </tt>
<a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"> </tt>
<a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-comment"># If we got here, we have a DOM tree to operate on...</tt> </tt>
<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name" targets="Method pyRdfa.pyRdfa.graph_from_DOM()=pyRdfa.pyRdfa-class.html#graph_from_DOM,Method pyRdfa.rdflibparsers.HTurtle.graph_from_DOM()=pyRdfa.rdflibparsers.HTurtle-class.html#graph_from_DOM"><a title="pyRdfa.pyRdfa.graph_from_DOM
pyRdfa.rdflibparsers.HTurtle.graph_from_DOM" class="py-name" href="#" onclick="return doclink('link-241', 'graph_from_DOM', 'link-241');">graph_from_DOM</a></tt><tt class="py-op">(</tt><tt class="py-name">dom</tt><tt class="py-op">,</tt> <tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">pgraph</tt><tt class="py-op">)</tt> </tt>
<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt> <tt class="py-op">:</tt> </tt>
<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt class="py-comment"># Something nasty happened during the generation of the graph...</tt> </tt>
<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">excepthook</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">ImportError</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">http_status</tt> <tt class="py-op">=</tt> <tt class="py-number">500</tt> </tt>
<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">rdfOutput</tt> <tt class="py-op">:</tt> <tt class="py-keyword">raise</tt> <tt class="py-name">b</tt> </tt>
<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-name">err</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-242', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="pyRdfa.options.Options.add_error" class="py-name" href="#" onclick="return doclink('link-243', 'add_error', 'link-184');">add_error</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt id="link-244" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-244', 'name', 'link-2');">name</a></tt><tt class="py-op">)</tt> </tt>
<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-245', 'options', 'link-80');">options</a></tt><tt class="py-op">.</tt><tt class="py-name">processor_graph</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="pyRdfa.options.ProcessorGraph.add_http_context" class="py-name" href="#" onclick="return doclink('link-246', 'add_http_context', 'link-188');">add_http_context</a></tt><tt class="py-op">(</tt><tt class="py-name">err</tt><tt class="py-op">,</tt> <tt class="py-number">500</tt><tt class="py-op">)</tt> </tt>
<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">copyErrors</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="pyRdfa.options" class="py-name" href="#" onclick="return doclink('link-247', 'options', 'link-80');">options</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> </tt>
<a name="pyRdfa.rdf_from_sources"></a><div id="pyRdfa.rdf_from_sources-def"><a name="L679"></a><tt class="py-lineno">679</tt> <a class="py-toggle" href="#" id="pyRdfa.rdf_from_sources-toggle" onclick="return toggle('pyRdfa.rdf_from_sources');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.pyRdfa-class.html#rdf_from_sources">rdf_from_sources</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">names</tt><tt class="py-op">,</tt> <tt class="py-param">outputFormat</tt> <tt class="py-op">=</tt> <tt class="py-string">"turtle"</tt><tt class="py-op">,</tt> <tt class="py-param">rdfOutput</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfa.rdf_from_sources-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="pyRdfa.rdf_from_sources-expanded"><a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"><tt class="py-docstring"> Extract and RDF graph from a list of RDFa sources and serialize them in one graph. The sources are parsed, the RDF</tt> </tt>
<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"><tt class="py-docstring"> extracted, and serialization is done in the specified format.</tt> </tt>
<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"><tt class="py-docstring"> @param names: list of sources, each can be a URI, a file name, or a file-like object</tt> </tt>
<a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"><tt class="py-docstring"> @keyword outputFormat: serialization format. Can be one of "turtle", "n3", "xml", "pretty-xml", "nt". "xml", "pretty-xml", "json" or "json-ld". "turtle" and "n3", "xml" and "pretty-xml", and "json" and "json-ld" are synonyms, respectively. Note that the JSON-LD serialization works with RDFLib 3.* only.</tt> </tt>
<a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"><tt class="py-docstring"> @keyword rdfOutput: controls what happens in case an exception is raised. If the value is False, the caller is responsible handling it; otherwise a graph is returned with an error message included in the processor graph</tt> </tt>
<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"><tt class="py-docstring"> @type rdfOutput: boolean</tt> </tt>
<a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"><tt class="py-docstring"> @return: a serialized RDF Graph</tt> </tt>
<a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: string</tt> </tt>
<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"> <tt class="py-comment"># This is better because it gives access to the various, non-standard serializations</tt> </tt>
<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"> <tt class="py-comment"># If it does not work because the extra are not installed, fall back to the standard</tt> </tt>
<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"> <tt class="py-comment"># rdlib distribution...</tt> </tt>
<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> </tt>
<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">rdflib</tt><tt class="py-op">.</tt><tt class="py-name">__version__</tt> <tt class="py-op">>=</tt> <tt class="py-string">"3.0.0"</tt> <tt class="py-op">:</tt> </tt>
<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-name">graph</tt> <tt class="py-op">=</tt> <tt class="py-name">Graph</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-comment"># We may need the extra utilities for older rdflib versions...</tt> </tt>
<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> <tt class="py-keyword">try</tt> <tt class="py-op">:</tt> </tt>
<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-248" class="py-name" targets="Package pyRdfaExtras=pyRdfaExtras-module.html"><a title="pyRdfaExtras" class="py-name" href="#" onclick="return doclink('link-248', 'pyRdfaExtras', 'link-248');">pyRdfaExtras</a></tt> <tt class="py-keyword">import</tt> <tt id="link-249" class="py-name" targets="Class pyRdfaExtras.MyGraph=pyRdfaExtras.MyGraph-class.html"><a title="pyRdfaExtras.MyGraph" class="py-name" href="#" onclick="return doclink('link-249', 'MyGraph', 'link-249');">MyGraph</a></tt> </tt>
<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-name">graph</tt> <tt class="py-op">=</tt> <tt id="link-250" class="py-name"><a title="pyRdfaExtras.MyGraph" class="py-name" href="#" onclick="return doclink('link-250', 'MyGraph', 'link-249');">MyGraph</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">:</tt> </tt>
<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-name">graph</tt> <tt class="py-op">=</tt> <tt class="py-name">Graph</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> </tt>
<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> <tt class="py-comment"># graph.bind("xsd", Namespace('http://www.w3.org/2001/XMLSchema#'))</tt> </tt>
<a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-comment"># the value of rdfOutput determines the reaction on exceptions...</tt> </tt>
<a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-251" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-251', 'name', 'link-2');">name</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">names</tt> <tt class="py-op">:</tt> </tt>
<a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name" targets="Method pyRdfa.pyRdfa.graph_from_source()=pyRdfa.pyRdfa-class.html#graph_from_source"><a title="pyRdfa.pyRdfa.graph_from_source" class="py-name" href="#" onclick="return doclink('link-252', 'graph_from_source', 'link-252');">graph_from_source</a></tt><tt class="py-op">(</tt><tt id="link-253" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-253', 'name', 'link-2');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">graph</tt><tt class="py-op">,</tt> <tt class="py-name">rdfOutput</tt><tt class="py-op">)</tt> </tt>
<a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> </tt>
<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> <tt class="py-comment"># Stupid difference between python2 and python3...</tt> </tt>
<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-254" class="py-name"><a title="pyRdfa.PY3
pyRdfa.rdfs.cache.PY3" class="py-name" href="#" onclick="return doclink('link-254', 'PY3', 'link-3');">PY3</a></tt> <tt class="py-op">:</tt> </tt>
<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">graph</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name" targets="Method pyRdfaExtras.MyGraph.serialize()=pyRdfaExtras.MyGraph-class.html#serialize"><a title="pyRdfaExtras.MyGraph.serialize" class="py-name" href="#" onclick="return doclink('link-255', 'serialize', 'link-255');">serialize</a></tt><tt class="py-op">(</tt><tt class="py-name">format</tt><tt class="py-op">=</tt><tt class="py-name">outputFormat</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">graph</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="pyRdfaExtras.MyGraph.serialize" class="py-name" href="#" onclick="return doclink('link-256', 'serialize', 'link-255');">serialize</a></tt><tt class="py-op">(</tt><tt class="py-name">format</tt><tt class="py-op">=</tt><tt class="py-name">outputFormat</tt><tt class="py-op">)</tt> </tt>
</div><a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> </tt>
<a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"> </tt>
<a name="pyRdfa.rdf_from_source"></a><div id="pyRdfa.rdf_from_source-def"><a name="L716"></a><tt class="py-lineno">716</tt> <a class="py-toggle" href="#" id="pyRdfa.rdf_from_source-toggle" onclick="return toggle('pyRdfa.rdf_from_source');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa.pyRdfa-class.html#rdf_from_source">rdf_from_source</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">outputFormat</tt> <tt class="py-op">=</tt> <tt class="py-string">"turtle"</tt><tt class="py-op">,</tt> <tt class="py-param">rdfOutput</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="pyRdfa.rdf_from_source-collapsed" style="display:none;" pad="+++" indent="++++++++++++"></div><div id="pyRdfa.rdf_from_source-expanded"><a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
<a name="L718"></a><tt class="py-lineno">718</tt> <tt class="py-line"><tt class="py-docstring"> Extract and RDF graph from an RDFa source and serialize it in one graph. The source is parsed, the RDF</tt> </tt>
<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"><tt class="py-docstring"> extracted, and serialization is done in the specified format.</tt> </tt>
<a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"><tt class="py-docstring"> @param name: a URI, a file name, or a file-like object</tt> </tt>
<a name="L721"></a><tt class="py-lineno">721</tt> <tt class="py-line"><tt class="py-docstring"> @keyword outputFormat: serialization format. Can be one of "turtle", "n3", "xml", "pretty-xml", "nt". "xml", "pretty-xml", or "json-ld". "turtle" and "n3", or "xml" and "pretty-xml" are synonyms, respectively. Note that the JSON-LD serialization works with RDFLib 3.* only.</tt> </tt>
<a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"><tt class="py-docstring"> @keyword rdfOutput: controls what happens in case an exception is raised. If the value is False, the caller is responsible handling it; otherwise a graph is returned with an error message included in the processor graph</tt> </tt>
<a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"><tt class="py-docstring"> @type rdfOutput: boolean</tt> </tt>
<a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"><tt class="py-docstring"> @return: a serialized RDF Graph</tt> </tt>
<a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: string</tt> </tt>
<a name="L726"></a><tt class="py-lineno">726</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name" targets="Method pyRdfa.pyRdfa.rdf_from_sources()=pyRdfa.pyRdfa-class.html#rdf_from_sources"><a title="pyRdfa.pyRdfa.rdf_from_sources" class="py-name" href="#" onclick="return doclink('link-257', 'rdf_from_sources', 'link-257');">rdf_from_sources</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-258" class="py-name"><a title="pyRdfa.name" class="py-name" href="#" onclick="return doclink('link-258', 'name', 'link-2');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">outputFormat</tt><tt class="py-op">,</tt> <tt class="py-name">rdfOutput</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"> </tt>
<a name="L729"></a><tt class="py-lineno">729</tt> <tt class="py-line"><tt class="py-comment">################################################# CGI Entry point</tt> </tt>
<a name="processURI"></a><div id="processURI-def"><a name="L730"></a><tt class="py-lineno">730</tt> <a class="py-toggle" href="#" id="processURI-toggle" onclick="return toggle('processURI');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="pyRdfa-module.html#processURI">processURI</a><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">outputFormat</tt><tt class="py-op">,</tt> <tt class="py-param">form</tt><tt class="py-op">=</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
</div><div id="processURI-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="processURI-expanded"><a name="L731"></a><tt class="py-lineno">731</tt> <tt class="py-line"> <tt class="py-docstring">"""The standard processing of an RDFa uri options in a form; used as an entry point from a CGI call.</tt> </tt>
<a name="L732"></a><tt class="py-lineno">732</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L733"></a><tt class="py-lineno">733</tt> <tt class="py-line"><tt class="py-docstring"> The call accepts extra form options (i.e., HTTP GET options) as follows:</tt> </tt>
<a name="L734"></a><tt class="py-lineno">734</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L735"></a><tt class="py-lineno">735</tt> <tt class="py-line"><tt class="py-docstring"> - C{graph=[output|processor|output,processor|processor,output]} specifying which graphs are returned. Default: C{output}</tt> </tt>
<a name="L736"></a><tt class="py-lineno">736</tt> <tt class="py-line"><tt class="py-docstring"> - C{space_preserve=[true|false]} means that plain literals are normalized in terms of white spaces. Default: C{false}</tt> </tt>
<a name="L737"></a><tt class="py-lineno">737</tt> <tt class="py-line"><tt class="py-docstring"> - C{rfa_version} provides the RDFa version that should be used for distilling. The string should be of the form "1.0" or "1.1". Default is the highest version the current package implements, currently "1.1"</tt> </tt>
<a name="L738"></a><tt class="py-lineno">738</tt> <tt class="py-line"><tt class="py-docstring"> - C{host_language=[xhtml,html,xml]} : the host language. Used when files are uploaded or text is added verbatim, otherwise the HTTP return header should be used. Default C{xml}</tt> </tt>
<a name="L739"></a><tt class="py-lineno">739</tt> <tt class="py-line"><tt class="py-docstring"> - C{embedded_rdf=[true|false]} : whether embedded turtle or RDF/XML content should be added to the output graph. Default: C{false}</tt> </tt>
<a name="L740"></a><tt class="py-lineno">740</tt> <tt class="py-line"><tt class="py-docstring"> - C{vocab_expansion=[true|false]} : whether the vocabularies should be expanded through the restricted RDFS entailment. Default: C{false}</tt> </tt>
<a name="L741"></a><tt class="py-lineno">741</tt> <tt class="py-line"><tt class="py-docstring"> - C{vocab_cache=[true|false]} : whether vocab caching should be performed or whether it should be ignored and vocabulary files should be picked up every time. Default: C{false}</tt> </tt>
<a name="L742"></a><tt class="py-lineno">742</tt> <tt class="py-line"><tt class="py-docstring"> - C{vocab_cache_report=[true|false]} : whether vocab caching details should be reported. Default: C{false}</tt> </tt>
<a name="L743"></a><tt class="py-lineno">743</tt> <tt class="py-line"><tt class="py-docstring"> - C{vocab_cache_bypass=[true|false]} : whether vocab caches have to be regenerated every time. Default: C{false}</tt> </tt>
<a name="L744"></a><tt class="py-lineno">744</tt> <tt class="py-line"><tt class="py-docstring"> - C{rdfa_lite=[true|false]} : whether warnings should be generated for non RDFa Lite attribute usage. Default: C{false}</tt> </tt>
<a name="L745"></a><tt class="py-lineno">745</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L746"></a><tt class="py-lineno">746</tt> <tt class="py-line"><tt class="py-docstring"> @param uri: URI to access. Note that the C{text:} and C{uploaded:} fake URI values are treated separately; the former is for textual intput (in which case a StringIO is used to get the data) and the latter is for uploaded file, where the form gives access to the file directly.</tt> </tt>
<a name="L747"></a><tt class="py-lineno">747</tt> <tt class="py-line"><tt class="py-docstring"> @param outputFormat: serialization format, as defined by the package. Currently "xml", "turtle", "nt", or "json". Default is "turtle", also used if any other string is given.</tt> </tt>
<a name="L748"></a><tt class="py-lineno">748</tt> <tt class="py-line"><tt class="py-docstring"> @param form: extra call options (from the CGI call) to set up the local options</tt> </tt>
<a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"><tt class="py-docstring"> @type form: cgi FieldStorage instance</tt> </tt>
<a name="L750"></a><tt class="py-lineno">750</tt> <tt class="py-line"><tt class="py-docstring"> @return: serialized graph</tt> </tt>
<a name="L751"></a><tt class="py-lineno">751</tt> <tt class="py-line"><tt class="py-docstring"> @rtype: string</tt> </tt>
<a name="L752"></a><tt class="py-lineno">752</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L753"></a><tt class="py-lineno">753</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">_get_option</tt><tt class="py-op">(</tt><tt class="py-param">param</tt><tt class="py-op">,</tt> <tt class="py-param">compare_value</tt><tt class="py-op">,</tt> <tt class="py-param">default</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"> <tt class="py-name">param_old</tt> <tt class="py-op">=</tt> <tt class="py-name">param</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">,</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt> </tt>
<a name="L755"></a><tt class="py-lineno">755</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">param</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L757"></a><tt class="py-lineno">757</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> <tt class="py-op">==</tt> <tt class="py-name">compare_value</tt> </tt>
<a name="L758"></a><tt class="py-lineno">758</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">param_old</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"> <tt class="py-comment"># this is to ensure the old style parameters are still valid...</tt> </tt>
<a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"> <tt class="py-comment"># in the old days I used '-' in the parameters, the standard favours '_'</tt> </tt>
<a name="L761"></a><tt class="py-lineno">761</tt> <tt class="py-line"> <tt class="py-name">val</tt> <tt class="py-op">=</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-name">param_old</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L762"></a><tt class="py-lineno">762</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">val</tt> <tt class="py-op">==</tt> <tt class="py-name">compare_value</tt> </tt>
<a name="L763"></a><tt class="py-lineno">763</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L764"></a><tt class="py-lineno">764</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">default</tt> </tt>
</div><a name="L765"></a><tt class="py-lineno">765</tt> <tt class="py-line"> </tt>
<a name="L766"></a><tt class="py-lineno">766</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">uri</tt> <tt class="py-op">==</tt> <tt class="py-string">"uploaded:"</tt> <tt class="py-op">:</tt> </tt>
<a name="L767"></a><tt class="py-lineno">767</tt> <tt class="py-line"> <tt class="py-name">input</tt> <tt class="py-op">=</tt> <tt class="py-name">form</tt><tt class="py-op">[</tt><tt class="py-string">"uploaded"</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">file</tt> </tt>
<a name="L768"></a><tt class="py-lineno">768</tt> <tt class="py-line"> <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
<a name="L769"></a><tt class="py-lineno">769</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">uri</tt> <tt class="py-op">==</tt> <tt class="py-string">"text:"</tt> <tt class="py-op">:</tt> </tt>
<a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"> <tt class="py-name">input</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"text"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L771"></a><tt class="py-lineno">771</tt> <tt class="py-line"> <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
<a name="L772"></a><tt class="py-lineno">772</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L773"></a><tt class="py-lineno">773</tt> <tt class="py-line"> <tt class="py-name">input</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
<a name="L774"></a><tt class="py-lineno">774</tt> <tt class="py-line"> <tt class="py-name">base</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
<a name="L775"></a><tt class="py-lineno">775</tt> <tt class="py-line"> </tt>
<a name="L776"></a><tt class="py-lineno">776</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"rdfa_version"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L777"></a><tt class="py-lineno">777</tt> <tt class="py-line"> <tt class="py-name">rdfa_version</tt> <tt class="py-op">=</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"rdfa_version"</tt><tt class="py-op">)</tt> </tt>
<a name="L778"></a><tt class="py-lineno">778</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L779"></a><tt class="py-lineno">779</tt> <tt class="py-line"> <tt class="py-name">rdfa_version</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L780"></a><tt class="py-lineno">780</tt> <tt class="py-line"> </tt>
<a name="L781"></a><tt class="py-lineno">781</tt> <tt class="py-line"> <tt class="py-comment"># working through the possible options</tt> </tt>
<a name="L782"></a><tt class="py-lineno">782</tt> <tt class="py-line"> <tt class="py-comment"># Host language: HTML, XHTML, or XML</tt> </tt>
<a name="L783"></a><tt class="py-lineno">783</tt> <tt class="py-line"> <tt class="py-comment"># Note that these options should be used for the upload and inline version only in case of a form</tt> </tt>
<a name="L784"></a><tt class="py-lineno">784</tt> <tt class="py-line"> <tt class="py-comment"># for real uris the returned content type should be used</tt> </tt>
<a name="L785"></a><tt class="py-lineno">785</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"host_language"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L786"></a><tt class="py-lineno">786</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"host_language"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"xhtml"</tt> <tt class="py-op">:</tt> </tt>
<a name="L787"></a><tt class="py-lineno">787</tt> <tt class="py-line"> <tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-259" class="py-name"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-259', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">.</tt><tt id="link-260" class="py-name" targets="Variable pyRdfa.host.HostLanguage.xhtml=pyRdfa.host.HostLanguage-class.html#xhtml,Variable pyRdfa.host.MediaTypes.xhtml=pyRdfa.host.MediaTypes-class.html#xhtml"><a title="pyRdfa.host.HostLanguage.xhtml
pyRdfa.host.MediaTypes.xhtml" class="py-name" href="#" onclick="return doclink('link-260', 'xhtml', 'link-260');">xhtml</a></tt> </tt>
<a name="L788"></a><tt class="py-lineno">788</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"host_language"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"html"</tt> <tt class="py-op">:</tt> </tt>
<a name="L789"></a><tt class="py-lineno">789</tt> <tt class="py-line"> <tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-261" class="py-name"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-261', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">.</tt><tt id="link-262" class="py-name" targets="Variable pyRdfa.host.MediaTypes.html=pyRdfa.host.MediaTypes-class.html#html"><a title="pyRdfa.host.MediaTypes.html" class="py-name" href="#" onclick="return doclink('link-262', 'html', 'link-262');">html</a></tt> </tt>
<a name="L790"></a><tt class="py-lineno">790</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"host_language"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"svg"</tt> <tt class="py-op">:</tt> </tt>
<a name="L791"></a><tt class="py-lineno">791</tt> <tt class="py-line"> <tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-263" class="py-name"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-263', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Variable pyRdfa.host.HostLanguage.svg=pyRdfa.host.HostLanguage-class.html#svg,Variable pyRdfa.host.MediaTypes.svg=pyRdfa.host.MediaTypes-class.html#svg"><a title="pyRdfa.host.HostLanguage.svg
pyRdfa.host.MediaTypes.svg" class="py-name" href="#" onclick="return doclink('link-264', 'svg', 'link-264');">svg</a></tt> </tt>
<a name="L792"></a><tt class="py-lineno">792</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"host_language"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"atom"</tt> <tt class="py-op">:</tt> </tt>
<a name="L793"></a><tt class="py-lineno">793</tt> <tt class="py-line"> <tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-265', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">.</tt><tt id="link-266" class="py-name" targets="Variable pyRdfa.host.HostLanguage.atom=pyRdfa.host.HostLanguage-class.html#atom,Variable pyRdfa.host.MediaTypes.atom=pyRdfa.host.MediaTypes-class.html#atom,Module pyRdfa.host.atom=pyRdfa.host.atom-module.html"><a title="pyRdfa.host.HostLanguage.atom
pyRdfa.host.MediaTypes.atom
pyRdfa.host.atom" class="py-name" href="#" onclick="return doclink('link-266', 'atom', 'link-266');">atom</a></tt> </tt>
<a name="L794"></a><tt class="py-lineno">794</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L795"></a><tt class="py-lineno">795</tt> <tt class="py-line"> <tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt id="link-267" class="py-name"><a title="pyRdfa.host.MediaTypes" class="py-name" href="#" onclick="return doclink('link-267', 'MediaTypes', 'link-90');">MediaTypes</a></tt><tt class="py-op">.</tt><tt id="link-268" class="py-name"><a title="pyRdfa.host.MediaTypes.xml" class="py-name" href="#" onclick="return doclink('link-268', 'xml', 'link-5');">xml</a></tt> </tt>
<a name="L796"></a><tt class="py-lineno">796</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L797"></a><tt class="py-lineno">797</tt> <tt class="py-line"> <tt class="py-name">media_type</tt> <tt class="py-op">=</tt> <tt class="py-string">""</tt> </tt>
<a name="L798"></a><tt class="py-lineno">798</tt> <tt class="py-line"> </tt>
<a name="L799"></a><tt class="py-lineno">799</tt> <tt class="py-line"> <tt class="py-name">transformers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L800"></a><tt class="py-lineno">800</tt> <tt class="py-line"> </tt>
<a name="L801"></a><tt class="py-lineno">801</tt> <tt class="py-line"> <tt class="py-name">check_lite</tt> <tt class="py-op">=</tt> <tt class="py-string">"rdfa_lite"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"rdfa_lite"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"true"</tt> </tt>
<a name="L802"></a><tt class="py-lineno">802</tt> <tt class="py-line"> </tt>
<a name="L803"></a><tt class="py-lineno">803</tt> <tt class="py-line"> <tt class="py-comment"># The code below is left for backward compatibility only. In fact, these options are not exposed any more,</tt> </tt>
<a name="L804"></a><tt class="py-lineno">804</tt> <tt class="py-line"> <tt class="py-comment"># they are not really in use</tt> </tt>
<a name="L805"></a><tt class="py-lineno">805</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"extras"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"extras"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"true"</tt> <tt class="py-op">:</tt> </tt>
<a name="L806"></a><tt class="py-lineno">806</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-269', 'transform', 'link-13');">transform</a></tt><tt class="py-op">.</tt><tt id="link-270" class="py-name" targets="Module pyRdfa.transform.metaname=pyRdfa.transform.metaname-module.html"><a title="pyRdfa.transform.metaname" class="py-name" href="#" onclick="return doclink('link-270', 'metaname', 'link-270');">metaname</a></tt> <tt class="py-keyword">import</tt> <tt id="link-271" class="py-name" targets="Function pyRdfa.transform.metaname.meta_transform()=pyRdfa.transform.metaname-module.html#meta_transform"><a title="pyRdfa.transform.metaname.meta_transform" class="py-name" href="#" onclick="return doclink('link-271', 'meta_transform', 'link-271');">meta_transform</a></tt> </tt>
<a name="L807"></a><tt class="py-lineno">807</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-272', 'transform', 'link-13');">transform</a></tt><tt class="py-op">.</tt><tt id="link-273" class="py-name" targets="Module pyRdfa.transform.OpenID=pyRdfa.transform.OpenID-module.html"><a title="pyRdfa.transform.OpenID" class="py-name" href="#" onclick="return doclink('link-273', 'OpenID', 'link-273');">OpenID</a></tt> <tt class="py-keyword">import</tt> <tt id="link-274" class="py-name" targets="Function pyRdfa.transform.OpenID.OpenID_transform()=pyRdfa.transform.OpenID-module.html#OpenID_transform"><a title="pyRdfa.transform.OpenID.OpenID_transform" class="py-name" href="#" onclick="return doclink('link-274', 'OpenID_transform', 'link-274');">OpenID_transform</a></tt> </tt>
<a name="L808"></a><tt class="py-lineno">808</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-275', 'transform', 'link-13');">transform</a></tt><tt class="py-op">.</tt><tt id="link-276" class="py-name" targets="Module pyRdfa.transform.DublinCore=pyRdfa.transform.DublinCore-module.html"><a title="pyRdfa.transform.DublinCore" class="py-name" href="#" onclick="return doclink('link-276', 'DublinCore', 'link-276');">DublinCore</a></tt> <tt class="py-keyword">import</tt> <tt id="link-277" class="py-name" targets="Function pyRdfa.transform.DublinCore.DC_transform()=pyRdfa.transform.DublinCore-module.html#DC_transform"><a title="pyRdfa.transform.DublinCore.DC_transform" class="py-name" href="#" onclick="return doclink('link-277', 'DC_transform', 'link-277');">DC_transform</a></tt> </tt>
<a name="L809"></a><tt class="py-lineno">809</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">t</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt id="link-278" class="py-name"><a title="pyRdfa.transform.OpenID.OpenID_transform" class="py-name" href="#" onclick="return doclink('link-278', 'OpenID_transform', 'link-274');">OpenID_transform</a></tt><tt class="py-op">,</tt> <tt id="link-279" class="py-name"><a title="pyRdfa.transform.DublinCore.DC_transform" class="py-name" href="#" onclick="return doclink('link-279', 'DC_transform', 'link-277');">DC_transform</a></tt><tt class="py-op">,</tt> <tt id="link-280" class="py-name"><a title="pyRdfa.transform.metaname.meta_transform" class="py-name" href="#" onclick="return doclink('link-280', 'meta_transform', 'link-271');">meta_transform</a></tt><tt class="py-op">]</tt> <tt class="py-op">:</tt> </tt>
<a name="L810"></a><tt class="py-lineno">810</tt> <tt class="py-line"> <tt class="py-name">transformers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt> </tt>
<a name="L811"></a><tt class="py-lineno">811</tt> <tt class="py-line"> <tt class="py-keyword">else</tt> <tt class="py-op">:</tt> </tt>
<a name="L812"></a><tt class="py-lineno">812</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"extra-meta"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"extra-meta"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"true"</tt> <tt class="py-op">:</tt> </tt>
<a name="L813"></a><tt class="py-lineno">813</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-281', 'transform', 'link-13');">transform</a></tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="pyRdfa.transform.metaname" class="py-name" href="#" onclick="return doclink('link-282', 'metaname', 'link-270');">metaname</a></tt> <tt class="py-keyword">import</tt> <tt id="link-283" class="py-name"><a title="pyRdfa.transform.metaname.meta_transform" class="py-name" href="#" onclick="return doclink('link-283', 'meta_transform', 'link-271');">meta_transform</a></tt> </tt>
<a name="L814"></a><tt class="py-lineno">814</tt> <tt class="py-line"> <tt class="py-name">transformers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-284" class="py-name"><a title="pyRdfa.transform.metaname.meta_transform" class="py-name" href="#" onclick="return doclink('link-284', 'meta_transform', 'link-271');">meta_transform</a></tt><tt class="py-op">)</tt> </tt>
<a name="L815"></a><tt class="py-lineno">815</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"extra-openid"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"extra-openid"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"true"</tt> <tt class="py-op">:</tt> </tt>
<a name="L816"></a><tt class="py-lineno">816</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-285', 'transform', 'link-13');">transform</a></tt><tt class="py-op">.</tt><tt id="link-286" class="py-name"><a title="pyRdfa.transform.OpenID" class="py-name" href="#" onclick="return doclink('link-286', 'OpenID', 'link-273');">OpenID</a></tt> <tt class="py-keyword">import</tt> <tt id="link-287" class="py-name"><a title="pyRdfa.transform.OpenID.OpenID_transform" class="py-name" href="#" onclick="return doclink('link-287', 'OpenID_transform', 'link-274');">OpenID_transform</a></tt> </tt>
<a name="L817"></a><tt class="py-lineno">817</tt> <tt class="py-line"> <tt class="py-name">transformers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-288" class="py-name"><a title="pyRdfa.transform.OpenID.OpenID_transform" class="py-name" href="#" onclick="return doclink('link-288', 'OpenID_transform', 'link-274');">OpenID_transform</a></tt><tt class="py-op">)</tt> </tt>
<a name="L818"></a><tt class="py-lineno">818</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"extra-dc"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"extra-dc"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">"true"</tt> <tt class="py-op">:</tt> </tt>
<a name="L819"></a><tt class="py-lineno">819</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="pyRdfa.transform" class="py-name" href="#" onclick="return doclink('link-289', 'transform', 'link-13');">transform</a></tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="pyRdfa.transform.DublinCore" class="py-name" href="#" onclick="return doclink('link-290', 'DublinCore', 'link-276');">DublinCore</a></tt> <tt class="py-keyword">import</tt> <tt id="link-291" class="py-name"><a title="pyRdfa.transform.DublinCore.DC_transform" class="py-name" href="#" onclick="return doclink('link-291', 'DC_transform', 'link-277');">DC_transform</a></tt> </tt>
<a name="L820"></a><tt class="py-lineno">820</tt> <tt class="py-line"> <tt class="py-name">transformers</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-292" class="py-name"><a title="pyRdfa.transform.DublinCore.DC_transform" class="py-name" href="#" onclick="return doclink('link-292', 'DC_transform', 'link-277');">DC_transform</a></tt><tt class="py-op">)</tt> </tt>
<a name="L821"></a><tt class="py-lineno">821</tt> <tt class="py-line"> </tt>
<a name="L822"></a><tt class="py-lineno">822</tt> <tt class="py-line"> <tt class="py-name">output_default_graph</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L823"></a><tt class="py-lineno">823</tt> <tt class="py-line"> <tt class="py-name">output_processor_graph</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L824"></a><tt class="py-lineno">824</tt> <tt class="py-line"> <tt class="py-comment"># Note that I use the 'graph' and the 'rdfagraph' form keys here. Reason is that</tt> </tt>
<a name="L825"></a><tt class="py-lineno">825</tt> <tt class="py-line"> <tt class="py-comment"># I used 'graph' in the previous versions, including the RDFa 1.0 processor,</tt> </tt>
<a name="L826"></a><tt class="py-lineno">826</tt> <tt class="py-line"> <tt class="py-comment"># so if I removed that altogether that would create backward incompatibilities</tt> </tt>
<a name="L827"></a><tt class="py-lineno">827</tt> <tt class="py-line"> <tt class="py-comment"># On the other hand, the RDFa 1.1 doc clearly refers to 'rdfagraph' as the standard</tt> </tt>
<a name="L828"></a><tt class="py-lineno">828</tt> <tt class="py-line"> <tt class="py-comment"># key.</tt> </tt>
<a name="L829"></a><tt class="py-lineno">829</tt> <tt class="py-line"> <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L830"></a><tt class="py-lineno">830</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">"graph"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L831"></a><tt class="py-lineno">831</tt> <tt class="py-line"> <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"graph"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L832"></a><tt class="py-lineno">832</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-string">"rdfagraph"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> </tt>
<a name="L833"></a><tt class="py-lineno">833</tt> <tt class="py-line"> <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">form</tt><tt class="py-op">.</tt><tt class="py-name">getfirst</tt><tt class="py-op">(</tt><tt class="py-string">"rdfagraph"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L834"></a><tt class="py-lineno">834</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">a</tt> <tt class="py-op">!=</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> </tt>
<a name="L835"></a><tt class="py-lineno">835</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">a</tt> <tt class="py-op">==</tt> <tt class="py-string">"processor"</tt> <tt class="py-op">:</tt> </tt>
<a name="L836"></a><tt class="py-lineno">836</tt> <tt class="py-line"> <tt class="py-name">output_default_graph</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L837"></a><tt class="py-lineno">837</tt> <tt class="py-line"> <tt class="py-name">output_processor_graph</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L838"></a><tt class="py-lineno">838</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">a</tt> <tt class="py-op">==</tt> <tt class="py-string">"processor,output"</tt> <tt class="py-keyword">or</tt> <tt class="py-name">a</tt> <tt class="py-op">==</tt> <tt class="py-string">"output,processor"</tt> <tt class="py-op">:</tt> </tt>