example.UserGuideTest.java Source code

Java tutorial

Introduction

Here is the source code for example.UserGuideTest.java

Source

/**
 * 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 example;

import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import org.apache.commons.rdf.api.BlankNode;
import org.apache.commons.rdf.api.BlankNodeOrIRI;
import org.apache.commons.rdf.api.Graph;
import org.apache.commons.rdf.api.IRI;
import org.apache.commons.rdf.api.Literal;
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.simple.SimpleRDFTermFactory;
import org.apache.commons.rdf.simple.Types;
import org.junit.Before;
import org.junit.Test;

public class UserGuideTest {

    private RDFTermFactory factory;

    @Before
    public void factory() {
        factory = new SimpleRDFTermFactory();
    }

    @Test
    public void creating() throws Exception {
        BlankNode aliceBlankNode = factory.createBlankNode();
        IRI nameIri = factory.createIRI("http://example.com/name");
        Literal aliceLiteral = factory.createLiteral("Alice");
        Triple triple = factory.createTriple(aliceBlankNode, nameIri, aliceLiteral);

        System.out.println(aliceBlankNode.ntriplesString());
        System.out.println(nameIri.ntriplesString());
        System.out.println(aliceLiteral.ntriplesString());

    }

    @Test
    public void ntriples() throws Exception {
        IRI iri = factory.createIRI("http://example.com/alice");
        System.out.println(iri.getIRIString());

        IRI iri2 = factory.createIRI("http://example.com/alice");
        System.out.println(iri.equals(iri2));

        IRI iri3 = factory.createIRI("http://example.com/alice/./");
        System.out.println(iri.equals(iri3));

        System.out.println(iri.equals("http://example.com/alice"));
        System.out.println(iri.equals(factory.createLiteral("http://example.com/alice")));

    }

    @Test
    public void blanknode() throws Exception {
        BlankNode bnode = factory.createBlankNode();
        System.out.println(bnode.equals(bnode));
        System.out.println(bnode.equals(factory.createBlankNode()));

        BlankNode b1 = factory.createBlankNode("b1");

        System.out.println(b1.ntriplesString());

        System.out.println(b1.equals(factory.createBlankNode("b1")));
        System.out.println(b1.equals(new SimpleRDFTermFactory().createBlankNode("b1")));

        System.out.println(bnode.uniqueReference());
    }

    @Test
    public void literal() throws Exception {
        Literal literal = factory.createLiteral("Hello world!");
        System.out.println(literal.ntriplesString());

        String lexical = literal.getLexicalForm();
        System.out.println(lexical);

        IRI datatype = literal.getDatatype();
        System.out.println(datatype.ntriplesString());

        IRI xsdDouble = factory.createIRI("http://www.w3.org/2001/XMLSchema#double");
        Literal literalDouble = factory.createLiteral("13.37", xsdDouble);
        System.out.println(literalDouble.ntriplesString());

        Literal literalDouble2 = factory.createLiteral("13.37", Types.XSD_DOUBLE);

        System.out.println(literal.getDatatype().equals(Types.XSD_STRING));

        Literal inSpanish = factory.createLiteral("Hola, Mundo!", "es");
        System.out.println(inSpanish.ntriplesString());
        System.out.println(inSpanish.getLexicalForm());
        System.out.println(inSpanish.getDatatype().ntriplesString());

        Optional<String> tag = inSpanish.getLanguageTag();
        if (tag.isPresent()) {
            System.out.println(tag.get());
        }

        System.out.println(literal.getLanguageTag().isPresent());
        System.out.println(literalDouble.getLanguageTag().isPresent());
    }

    @Test
    public void triple() throws Exception {
        BlankNodeOrIRI subject = factory.createBlankNode();
        IRI predicate = factory.createIRI("http://example.com/says");
        RDFTerm object = factory.createLiteral("Hello");
        Triple triple = factory.createTriple(subject, predicate, object);

        BlankNodeOrIRI subj = triple.getSubject();
        System.out.println(subj.ntriplesString());

        IRI pred = triple.getPredicate();
        System.out.println(pred.getIRIString());

        RDFTerm obj = triple.getObject();
        System.out.println(obj.ntriplesString());

        if (subj instanceof IRI) {
            String s = ((IRI) subj).getIRIString();
            System.out.println(s);
        }
        // ..
        if (obj instanceof Literal) {
            IRI type = ((Literal) obj).getDatatype();
            System.out.println(type);
        }

        System.out.println(triple.equals(factory.createTriple(subj, pred, obj)));
    }

    @Test
    public void graph() throws Exception {
        IRI nameIri = factory.createIRI("http://example.com/name");
        BlankNode aliceBlankNode = factory.createBlankNode();
        Literal aliceLiteral = factory.createLiteral("Alice");
        Triple triple = factory.createTriple(aliceBlankNode, nameIri, aliceLiteral);

        Graph graph = factory.createGraph();

        graph.add(triple);

        IRI bob = factory.createIRI("http://example.com/bob");
        Literal bobName = factory.createLiteral("Bob");
        graph.add(bob, nameIri, bobName);

        System.out.println(graph.contains(triple));

        System.out.println(graph.contains(null, nameIri, bobName));

        System.out.println(graph.size());

        for (Triple t : graph.iterate()) {
            System.out.println(t.getObject());
        }

        for (Triple t : graph.iterate(null, null, bobName)) {
            System.out.println(t.getPredicate());
        }

        Stream<RDFTerm> subjects = graph.getTriples().map(t -> t.getObject());
        String s = subjects.map(RDFTerm::ntriplesString).collect(Collectors.joining(" "));
        System.out.println(s);

        Stream<? extends Triple> namedB = graph.getTriples(null, nameIri, null)
                .filter(t -> t.getObject().ntriplesString().contains("B"));
        System.out.println(namedB.map(t -> t.getSubject()).findAny().get());

        graph.remove(triple);
        System.out.println(graph.contains(triple));

        graph.remove(null, nameIri, null);

        graph.clear();
        System.out.println(graph.contains(null, null, null));

    }

    public static String tripleAsString(Triple t) {
        return t.getSubject().ntriplesString() + " " + t.getPredicate().ntriplesString() + " "
                + t.getObject().ntriplesString() + " .";
    }

    public static void writeGraph(Graph graph, Path graphFile) throws Exception {
        Stream<CharSequence> stream = graph.getTriples().map(UserGuideTest::tripleAsString);
        Files.write(graphFile, stream::iterator, StandardCharsets.UTF_8);
    }
}