The following document contains the results of PMD's CPD 5.3.2.

Duplications

File Project Line
eu/fbk/rdfpro/Transformer.java rdfpro-core 726
eu/fbk/rdfpro/util/Statements.java rdfpro-core 1455
            this.include = include;

            this.matchedURINamespaces = new HashSet<>();
            this.matchedURIs = new HashSet<>();
            this.matchedBNodes = new HashSet<>();
            this.matchedLanguages = new HashSet<>();
            this.matchedDatatypeURIs = new HashSet<>();
            this.matchedDatatypeNamespaces = new HashSet<>();
            this.matchedLiterals = new HashSet<>();

            boolean matchAnyURI = false;
            boolean matchAnyBNode = false;
            boolean matchAnyPlainLiteral = false;
            boolean matchAnyLangLiteral = false;
            boolean matchAnyTypedLiteral = false;

            for (final String expression : matchExpressions) {
                if ("<*>".equals(expression)) {
                    matchAnyURI = true;
                } else if ("_:*".equals(expression)) {
                    matchAnyBNode = true;
                } else if ("*".equals(expression)) {
                    matchAnyPlainLiteral = true;
                } else if ("*@*".equals(expression)) {
                    matchAnyLangLiteral = true;
                } else if ("*^^*".equals(expression)) {
                    matchAnyTypedLiteral = true;
                } else if (expression.startsWith("*@")) {
                    this.matchedLanguages.add(expression.substring(2));
                } else if (expression.startsWith("*^^")) {
                    if (expression.endsWith(":*")) {
                        this.matchedDatatypeNamespaces.add(Namespaces.DEFAULT.uriFor(expression
                                .substring(3, expression.length() - 2)));
                    } else {
                        this.matchedDatatypeURIs.add((URI) Statements.parseValue(
                                expression.substring(3), Namespaces.DEFAULT));
                    }
                } else if (expression.endsWith(":*")) {
                    this.matchedURINamespaces.add(Namespaces.DEFAULT.uriFor(expression.substring(
                            0, expression.length() - 2)));

                } else if (expression.endsWith("*>")) {
                    this.matchedURINamespaces
                    .add(expression.substring(1, expression.length() - 2));
                } else {
                    final Value value = Statements.parseValue(expression, Namespaces.DEFAULT);
                    if (value instanceof URI) {
                        this.matchedURIs.add((URI) value);
                    } else if (value instanceof BNode) {
                        this.matchedBNodes.add((BNode) value);
                    } else if (value instanceof Literal) {
                        this.matchedLiterals.add((Literal) value);
                    }

                }
            }

            this.matchAnyURI = matchAnyURI;
            this.matchAnyBNode = matchAnyBNode;
            this.matchAnyPlainLiteral = matchAnyPlainLiteral;
            this.matchAnyLangLiteral = matchAnyLangLiteral;
            this.matchAnyTypedLiteral = matchAnyTypedLiteral;
        }
