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><></c> or <c><#></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>=></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}