001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.marshall.jena;
018
019import static java.lang.annotation.ElementType.*;
020import static java.lang.annotation.RetentionPolicy.*;
021
022import java.lang.annotation.*;
023
024import org.apache.juneau.marshall.*;
025import org.apache.juneau.marshall.serializer.*;
026import org.apache.juneau.marshall.xml.*;
027
028/**
029 * Annotation for specifying config properties defined in {@link XmlSerializer}, {@link XmlDocSerializer}, and {@link XmlParser}.
030 *
031 * <p>
032 * Used primarily for specifying bean configuration properties on REST classes and methods.
033 *
034 * <h5 class='section'>See Also:</h5><ul>
035 *    <li class='link'>{doc jmr.RdfDetails}
036 * </ul>
037 */
038@Target({ TYPE, METHOD })
039@Retention(RUNTIME)
040@Inherited
041@ContextApply({ RdfConfigAnnotation.SerializerApply.class, RdfConfigAnnotation.ParserApply.class })
042@SuppressWarnings({
043   "java:S100" // Method names use underscore-separated namespacing convention (e.g. rdfxml_xmlbase, n3_minGap) to group related settings
044})
045public @interface RdfConfig {
046
047   /**
048    * Add <js>"_type"</js> properties when needed.
049    *
050    * If <js>"true"</js>, then <js>"_type"</js> properties will be added to beans if their type cannot be inferred
051    * through reflection.
052    *
053    * <p>
054    * When present, this value overrides the {@link org.apache.juneau.marshall.serializer.Serializer.Builder#addBeanTypes() Serializer.Builder#addBeanTypes()} setting and is
055    * provided to customize the behavior of specific serializers in a {@link SerializerSet}.
056    *
057    * <h5 class='section'>Notes:</h5><ul>
058    *    <li class='note'>
059    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
060    * </ul>
061    *
062    * <h5 class='section'>See Also:</h5><ul>
063    *    <li class='jm'>{@link RdfSerializer.Builder#addBeanTypes()}
064    * </ul>
065    *
066    * @return The annotation value.
067    */
068   String addBeanTypes() default "";
069
070   /**
071    * Add XSI data types to non-<c>String</c> literals.
072    *
073    * <h5 class='section'>Notes:</h5><ul>
074    *    <li class='note'>
075    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
076    * </ul>
077    *
078    * <h5 class='section'>See Also:</h5><ul>
079    *    <li class='jm'>{@link RdfSerializer.Builder#addLiteralTypes()}
080    * </ul>
081    *
082    * @return The annotation value.
083    */
084   String addLiteralTypes() default "";
085
086   /**
087    * Add RDF root identifier property to root node.
088    *
089    * <p>
090    * When enabled an RDF property <c>http://www.apache.org/juneau/root</c> is added with a value of <js>"true"</js>
091    * to identify the root node in the graph.
092    * <br>This helps locate the root node during parsing.
093    *
094    * <p>
095    * If disabled, the parser has to search through the model to find any resources without incoming predicates to
096    * identify root notes, which can introduce a considerable performance degradation.
097    *
098    * <h5 class='section'>Notes:</h5><ul>
099    *    <li class='note'>
100    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
101    * </ul>
102    *
103    * <h5 class='section'>See Also:</h5><ul>
104    *    <li class='jm'>{@link RdfSerializer.Builder#addRootProperty()}
105    * </ul>
106    *
107    * @return The annotation value.
108    */
109   String addRootProperty() default "";
110
111   /**
112    * RDF format for representing collections and arrays.
113    *
114    * <ul class='values spaced-list'>
115    *    <li>
116    *       <js>"DEFAULT"</js> - Default format.  The default is an RDF Sequence container.
117    *    <li>
118    *       <js>"SEQ"</js> - RDF Sequence container.
119    *    <li>
120    *       <js>"BAG"</js> - RDF Bag container.
121    *    <li>
122    *       <js>"LIST"</js> - RDF List container.
123    *    <li>
124    *       <js>"MULTI_VALUED"</js> - Multi-valued properties.
125    * </ul>
126    *
127    * <h5 class='section'>Notes:</h5><ul>
128    *    <li class='note'>
129    *       If you use <js>"BAG"</js> or <js>"MULTI_VALUED"</js>, the order of the elements in the collection will get
130    *       lost.
131    *    <li class='note'>
132    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
133    * </ul>
134    *
135    * <h5 class='section'>See Also:</h5><ul>
136    *    <li class='jm'>{@link RdfSerializer.Builder#collectionFormat(RdfCollectionFormat)}
137    *    <li class='jm'>{@link RdfParser.Builder#collectionFormat(RdfCollectionFormat)}
138    * </ul>
139    *
140    * @return The annotation value.
141    */
142   String collectionFormat() default "";
143
144   /**
145    * Disable auto-detect namespace usage.
146    *
147    * <p>
148    * Don't detect namespace usage before serialization.
149    *
150    * <p>
151    * If disabled, then the data structure will first be crawled looking for namespaces that will be encountered before
152    * the root element is serialized.
153    *
154    * <h5 class='section'>Notes:</h5><ul>
155    *    <li class='note'>
156    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
157    * </ul>
158    *
159    * <h5 class='section'>See Also:</h5><ul>
160    *    <li class='jm'>{@link RdfSerializer.Builder#disableAutoDetectNamespaces()}
161    * </ul>
162    *
163    * @return The annotation value.
164    */
165   String disableAutoDetectNamespaces() default "";
166
167   /**
168    * Disable reuse of XML namespaces when RDF namespaces not specified.
169    *
170    * <p>
171    * When specified, namespaces defined using {@link XmlNs @XmlNs} and {@link Xml @Xml} will be inherited by the RDF serializers.
172    * <br>Otherwise, namespaces will be defined using {@link RdfNs @RdfNs} and {@link Rdf @Rdf}.
173    *
174    * <ul class='values'>
175    *    <li><js>"true"</js>
176    *    <li><js>"false"</js> (default)
177    * </ul>
178    *
179    * <h5 class='section'>Notes:</h5><ul>
180    *    <li class='note'>
181    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
182    * </ul>
183    *
184    * <h5 class='section'>See Also:</h5><ul>
185    *    <li class='jm'>{@link RdfSerializer.Builder#disableUseXmlNamespaces()}
186    * </ul>
187    *
188    * @return The annotation value.
189    */
190   String disableUseXmlNamespaces() default "";
191
192   /**
193    * Default XML namespace for bean properties.
194    *
195    * <h5 class='section'>Notes:</h5><ul>
196    *    <li class='note'>
197    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
198    * </ul>
199    *
200    * <h5 class='section'>See Also:</h5><ul>
201    *    <li class='jm'>{@link RdfSerializer.Builder#juneauBpNs(Namespace)}
202    *    <li class='jm'>{@link RdfParser.Builder#juneauBpNs(Namespace)}
203    * </ul>
204    *
205    * @return The annotation value.
206    */
207   String juneauBpNs() default "";
208
209   /**
210    * XML namespace for Juneau properties.
211    *
212    * <h5 class='section'>Notes:</h5><ul>
213    *    <li class='note'>
214    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
215    * </ul>
216    *
217    * <h5 class='section'>See Also:</h5><ul>
218    *    <li class='jm'>{@link RdfSerializer.Builder#juneauNs(Namespace)}
219    *    <li class='jm'>{@link RdfParser.Builder#juneauNs(Namespace)}
220    * </ul>
221    *
222    * @return The annotation value.
223    */
224   String juneauNs() default "";
225
226   /**
227    * RDF language.
228    *
229    * <p>
230    *    The RDF language to use.
231    *
232    * <ul class='values spaced-list'>
233    *    <li>
234    *       <js>"RDF/XML"</js>
235    *    <li>
236    *       <js>"RDF/XML-ABBREV"</js> (default)
237    *    <li>
238    *       <js>"N-TRIPLE"</js>
239    *    <li>
240    *       <js>"N3"</js> - General name for the N3 writer.
241    *       Will make a decision on exactly which writer to use (pretty writer, plain writer or simple writer) when
242    *       created.
243    *       Default is the pretty writer but can be overridden with system property
244    *       <c>org.apache.jena.n3.N3JenaWriter.writer</c>.
245    *    <li>
246    *       <js>"N3-PP"</js> - Name of the N3 pretty writer.
247    *       The pretty writer uses a frame-like layout, with prefixing, clustering like properties and embedding
248    *       one-referenced bNodes.
249    *    <li>
250    *       <js>"N3-PLAIN"</js> - Name of the N3 plain writer.
251    *       The plain writer writes records by subject.
252    *    <li>
253    *       <js>"N3-TRIPLES"</js> - Name of the N3 triples writer.
254    *       This writer writes one line per statement, like N-Triples, but does N3-style prefixing.
255    *    <li>
256    *       <js>"TURTLE"</js> -  Turtle writer.
257    *       http://www.dajobe.org/2004/01/turtle/
258    * </ul>
259    *
260    * <h5 class='section'>Notes:</h5><ul>
261    *    <li class='note'>
262    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
263    * </ul>
264    *
265    * <h5 class='section'>See Also:</h5><ul>
266    *    <li class='jm'>{@link RdfSerializer.Builder#language(String)}
267    *    <li class='jm'>{@link RdfParser.Builder#language(String)}
268    * </ul>
269    *
270    * @return The annotation value.
271    */
272   String language() default "";
273
274   /**
275    * Collections should be serialized and parsed as loose collections.
276    *
277    * <p>
278    * When specified, collections of resources are handled as loose collections of resources in RDF instead of
279    * resources that are children of an RDF collection (e.g. Sequence, Bag).
280    *
281    * <p>
282    * Note that this setting is specialized for RDF syntax, and is incompatible with the concept of
283    * losslessly representing POJO models, since the tree structure of these POJO models are lost
284    * when serialized as loose collections.
285    *
286    * <p>
287    * This setting is typically only useful if the beans being parsed into do not have a bean property
288    * annotated with {@link Rdf#beanUri @Rdf(beanUri=true)}.
289    *
290    * <h5 class='section'>Notes:</h5><ul>
291    *    <li class='note'>
292    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
293    * </ul>
294    *
295    * <h5 class='section'>See Also:</h5><ul>
296    *    <li class='jm'>{@link RdfSerializer.Builder#looseCollections()}
297    *    <li class='jm'>{@link RdfParser.Builder#looseCollections()}
298    * </ul>
299    *
300    * @return The annotation value.
301    */
302   String looseCollections() default "";
303
304   /**
305    * N3/Turtle property: <c>disableAbbrevBaseURI</c>.
306    *
307    * <p>
308    * Controls whether to use abbreviations <c>&lt;&gt;</c> or <c>&lt;#&gt;</c>.
309    *
310    * <h5 class='section'>Notes:</h5><ul>
311    *    <li class='note'>
312    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
313    * </ul>
314    *
315    * <h5 class='section'>See Also:</h5><ul>
316    *    <li class='jm'>{@link RdfSerializer.Builder#n3_disableAbbrevBaseUri()}
317    *    <li class='jm'>{@link RdfParser.Builder#n3_disableAbbrevBaseUri()}
318    * </ul>
319    *
320    * @return The annotation value.
321    */
322   String n3_disableAbbrevBaseUri() default "";
323
324   /**
325    * N3/Turtle property: <c>disableObjectLists</c>.
326    *
327    * <p>
328    * Don't print object lists as comma separated lists.
329    *
330    * <h5 class='section'>Notes:</h5><ul>
331    *    <li class='note'>
332    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
333    * </ul>
334    *
335    * <h5 class='section'>See Also:</h5><ul>
336    *    <li class='jm'>{@link RdfSerializer.Builder#n3_disableObjectLists()}
337    *    <li class='jm'>{@link RdfParser.Builder#n3_disableObjectLists()}
338    * </ul>
339    *
340    * @return The annotation value.
341    */
342   String n3_disableObjectLists() default "";
343
344   /**
345    * N3/Turtle property: <c>disableUseDoubles</c>.
346    *
347    * <p>
348    * Disallow the use doubles as <c>123.456</c>.
349    *
350    * <h5 class='section'>Notes:</h5><ul>
351    *    <li class='note'>
352    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
353    * </ul>
354    *
355    * <h5 class='section'>See Also:</h5><ul>
356    *    <li class='jm'>{@link RdfSerializer.Builder#n3_disableUseDoubles()}
357    *    <li class='jm'>{@link RdfParser.Builder#n3_disableUseDoubles()}
358    * </ul>
359    *
360    * @return The annotation value.
361    */
362   String n3_disableUseDoubles() default "";
363
364   /**
365    * N3/Turtle property: <c>disableUsePropertySymbols</c>.
366    *
367    * <p>
368    * Controls whether to use <c>a</c>, <c>=</c> and <c>=&gt;</c> in output
369    *
370    * <h5 class='section'>Notes:</h5><ul>
371    *    <li class='note'>
372    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
373    * </ul>
374    *
375    * <h5 class='section'>See Also:</h5><ul>
376    *    <li class='jm'>{@link RdfSerializer.Builder#n3_disableUsePropertySymbols()}
377    *    <li class='jm'>{@link RdfParser.Builder#n3_disableUsePropertySymbols()}
378    * </ul>
379    *
380    * @return The annotation value.
381    */
382   String n3_disableUsePropertySymbols() default "";
383
384   /**
385    * N3/Turtle property: <c>disableUseTripleQuotedStrings</c>.
386    *
387    * <p>
388    * Disallow the use of <c>"""</c> to delimit long strings.
389    *
390    * <h5 class='section'>Notes:</h5><ul>
391    *    <li class='note'>
392    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
393    * </ul>
394    *
395    * <h5 class='section'>See Also:</h5><ul>
396    *    <li class='jm'>{@link RdfSerializer.Builder#n3_disableUseTripleQuotedStrings()}
397    *    <li class='jm'>{@link RdfParser.Builder#n3_disableUseTripleQuotedStrings()}
398    * </ul>
399    *
400    * @return The annotation value.
401    */
402   String n3_disableUseTripleQuotedStrings() default "";
403
404   /**
405    * N3/Turtle property: <c>indentProperty</c>.
406    *
407    * <p>
408    * Width to indent properties.
409    *
410    * <h5 class='section'>Notes:</h5><ul>
411    *    <li class='note'>
412    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
413    * </ul>
414    *
415    * <h5 class='section'>See Also:</h5><ul>
416    *    <li class='jm'>{@link RdfSerializer.Builder#n3_indentProperty(int)}
417    *    <li class='jm'>{@link RdfParser.Builder#n3_indentProperty(int)}
418    * </ul>
419    *
420    * @return The annotation value.
421    */
422   String n3_indentProperty() default "";
423
424   /**
425    * N3/Turtle property: <c>minGap</c>.
426    *
427    * <p>
428    * Minimum gap between items on a line.
429    *
430    * <h5 class='section'>Notes:</h5><ul>
431    *    <li class='note'>
432    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
433    * </ul>
434    *
435    * <h5 class='section'>See Also:</h5><ul>
436    *    <li class='jm'>{@link RdfSerializer.Builder#n3_minGap(int)}
437    *    <li class='jm'>{@link RdfParser.Builder#n3_minGap(int)}
438    * </ul>
439    *
440    * @return The annotation value.
441    */
442   String n3_minGap() default "";
443
444   /**
445    * N3/Turtle property: <c>propertyColumn</c>.
446    *
447    * <p>
448    * Width of the property column.
449    *
450    * <h5 class='section'>Notes:</h5><ul>
451    *    <li class='note'>
452    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
453    * </ul>
454    *
455    * <h5 class='section'>See Also:</h5><ul>
456    *    <li class='jm'>{@link RdfSerializer.Builder#n3_propertyColumn(int)}
457    *    <li class='jm'>{@link RdfParser.Builder#n3_propertyColumn(int)}
458    * </ul>
459    *
460    * @return The annotation value.
461    */
462   String n3_propertyColumn() default "";
463
464   /**
465    * N3/Turtle property: <c>subjectColumn</c>.
466    *
467    * <p>
468    * If the subject is shorter than this value, the first property may go on the same line.
469    *
470    * <h5 class='section'>Notes:</h5><ul>
471    *    <li class='note'>
472    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
473    * </ul>
474    *
475    * <h5 class='section'>See Also:</h5><ul>
476    *    <li class='jm'>{@link RdfSerializer.Builder#n3_subjectColumn(int)}
477    *    <li class='jm'>{@link RdfParser.Builder#n3_subjectColumn(int)}
478    * </ul>
479    *
480    * @return The annotation value.
481    */
482   String n3_subjectColumn() default "";
483
484   /**
485    * N3/Turtle property: <c>widePropertyLen</c>.
486    *
487    * <p>
488    * Width of the property column.
489    * <br>Must be longer than <c>propertyColumn</c>.
490    *
491    * <h5 class='section'>Notes:</h5><ul>
492    *    <li class='note'>
493    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
494    * </ul>
495    *
496    * <h5 class='section'>See Also:</h5><ul>
497    *    <li class='jm'>{@link RdfSerializer.Builder#n3_widePropertyLen(int)}
498    *    <li class='jm'>{@link RdfParser.Builder#n3_widePropertyLen(int)}
499    * </ul>
500    *
501    * @return The annotation value.
502    */
503   String n3_widePropertyLen() default "";
504
505   /**
506    * Default namespaces.
507    *
508    * <p>
509    * The default list of namespaces associated with this serializer.
510    *
511    * <h5 class='section'>Notes:</h5><ul>
512    *    <li>
513    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
514    * </ul>
515    *
516    * <h5 class='section'>See Also:</h5><ul>
517    *    <li class='jm'>{@link RdfSerializer.Builder#namespaces(Namespace...)}
518    * </ul>
519    *
520    * @return The annotation value.
521    */
522   String[] namespaces() default {};
523
524   /**
525    * Optional rank for this config.
526    *
527    * <p>
528    * Can be used to override default ordering and application of config annotations.
529    *
530    * @return The annotation value.
531    */
532   int rank() default 0;
533
534   /**
535    * RDF/XML property: <c>allowBadURIs</c>.
536    *
537    * <p>
538    * URIs in the graph are, by default, checked prior to serialization.
539    *
540    * <h5 class='section'>Notes:</h5><ul>
541    *    <li class='note'>
542    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
543    * </ul>
544    *
545    * <h5 class='section'>See Also:</h5><ul>
546    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_allowBadUris()}
547    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_allowBadUris()}
548    * </ul>
549    *
550    * @return The annotation value.
551    */
552   String rdfxml_allowBadUris() default "";
553
554   /**
555    * RDF/XML property: <c>attributeQuoteChar</c>.
556    *
557    * <p>
558    * The XML attribute quote character.
559    *
560    * <h5 class='section'>Notes:</h5><ul>
561    *    <li class='note'>
562    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
563    * </ul>
564    *
565    * <h5 class='section'>See Also:</h5><ul>
566    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_attributeQuoteChar(char)}
567    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_attributeQuoteChar(char)}
568    * </ul>
569    *
570    * @return The annotation value.
571    */
572   String rdfxml_attributeQuoteChar() default "";
573
574   /**
575    * RDF/XML property: <c>blockRules</c>.
576    *
577    * <p>
578    * A list of <c>Resource</c> or a <c>String</c> being a comma separated list of fragment IDs from
579    * {doc http://www.w3.org/TR/rdf-syntax-grammar RDF Syntax Grammar} indicating grammar
580    * rules that will not be used.
581    *
582    * <h5 class='section'>Notes:</h5><ul>
583    *    <li class='note'>
584    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
585    * </ul>
586    *
587    * <h5 class='section'>See Also:</h5><ul>
588    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_blockRules(String)}
589    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_blockRules(String)}
590    * </ul>
591    *
592    * @return The annotation value.
593    */
594   String rdfxml_blockRules() default "";
595
596   /**
597    * RDF/XML property: <c>disableShowDoctypeDeclaration</c>.
598    *
599    * <p>
600    * If true, an XML doctype declaration isn't included in the output.
601    * <br>This declaration includes a <c>!ENTITY</c> declaration for each prefix mapping in the model, and any
602    * attribute value that starts with the URI of that mapping is written as starting with the corresponding entity
603    * invocation.
604    *
605    * <h5 class='section'>Notes:</h5><ul>
606    *    <li class='note'>
607    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
608    * </ul>
609    *
610    * <h5 class='section'>See Also:</h5><ul>
611    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_disableShowDoctypeDeclaration()}
612    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_disableShowDoctypeDeclaration()}
613    * </ul>
614    *
615    * @return The annotation value.
616    */
617   String rdfxml_disableShowDoctypeDeclaration() default "";
618
619   /**
620    * RDF/XML ARP property: <c>embedding</c>.
621    *
622    * <p>
623    * Sets ARP to look for RDF embedded within an enclosing XML document.
624    *
625    * <h5 class='section'>Notes:</h5><ul>
626    *    <li class='note'>
627    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
628    * </ul>
629    *
630    * <h5 class='section'>See Also:</h5><ul>
631    *    <li>
632    *       {doc ext.ARP/ARPOptions.html#setEmbedding(boolean) ARPOptions.setEmbedding(boolean)}
633    * </ul>
634    *
635    * @return The annotation value.
636    */
637   String rdfxml_embedding() default "";
638
639   /**
640    * RDF/XML ARP property: <c>error-mode</c>.
641    *
642    * <p>
643    * This allows a coarse-grained approach to control of error handling.
644    *
645    * <ul class='values'>
646    *    <li><js>"default"</js>
647    *    <li><js>"lax"</js>
648    *    <li><js>"strict"</js>
649    *    <li><js>"strict-ignore"</js>
650    *    <li><js>"strict-warning"</js>
651    *    <li><js>"strict-error"</js>
652    *    <li><js>"strict-fatal"</js>
653    * </ul>
654    *
655    * <h5 class='section'>Notes:</h5><ul>
656    *    <li class='note'>
657    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
658    * </ul>
659    *
660    * <h5 class='section'>See Also:</h5><ul>
661    *    <li>
662    *       {doc ext.ARP/ARPOptions.html#setDefaultErrorMode() ARPOptions.setDefaultErrorMode()}
663    *    <li>
664    *       {doc ext.ARP/ARPOptions.html#setLaxErrorMode() ARPOptions.setLaxErrorMode()}
665    *    <li>
666    *       {doc ext.ARP/ARPOptions.html#setStrictErrorMode() ARPOptions.setStrictErrorMode()}
667    *    <li>
668    *       {doc ext.ARP/ARPOptions.html#setStrictErrorMode(int) ARPOptions.setStrictErrorMode(int)}
669    * </ul>
670    *
671    * @return The annotation value.
672    */
673   String rdfxml_errorMode() default "";
674
675   /**
676    * RDF/XML property: <c>iri_rules</c>.
677    *
678    * <p>
679    * Set the engine for checking and resolving.
680    *
681    * <ul class='values spaced-list'>
682    *    <li>
683    *       <js>"lax"</js> - The rules for RDF URI references only, which does permit spaces although the use of spaces
684    *       is not good practice.
685    *    <li>
686    *       <js>"strict"</js> - Sets the IRI engine with rules for valid IRIs, XLink and RDF; it does not permit spaces
687    *       in IRIs.
688    *    <li>
689    *       <js>"iri"</js> - Sets the IRI engine to IRI
690    *       ({doc http://www.ietf.org/rfc/rfc3986.txt RFC 3986},
691    *       {doc http://www.ietf.org/rfc/rfc3987.txt RFC 3987}).
692    * </ul>
693    *
694    * <h5 class='section'>Notes:</h5><ul>
695    *    <li class='note'>
696    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
697    * </ul>
698    *
699    * @return The annotation value.
700    */
701   String rdfxml_iriRules() default "";
702
703   /**
704    * RDF/XML property: <c>longId</c>.
705    *
706    * <p>
707    * Whether to use long ID's for anon resources.
708    * <br>Short ID's are easier to read, but can run out of memory on very large models.
709    *
710    * <h5 class='section'>Notes:</h5><ul>
711    *    <li class='note'>
712    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
713    * </ul>
714    *
715    * <h5 class='section'>See Also:</h5><ul>
716    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_longId()}
717    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_longId()}
718    * </ul>
719    *
720    * @return The annotation value.
721    */
722   String rdfxml_longId() default "";
723
724   /**
725    * RDF/XML property: <c>relativeURIs</c>.
726    *
727    * <p>
728    * What sort of relative URIs should be used.
729    *
730    * <p>
731    * A comma separate list of options:
732    * <ul class='spaced-list'>
733    *    <li>
734    *       <js>"same-document"</js> - Same-document references (e.g. <js>""</js> or <js>"#foo"</js>)
735    *    <li>
736    *       <js>"network"</js>  - Network paths (e.g. <js>"//example.org/foo"</js> omitting the URI scheme)
737    *    <li>
738    *       <js>"absolute"</js> - Absolute paths (e.g. <js>"/foo"</js> omitting the scheme and authority)
739    *    <li>
740    *       <js>"relative"</js> - Relative path not beginning in <js>"../"</js>
741    *    <li>
742    *       <js>"parent"</js> - Relative path beginning in <js>"../"</js>
743    *    <li>
744    *       <js>"grandparent"</js> - Relative path beginning in <js>"../../"</js>
745    * </ul>
746    *
747    * <p>
748    * The default value is <js>"same-document, absolute, relative, parent"</js>.
749    * To switch off relative URIs use the value <js>""</js>.
750    * Relative URIs of any of these types are output where possible if and only if the option has been specified.
751    *
752    * <h5 class='section'>Notes:</h5><ul>
753    *    <li class='note'>
754    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
755    * </ul>
756    *
757    * <h5 class='section'>See Also:</h5><ul>
758    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_relativeUris(String)}
759    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_relativeUris(String)}
760    * </ul>
761    *
762    * @return The annotation value.
763    */
764   String rdfxml_relativeUris() default "";
765
766   /**
767    * RDF/XML property: <c>showXmlDeclaration</c>.
768    *
769    * <ul class='values spaced-list'>
770    *    <li>
771    *       <js>"true"</js> - Add XML Declaration to the output.
772    *    <li>
773    *       <js>"false"</js> - Don't add XML Declaration to the output.
774    *    <li>
775    *       <js>"default"</js> - Only add an XML Declaration when asked to write to an <c>OutputStreamWriter</c>
776    *       that uses some encoding other than <c>UTF-8</c> or <c>UTF-16</c>.
777    *       In this case the encoding is shown in the XML declaration.
778    * </ul>
779    *
780    * <h5 class='section'>Notes:</h5><ul>
781    *    <li class='note'>
782    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
783    * </ul>
784    *
785    * <h5 class='section'>See Also:</h5><ul>
786    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_showXmlDeclaration(String)}
787    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_showXmlDeclaration(String)}
788    * </ul>
789    *
790    * @return The annotation value.
791    */
792   String rdfxml_showXmlDeclaration() default "";
793
794   /**
795    * RDF/XML property: <c>tab</c>.
796    *
797    * <p>
798    * The number of spaces with which to indent XML child elements.
799    *
800    * <h5 class='section'>Notes:</h5><ul>
801    *    <li class='note'>
802    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
803    * </ul>
804    *
805    * <h5 class='section'>See Also:</h5><ul>
806    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_tab(int)}
807    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_tab(int)}
808    * </ul>
809    *
810    * @return The annotation value.
811    */
812   String rdfxml_tab() default "";
813
814   /**
815    * RDF/XML property: <c>xmlbase</c>.
816    *
817    * <p>
818    * The value to be included for an <xa>xml:base</xa> attribute on the root element in the file.
819    *
820    * <h5 class='section'>Notes:</h5><ul>
821    *    <li class='note'>
822    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
823    * </ul>
824    *
825    * <h5 class='section'>See Also:</h5><ul>
826    *    <li class='jm'>{@link RdfSerializer.Builder#rdfxml_xmlbase(String)}
827    *    <li class='jm'>{@link RdfParser.Builder#rdfxml_xmlbase(String)}
828    * </ul>
829    *
830    * @return The annotation value.
831    */
832   String rdfxml_xmlBase() default "";
833
834   /**
835    * Trim whitespace from text elements.
836    *
837    * <p>
838    * If <js>"true"</js>, whitespace in text elements will be automatically trimmed.
839    *
840    * <h5 class='section'>Notes:</h5><ul>
841    *    <li class='note'>
842    *       Supports <a class="doclink" href="https://juneau.apache.org/docs/topics/DefaultVarResolver">VarResolver.DEFAULT</a> (e.g. <js>"$C{myConfigVar}"</js>).
843    * </ul>
844    *
845    * <h5 class='section'>See Also:</h5><ul>
846    *    <li class='jm'>{@link RdfParser.Builder#trimWhitespace()}
847    * </ul>
848    *
849    * @return The annotation value.
850    */
851   String trimWhitespace() default "";
852}