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; 014 015import java.util.*; 016 017import org.apache.juneau.collections.*; 018import org.apache.juneau.jena.annotation.*; 019import org.apache.juneau.xml.*; 020 021/** 022 * Configurable properties common to both the {@link RdfSerializer} and {@link RdfParser} classes. 023 */ 024public interface RdfCommon { 025 026 /** 027 * Property prefix. 028 */ 029 static final String PREFIX = "RdfCommon"; 030 031 /** 032 * Maps RDF writer names to property prefixes that apply to them. 033 */ 034 static final Map<String,String> LANG_PROP_MAP = AMap.of("RDF/XML","rdfXml.","RDF/XML-ABBREV","rdfXml.","N3","n3.","N3-PP","n3.","N3-PLAIN","n3.","N3-TRIPLES","n3.","TURTLE","n3.","N-TRIPLE","ntriple."); 035 036 /** 037 * Configuration property: RDF language. 038 * 039 * <h5 class='section'>Property:</h5> 040 * <ul class='spaced-list'> 041 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_language RDF_language} 042 * <li><b>Name:</b> <js>"RdfCommon.language.s"</js> 043 * <li><b>Data type:</b> <c>String</c> 044 * <li><b>System property:</b> <c>RdfCommon.language</c> 045 * <li><b>Environment variable:</b> <c>RDFCOMMON_LANGUAGE</c> 046 * <li><b>Default:</b> <js>"RDF/XML-ABBREV"</js> 047 * <li><b>Annotations:</b> 048 * <ul> 049 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#language()} 050 * </ul> 051 * <li><b>Methods:</b> 052 * <ul> 053 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#language(String)} 054 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#n3()} 055 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#ntriple()} 056 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#turtle()} 057 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#xml()} 058 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#xmlabbrev()} 059 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#language(String)} 060 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#n3()} 061 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#ntriple()} 062 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#turtle()} 063 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#xml()} 064 * </ul> 065 * </ul> 066 * 067 * <h5 class='section'>Description:</h5> 068 * <p> 069 * The RDF language to use. 070 * <p> 071 * Can be any of the following: 072 * <ul class='spaced-list'> 073 * <li> 074 * <js>"RDF/XML"</js> 075 * <li> 076 * <js>"RDF/XML-ABBREV"</js> (default) 077 * <li> 078 * <js>"N-TRIPLE"</js> 079 * <li> 080 * <js>"N3"</js> - General name for the N3 writer. 081 * Will make a decision on exactly which writer to use (pretty writer, plain writer or simple writer) when 082 * created. 083 * Default is the pretty writer but can be overridden with system property 084 * <c>org.apache.jena.n3.N3JenaWriter.writer</c>. 085 * <li> 086 * <js>"N3-PP"</js> - Name of the N3 pretty writer. 087 * The pretty writer uses a frame-like layout, with prefixing, clustering like properties and embedding 088 * one-referenced bNodes. 089 * <li> 090 * <js>"N3-PLAIN"</js> - Name of the N3 plain writer. 091 * The plain writer writes records by subject. 092 * <li> 093 * <js>"N3-TRIPLES"</js> - Name of the N3 triples writer. 094 * This writer writes one line per statement, like N-Triples, but does N3-style prefixing. 095 * <li> 096 * <js>"TURTLE"</js> - Turtle writer. 097 * http://www.dajobe.org/2004/01/turtle/ 098 * </ul> 099 */ 100 public static final String RDF_language = PREFIX + ".language.s"; 101 102 /** 103 * Configuration property: XML namespace for Juneau properties. 104 * 105 * <h5 class='section'>Property:</h5> 106 * <ul class='spaced-list'> 107 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_juneauNs RDF_juneauNs} 108 * <li><b>Name:</b> <js>"RdfCommon.juneauNs.s"</js> 109 * <li><b>Data type:</b> {@link org.apache.juneau.xml.Namespace} 110 * <li><b>System property:</b> <c>RdfCommon.juneauNs</c> 111 * <li><b>Environment variable:</b> <c>RDFCOMMON_JUNEAUNS</c> 112 * <li><b>Default:</b> <code>{j:<js>'http://www.apache.org/juneau/'</js>}</code> 113 * <li><b>Annotations:</b> 114 * <ul> 115 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#juneauNs()} 116 * </ul> 117 * <li><b>Methods:</b> 118 * <ul> 119 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#juneauNs(Namespace)} 120 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#juneauNs(Namespace)} 121 * </ul> 122 * </ul> 123 */ 124 public static final String RDF_juneauNs = PREFIX + ".juneauNs.s"; 125 126 /** 127 * Configuration property: Default XML namespace for bean properties. 128 * 129 * <h5 class='section'>Property:</h5> 130 * <ul class='spaced-list'> 131 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_juneauBpNs RDF_juneauBpNs} 132 * <li><b>Name:</b> <js>"RdfCommon.juneauBpNs.s"</js> 133 * <li><b>Data type:</b> {@link org.apache.juneau.xml.Namespace} 134 * <li><b>System property:</b> <c>RdfCommon.juneauBpNs</c> 135 * <li><b>Environment variable:</b> <c>RDFCOMMON_JUNEAUBPNS</c> 136 * <li><b>Default:</b> <code>{j:<js>'http://www.apache.org/juneaubp/'</js>}</code> 137 * <li><b>Annotations:</b> 138 * <ul> 139 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#juneauBpNs()} 140 * </ul> 141 * <li><b>Methods:</b> 142 * <ul> 143 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#juneauBpNs(Namespace)} 144 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#juneauBpNs(Namespace)} 145 * </ul> 146 * </ul> 147 */ 148 public static final String RDF_juneauBpNs = PREFIX + ".juneauBpNs.s"; 149 150 /** 151 * Configuration property: RDF/XML property: <c>iri_rules</c>. 152 * 153 * <h5 class='section'>Property:</h5> 154 * <ul class='spaced-list'> 155 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_arp_iriRules RDF_arp_iriRules} 156 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.iri-rules.s"</js> 157 * <li><b>Data type:</b> <c>String</c> 158 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.iri-rules</c> 159 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_IRI_RULES</c> 160 * <li><b>Default:</b> <js>"lax"</js> 161 * <li><b>Annotations:</b> 162 * <ul> 163 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#arp_iriRules()} 164 * </ul> 165 * </ul> 166 * 167 * <h5 class='section'>Description:</h5> 168 * <p> 169 * Set the engine for checking and resolving. 170 * 171 * <p> 172 * Possible values: 173 * <ul class='spaced-list'> 174 * <li> 175 * <js>"lax"</js> - The rules for RDF URI references only, which does permit spaces although the use of spaces 176 * is not good practice. 177 * <li> 178 * <js>"strict"</js> - Sets the IRI engine with rules for valid IRIs, XLink and RDF; it does not permit spaces 179 * in IRIs. 180 * <li> 181 * <js>"iri"</js> - Sets the IRI engine to IRI 182 * ({@doc http://www.ietf.org/rfc/rfc3986.txt RFC 3986}, 183 * {@doc http://www.ietf.org/rfc/rfc3987.txt RFC 3987}). 184 * </ul> 185 */ 186 public static final String RDF_arp_iriRules = PREFIX + ".jena.rdfXml.iri-rules.s"; 187 188 /** 189 * Configuration property: RDF/XML ARP property: <c>error-mode</c>. 190 * 191 * <h5 class='section'>Property:</h5> 192 * <ul class='spaced-list'> 193 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_arp_errorMode RDF_arp_errorMode} 194 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.error-mode.s"</js> 195 * <li><b>Data type:</b> <c>String</c> 196 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.error-mode</c> 197 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_ERROR_MODE</c> 198 * <li><b>Default:</b> <js>"lax"</js> 199 * <li><b>Annotations:</b> 200 * <ul> 201 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#arp_errorMode()} 202 * </ul> 203 * </ul> 204 * 205 * <h5 class='section'>Description:</h5> 206 * <p> 207 * This allows a coarse-grained approach to control of error handling. 208 * 209 * <p> 210 * Possible values: 211 * <ul> 212 * <li><js>"default"</js> 213 * <li><js>"lax"</js> 214 * <li><js>"strict"</js> 215 * <li><js>"strict-ignore"</js> 216 * <li><js>"strict-warning"</js> 217 * <li><js>"strict-error"</js> 218 * <li><js>"strict-fatal"</js> 219 * </ul> 220 * 221 * <ul class='seealso'> 222 * <li> 223 * {@doc ExtARP/ARPOptions.html#setDefaultErrorMode() ARPOptions.setDefaultErrorMode()} 224 * <li> 225 * {@doc ExtARP/ARPOptions.html#setLaxErrorMode() ARPOptions.setLaxErrorMode()} 226 * <li> 227 * {@doc ExtARP/ARPOptions.html#setStrictErrorMode() ARPOptions.setStrictErrorMode()} 228 * <li> 229 * {@doc ExtARP/ARPOptions.html#setStrictErrorMode(int) ARPOptions.setStrictErrorMode(int)} 230 * </ul> 231 */ 232 public static final String RDF_arp_errorMode = PREFIX + ".jena.rdfXml.error-mode.s"; 233 234 /** 235 * Configuration property: RDF/XML ARP property: <c>embedding</c>. 236 * 237 * <h5 class='section'>Property:</h5> 238 * <ul class='spaced-list'> 239 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_arp_embedding RDF_arp_embedding} 240 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.embedding.b"</js> 241 * <li><b>Data type:</b> <jk>boolean</jk> 242 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.embedding</c> 243 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_EMBEDDING</c> 244 * <li><b>Default:</b> <jk>false</jk> 245 * <li><b>Annotations:</b> 246 * <ul> 247 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#arp_embedding()} 248 * </ul> 249 * </ul> 250 * 251 * <h5 class='section'>Description:</h5> 252 * <p> 253 * Sets ARP to look for RDF embedded within an enclosing XML document. 254 * 255 * <ul class='seealso'> 256 * <li> 257 * {@doc ExtARP/ARPOptions.html#setEmbedding(boolean) ARPOptions.setEmbedding(boolean)} 258 * </ul> 259 */ 260 public static final String RDF_arp_embedding = PREFIX + ".jena.rdfXml.embedding.b"; 261 262 /** 263 * Configuration property: RDF/XML ARP property: <c>ERR_xxx</c>. 264 * 265 * <h5 class='section'>Property:</h5> 266 * <ul class='spaced-list'> 267 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_arp_err_ RDF_arp_err_} 268 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.ERR_"</js> 269 * <li><b>Data type:</b> <c>String</c> 270 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.ERR_</c> 271 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_ERR_</c> 272 * </ul> 273 * 274 * <h5 class='section'>Description:</h5> 275 * <p> 276 * Provides fine-grained control over detected error conditions. 277 * 278 * <p> 279 * Possible values: 280 * <ul> 281 * <li><js>"EM_IGNORE"</js> 282 * <li><js>"EM_WARNING"</js> 283 * <li><js>"EM_ERROR"</js> 284 * <li><js>"EM_FATAL"</js> 285 * </ul> 286 * 287 * <ul class='seealso'> 288 * <li> 289 * {@doc ExtARP/ARPErrorNumbers.html ARPErrorNumbers} 290 * <li> 291 * {@doc ExtARP/ARPOptions.html#setErrorMode(int,%20int) ARPOptions.setErrorMode(int, int)} 292 * </ul> 293 */ 294 public static final String RDF_arp_err_ = PREFIX + ".jena.rdfXml.ERR_"; 295 296 /** 297 * Configuration property: RDF/XML ARP property: <c>WARN_xxx</c>. 298 * 299 * <h5 class='section'>Property:</h5> 300 * <ul class='spaced-list'> 301 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_arp_warn_ RDF_arp_warn_} 302 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.WARN_"</js> 303 * <li><b>Data type:</b> <c>String</c> 304 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.WARN_</c> 305 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_WARN_</c> 306 * </ul> 307 * 308 * <h5 class='section'>Description:</h5> 309 * <p> 310 * See {@link #RDF_arp_err_} for details. 311 */ 312 public static final String RDF_arp_warn_ = PREFIX + ".jena.rdfXml.WARN_"; 313 314 /** 315 * RDF/XML ARP property: <c>IGN_xxx</c>. 316 * 317 * <h5 class='section'>Property:</h5> 318 * <ul class='spaced-list'> 319 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_arp_ign_ RDF_arp_ign_} 320 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.IGN_"</js> 321 * <li><b>Data type:</b> <c>String</c> 322 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.IGN_</c> 323 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_IGN_</c> 324 * </ul> 325 * 326 * <h5 class='section'>Description:</h5> 327 * <p> 328 * See {@link #RDF_arp_err_} for details. 329 */ 330 public static final String RDF_arp_ign_ = PREFIX + ".jena.rdfXml.IGN_"; 331 332 /** 333 * Configuration property: RDF/XML property: <c>xmlbase</c>. 334 * 335 * <h5 class='section'>Property:</h5> 336 * <ul class='spaced-list'> 337 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_xmlBase RDF_rdfxml_xmlBase} 338 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.xmlbase.s"</js> 339 * <li><b>Data type:</b> <c>String</c> 340 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.xmlbase</c> 341 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_XMLBASE</c> 342 * <li><b>Default:</b> <jk>null</jk> 343 * <li><b>Annotations:</b> 344 * <ul> 345 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_xmlBase()} 346 * </ul> 347 * </ul> 348 * 349 * <h5 class='section'>Description:</h5> 350 * <p> 351 * The value to be included for an <xa>xml:base</xa> attribute on the root element in the file. 352 */ 353 public static final String RDF_rdfxml_xmlBase = PREFIX + ".jena.rdfXml.xmlbase.s"; 354 355 /** 356 * Configuration property: RDF/XML property: <c>longId</c>. 357 * 358 * <h5 class='section'>Property:</h5> 359 * <ul class='spaced-list'> 360 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_longId RDF_rdfxml_longId} 361 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.longId.b"</js> 362 * <li><b>Data type:</b> <jk>boolean</jk> 363 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.longId</c> 364 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_LONGID</c> 365 * <li><b>Default:</b> <jk>false</jk> 366 * <li><b>Annotations:</b> 367 * <ul> 368 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_longId()} 369 * </ul> 370 * </ul> 371 * 372 * <h5 class='section'>Description:</h5> 373 * <p> 374 * Whether to use long ID's for anon resources. 375 * Short ID's are easier to read, but can run out of memory on very large models. 376 */ 377 public static final String RDF_rdfxml_longId = PREFIX + ".jena.rdfXml.longId.b"; 378 379 /** 380 * Configuration property: RDF/XML property: <c>allowBadURIs</c>. 381 * 382 * <h5 class='section'>Property:</h5> 383 * <ul class='spaced-list'> 384 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_allowBadUris RDF_rdfxml_allowBadUris} 385 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.allowBadURIs.b"</js> 386 * <li><b>Data type:</b> <jk>boolean</jk> 387 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.allowBadURIs</c> 388 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_ALLOWBADURIS</c> 389 * <li><b>Default:</b> <jk>false</jk> 390 * <li><b>Annotations:</b> 391 * <ul> 392 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_allowBadUris()} 393 * </ul> 394 * </ul> 395 * 396 * <h5 class='section'>Description:</h5> 397 * <p> 398 * URIs in the graph are, by default, checked prior to serialization. 399 */ 400 public static final String RDF_rdfxml_allowBadUris = PREFIX + ".jena.rdfXml.allowBadURIs.b"; 401 402 /** 403 * Configuration property: RDF/XML property: <c>relativeURIs</c>. 404 * 405 * <h5 class='section'>Property:</h5> 406 * <ul class='spaced-list'> 407 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_relativeUris RDF_rdfxml_relativeUris} 408 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.relativeURIs.s"</js> 409 * <li><b>Data type:</b> <c>String</c> 410 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.relativeURIs</c> 411 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_RELATIVEURIS</c> 412 * <li><b>Default:</b> <js>"same-document, absolute, relative, parent"</js> 413 * <li><b>Annotations:</b> 414 * <ul> 415 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_relativeUris()} 416 * </ul> 417 * </ul> 418 * 419 * <h5 class='section'>Description:</h5> 420 * <p> 421 * What sort of relative URIs should be used. 422 * 423 * <p> 424 * A comma separate list of options: 425 * <ul class='spaced-list'> 426 * <li> 427 * <js>"same-document"</js> - Same-document references (e.g. <js>""</js> or <js>"#foo"</js>) 428 * <li> 429 * <js>"network"</js> - Network paths (e.g. <js>"//example.org/foo"</js> omitting the URI scheme) 430 * <li> 431 * <js>"absolute"</js> - Absolute paths (e.g. <js>"/foo"</js> omitting the scheme and authority) 432 * <li> 433 * <js>"relative"</js> - Relative path not beginning in <js>"../"</js> 434 * <li> 435 * <js>"parent"</js> - Relative path beginning in <js>"../"</js> 436 * <li> 437 * <js>"grandparent"</js> - Relative path beginning in <js>"../../"</js> 438 * </ul> 439 * 440 * <p> 441 * The default value is <js>"same-document, absolute, relative, parent"</js>. 442 * To switch off relative URIs use the value <js>""</js>. 443 * Relative URIs of any of these types are output where possible if and only if the option has been specified. 444 */ 445 public static final String RDF_rdfxml_relativeUris = PREFIX + ".jena.rdfXml.relativeURIs.s"; 446 447 /** 448 * Configuration property: RDF/XML property: <c>showXmlDeclaration</c>. 449 * 450 * <h5 class='section'>Property:</h5> 451 * <ul class='spaced-list'> 452 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_showXmlDeclaration RDF_rdfxml_showXmlDeclaration} 453 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.showXmlDeclaration.s"</js> 454 * <li><b>Data type:</b> <c>String</c> 455 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.showXmlDeclaration</c> 456 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_SHOWXMLDECLARATION</c> 457 * <li><b>Default:</b> <js>"default"</js> 458 * <li><b>Annotations:</b> 459 * <ul> 460 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_showXmlDeclaration()} 461 * </ul> 462 * </ul> 463 * 464 * <h5 class='section'>Description:</h5> 465 * <p> 466 * Possible values: 467 * <ul class='spaced-list'> 468 * <li> 469 * <js>"true"</js> - Add XML Declaration to the output. 470 * <li> 471 * <js>"false"</js> - Don't add XML Declaration to the output. 472 * <li> 473 * <js>"default"</js> - Only add an XML Declaration when asked to write to an <c>OutputStreamWriter</c> 474 * that uses some encoding other than <c>UTF-8</c> or <c>UTF-16</c>. 475 * In this case the encoding is shown in the XML declaration. 476 * </ul> 477 */ 478 public static final String RDF_rdfxml_showXmlDeclaration = PREFIX + ".jena.rdfXml.showXmlDeclaration.s"; 479 480 /** 481 * Configuration property: RDF/XML property: <c>showDoctypeDeclaration</c>. 482 * 483 * <h5 class='section'>Property:</h5> 484 * <ul class='spaced-list'> 485 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_showDoctypeDeclaration RDF_rdfxml_showDoctypeDeclaration} 486 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.showDoctypeDeclaration.b"</js> 487 * <li><b>Data type:</b> <jk>boolean</jk> 488 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.showDoctypeDeclaration</c> 489 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_SHOWDOCTYPEDECLARATION</c> 490 * <li><b>Default:</b> <jk>true</jk> 491 * <li><b>Annotations:</b> 492 * <ul> 493 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_showDoctypeDeclaration()} 494 * </ul> 495 * </ul> 496 * 497 * <h5 class='section'>Description:</h5> 498 * <p> 499 * If true, an XML doctype declaration is included in the output. 500 * This declaration includes a <c>!ENTITY</c> declaration for each prefix mapping in the model, and any 501 * attribute value that starts with the URI of that mapping is written as starting with the corresponding entity 502 * invocation. 503 */ 504 public static final String RDF_rdfxml_showDoctypeDeclaration = PREFIX + ".jena.rdfXml.showDoctypeDeclaration.b"; 505 506 /** 507 * Configuration property: RDF/XML property: <c>tab</c>. 508 * 509 * <h5 class='section'>Property:</h5> 510 * <ul class='spaced-list'> 511 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_tab RDF_rdfxml_tab} 512 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.tab.i"</js> 513 * <li><b>Data type:</b> <jk>int</jk> 514 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.tab</c> 515 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_TAB</c> 516 * <li><b>Default:</b> <c>2</c> 517 * <li><b>Annotations:</b> 518 * <ul> 519 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_tab()} 520 * </ul> 521 * </ul> 522 * 523 * <h5 class='section'>Description:</h5> 524 * <p> 525 * The number of spaces with which to indent XML child elements. 526 */ 527 public static final String RDF_rdfxml_tab = PREFIX + ".jena.rdfXml.tab.i"; 528 529 /** 530 * Configuration property: RDF/XML property: <c>attributeQuoteChar</c>. 531 * 532 * <h5 class='section'>Property:</h5> 533 * <ul class='spaced-list'> 534 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_attributeQuoteChar RDF_rdfxml_attributeQuoteChar} 535 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.attributeQuoteChar.s"</js> 536 * <li><b>Data type:</b> <c>Character</c> 537 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.attributeQuoteChar</c> 538 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_ATTRIBUTEQUOTECHAR</c> 539 * <li><b>Default:</b> <js>'"'</js> 540 * <li><b>Annotations:</b> 541 * <ul> 542 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_attributeQuoteChar()} 543 * </ul> 544 * </ul> 545 * 546 * <h5 class='section'>Description:</h5> 547 * <p> 548 * The XML attribute quote character. 549 */ 550 public static final String RDF_rdfxml_attributeQuoteChar = PREFIX + ".jena.rdfXml.attributeQuoteChar.s"; 551 552 /** 553 * Configuration property: RDF/XML property: <c>blockRules</c>. 554 * 555 * <h5 class='section'>Property:</h5> 556 * <ul class='spaced-list'> 557 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_rdfxml_blockRules RDF_rdfxml_blockRules} 558 * <li><b>Name:</b> <js>"RdfCommon.jena.rdfXml.blockRules.s"</js> 559 * <li><b>Data type:</b> <c>String</c> 560 * <li><b>System property:</b> <c>RdfCommon.jena.rdfXml.blockRules</c> 561 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_RDFXML_BLOCKRULES</c> 562 * <li><b>Default:</b> <js>""</js> 563 * <li><b>Annotations:</b> 564 * <ul> 565 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#rdfxml_blockRules()} 566 * </ul> 567 * </ul> 568 * 569 * <h5 class='section'>Description:</h5> 570 * <p> 571 * A list of <c>Resource</c> or a <c>String</c> being a comma separated list of fragment IDs from 572 * {@doc http://www.w3.org/TR/rdf-syntax-grammar RDF Syntax Grammar} indicating grammar 573 * rules that will not be used. 574 */ 575 public static final String RDF_rdfxml_blockRules = PREFIX + ".jena.rdfXml.blockRules.s"; 576 577 /** 578 * Configuration property: N3/Turtle property: <c>minGap</c>. 579 * 580 * <h5 class='section'>Property:</h5> 581 * <ul class='spaced-list'> 582 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_minGap RDF_n3_minGap} 583 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.minGap.i"</js> 584 * <li><b>Data type:</b> <jk>int</jk> 585 * <li><b>System property:</b> <c>RdfCommon.jena.n3.minGap</c> 586 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_MINGAP</c> 587 * <li><b>Default:</b> <c>1</c> 588 * <li><b>Annotations:</b> 589 * <ul> 590 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_minGap()} 591 * </ul> 592 * </ul> 593 * 594 * <h5 class='section'>Description:</h5> 595 * <p> 596 * Minimum gap between items on a line. 597 */ 598 public static final String RDF_n3_minGap = PREFIX + ".jena.n3.minGap.i"; 599 600 /** 601 * Configuration property: N3/Turtle property: <c>objectLists</c>. 602 * 603 * <h5 class='section'>Property:</h5> 604 * <ul class='spaced-list'> 605 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_objectLists RDF_n3_objectLists} 606 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.objectLists.b"</js> 607 * <li><b>Data type:</b> <jk>boolean</jk> 608 * <li><b>System property:</b> <c>RdfCommon.jena.n3.objectLists</c> 609 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_OBJECTLISTS</c> 610 * <li><b>Default:</b> <jk>true</jk> 611 * <li><b>Annotations:</b> 612 * <ul> 613 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_objectLists()} 614 * </ul> 615 * </ul> 616 * 617 * <h5 class='section'>Description:</h5> 618 * <p> 619 * Print object lists as comma separated lists. 620 */ 621 public static final String RDF_n3_objectLists = PREFIX + ".jena.n3.objectLists.b"; 622 623 /** 624 * Configuration property: N3/Turtle property: <c>subjectColumn</c>. 625 * 626 * <h5 class='section'>Property:</h5> 627 * <ul class='spaced-list'> 628 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_subjectColumn RDF_n3_subjectColumn} 629 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.subjectColumn.i"</js> 630 * <li><b>Data type:</b> <jk>int</jk> 631 * <li><b>System property:</b> <c>RdfCommon.jena.n3.subjectColumn</c> 632 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_SUBJECTCOLUMN</c> 633 * <li><b>Default:</b> indentProperty 634 * <li><b>Annotations:</b> 635 * <ul> 636 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_subjectColumn()} 637 * </ul> 638 * </ul> 639 * 640 * <h5 class='section'>Description:</h5> 641 * <p> 642 * If the subject is shorter than this value, the first property may go on the same line. 643 */ 644 public static final String RDF_n3_subjectColumn = PREFIX + ".jena.n3.subjectColumn.i"; 645 646 /** 647 * Configuration property: N3/Turtle property: <c>propertyColumn</c>. 648 * 649 * <h5 class='section'>Property:</h5> 650 * <ul class='spaced-list'> 651 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_propertyColumn RDF_n3_propertyColumn} 652 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.propertyColumn.i"</js> 653 * <li><b>Data type:</b> <jk>int</jk> 654 * <li><b>System property:</b> <c>RdfCommon.jena.n3.propertyColumn</c> 655 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_PROPERTYCOLUMN</c> 656 * <li><b>Default:</b> <c>8</c> 657 * <li><b>Annotations:</b> 658 * <ul> 659 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_propertyColumn()} 660 * </ul> 661 * </ul> 662 * 663 * <h5 class='section'>Description:</h5> 664 * <p> 665 * Width of the property column. 666 */ 667 public static final String RDF_n3_propertyColumn = PREFIX + ".jena.n3.propertyColumn.i"; 668 669 /** 670 * Configuration property: N3/Turtle property: <c>indentProperty</c>. 671 * 672 * <h5 class='section'>Property:</h5> 673 * <ul class='spaced-list'> 674 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_indentProperty RDF_n3_indentProperty} 675 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.indentProperty.i"</js> 676 * <li><b>Data type:</b> <jk>int</jk> 677 * <li><b>System property:</b> <c>RdfCommon.jena.n3.indentProperty</c> 678 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_INDENTPROPERTY</c> 679 * <li><b>Default:</b> <c>6</c> 680 * <li><b>Annotations:</b> 681 * <ul> 682 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_indentProperty()} 683 * </ul> 684 * </ul> 685 * 686 * <h5 class='section'>Description:</h5> 687 * <p> 688 * Width to indent properties. 689 */ 690 public static final String RDF_n3_indentProperty = PREFIX + ".jena.n3.indentProperty.i"; 691 692 /** 693 * Configuration property: N3/Turtle property: <c>widePropertyLen</c>. 694 * 695 * <h5 class='section'>Property:</h5> 696 * <ul class='spaced-list'> 697 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_widePropertyLen RDF_n3_widePropertyLen} 698 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.widePropertyLen.i"</js> 699 * <li><b>Data type:</b> <jk>int</jk> 700 * <li><b>System property:</b> <c>RdfCommon.jena.n3.widePropertyLen</c> 701 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_WIDEPROPERTYLEN</c> 702 * <li><b>Default:</b> <c>20</c> 703 * <li><b>Annotations:</b> 704 * <ul> 705 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_widePropertyLen()} 706 * </ul> 707 * </ul> 708 * 709 * <h5 class='section'>Description:</h5> 710 * <p> 711 * Width of the property column. 712 * Must be longer than <c>propertyColumn</c>. 713 */ 714 public static final String RDF_n3_widePropertyLen = PREFIX + ".jena.n3.widePropertyLen.i"; 715 716 /** 717 * Configuration property: N3/Turtle property: <c>abbrevBaseURI</c>. 718 * 719 * <h5 class='section'>Property:</h5> 720 * <ul class='spaced-list'> 721 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_abbrevBaseUri RDF_n3_abbrevBaseUri} 722 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.abbrevBaseURI.b"</js> 723 * <li><b>Data type:</b> <jk>boolean</jk> 724 * <li><b>System property:</b> <c>RdfCommon.jena.n3.abbrevBaseURI</c> 725 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_ABBREVBASEURI</c> 726 * <li><b>Default:</b> <jk>true</jk> 727 * <li><b>Annotations:</b> 728 * <ul> 729 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_abbrevBaseUri()} 730 * </ul> 731 * </ul> 732 * 733 * <h5 class='section'>Description:</h5> 734 * <p> 735 * Control whether to use abbreviations <c><></c> or <c><#></c>. 736 */ 737 public static final String RDF_n3_abbrevBaseUri = PREFIX + ".jena.n3.abbrevBaseURI.b"; 738 739 /** 740 * Configuration property: N3/Turtle property: <c>usePropertySymbols</c>. 741 * 742 * <h5 class='section'>Property:</h5> 743 * <ul class='spaced-list'> 744 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_usePropertySymbols RDF_n3_usePropertySymbols} 745 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.usePropertySymbols.b"</js> 746 * <li><b>Data type:</b> <jk>boolean</jk> 747 * <li><b>System property:</b> <c>RdfCommon.jena.n3.usePropertySymbols</c> 748 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_USEPROPERTYSYMBOLS</c> 749 * <li><b>Default:</b> <jk>true</jk> 750 * <li><b>Annotations:</b> 751 * <ul> 752 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_usePropertySymbols()} 753 * </ul> 754 * </ul> 755 * 756 * <h5 class='section'>Description:</h5> 757 * <p> 758 * Control whether to use <c>a</c>, <c>=</c> and <c>=></c> in output 759 */ 760 public static final String RDF_n3_usePropertySymbols = PREFIX + ".jena.n3.usePropertySymbols.b"; 761 762 /** 763 * Configuration property: N3/Turtle property: <c>useTripleQuotedStrings</c>. 764 * 765 * <h5 class='section'>Property:</h5> 766 * <ul class='spaced-list'> 767 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_useTripleQuotedStrings RDF_n3_useTripleQuotedStrings} 768 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.useTripleQuotedStrings.b"</js> 769 * <li><b>Data type:</b> <jk>boolean</jk> 770 * <li><b>System property:</b> <c>RdfCommon.jena.n3.useTripleQuotedStrings</c> 771 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_USETRIPLEQUOTEDSTRINGS</c> 772 * <li><b>Default:</b> <jk>true</jk> 773 * <li><b>Annotations:</b> 774 * <ul> 775 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_useTripleQuotedStrings()} 776 * </ul> 777 * </ul> 778 * 779 * <h5 class='section'>Description:</h5> 780 * <p> 781 * Allow the use of <c>"""</c> to delimit long strings. 782 */ 783 public static final String RDF_n3_useTripleQuotedStrings = PREFIX + ".jena.n3.useTripleQuotedStrings.b"; 784 785 /** 786 * Configuration property: N3/Turtle property: <c>useDoubles</c>. 787 * 788 * <h5 class='section'>Property:</h5> 789 * <ul class='spaced-list'> 790 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_n3_useDoubles RDF_n3_useDoubles} 791 * <li><b>Name:</b> <js>"RdfCommon.jena.n3.useDoubles.b"</js> 792 * <li><b>Data type:</b> <jk>boolean</jk> 793 * <li><b>System property:</b> <c>RdfCommon.jena.n3.useDoubles</c> 794 * <li><b>Environment variable:</b> <c>RDFCOMMON_JENA_N3_USEDOUBLES</c> 795 * <li><b>Default:</b> <jk>true</jk> 796 * <li><b>Annotations:</b> 797 * <ul> 798 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#n3_useDoubles()} 799 * </ul> 800 * </ul> 801 * 802 * <h5 class='section'>Description:</h5> 803 * <p> 804 * Allow the use doubles as <c>123.456</c>. 805 */ 806 public static final String RDF_n3_useDoubles = PREFIX + ".jena.n3.useDoubles.b"; 807 808 /** 809 * Configuration property: RDF format for representing collections and arrays. 810 * 811 * <h5 class='section'>Property:</h5> 812 * <ul class='spaced-list'> 813 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_collectionFormat RDF_collectionFormat} 814 * <li><b>Name:</b> <js>"RdfCommon.collectionFormat.s"</js> 815 * <li><b>Data type:</b> <c>String</c> 816 * <li><b>System property:</b> <c>RdfCommon.collectionFormat</c> 817 * <li><b>Environment variable:</b> <c>RDFCOMMON_COLLECTIONFORMAT</c> 818 * <li><b>Default:</b> <js>"DEFAULT"</js> 819 * <li><b>Annotations:</b> 820 * <ul> 821 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#collectionFormat()} 822 * </ul> 823 * <li><b>Methods:</b> 824 * <ul> 825 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#collectionFormat(RdfCollectionFormat)} 826 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#collectionFormat(RdfCollectionFormat)} 827 * </ul> 828 * </ul> 829 * 830 * <h5 class='section'>Description:</h5> 831 * <p> 832 * Possible values: 833 * <ul class='spaced-list'> 834 * <li> 835 * <js>"DEFAULT"</js> - Default format. The default is an RDF Sequence container. 836 * <li> 837 * <js>"SEQ"</js> - RDF Sequence container. 838 * <li> 839 * <js>"BAG"</js> - RDF Bag container. 840 * <li> 841 * <js>"LIST"</js> - RDF List container. 842 * <li> 843 * <js>"MULTI_VALUED"</js> - Multi-valued properties. 844 * </ul> 845 * 846 * <ul class='notes'> 847 * <li> 848 * If you use <js>"BAG"</js> or <js>"MULTI_VALUED"</js>, the order of the elements in the collection will get 849 * lost. 850 * </ul> 851 */ 852 public static final String RDF_collectionFormat = PREFIX + ".collectionFormat.s"; 853 854 /** 855 * Configuration property: Collections should be serialized and parsed as loose collections. 856 * 857 * <h5 class='section'>Property:</h5> 858 * <ul class='spaced-list'> 859 * <li><b>ID:</b> {@link org.apache.juneau.jena.RdfCommon#RDF_looseCollections RDF_looseCollections} 860 * <li><b>Name:</b> <js>"RdfCommon.looseCollections.b"</js> 861 * <li><b>Data type:</b> <jk>boolean</jk> 862 * <li><b>System property:</b> <c>RdfCommon.looseCollections</c> 863 * <li><b>Environment variable:</b> <c>RDFCOMMON_LOOSECOLLECTIONS</c> 864 * <li><b>Default:</b> <jk>false</jk> 865 * <li><b>Annotations:</b> 866 * <ul> 867 * <li class='ja'>{@link org.apache.juneau.jena.annotation.RdfConfig#looseCollections()} 868 * </ul> 869 * <li><b>Methods:</b> 870 * <ul> 871 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#looseCollections(boolean)} 872 * <li class='jm'>{@link org.apache.juneau.jena.RdfSerializerBuilder#looseCollections()} 873 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#looseCollections(boolean)} 874 * <li class='jm'>{@link org.apache.juneau.jena.RdfParserBuilder#looseCollections()} 875 * </ul> 876 * </ul> 877 * 878 * <h5 class='section'>Description:</h5> 879 * <p> 880 * When specified, collections of resources are handled as loose collections of resources in RDF instead of 881 * resources that are children of an RDF collection (e.g. Sequence, Bag). 882 * 883 * <p> 884 * Note that this setting is specialized for RDF syntax, and is incompatible with the concept of 885 * losslessly representing POJO models, since the tree structure of these POJO models are lost 886 * when serialized as loose collections. 887 * 888 * <p> 889 * This setting is typically only useful if the beans being parsed into do not have a bean property 890 * annotated with {@link Rdf#beanUri @Rdf(beanUri=true)}. 891 * 892 * <h5 class='section'>Example:</h5> 893 * <p class='bcode w800'> 894 * WriterSerializer s = RdfSerializer.<jsm>create</jsm>().xmlabbrev().looseCollections(<jk>true</jk>).build(); 895 * ReaderParser p = RdfParser.<jsm>create</jsm>().xml().looseCollections(<jk>true</jk>).build(); 896 * 897 * List<MyBean> l = createListOfMyBeans(); 898 * 899 * <jc>// Serialize to RDF/XML as loose resources</jc> 900 * String rdfXml = s.serialize(l); 901 * 902 * <jc>// Parse back into a Java collection</jc> 903 * l = p.parse(rdfXml, LinkedList.<jk>class</jk>, MyBean.<jk>class</jk>); 904 * 905 * MyBean[] b = createArrayOfMyBeans(); 906 * 907 * <jc>// Serialize to RDF/XML as loose resources</jc> 908 * String rdfXml = s.serialize(b); 909 * 910 * <jc>// Parse back into a bean array</jc> 911 * b = p.parse(rdfXml, MyBean[].<jk>class</jk>); 912 * </p> 913 */ 914 public static final String RDF_looseCollections = PREFIX + ".looseCollections.b"; 915}