[ 
https://issues.apache.org/jira/browse/COMMONSRDF-35?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15553819#comment-15553819
 ] 

ASF GitHub Bot commented on COMMONSRDF-35:
------------------------------------------

Github user ansell commented on a diff in the pull request:

    https://github.com/apache/incubator-commonsrdf/pull/24#discussion_r82312854
  
    --- Diff: 
rdf4j/src/main/java/org/apache/commons/rdf/rdf4j/RDF4JTermFactory.java ---
    @@ -0,0 +1,603 @@
    +/**
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements. See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership. The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +package org.apache.commons.rdf.rdf4j;
    +
    +import java.util.Objects;
    +import java.util.Set;
    +import java.util.UUID;
    +
    +// To avoid confusion, avoid importing
    +// classes that are in both
    +// commons.rdf and openrdf.model (e.g. IRI, Literal)
    +import org.apache.commons.rdf.api.BlankNode;
    +import org.apache.commons.rdf.api.BlankNodeOrIRI;
    +import org.apache.commons.rdf.api.Dataset;
    +import org.apache.commons.rdf.api.Graph;
    +import org.apache.commons.rdf.api.Quad;
    +import org.apache.commons.rdf.api.RDFTerm;
    +import org.apache.commons.rdf.api.RDFTermFactory;
    +import org.apache.commons.rdf.api.Triple;
    +import org.apache.commons.rdf.api.TripleLike;
    +import org.apache.commons.rdf.rdf4j.impl.InternalRDF4JFactory;
    +import org.eclipse.rdf4j.model.BNode;
    +import org.eclipse.rdf4j.model.Model;
    +import org.eclipse.rdf4j.model.Resource;
    +import org.eclipse.rdf4j.model.Statement;
    +import org.eclipse.rdf4j.model.Value;
    +import org.eclipse.rdf4j.model.ValueFactory;
    +import org.eclipse.rdf4j.model.impl.LinkedHashModel;
    +import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
    +import org.eclipse.rdf4j.repository.Repository;
    +import org.eclipse.rdf4j.repository.RepositoryConnection;
    +import org.eclipse.rdf4j.repository.sail.SailRepository;
    +import org.eclipse.rdf4j.sail.Sail;
    +import org.eclipse.rdf4j.sail.memory.MemoryStore;
    +
    +/**
    + * RDF4J implementation of RDFTermFactory.
    + * <p>
    + * The {@link #RDF4JTermFactory()} constructor uses a {@link 
SimpleValueFactory}
    + * to create corresponding RDF4J {@link Value} instances. Alternatively, 
this
    + * factory can be constructed with a different {@link ValueFactory} using
    + * {@link #RDF4JTermFactory(ValueFactory)}.
    + * <p>
    + * {@link #asRDFTerm(Value)} can be used to convert any RDF4J {@link 
Value} to
    + * an RDFTerm. Note that adapted {@link BNode}s are considered equal if 
they are
    + * converted with the same {@link RDF4JTermFactory} instance and have the 
same
    + * {@link BNode#getID()}.
    + * <p>
    + * {@link #createGraph()} creates a new Graph backed by {@link 
LinkedHashModel}.
    + * To use other models, see {@link #asRDFTermGraph(Model)}.
    + * <p>
    + * To adapt a RDF4J {@link Repository} as a {@link Dataset} or {@link 
Graph},
    + * use {@link #asRDFTermDataset(Repository)} or
    + * {@link #asRDFTermGraph(Repository)}.
    + * <p>
    + * {@link #asTriple(Statement)} can be used to convert a RDF4J {@link 
Statement}
    + * to a Commons RDF {@link Triple}, and equivalent {@link 
#asQuad(Statement)} to
    + * convert a {@link Quad}.
    + * <p>
    + * To convert any {@link Triple} or {@link Quad} to to RDF4J {@link 
Statement},
    + * use {@link #asStatement(TripleLike)}. This recognises previously 
converted
    + * {@link RDF4JTriple}s and {@link RDF4JQuad}s without re-converting their
    + * {@link RDF4JTripleLike#asStatement()}.
    + * <p>
    + * Likewise, {@link #asValue(RDFTerm)} can be used to convert any Commons 
RDF
    + * {@link RDFTerm} to a corresponding RDF4J {@link Value}. This recognises
    + * previously converted {@link RDF4JTerm}s without re-converting their
    + * {@link RDF4JTerm#asValue()}.
    + * <p>
    + * For the purpose of {@link BlankNode} equivalence, this factory contains 
an
    + * internal {@link UUID} salt that is used by adapter methods like
    + * {@link #asQuad(Statement)}, {@link #asTriple(Statement)},
    + * {@link #asRDFTerm(Value)} as well as {@link #createBlankNode(String)}. 
As
    + * RDF4J {@link BNode} instances from multiple repositories or models may 
have
    + * the same {@link BNode#getID()}, converting them with the above methods 
might
    + * cause accidental {@link BlankNode} equivalence. Note that the {@link 
Graph}
    + * and {@link Dataset} adapter methods like
    + * {@link #asRDFTermDataset(Repository)} and {@link #asRDFTermGraph(Model)}
    + * therefore uses a unique {@link RDF4JTermFactory} internally.
    + *
    + */
    +public final class RDF4JTermFactory implements RDFTermFactory {
    --- End diff --
    
    This shouldn't be final by default. This will limit reuse without any 
particular reason. It also makes some of the extension methods that seem to 
allow other implementations of this seem a little strange.


> rdf4j integration
> -----------------
>
>                 Key: COMMONSRDF-35
>                 URL: https://issues.apache.org/jira/browse/COMMONSRDF-35
>             Project: Apache Commons RDF
>          Issue Type: New Feature
>            Reporter: Stian Soiland-Reyes
>            Assignee: Stian Soiland-Reyes
>              Labels: integration, rdf4j, sesame
>             Fix For: 0.3.0
>
>
> Add a new rdf4j module with implementation for Eclipse rdf4j
> See https://github.com/apache/incubator-commonsrdf/tree/rdf4j/rdf4j
> A legacy sesame branch could then be added by mainly copy/paste and change 
> the import



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to