File Project Line
eu/fbk/rdfpro/Transformer.java rdfpro-core 797
eu/fbk/rdfpro/util/Statements.java rdfpro-core 1524
        private boolean match(final Value value) {
            if (value instanceof URI) {
                return this.matchAnyURI //
                        || contains(this.matchedURIs, value)
                        || containsNs(this.matchedURINamespaces, (URI) value);
            } else if (value instanceof Literal) {
                final Literal lit = (Literal) value;
                final String lang = lit.getLanguage();
                final URI dt = lit.getDatatype();
                return lang == null
                        && (dt == null || XMLSchema.STRING.equals(dt))
                        && this.matchAnyPlainLiteral //
                        || lang != null //
                        && (this.matchAnyLangLiteral || contains(this.matchedLanguages, lang)) //
                        || dt != null //
                        && (this.matchAnyTypedLiteral || contains(this.matchedDatatypeURIs, dt) || containsNs(
                                this.matchedDatatypeNamespaces, dt)) //
                                || contains(this.matchedLiterals, lit);
            } else {
                return this.matchAnyBNode //
                        || contains(this.matchedBNodes, value);
            }
        }

        private static boolean contains(final Set<?> set, final Object value) {
            return !set.isEmpty() && set.contains(value);
        }

        private static boolean containsNs(final Set<String> set, final URI uri) {
            if (set.isEmpty()) {
                return false;
            }
            if (set.contains(uri.getNamespace())) {
                return true; // exact lookup
            }
            final String uriString = uri.stringValue();
            for (final String elem : set) {
                if (uriString.startsWith(elem)) {
                    return true; // prefix match
                }
            }
            return false;
        }

    }

}
File Project Line
eu/fbk/rdfpro/GroovyProcessor.java rdfpro-groovy 959
eu/fbk/rdfpro/SparqlFunctions.java rdfpro-groovy 435
            if (object instanceof Long) {
                return new GroovyLiteral(object.toString(), XMLSchema.LONG);
            } else if (object instanceof Integer) {
                return new GroovyLiteral(object.toString(), XMLSchema.INT);
            } else if (object instanceof Short) {
                return new GroovyLiteral(object.toString(), XMLSchema.SHORT);
            } else if (object instanceof Byte) {
                return new GroovyLiteral(object.toString(), XMLSchema.BYTE);
            } else if (object instanceof Double) {
                return new GroovyLiteral(object.toString(), XMLSchema.DOUBLE);
            } else if (object instanceof Float) {
                return new GroovyLiteral(object.toString(), XMLSchema.FLOAT);
            } else if (object instanceof Boolean) {
                return new GroovyLiteral(object.toString(), XMLSchema.BOOLEAN);
            } else if (object instanceof XMLGregorianCalendar) {
                final XMLGregorianCalendar c = (XMLGregorianCalendar) object;
                return new GroovyLiteral(c.toXMLFormat(), XMLDatatypeUtil.qnameToURI(c
                        .getXMLSchemaType()));
            } else if (object instanceof Date) {
                final GregorianCalendar c = new GregorianCalendar();
                c.setTime((Date) object);
                final XMLGregorianCalendar xc = DATATYPE_FACTORY.newXMLGregorianCalendar(c);
                return new GroovyLiteral(xc.toXMLFormat(), XMLDatatypeUtil.qnameToURI(xc
                        .getXMLSchemaType()));
            } else if (object instanceof CharSequence) {
                return new GroovyLiteral(object.toString(), XMLSchema.STRING);
            } else {
File Project Line
eu/fbk/rdfpro/util/IO.java rdfpro-core 805
eu/fbk/rdfpro/util/IO.java rdfpro-core 1414
            System.arraycopy(this.buffer, this.pos, cbuf, off, n);
            this.pos += n;
            return n;
        }

        @Override
        public long skip(final long n) throws IOException {
            if (n <= 0) {
                checkNotClosed();
                return 0;
            }
            int available = this.count - this.pos;
            if (available == 0) {
                fill();
                available = this.count;
            }
            final long skipped = available < n ? available : n;
            this.pos += skipped;
            return skipped;
        }

        @Override
        public void reset() throws IOException {
            throw new IOException("Mark not supported");
        }

        @Override
        public void mark(final int readlimit) {
        }

        @Override
        public boolean markSupported() {
            return false;
        }

        @Override
        public void close() throws IOException {
            synchronized (this.buffers) {
                if (this.closed) {
                    return;
                }
                this.closed = true;
            }
            this.count = this.pos;
            this.buffers.clear();
            this.fetcher.close();
            this.fetcher = null;
        }

        private void fill() throws IOException {
            checkNotClosed();
            if (this.buffer != null) {
                this.buffer = null;
                this.pos = 0;
                this.count = 0;
            }
            if (this.index == this.buffers.size()) {
                this.fetcher.fetch(this.buffers);
                this.index = 0;
            }
            if (this.index < this.buffers.size()) {
                final CharBuffer cb = this.buffers.get(this.index++);
File Project Line
eu/fbk/rdfpro/util/Scripting.java rdfpro-core 267
eu/fbk/rdfpro/GroovyProcessor.java rdfpro-groovy 344
                    } while (c != d || script.charAt(i - 1) == '\\');
                    ++i;

                } else {
                    builder.append(c);
                    ++i;
                }
            }
        } catch (final Exception ex) {
            throw new IllegalArgumentException("Illegal URI escaping near offset " + i, ex);
        }

        return builder.toString();
    }

    // Following code can be factored in Statements
    // rewriteRDFTerms(String, Function<Value, String>)

    private static int parseURI(final String string, int i) {
        final int len = string.length();
        if (string.charAt(i) != '<') {
            return -1;
        }
        for (++i; i < len; ++i) {
            final char c = string.charAt(i);
            if (c == '<' || c == '\"' || c == '{' || c == '}' || c == '|' || c == '^' || c == '`'
                    || c == '\\' || c == ' ') {
                return -1;
            }
            if (c == '>') {
                return i + 1;
            }
        }
        return -1;
    }

    private static int parseQName(final String string, int i) {
        final int len = string.length();
        char c;
        if (!isPN_CHARS_BASE(string.charAt(i))) {
            return -1;
        }
        for (; i < len; ++i) {
            c = string.charAt(i);
            if (!isPN_CHARS(c) && c != '.') {
                break;
            }
        }
        if (string.charAt(i - 1) == '.' || string.charAt(i) != ':' || i == len - 1) {
File Project Line
eu/fbk/rdfpro/ProcessorRDFS.java rdfpro-core 58
eu/fbk/rdfpro/util/HashValueFactory.java rdfpro-core 64
                RDF.LI, RDF.LIST, RDF.FIRST, RDF.REST, RDF.NIL, RDF.LANGSTRING, RDFS.RESOURCE,
                RDFS.LITERAL, RDFS.CLASS, RDFS.SUBCLASSOF, RDFS.SUBPROPERTYOF, RDFS.DOMAIN,
                RDFS.RANGE, RDFS.COMMENT, RDFS.LABEL, RDFS.DATATYPE, RDFS.CONTAINER, RDFS.MEMBER,
                RDFS.ISDEFINEDBY, RDFS.SEEALSO, RDFS.CONTAINERMEMBERSHIPPROPERTY, OWL.CLASS,
                OWL.INDIVIDUAL, OWL.THING, OWL.NOTHING, OWL.EQUIVALENTCLASS,
                OWL.EQUIVALENTPROPERTY, OWL.SAMEAS, OWL.DIFFERENTFROM, OWL.ALLDIFFERENT,
                OWL.DISTINCTMEMBERS, OWL.OBJECTPROPERTY, OWL.DATATYPEPROPERTY, OWL.INVERSEOF,
                OWL.TRANSITIVEPROPERTY, OWL.SYMMETRICPROPERTY, OWL.FUNCTIONALPROPERTY,
                OWL.INVERSEFUNCTIONALPROPERTY, OWL.RESTRICTION, OWL.ONPROPERTY, OWL.ALLVALUESFROM,
                OWL.SOMEVALUESFROM, OWL.MINCARDINALITY, OWL.MAXCARDINALITY, OWL.CARDINALITY,
                OWL.ONTOLOGY, OWL.IMPORTS, OWL.INTERSECTIONOF, OWL.VERSIONINFO, OWL.VERSIONIRI,
                OWL.PRIORVERSION, OWL.BACKWARDCOMPATIBLEWITH, OWL.INCOMPATIBLEWITH,
                OWL.DEPRECATEDCLASS, OWL.DEPRECATEDPROPERTY, OWL.ANNOTATIONPROPERTY,
                OWL.ONTOLOGYPROPERTY, OWL.ONEOF, OWL.HASVALUE, OWL.DISJOINTWITH, OWL.UNIONOF,
                OWL.COMPLEMENTOF, XMLSchema.DURATION, XMLSchema.DATETIME,
File Project Line
eu/fbk/rdfpro/util/StatementDeduplicator.java rdfpro-core 278
eu/fbk/rdfpro/util/StatementDeduplicator.java rdfpro-core 346
                    + (ctx == null ? 0 : ctx.hashCode());
            hash = hash != 0 ? hash : 1;

            synchronized (this) {
                int hashIndex = (hash & 0x7FFFFFFF) % this.hashes.length;
                while (true) {
                    if (this.hashes[hashIndex] == 0) {
                        if (add) {
                            final int valueIndex = hashIndex << 2;
                            this.hashes[hashIndex] = hash;
                            this.values[valueIndex] = subj;
                            this.values[valueIndex + 1] = pred;
                            this.values[valueIndex + 2] = obj;
                            this.values[valueIndex + 3] = ctx;
                            ++this.size;
                            if (this.size >= (this.hashes.length << 1) / 3) { // fill factor 0.66
                                final Object[] pair = rehash(this.hashes, this.values);
                                this.hashes = (int[]) pair[0];
                                this.values = (Value[]) pair[1];
                            }
                        }
                        return true;

                    } else if (this.hashes[hashIndex] == hash) {
                        final int valueIndex = hashIndex << 2;
                        if (subj.equals(this.values[valueIndex])
File Project Line
eu/fbk/rdfpro/util/Scripting.java rdfpro-core 332
eu/fbk/rdfpro/GroovyProcessor.java rdfpro-groovy 190
    }

    private static boolean isPN_CHARS(final int c) {
        return isPN_CHARS_U(c) || ASCIIUtil.isNumber(c) || c == 45 || c == 183 || c >= 768
                && c <= 879 || c >= 8255 && c <= 8256;
    }

    private static boolean isPN_CHARS_U(final int c) {
        return isPN_CHARS_BASE(c) || c == 95;
    }

    private static boolean isPN_CHARS_BASE(final int c) {
        return ASCIIUtil.isLetter(c) || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248
                && c <= 767 || c >= 880 && c <= 893 || c >= 895 && c <= 8191 || c >= 8204
                && c <= 8205 || c >= 8304 && c <= 8591 || c >= 11264 && c <= 12271 || c >= 12289
                && c <= 55295 || c >= 63744 && c <= 64975 || c >= 65008 && c <= 65533
                || c >= 65536 && c <= 983039;
    }
File Project Line
eu/fbk/rdfpro/Transformer.java rdfpro-core 146
eu/fbk/rdfpro/Transformer.java rdfpro-core 231
        Objects.requireNonNull(predicate);

        final String comp = components.trim().toLowerCase();
        final boolean[] flags = new boolean[4];
        for (int i = 0; i < comp.length(); ++i) {
            final char c = comp.charAt(i);
            final int index = c == 's' ? 0 : c == 'p' ? 1 : c == 'o' ? 2
                    : c == 'c' || c == 'g' ? 3 : -1;
            if (index < 0 || flags[index]) {
                throw new IllegalArgumentException("Invalid components '" + components + "'");
            }
            flags[index] = true;
        }

        if (!flags[0] && !flags[1] && !flags[2] && !flags[3]) {
            return IDENTITY;
        }

        return new Transformer() {

            private final boolean skipSubj = !flags[0];
File Project Line
eu/fbk/rdfpro/Transformer.java rdfpro-core 577
eu/fbk/rdfpro/util/Statements.java rdfpro-core 1365
            if (ch0 == '+' || ch0 == '-' || ch0 == '=') {
                action = ch0;
                if (token.length() == 1) {
                    throw new IllegalArgumentException("No component(s) specified in '" + spec
                            + "'");
                }
                components.clear();
                for (int i = 1; i < token.length(); ++i) {
                    final char ch1 = Character.toLowerCase(token.charAt(i));
                    final int component = ch1 == 's' ? 0 : ch1 == 'p' ? 1 : ch1 == 'o' ? 2
                            : ch1 == 'c' ? 3 : -1;
                    if (component < 0) {
                        throw new IllegalArgumentException("Invalid component '" + ch1 + "' in '"
                                + spec + "'");
                    }
                    components.add(component);
                }
            } else if (action == 0) {
                throw new IllegalArgumentException("Missing selector in '" + spec + "'");
            } else if (action == '=') {
File Project Line
eu/fbk/rdfpro/util/IO.java rdfpro-core 1250
eu/fbk/rdfpro/util/IO.java rdfpro-core 1846
                return CharBuffer.allocate(2 * BUFFER_SIZE);
            }

            public void open() {
                synchronized (this) {
                    if (this.references < 0) {
                        throw new IllegalStateException("Stream has been closed");
                    }
                    ++this.references;
                }
            }

            public void close() throws IOException {
                synchronized (this) {
                    --this.references;
                    if (this.references != 0) {
                        return;
                    }
                    this.references = -1; // prevent further open() to occur
                }
                while (true) {
                    try {
                        this.queue.put(EOF);
                        break;
                    } catch (final InterruptedException ex) {
                        // ignore
                    }
                }
                while (true) {
                    try {
                        this.latch.await();
                        break;
                    } catch (final InterruptedException ex) {
                        // ignore
                    }
                }
                synchronized (EMITTERS) {
                    EMITTERS.remove(this.writer);
File Project Line
eu/fbk/rdfpro/RuleEngineImpl.java rdfpro-core 432
eu/fbk/rdfpro/RuleEngineImpl.java rdfpro-core 723
                        db.addExpr(rule.getWhereExpr());
                    }
                } else {
                    for (final StatementPattern ip : rule.getInsertPatterns()) {
                        final Value subj = ip.getSubjectVar().getValue();
                        final Value pred = ip.getPredicateVar().getValue();
                        final Value obj = ip.getObjectVar().getValue();
                        final Value ctx = ip.getContextVar() == null ? null : ip.getContextVar()
                                .getValue();
                        if (subj instanceof Resource && pred instanceof URI
                                && (ctx == null || ctx instanceof Resource)) {
                            axioms.add(Statements.VALUE_FACTORY.createStatement((Resource) subj,
                                    (URI) pred, obj, (Resource) ctx));
                        }
                    }
                }
            }
File Project Line
eu/fbk/rdfpro/util/Buffer.java rdfpro-core 225
eu/fbk/rdfpro/util/Buffer.java rdfpro-core 524
                if (temp >= 0) {
                    if (temp == Integer.MAX_VALUE) {
                        temp = b & 0xFF;
                    } else {
                        final char ch = (char) (temp << 8 | b & 0xFF);
                        if (strIndex == strLength || s.charAt(strIndex++) != ch) {
                            return false;
                        }
                        temp = -1;
                    }
                } else if (b == 0) {
                    temp = Integer.MAX_VALUE;
                } else {
                    final char ch = (char) b;
                    if (strIndex == strLength || s.charAt(strIndex++) != ch) {
                        return false;
                    }
                }
            }

            return strIndex == strLength;
        }
File Project Line
eu/fbk/rdfpro/util/IO.java rdfpro-core 925
eu/fbk/rdfpro/util/IO.java rdfpro-core 1534
                return CharBuffer.allocate(BUFFER_SIZE);
            }

            public void open() {
                synchronized (this) {
                    if (this.references < 0) {
                        throw new IllegalStateException("Reader has been closed");
                    }
                    ++this.references;
                }
            }

            public void close() throws IOException {
                synchronized (this) {
                    --this.references;
                    if (this.references != 0) {
                        return;
                    }
                    this.references = -1; // prevent further open() to occur
                }
                this.queue.clear(); // nobody will use queued buffers
                while (true) {
                    try {
                        this.latch.await();
                        break;
                    } catch (final InterruptedException ex) {
                        // ignore
                    }
                }
                synchronized (FETCHERS) {
                    FETCHERS.remove(this.reader);
File Project Line
eu/fbk/rdfpro/util/Statements.java rdfpro-core 787
eu/fbk/rdfpro/tql/TQL.java rdfpro-tql 61
    private static boolean isPN_CHARS_BASE(final int c) { // ok
        return isLetter(c) || c >= 0x00C0 && c <= 0x00D6 || c >= 0x00D8 && c <= 0x00F6
                || c >= 0x00F8 && c <= 0x02FF || c >= 0x0370 && c <= 0x037D || c >= 0x037F
                && c <= 0x1FFF || c >= 0x200C && c <= 0x200D || c >= 0x2070 && c <= 0x218F
                || c >= 0x2C00 && c <= 0x2FEF || c >= 0x3001 && c <= 0xD7FF || c >= 0xF900
                && c <= 0xFDCF || c >= 0xFDF0 && c <= 0xFFFD || c >= 0x10000 && c <= 0xEFFFF;
    }
File Project Line
eu/fbk/rdfpro/util/QuadModelRepositoryAdapter.java rdfpro-core 127
eu/fbk/rdfpro/util/QuadModelSailAdapter.java rdfpro-core 151
        } catch (final RepositoryException ex) {
            throw new ModelException(ex);
        }
    }

    @Override
    protected int doSizeEstimate(@Nullable final Resource subj, @Nullable final URI pred,
            @Nullable final Value obj, @Nullable final Resource ctx) {
        return Integer.MAX_VALUE; // no way to efficiently estimate cardinality
    }

    @Override
    protected Iterator<Statement> doIterator(@Nullable final Resource subj,
            @Nullable final URI pred, @Nullable final Value obj, final Resource[] ctxs) {
        try {
            return Iterators.forIteration(this.connection.getStatements(subj, pred, obj, false,
                    ctxs));
        } catch (final RepositoryException ex) {
File Project Line
eu/fbk/rdfpro/util/Scripting.java rdfpro-core 315
eu/fbk/rdfpro/GroovyProcessor.java rdfpro-groovy 397
        if (string.charAt(i - 1) == '.' || string.charAt(i) != ':' || i == len - 1) {
            return -1;
        }
        c = string.charAt(++i);
        if (!isPN_CHARS_U(c) && c != ':' && c != '%' && !Character.isDigit(c)) {
            return -1;
        }
        for (; i < len; ++i) {
            c = string.charAt(i);
            if (!isPN_CHARS(c) && c != '.' && c != ':' && c != '%') {
                break;
            }
        }
        if (string.charAt(i - 1) == '.') {
            return -1;
        }
        return i;
    }

    private static boolean isPN_CHARS(final int c) {
File Project Line
eu/fbk/rdfpro/util/IO.java rdfpro-core 1521
eu/fbk/rdfpro/util/IO.java rdfpro-core 1833
                    if (this.buffers.size() < BUFFER_NUM_READ + Environment.getCores() + 1) {
                        buffer.clear();
                        this.buffers.add(buffer);
                    }
                }
            }

            private ByteBuffer allocate() {
                synchronized (this.buffers) {
                    if (!this.buffers.isEmpty()) {
                        return this.buffers.remove(this.buffers.size() - 1);
                    }
                }
                return ByteBuffer.allocate(2 * BUFFER_SIZE);
            }

            public void open() {
                synchronized (this) {
                    if (this.references < 0) {
                        throw new IllegalStateException("Reader has been closed");
File Project Line
eu/fbk/rdfpro/util/StatementDeduplicator.java rdfpro-core 444
eu/fbk/rdfpro/util/StatementDeduplicator.java rdfpro-core 501
        PartialIdentityDeduplicator(final int numCachedStatements) {
            this.hashes = new int[numCachedStatements];
            this.values = new Value[numCachedStatements * 4];
            this.locks = new Object[LOCK_NUM];
            for (int i = 0; i < LOCK_NUM; ++i) {
                this.locks[i] = new Object();
            }
        }

        @Override
        boolean total() {
            return false;
        }

        @Override
        boolean process(final Resource subj, final URI pred, final Value obj,
                @Nullable final Resource ctx, final boolean add) {

            int hash = 6661 * System.identityHashCode(subj) + 961 * System.identityHashCode(pred)

Back to top

Last Published: 2022/02/04.

Reflow Maven skin by Andrius Velykis.

Data and Knowledge Management tools