/**
Copyright (C) SYSTAP, LLC DBA Blazegraph 2006-2016. All rights reserved.
Contact:
SYSTAP, LLC DBA Blazegraph
2501 Calvert ST NW #106
Washington, DC 20008
licenses@blazegraph.com
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Created on Oct 4, 2011
*/
package com.bigdata.rdf.internal;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.TimeZone;
import java.util.UUID;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import org.openrdf.model.URI;
import org.openrdf.model.impl.LiteralImpl;
import org.openrdf.model.impl.URIImpl;
import org.openrdf.model.vocabulary.RDF;
import com.bigdata.rdf.internal.ColorsEnumExtension.Color;
import com.bigdata.rdf.internal.impl.BlobIV;
import com.bigdata.rdf.internal.impl.bnode.FullyInlineUnicodeBNodeIV;
import com.bigdata.rdf.internal.impl.bnode.NumericBNodeIV;
import com.bigdata.rdf.internal.impl.bnode.SidIV;
import com.bigdata.rdf.internal.impl.bnode.UUIDBNodeIV;
import com.bigdata.rdf.internal.impl.extensions.DateTimeExtension;
import com.bigdata.rdf.internal.impl.extensions.DerivedNumericsExtension;
import com.bigdata.rdf.internal.impl.extensions.XSDStringExtension;
import com.bigdata.rdf.internal.impl.literal.FullyInlineTypedLiteralIV;
import com.bigdata.rdf.internal.impl.literal.PartlyInlineTypedLiteralIV;
import com.bigdata.rdf.internal.impl.literal.UUIDLiteralIV;
import com.bigdata.rdf.internal.impl.literal.XSDBooleanIV;
import com.bigdata.rdf.internal.impl.literal.XSDDecimalIV;
import com.bigdata.rdf.internal.impl.literal.XSDIntegerIV;
import com.bigdata.rdf.internal.impl.literal.XSDNumericIV;
import com.bigdata.rdf.internal.impl.literal.XSDUnsignedByteIV;
import com.bigdata.rdf.internal.impl.literal.XSDUnsignedIntIV;
import com.bigdata.rdf.internal.impl.literal.XSDUnsignedLongIV;
import com.bigdata.rdf.internal.impl.literal.XSDUnsignedShortIV;
import com.bigdata.rdf.internal.impl.uri.FullyInlineURIIV;
import com.bigdata.rdf.internal.impl.uri.PartlyInlineURIIV;
import com.bigdata.rdf.internal.impl.uri.URIExtensionIV;
import com.bigdata.rdf.internal.impl.uri.VocabURIByteIV;
import com.bigdata.rdf.internal.impl.uri.VocabURIShortIV;
import com.bigdata.rdf.model.BigdataBNode;
import com.bigdata.rdf.model.BigdataLiteral;
import com.bigdata.rdf.model.BigdataURI;
import com.bigdata.rdf.model.BigdataValue;
import com.bigdata.rdf.model.BigdataValueFactory;
import com.bigdata.rdf.model.BigdataValueFactoryImpl;
import com.bigdata.rdf.model.StatementEnum;
import com.bigdata.rdf.spo.SPO;
import com.bigdata.rdf.store.AbstractTripleStore;
/**
* Test of encode/decode and especially <em>comparator</em> semantics for mixed
* {@link IV}s.
*
* @author <a href="mailto:thompsonbry@users.sourceforge.net">Bryan Thompson</a>
* @version $Id$
*/
public abstract class AbstractEncodeDecodeMixedIVsTest extends AbstractEncodeDecodeKeysTestCase {
/**
*
*/
public AbstractEncodeDecodeMixedIVsTest() {
}
/**
* @param name
*/
public AbstractEncodeDecodeMixedIVsTest(String name) {
super(name);
}
/**
* Flag may be used to enable/disable the inclusion of the {@link IV}s
* having fully include Unicode data. These are the ones whose proper
* ordering is most problematic as they need to obey the collation order
* imposed by the {@link AbstractTripleStore.Options}.
*/
static private boolean fullyInlineUnicode = true;
protected List<IV<?,?>> prepareIVs() throws DatatypeConfigurationException {
final Random r = new Random();
final BigdataValueFactory vf = BigdataValueFactoryImpl.getInstance(getName());
final URI datatype = new URIImpl("http://www.bigdata.com");
final URI dt1 = new URIImpl("http://www.bigdata.com/mock-datatype-1");
final URI dt2 = new URIImpl("http://www.bigdata.com/mock-datatype-2");
final IV<?, ?> namespaceIV = newTermId(VTE.URI);
final IV<?, ?> datatypeIV = newTermId(VTE.URI);
final IV<?, ?> datatypeIV2 = newTermId(VTE.URI);
final IV<?, ?> colorIV = newTermId(VTE.URI);// ColorsEnumExtension.COLOR;
final IV<?, ?> xsdStringIV = newTermId(VTE.URI);// XSD.STRING;
final IV<?, ?> xsdDateTimeIV = newTermId(VTE.URI);// XSD.DATETIME;
final IDatatypeURIResolver resolver = new IDatatypeURIResolver() {
public BigdataURI resolve(final URI uri) {
final BigdataURI buri = vf.createURI(uri.stringValue());
if (ColorsEnumExtension.COLOR.equals(uri)) {
buri.setIV(colorIV);
} else if (XSD.STRING.equals(uri)) {
buri.setIV(xsdStringIV);
} else if (XSD.DATETIME.equals(uri)) {
buri.setIV(xsdDateTimeIV);
} else if (XSD.DATE.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.TIME.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.GDAY.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.GMONTH.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.GMONTHDAY.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.GYEAR.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.GYEARMONTH.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.POSITIVE_INTEGER.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.NEGATIVE_INTEGER.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.NON_POSITIVE_INTEGER.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else if (XSD.NON_NEGATIVE_INTEGER.equals(uri)) {
buri.setIV(newTermId(VTE.URI));
} else
throw new UnsupportedOperationException();
return buri;
}
};
final List<IV<?,?>> ivs = new LinkedList<IV<?,?>>();
{
// Fully inline
{
/*
* BNODEs
*/
if (fullyInlineUnicode) {
// blank nodes with Unicode IDs.
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("FOO"));
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("_bar"));
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("bar"));
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("baz"));
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("12"));
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("1298"));
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("asassdao"));
ivs.add(new FullyInlineUnicodeBNodeIV<BigdataBNode>("1"));
}
// blank nodes with numeric IDs.
ivs.add(new NumericBNodeIV<BigdataBNode>(-1));//
ivs.add(new NumericBNodeIV<BigdataBNode>(0));//
ivs.add(new NumericBNodeIV<BigdataBNode>(1));//
ivs.add(new NumericBNodeIV<BigdataBNode>(-52));//
ivs.add(new NumericBNodeIV<BigdataBNode>(52));//
ivs.add(new NumericBNodeIV<BigdataBNode>(Integer.MAX_VALUE));//
ivs.add(new NumericBNodeIV<BigdataBNode>(Integer.MIN_VALUE));//
// blank nodes with UUID IDs.
for (int i = 0; i < 100; i++) {
ivs.add(new UUIDBNodeIV<BigdataBNode>(UUID.randomUUID()));
}
/*
* URIs
*/
ivs.add(new FullyInlineURIIV<BigdataURI>(new URIImpl("http://www.bigdata.com")));
ivs.add(new FullyInlineURIIV<BigdataURI>(new URIImpl("http://www.bigdata.com/")));
ivs.add(new FullyInlineURIIV<BigdataURI>(new URIImpl("http://www.bigdata.com/foo")));
ivs.add(new FullyInlineURIIV<BigdataURI>(new URIImpl("http://www.bigdata.com:80/foo")));
ivs.add(new FullyInlineURIIV<BigdataURI>(new URIImpl("http://www.bigdata.com")));
if (fullyInlineUnicode) {
ivs.add(new FullyInlineURIIV<BigdataURI>(RDF.TYPE));
ivs.add(new FullyInlineURIIV<BigdataURI>(RDF.SUBJECT));
ivs.add(new FullyInlineURIIV<BigdataURI>(RDF.BAG));
ivs.add(new FullyInlineURIIV<BigdataURI>(RDF.OBJECT));
ivs.add(new URIExtensionIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>(
"http://www.example.com/"),
new VocabURIByteIV<BigdataURI>((byte) 1)));
ivs.add(new URIExtensionIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>(
"http://www.example.com/foo"),
new VocabURIByteIV<BigdataURI>((byte) 1)));
ivs.add(new URIExtensionIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>(
"http://www.example.com/foobar"),
new VocabURIByteIV<BigdataURI>((byte) 1)));
}
/*
* Literals
*/
if (fullyInlineUnicode) {
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"foo", null/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"bar", null/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"baz", null/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"123", null/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("23",
null/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("3",
null/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("",
null/* language */, null/* datatype */));
}
if (fullyInlineUnicode) {
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"foo", "en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"bar", "en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"goo", "en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"baz", "en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"foo", "de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"bar", "de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"goo", "de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"baz", "de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("",
"en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("",
"de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("1",
"en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("1",
"de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("12",
"en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("12",
"de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("2",
"en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("2",
"de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("23",
"en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("23",
"de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"123", "en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"123", "de"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("3",
"en"/* language */, null/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("3",
"de"/* language */, null/* datatype */));
}
if (fullyInlineUnicode) {
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"foo", null/* language */, dt1));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"bar", null/* language */, dt1));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"baz", null/* language */, dt1));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"goo", null/* language */, dt1));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"foo", null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"bar", null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"baz", null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"goo", null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("1",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("1",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("12",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("12",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"123", null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(
"123", null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("23",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("23",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("3",
null/* language */, dt2));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("3",
null/* language */, dt2));
}
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("foo",
null/* language */, XSD.STRING/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("bar",
null/* language */, XSD.STRING/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("baz",
null/* language */, XSD.STRING/* datatype */));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(""));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(" "));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("1"));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("12"));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("123"));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("","en",null/*datatype*/));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(" ","en",null/*datatype*/));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("1","en",null/*datatype*/));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("12","fr",null/*datatype*/));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("123","de",null/*datatype*/));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("", null, datatype));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>(" ", null, datatype));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("1", null, datatype));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("12", null, datatype));
ivs.add(new FullyInlineTypedLiteralIV<BigdataLiteral>("123", null, datatype));
// xsd:boolean
ivs.add(new XSDBooleanIV<BigdataLiteral>(true));//
ivs.add(new XSDBooleanIV<BigdataLiteral>(false));//
// xsd:byte
ivs.add(new XSDNumericIV<BigdataLiteral>((byte)Byte.MIN_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>((byte)-1));
ivs.add(new XSDNumericIV<BigdataLiteral>((byte)0));
ivs.add(new XSDNumericIV<BigdataLiteral>((byte)1));
ivs.add(new XSDNumericIV<BigdataLiteral>((byte)Byte.MAX_VALUE));
// xsd:short
ivs.add(new XSDNumericIV<BigdataLiteral>((short)-1));
ivs.add(new XSDNumericIV<BigdataLiteral>((short)0));
ivs.add(new XSDNumericIV<BigdataLiteral>((short)1));
ivs.add(new XSDNumericIV<BigdataLiteral>((short)Short.MIN_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>((short)Short.MAX_VALUE));
// xsd:int
ivs.add(new XSDNumericIV<BigdataLiteral>(1));
ivs.add(new XSDNumericIV<BigdataLiteral>(0));
ivs.add(new XSDNumericIV<BigdataLiteral>(-1));
ivs.add(new XSDNumericIV<BigdataLiteral>(Integer.MAX_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>(Integer.MIN_VALUE));
// xsd:long
ivs.add(new XSDNumericIV<BigdataLiteral>(1L));
ivs.add(new XSDNumericIV<BigdataLiteral>(0L));
ivs.add(new XSDNumericIV<BigdataLiteral>(-1L));
ivs.add(new XSDNumericIV<BigdataLiteral>(Long.MIN_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>(Long.MAX_VALUE));
// xsd:float
ivs.add(new XSDNumericIV<BigdataLiteral>(1f));
ivs.add(new XSDNumericIV<BigdataLiteral>(-1f));
ivs.add(new XSDNumericIV<BigdataLiteral>(+0f));
ivs.add(new XSDNumericIV<BigdataLiteral>(Float.MAX_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>(Float.MIN_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>(Float.MIN_NORMAL));
ivs.add(new XSDNumericIV<BigdataLiteral>(Float.POSITIVE_INFINITY));
ivs.add(new XSDNumericIV<BigdataLiteral>(Float.NEGATIVE_INFINITY));
ivs.add(new XSDNumericIV<BigdataLiteral>(Float.NaN));
// xsd:double
ivs.add(new XSDNumericIV<BigdataLiteral>(1d));
ivs.add(new XSDNumericIV<BigdataLiteral>(-1d));
ivs.add(new XSDNumericIV<BigdataLiteral>(+0d));
ivs.add(new XSDNumericIV<BigdataLiteral>(Double.MAX_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>(Double.MIN_VALUE));
ivs.add(new XSDNumericIV<BigdataLiteral>(Double.MIN_NORMAL));
ivs.add(new XSDNumericIV<BigdataLiteral>(Double.POSITIVE_INFINITY));
ivs.add(new XSDNumericIV<BigdataLiteral>(Double.NEGATIVE_INFINITY));
ivs.add(new XSDNumericIV<BigdataLiteral>(Double.NaN));
// uuid (not an official xsd type, but one we handle natively).
for (int i = 0; i < 100; i++) {
ivs.add(new UUIDLiteralIV<BigdataLiteral>(UUID.randomUUID()));
}
// xsd:unsignedByte
ivs.add(new XSDUnsignedByteIV<BigdataLiteral>(Byte.MIN_VALUE));
ivs.add(new XSDUnsignedByteIV<BigdataLiteral>((byte) -1));
ivs.add(new XSDUnsignedByteIV<BigdataLiteral>((byte) 0));
ivs.add(new XSDUnsignedByteIV<BigdataLiteral>((byte) 1));
ivs.add(new XSDUnsignedByteIV<BigdataLiteral>(Byte.MAX_VALUE));
// xsd:unsignedShort
ivs.add(new XSDUnsignedShortIV<BigdataLiteral>(Short.MIN_VALUE));
ivs.add(new XSDUnsignedShortIV<BigdataLiteral>((short) -1));
ivs.add(new XSDUnsignedShortIV<BigdataLiteral>((short) 0));
ivs.add(new XSDUnsignedShortIV<BigdataLiteral>((short) 1));
ivs.add(new XSDUnsignedShortIV<BigdataLiteral>(Short.MAX_VALUE));
// xsd:unsignedInt
ivs.add(new XSDUnsignedIntIV<BigdataLiteral>(Integer.MIN_VALUE));
ivs.add(new XSDUnsignedIntIV<BigdataLiteral>(-1));
ivs.add(new XSDUnsignedIntIV<BigdataLiteral>(0));
ivs.add(new XSDUnsignedIntIV<BigdataLiteral>(1));
ivs.add(new XSDUnsignedIntIV<BigdataLiteral>(Integer.MAX_VALUE));
// xsd:unsignedLong
ivs.add(new XSDUnsignedLongIV<BigdataLiteral>(Long.MIN_VALUE));
ivs.add(new XSDUnsignedLongIV<BigdataLiteral>(-1L));
ivs.add(new XSDUnsignedLongIV<BigdataLiteral>(0L));
ivs.add(new XSDUnsignedLongIV<BigdataLiteral>(1L));
ivs.add(new XSDUnsignedLongIV<BigdataLiteral>(Long.MAX_VALUE));
// xsd:integer
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(-1L)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(0L)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(1L)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(Long.MAX_VALUE)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(Long.MIN_VALUE)));//
// xsd:decimal
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(1.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(2.01)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(0.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(1.01)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(-1.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(0.01)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(-2.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(-1.01)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(10.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(11.01)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(258.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(259.01)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(3.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(259.01)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(383.01)));
ivs.add(new XSDDecimalIV<BigdataLiteral>(BigDecimal.valueOf(383.02)));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(new BigDecimal("1.5")));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(new BigDecimal("1.51")));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(new BigDecimal("-1.5")));//
ivs.add(new XSDDecimalIV<BigdataLiteral>(new BigDecimal("-1.51")));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(-1L)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(0L)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(1L)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(Long.MAX_VALUE)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(BigInteger.valueOf(Long.MIN_VALUE)));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(new BigInteger("15")));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(new BigInteger("151")));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(new BigInteger("-15")));//
ivs.add(new XSDIntegerIV<BigdataLiteral>(new BigInteger("-151")));//
// byte vocabulary IVs.
ivs.add(new VocabURIByteIV<BigdataURI>((byte) Byte.MIN_VALUE));
ivs.add(new VocabURIByteIV<BigdataURI>((byte) -1));
ivs.add(new VocabURIByteIV<BigdataURI>((byte) 0));
ivs.add(new VocabURIByteIV<BigdataURI>((byte) 1));
ivs.add(new VocabURIByteIV<BigdataURI>((byte) Byte.MAX_VALUE));
// short vocabulary IVs.
ivs.add(new VocabURIShortIV<BigdataURI>((short) Short.MIN_VALUE));
ivs.add(new VocabURIShortIV<BigdataURI>((short) -1));
ivs.add(new VocabURIShortIV<BigdataURI>((short) 0));
ivs.add(new VocabURIShortIV<BigdataURI>((short) 1));
ivs.add(new VocabURIShortIV<BigdataURI>((short) Short.MAX_VALUE));
// SIDs
{
final IV<?,?> s1 = newTermId(VTE.URI);
final IV<?,?> s2 = newTermId(VTE.URI);
final IV<?,?> p1 = newTermId(VTE.URI);
final IV<?,?> p2 = newTermId(VTE.URI);
final IV<?,?> o1 = newTermId(VTE.URI);
final IV<?,?> o2 = newTermId(VTE.BNODE);
final IV<?,?> o3 = newTermId(VTE.LITERAL);
final SPO spo1 = new SPO(s1, p1, o1, StatementEnum.Explicit);
final SPO spo2 = new SPO(s1, p1, o2, StatementEnum.Explicit);
final SPO spo3 = new SPO(s1, p1, o3, StatementEnum.Explicit);
final SPO spo4 = new SPO(s1, p2, o1, StatementEnum.Explicit);
final SPO spo5 = new SPO(s1, p2, o2, StatementEnum.Explicit);
final SPO spo6 = new SPO(s1, p2, o3, StatementEnum.Explicit);
final SPO spo7 = new SPO(s2, p1, o1, StatementEnum.Explicit);
final SPO spo8 = new SPO(s2, p1, o2, StatementEnum.Explicit);
final SPO spo9 = new SPO(s2, p1, o3, StatementEnum.Explicit);
final SPO spo10 = new SPO(s2, p2, o1, StatementEnum.Explicit);
final SPO spo11 = new SPO(s2, p2, o2, StatementEnum.Explicit);
final SPO spo12 = new SPO(s2, p2, o3, StatementEnum.Explicit);
// spo1.setStatementIdentifier(true);
// spo2.setStatementIdentifier(true);
// spo3.setStatementIdentifier(true);
// spo6.setStatementIdentifier(true);
final SPO spo13 = new SPO(spo1.getStatementIdentifier(), p1, o1,
StatementEnum.Explicit);
final SPO spo14 = new SPO(spo2.getStatementIdentifier(), p2, o2,
StatementEnum.Explicit);
final SPO spo15 = new SPO(s1, p1, spo3.getStatementIdentifier(),
StatementEnum.Explicit);
// spo15.setStatementIdentifier(true);
final SPO spo16 = new SPO(s1, p1, spo6.getStatementIdentifier(),
StatementEnum.Explicit);
final SPO spo17 = new SPO(spo1.getStatementIdentifier(), p1, spo15
.getStatementIdentifier(), StatementEnum.Explicit);
final IV<?, ?>[] e = {//
new SidIV<BigdataBNode>(spo1),//
new SidIV<BigdataBNode>(spo2),//
new SidIV<BigdataBNode>(spo3),//
new SidIV<BigdataBNode>(spo4),//
new SidIV<BigdataBNode>(spo5),//
new SidIV<BigdataBNode>(spo6),//
new SidIV<BigdataBNode>(spo7),//
new SidIV<BigdataBNode>(spo8),//
new SidIV<BigdataBNode>(spo9),//
new SidIV<BigdataBNode>(spo10),//
new SidIV<BigdataBNode>(spo11),//
new SidIV<BigdataBNode>(spo12),//
new SidIV<BigdataBNode>(spo13),//
new SidIV<BigdataBNode>(spo14),//
new SidIV<BigdataBNode>(spo15),//
new SidIV<BigdataBNode>(spo16),//
new SidIV<BigdataBNode>(spo17),//
};
ivs.addAll(Arrays.asList(e));
}
}
// Not inline
{
/*
* TermIds
*/
for (int i = 0; i < 100; i++) {
for (VTE vte : VTE.values()) {
// // 64 bit random term identifier.
// final long termId = r.nextLong();
//
// final TermId<?> v = new TermId<BigdataValue>(vte,
// termId);
//
// ivs.add(v);
ivs.add(newTermId(vte));
}
}
/*
* BLOBS
*/
{
for (int i = 0; i < 100; i++) {
for (VTE vte : VTE.values()) {
final int hashCode = r.nextInt();
final int counter = Short.MAX_VALUE
- r.nextInt(2 ^ 16);
@SuppressWarnings("rawtypes")
final BlobIV<?> v = new BlobIV(vte, hashCode,
(short) counter);
ivs.add(v);
}
}
}
} // Not inline.
/*
* Partly inline
*/
{
// URIs
if (fullyInlineUnicode) {
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("bar"),
namespaceIV));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("baz"),
namespaceIV));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("123"),
namespaceIV));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("23"),
namespaceIV));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("3"),
namespaceIV));
}
// LITERALs
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>(""),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("abc"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>(" "),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("1"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("12"),
datatypeIV));
if (fullyInlineUnicode) {
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>(""),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>(" "),
datatypeIV2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("1"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("1"),
datatypeIV2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("12"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("12"),
datatypeIV2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("123"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("123"),
datatypeIV2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("23"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("23"),
datatypeIV2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("3"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("3"),
datatypeIV2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("bar"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("baz"),
datatypeIV));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("bar"),
datatypeIV2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("baz"),
datatypeIV2));
}
if(fullyInlineUnicode){
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("bar"),// localName
new VocabURIShortIV<BigdataURI>((short) 1) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("baz"),// localName
new VocabURIShortIV<BigdataURI>((short) 1) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("bar"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("baz"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("123"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("123"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("23"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("23"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("3"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
ivs.add(new PartlyInlineURIIV<BigdataURI>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("3"),// localName
new VocabURIShortIV<BigdataURI>((short) 2) // namespace
));
}
if (fullyInlineUnicode) {
final IV<?, ?> datatypeIVa = new VocabURIShortIV<BigdataURI>(
(short) 1);
final IV<?, ?> datatypeIVa2 = new VocabURIShortIV<BigdataURI>(
(short) 2);
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("bar"),
datatypeIVa));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("bar"),
datatypeIVa2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("baz"),
datatypeIVa));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("baz"),
datatypeIVa2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("123"),
datatypeIVa));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("123"),
datatypeIVa2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("23"),
datatypeIVa));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("23"),
datatypeIVa2));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("3"),
datatypeIVa));
ivs.add(new PartlyInlineTypedLiteralIV<BigdataLiteral>(
new FullyInlineTypedLiteralIV<BigdataLiteral>("3"),
datatypeIVa2));
}
} // partly inline.
/*
* Extension IVs
*/
{
// xsd:dateTime extension
{
final DatatypeFactory df = DatatypeFactory.newInstance();
final DateTimeExtension<BigdataValue> ext = new DateTimeExtension<BigdataValue>(
resolver, TimeZone.getDefault());
final BigdataLiteral[] dt = {
vf.createLiteral(df
.newXMLGregorianCalendar("2001-10-26T21:32:52")),
vf.createLiteral(df
.newXMLGregorianCalendar("2001-10-26T21:32:52+02:00")),
vf.createLiteral(df
.newXMLGregorianCalendar("2001-10-26T19:32:52Z")),
vf.createLiteral(df
.newXMLGregorianCalendar("2001-10-26T19:32:52+00:00")),
vf.createLiteral(df
.newXMLGregorianCalendar("-2001-10-26T21:32:52")),
vf.createLiteral(df
.newXMLGregorianCalendar("2001-10-26T21:32:52.12679")),
vf.createLiteral(df
.newXMLGregorianCalendar("1901-10-26T21:32:52")), };
for (int i = 0; i < dt.length; i++) {
ivs.add(ext.createIV(dt[i]));
}
}
// derived numerics extension
{
final DatatypeFactory df = DatatypeFactory.newInstance();
final DerivedNumericsExtension<BigdataValue> ext =
new DerivedNumericsExtension<BigdataValue>(resolver);
final BigdataLiteral[] dt = {
vf.createLiteral("1", XSD.POSITIVE_INTEGER),
vf.createLiteral("-1", XSD.NEGATIVE_INTEGER),
vf.createLiteral("-1", XSD.NON_POSITIVE_INTEGER),
vf.createLiteral("1", XSD.NON_NEGATIVE_INTEGER),
vf.createLiteral("0", XSD.NON_POSITIVE_INTEGER),
vf.createLiteral("0", XSD.NON_NEGATIVE_INTEGER),
};
for (int i = 0; i < dt.length; i++) {
ivs.add(ext.createIV(dt[i]));
}
}
// xsd:string extension IVs
if (fullyInlineUnicode) {
final int maxInlineStringLength = 128;
final XSDStringExtension<BigdataValue> ext = new XSDStringExtension<BigdataValue>(
resolver, maxInlineStringLength);
final IV<?, ?>[] e = {//
ext.createIV(new LiteralImpl("", XSD.STRING)), //
ext.createIV(new LiteralImpl(" ", XSD.STRING)), //
ext.createIV(new LiteralImpl(" ", XSD.STRING)), //
ext.createIV(new LiteralImpl("1", XSD.STRING)), //
ext.createIV(new LiteralImpl("12", XSD.STRING)), //
ext.createIV(new LiteralImpl("123", XSD.STRING)), //
ext.createIV(new LiteralImpl("234", XSD.STRING)), //
ext.createIV(new LiteralImpl("34", XSD.STRING)), //
ext.createIV(new LiteralImpl("4", XSD.STRING)), //
ext.createIV(new LiteralImpl("a", XSD.STRING)), //
ext.createIV(new LiteralImpl("ab", XSD.STRING)), //
ext.createIV(new LiteralImpl("abc", XSD.STRING)), //
};
ivs.addAll(Arrays.asList(e));
}
// "color" extension IV.
if (true) {
final ColorsEnumExtension<BigdataValue> ext = new ColorsEnumExtension<BigdataValue>(
resolver);
for (Color c : ColorsEnumExtension.Color.values()) {
ivs.add(ext.createIV(new LiteralImpl(c.name(),
ColorsEnumExtension.COLOR)));
}
}
}
}
return ivs;
}
}