org.trellisldp.triplestore.TriplestoreUtilsTest.java Source code

Java tutorial

Introduction

Here is the source code for org.trellisldp.triplestore.TriplestoreUtilsTest.java

Source

/*
 * Licensed 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.trellisldp.triplestore;

import static org.apache.jena.rdf.model.ResourceFactory.createProperty;
import static org.apache.jena.rdf.model.ResourceFactory.createResource;
import static org.junit.jupiter.api.Assertions.*;
import static org.trellisldp.vocabulary.RDF.type;
import static org.trellisldp.vocabulary.Trellis.PreferUserManaged;

import org.apache.commons.rdf.api.Dataset;
import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.Literal;
import org.apache.commons.rdf.api.RDF;
import org.apache.commons.rdf.jena.JenaRDF;
import org.apache.commons.rdf.simple.SimpleRDF;
import org.apache.jena.rdf.model.Property;
import org.apache.jena.rdf.model.Resource;
import org.junit.jupiter.api.Test;
import org.trellisldp.vocabulary.AS;
import org.trellisldp.vocabulary.DC;
import org.trellisldp.vocabulary.SKOS;

/**
 * ResourceService tests.
 */
public class TriplestoreUtilsTest {

    private static final RDF simpleRdf = new SimpleRDF();
    private static final RDF jenaRdf = new JenaRDF();

    private static final IRI subject = simpleRdf.createIRI("http://example.com");
    private static final Literal literal = simpleRdf.createLiteral("title");

    @Test
    public void testDatasetNoConversion() {
        final Dataset dataset = jenaRdf.createDataset();

        dataset.add(jenaRdf.createQuad(PreferUserManaged, subject, SKOS.prefLabel, literal));
        dataset.add(jenaRdf.createQuad(PreferUserManaged, subject, type, SKOS.Concept));
        dataset.add(jenaRdf.createQuad(PreferUserManaged, subject, DC.subject, AS.Activity));
        assertEquals(3L, dataset.size(), "Confirm dataset size");

        assertTrue(TriplestoreUtils.asJenaDataset(dataset).containsNamedModel(PreferUserManaged.getIRIString()),
                "Confirm presence of trellis:PreferUserManaged named graph");
        assertEquals(TriplestoreUtils.asJenaDataset(dataset).asDatasetGraph(),
                TriplestoreUtils.asJenaDataset(dataset).asDatasetGraph(), "Confirm datasets are equal");
    }

    @Test
    public void testDatasetConversion() {
        final Dataset dataset = simpleRdf.createDataset();

        dataset.add(simpleRdf.createQuad(PreferUserManaged, subject, SKOS.prefLabel, literal));
        dataset.add(simpleRdf.createQuad(PreferUserManaged, subject, type, SKOS.Concept));
        dataset.add(simpleRdf.createQuad(PreferUserManaged, subject, DC.subject, AS.Activity));
        assertEquals(3L, dataset.size(), "Confirm dataset size");

        assertTrue(TriplestoreUtils.asJenaDataset(dataset).containsNamedModel(PreferUserManaged.getIRIString()),
                "Confirm presence of trellis:PreferUserManaged named graph");
        assertNotEquals(TriplestoreUtils.asJenaDataset(dataset).asDatasetGraph(),
                TriplestoreUtils.asJenaDataset(dataset).asDatasetGraph(), "Confirm dataset has been converted");
    }

    @Test
    public void testBaseIRItruncate() {
        final IRI iri = jenaRdf.createIRI("http://example.com/resource#i");
        assertEquals(jenaRdf.createIRI("http://example.com/resource"), TriplestoreUtils.getBaseIRI(iri),
                "Check that fragment URLs are removed");
    }

    @Test
    public void testBaseIRInoTruncate() {
        final IRI iri = jenaRdf.createIRI("http://example.com/resource");
        assertEquals(iri, TriplestoreUtils.getBaseIRI(iri), "Check that fragment URLs are removed");
    }

    @Test
    public void testNodeConversion() {
        final Resource s = createResource("http://example.com/Resource");
        final Property p = createProperty("http://example.com/prop");
        final Resource o = createResource("http://example.com/Other");
        assertFalse(TriplestoreUtils.nodesToTriple(null, null, null).isPresent(), "null nodes yield valid triple!");
        assertFalse(TriplestoreUtils.nodesToTriple(s, null, null).isPresent(),
                "null node results in a valid triple!");
        assertFalse(TriplestoreUtils.nodesToTriple(null, p, null).isPresent(),
                "null node results in a valid triple!");
        assertFalse(TriplestoreUtils.nodesToTriple(null, null, o).isPresent(),
                "null node results in a valid triple!");
        assertFalse(TriplestoreUtils.nodesToTriple(s, p, null).isPresent(), "null node results in a valid triple!");
        assertFalse(TriplestoreUtils.nodesToTriple(s, null, o).isPresent(), "null node results in a valid triple!");
        assertFalse(TriplestoreUtils.nodesToTriple(null, p, o).isPresent(), "null node results in a valid triple!");
        assertTrue(TriplestoreUtils.nodesToTriple(s, p, o).isPresent(), "Nodes not converted to triple!");
    }

    @Test
    public void testBaseIRIliteral() {
        final Literal l = jenaRdf.createLiteral("a literal");
        assertEquals(l, TriplestoreUtils.getBaseIRI(l), "Incorrect literal value!");
    }
}