Package lupos.misc

Examples of lupos.misc.BitVector


        }
    }
    this.vars = vars;
    bloomFilters = new LinkedList<BitVector>();
    for (int i = 0; i < vars.size(); i++)
      bloomFilters.add(new BitVector(NUMBEROFBITSFORBLOOMFILTER));
  }
View Full Code Here


      final int operandID) {

    for (final Bindings b : res) {
      final Iterator<BitVector> ibv = bloomFilters.iterator();
      for (final Variable v : vars) {
        final BitVector bv = ibv.next();
        // if (!bv.get((b.get(v).hashCode() %
        // NUMBEROFBITSFORBLOOMFILTER)))
        // System.out.println(b.get(v));
        bv.set(Math.abs(b.get(v).hashCode()
            % NUMBEROFBITSFORBLOOMFILTER));
      }
    }

    // System.out.println(bloomFilters.iterator().next().count());
    for (final TriplePattern tp : ctp) {
      // inform triple patterns of bloom filter!
      int i = 0;
      for (final Item item : tp) {
        if (item.isVariable()) {
          final Iterator<BitVector> ibv = bloomFilters.iterator();
          for (final Variable v : vars) {
            final BitVector bloomFilter = ibv.next();
            if (v.equals(item)) {
              BitVector[] bfa = tp.getBloomFilters();
              if (bfa == null) {
                bfa = new BitVector[3];
                bfa[i] = bloomFilter;
              } else {
                if (bfa[i] != null) {
                  if (!bfa[i].equals(bloomFilter))
                    for (int j = 0; j < bloomFilter.size(); j++)
                      if (!bloomFilter.get(j))
                        bfa[i].clear(j);
                } else
                  bfa[i] = bloomFilter;
              }
              tp.setBloomFilters(bfa);
View Full Code Here

      public Bindings next() {
        final Bindings b = itb.next();
        if (b != null) {
          final Iterator<BitVector> ibv = bloomFilters.iterator();
          for (final Variable v : vars) {
            final BitVector bv = ibv.next();
            Literal literal = b.get(v);
            if(literal!=null){
              bv.set((Math.abs(literal.hashCode()) % NUMBEROFBITSFORBLOOMFILTER));
            }
          }
          if (!itb.hasNext()) {
            for (final TriplePattern tp : ctp) {
              // inform triple patterns of bloom filter!
              int i = 0;
              for (final Item item : tp) {
                if (item.isVariable()) {
                  final Iterator<BitVector> ibv2 = bloomFilters
                      .iterator();
                  for (final Variable v : vars) {
                    final BitVector bloomFilter = ibv2
                        .next();
                    if (v.equals(item)) {
                      BitVector[] bfa = tp
                          .getBloomFilters();
                      if (bfa == null) {
                        bfa = new BitVector[3];
                        bfa[i] = bloomFilter;
                      } else {
                        if (bfa[i] != null) {
                          if (!bfa[i]
                              .equals(bloomFilter))
                            for (int j = 0; j < bloomFilter
                                .size(); j++)
                              if (!bloomFilter
                                  .get(j))
                                bfa[i].clear(j);
                        } else
                          bfa[i] = bloomFilter;
                      }
View Full Code Here

  public Object evaluate(Object[] args) throws TypeErrorException {
    if(args.length==3){
      String value = args[0].toString();
      BigInteger bitVector = Helper.getInteger(args[1]);
      int bitVectorSize = Helper.getInteger(args[2]).intValue();
      BitVector bv = BitVector.getBitVector(bitVector, bitVectorSize);
      if(bv.get(Math.abs(value.hashCode() % bitVectorSize))){
        return Boolean.TRUE;
      } else {
        return Boolean.FALSE;
      }
    } else {
View Full Code Here

          if(!this.surelyBoundVariablesInServiceCall.contains(variable)){
            result += "((bound("+variable+") && ";
          }
          result +="<http://www.ifis.uni-luebeck.de/functions/BitVectorFilter>("+variable;
          result +=",";
          BitVector bv = new BitVector(FederatedQueryBitVectorJoinNonStandardSPARQL.bitvectorSize);
          while (bindingsIterator.hasNext()) {
            Bindings b = bindingsIterator.next();
            Literal literal = variable.getLiteral(b);
            if(literal!=null){
              oneOrMoreResults=true;
              bv.set(Math.abs(literal.toString().hashCode() % FederatedQueryBitVectorJoinNonStandardSPARQL.bitvectorSize));
            }
          }
          result += bv.getBigInteger().toString()+","+FederatedQueryBitVectorJoinNonStandardSPARQL.bitvectorSize+")";
          if(!this.surelyBoundVariablesInServiceCall.contains(variable)) {
            result += " ))||";
            result += " !bound("+variable+") ";
          }
          if(it.hasNext())
View Full Code Here

      final int numberDistinctPredicates,
      final int numberDistinctObjects,
      final boolean subjectDifferentFromPreviousTriple,
      final boolean predicateDifferentFromPreviousTriple,
      final boolean objectDifferentFromPreviousTriple) throws IOException {
    final BitVector bits = new BitVector(7);
    bits.set(0);
    final Triple lastValue = (lastKey == null) ? null : lastKey.getTriple();
    final Triple v = key.getTriple();
    final boolean mustWriteLazyLiteralOriginalContent = (v.getObject() instanceof LazyLiteralOriginalContent)
        && (lastValue == null || !(lastValue.getObject().equals(v
            .getObject())));
    if (mustWriteLazyLiteralOriginalContent) {
      bits.set(1);
    } else {
      bits.clear(1);
    }
    int value = 0;
    if (lastValue == null) {
      value = 3;
    } else {
      for (int i = 0; i < 3; i++) {
        if (v.getPos(map[this.order.ordinal()][i]).equals(
            lastValue.getPos(map[this.order.ordinal()][i]))) {
          value++;
        } else {
          break;
        }
      }
    }
    if (value <= 1) {
      bits.clear(2);
    } else {
      bits.set(2);
    }
    if (value % 2 == 0) {
      bits.clear(3);
    } else {
      bits.set(3);
    }

    if (subjectDifferentFromPreviousTriple) {
      bits.set(4);
    } else {
      bits.clear(4);
    }
    if (predicateDifferentFromPreviousTriple) {
      bits.set(5);
    } else {
      bits.clear(5);
    }
    if (objectDifferentFromPreviousTriple) {
      bits.set(6);
    } else {
      bits.clear(6);
    }

    int index = 7;

    for (int i = 0; i < 3; i++) {
      if (lastValue == null
          || !v.getPos(map[this.order.ordinal()][i]).equals(
              lastValue.getPos(map[this.order.ordinal()][i]))) {
        if (lastValue != null) {
          // determine difference
          final int diff = ((LazyLiteral) v.getPos(map[this.order
              .ordinal()][i])).getCode()
              - ((LazyLiteral) lastValue.getPos(map[this.order
                  .ordinal()][i])).getCode();
          index = LazyLiteralNodeDeSerializer
              .determineNumberOfBytesForRepresentation(diff,
                  bits, index, out);
        }
        for (int j = i + ((value == 3) ? 0 : 1); j < 3; j++) {
          // deal with the "rest"
          index = LazyLiteralNodeDeSerializer
              .determineNumberOfBytesForRepresentation(
                  ((LazyLiteral) v
                      .getPos(map[this.order.ordinal()][j]))
                      .getCode(), bits, index, out);
        }
        break;
      }
    }
    if (mustWriteLazyLiteralOriginalContent) {
      index = LazyLiteralNodeDeSerializer
          .determineNumberOfBytesForRepresentation(
              ((LazyLiteralOriginalContent) v.getObject())
                  .getCodeOriginalContent(), bits, index, out);
    }
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(fileName, bits, index,
            out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(numberOfTriples, bits,
            index, out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(
            numberDistinctSubjects, bits, index, out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(
            numberDistinctPredicates, bits, index, out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(numberDistinctObjects,
            bits, index, out);
    bits.writeWithoutSize(out);

    LazyLiteralNodeDeSerializer.writeIntWithoutLeadingZeros(fileName, out);
    LazyLiteralNodeDeSerializer.writeIntWithoutLeadingZeros(
        numberOfTriples, out);
    LazyLiteralNodeDeSerializer.writeIntWithoutLeadingZeros(
View Full Code Here

      final int numberDistinctObjects,
      final boolean subjectDifferentFromPreviousTriple,
      final boolean predicateDifferentFromPreviousTriple,
      final boolean objectDifferentFromPreviousTriple,
      final OutputStream out) throws IOException {
    final BitVector bits = new BitVector(7);
    bits.clear(0);
    if (subjectDifferentFromPreviousTriple) {
      bits.set(1);
    } else {
      bits.clear(1);
    }
    if (predicateDifferentFromPreviousTriple) {
      bits.set(2);
    } else {
      bits.clear(2);
    }
    if (objectDifferentFromPreviousTriple) {
      bits.set(3);
    } else {
      bits.clear(3);
    }
    int index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(fileName, bits, 3, out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(numberOfTriples, bits,
            index, out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(
            numberDistinctSubjects, bits, index, out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(
            numberDistinctPredicates, bits, index, out);
    index = LazyLiteralNodeDeSerializer
        .determineNumberOfBytesForRepresentation(numberDistinctObjects,
            bits, index, out);
    bits.writeWithoutSize(out);
    LazyLiteralNodeDeSerializer.writeIntWithoutLeadingZeros(fileName, out);
    LazyLiteralNodeDeSerializer.writeIntWithoutLeadingZeros(
        numberOfTriples, out);
    LazyLiteralNodeDeSerializer.writeIntWithoutLeadingZeros(
        numberDistinctSubjects, out);
View Full Code Here

  }

  public InnerNodeEntry getNextInnerNodeEntryStatistics(
      final TripleKey lastKey, final InputStream in) {
    try {
      BitVector bits;
      try {
        bits = new BitVector(in, 7);
      } catch (final EOFException e) {
        return null;
      }
      if (!bits.get(0)) {
        final boolean subjectDifferentFromPreviousTriple = bits.get(1);
        final boolean predicateDifferentFromPreviousTriple = bits
            .get(2);
        final boolean objectDifferentFromPreviousTriple = bits.get(3);
        int index = 3;
        final int filenameSize = LazyLiteralNodeDeSerializer
            .getIntSize(bits, index, in);
        index = (index + 2) % 8;
        final int numberOfTriplesSize = LazyLiteralNodeDeSerializer
            .getIntSize(bits, index, in);
        index = (index + 2) % 8;
        final int numberDistinctSubjectsSize = LazyLiteralNodeDeSerializer
            .getIntSize(bits, index, in);
        index = (index + 2) % 8;
        final int numberDistinctPredicatesSize = LazyLiteralNodeDeSerializer
            .getIntSize(bits, index, in);
        index = (index + 2) % 8;
        final int numberDistinctObjectsSize = LazyLiteralNodeDeSerializer
            .getIntSize(bits, index, in);
        index = (index + 2) % 8;
        final int fileName = LazyLiteralNodeDeSerializer.getInt(
            filenameSize + 1, in);
        final int numberOfTriples = LazyLiteralNodeDeSerializer.getInt(
            numberOfTriplesSize + 1, in);
        final int numberDistinctSubjects = LazyLiteralNodeDeSerializer
            .getInt(numberDistinctSubjectsSize + 1, in);
        final int numberDistinctPredicates = LazyLiteralNodeDeSerializer
            .getInt(numberDistinctPredicatesSize + 1, in);
        final int numberDistinctObjects = LazyLiteralNodeDeSerializer
            .getInt(numberDistinctObjectsSize + 1, in);
        return new InnerNodeEntry(null, fileName, numberOfTriples,
            numberDistinctSubjects, numberDistinctPredicates,
            numberDistinctObjects,
            subjectDifferentFromPreviousTriple,
            predicateDifferentFromPreviousTriple,
            objectDifferentFromPreviousTriple);
      }
      final Triple lastTriple = (lastKey == null) ? null : lastKey
          .getTriple();

      final boolean objectIsLazyLiteralOriginalContent = bits.get(1);
      int whereDifferentLiteral = 0;
      if (bits.get(2)) {
        whereDifferentLiteral = 2;
      }
      if (bits.get(3)) {
        whereDifferentLiteral += 1;
      }
      final boolean subjectDifferentFromPreviousTriple = bits.get(4);
      final boolean predicateDifferentFromPreviousTriple = bits.get(5);
      final boolean objectDifferentFromPreviousTriple = bits.get(6);

      final int numberDifferent = (whereDifferentLiteral == 3) ? 3
          : 3 - whereDifferentLiteral;
      final int[] numberBytesForInt = new int[numberDifferent];
      int index = 7;
View Full Code Here

  @Override
  public void writeInnerNodeEntry(final int fileName, final TripleKey key,
      final OutputStream out, final TripleKey lastKey)
      throws IOException {
    final BitVector bits = new BitVector(7);
    bits.set(0);
    final Triple lastValue = (lastKey == null) ? null : lastKey.getTriple();
    final Triple v = key.getTriple();
    final boolean mustWriteLazyLiteralOriginalContent = (v.getObject() instanceof LazyLiteralOriginalContent)
        && (lastValue == null || !(lastValue.getObject().equals(v
            .getObject())));
    if (mustWriteLazyLiteralOriginalContent) {
      bits.set(1);
    } else {
      bits.clear(1);
    }
    int value = 0;
    if (lastValue == null) {
      value = 3;
    } else {
      for (int i = 0; i < 3; i++) {
        if (lastValue != null
            && v.getPos(map[this.order.ordinal()][i]).equals(
                lastValue.getPos(map[this.order.ordinal()][i]))) {
          value++;
        } else {
          break;
        }
      }
    }
    if (value <= 1) {
      bits.clear(2);
    } else {
      bits.set(2);
    }
    if (value % 2 == 0) {
      bits.clear(3);
    } else {
      bits.set(3);
    }

    int index = 3;

    for (int i = 0; i < 3; i++) {
      if (lastValue == null
          || !v.getPos(map[this.order.ordinal()][i]).equals(
              lastValue.getPos(map[this.order.ordinal()][i]))) {
        if (lastValue != null) {
          // determine difference
          final int diff = ((LazyLiteral) v.getPos(map[this.order
              .ordinal()][i])).getCode()
              - ((LazyLiteral) lastValue.getPos(map[this.order
                  .ordinal()][i])).getCode();
          index = determineNumberOfBytesForRepresentation(diff, bits, index, out);
        }
        for (int j = i + ((value == 3) ? 0 : 1); j < 3; j++) {
          // deal with the "rest"
          index = determineNumberOfBytesForRepresentation(
              ((LazyLiteral) v.getPos(map[this.order.ordinal()][j]))
                  .getCode(), bits, index, out);
        }
        break;
      }
    }
    if (mustWriteLazyLiteralOriginalContent) {
      index = determineNumberOfBytesForRepresentation(
          ((LazyLiteralOriginalContent) v.getObject())
              .getCodeOriginalContent(), bits, index, out);
    }
    index = determineNumberOfBytesForRepresentation(fileName, bits, index,
        out);
    bits.writeWithoutSize(out);
    writeIntWithoutLeadingZeros(fileName, out);

    if (mustWriteLazyLiteralOriginalContent) {
      writeIntWithoutLeadingZeros(((LazyLiteralOriginalContent) v
          .getObject()).getCodeOriginalContent(), out);
View Full Code Here

    }
  }

  @Override
  public void writeInnerNodeEntry(final int fileName, final OutputStream out) throws IOException {
    final BitVector bits = new BitVector(7);
    bits.clear(0);
    determineNumberOfBytesForRepresentation(fileName, bits, 0, out);
    bits.writeWithoutSize(out);
    writeIntWithoutLeadingZeros(fileName, out);
  }
View Full Code Here

TOP

Related Classes of lupos.misc.BitVector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.