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