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