View Javadoc
1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.commons.rdf.jena;
19  
20  import static org.junit.Assert.assertEquals;
21  import static org.junit.Assert.assertSame;
22  import static org.junit.Assert.assertTrue;
23  
24  import org.apache.commons.rdf.api.AbstractRDFTest;
25  import org.apache.commons.rdf.api.BlankNode;
26  import org.apache.commons.rdf.api.Dataset;
27  import org.apache.commons.rdf.api.IRI;
28  import org.apache.commons.rdf.api.Quad;
29  import org.apache.commons.rdf.simple.SimpleRDF;
30  import org.apache.jena.rdf.model.Model;
31  import org.apache.jena.rdf.model.Property;
32  import org.apache.jena.rdf.model.RDFNode;
33  import org.apache.jena.rdf.model.Resource;
34  import org.apache.jena.rdf.model.Statement;
35  import org.apache.jena.sparql.core.DatasetGraph;
36  import org.apache.jena.sparql.core.DatasetGraphFactory;
37  import org.junit.Test;
38  
39  public class JenaRDFTest extends AbstractRDFTest {
40  
41      @Override
42      public JenaRDF createFactory() {
43          return new JenaRDF();
44      }
45  
46      @Test
47      public void roundTripDatasetGraphShouldMaintainIdentity() {
48          DatasetGraph dsg = DatasetGraphFactory.create();
49          JenaDataset dataset = createFactory().asDataset(dsg);
50          DatasetGraph roundTrippedDSG = createFactory().asJenaDatasetGraph(dataset);
51          assertSame("Should have gotten the same DatasetGraph object from a round trip!", dsg, roundTrippedDSG);
52      }
53  
54      @Test
55      public void testSimpleDatasetConversion() {
56          SimpleRDF factory = new SimpleRDF();
57          Dataset ds = factory.createDataset();
58          final BlankNode subject = factory.createBlankNode("b1");
59          final IRI predicate = factory.createIRI("http://example.com/pred");
60          final IRI object = factory.createIRI("http://example.com/obj");
61          final IRI graph = factory.createIRI("http://example.com/graph");
62          final Quad quad = factory.createQuad(graph, subject, predicate, object);
63          ds.add(quad);
64          JenaRDF jenaFactory = createFactory();
65          org.apache.jena.query.Dataset jenaDS = jenaFactory.asJenaDataset(ds);
66          assertEquals("Should have found one named graph!", 1, jenaDS.asDatasetGraph().size());
67          Model namedModel = jenaDS.getNamedModel(graph.getIRIString());
68          assertEquals("Should have found one triple in named graph!", 1, namedModel.size());
69          Statement statement = namedModel.listStatements().next();
70          Resource jenaSubject = statement.getSubject();
71          Property jenaPredicate = statement.getPredicate();
72          RDFNode jenaObject = statement.getObject();
73          assertTrue(jenaSubject.isAnon());
74          assertTrue(jenaObject.isResource());
75          assertEquals(subject.ntriplesString(), "_:" + jenaSubject.getId().getLabelString());
76          assertEquals(predicate.getIRIString(), jenaPredicate.getURI());
77          assertEquals(object.getIRIString(), jenaObject.asResource().getURI());
78      }
79  
80  }