Package org.apache.stanbol.entityhub.jersey.writers

Source Code of org.apache.stanbol.entityhub.jersey.writers.EntityToRDF

/*
* 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.stanbol.entityhub.jersey.writers;

import org.apache.clerezza.rdf.core.LiteralFactory;
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.TripleCollection;
import org.apache.clerezza.rdf.core.TypedLiteral;
import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.impl.SimpleMGraph;
import org.apache.clerezza.rdf.core.impl.TripleImpl;
import org.apache.clerezza.rdf.ontologies.FOAF;
import org.apache.clerezza.rdf.ontologies.RDF;
import org.apache.stanbol.commons.indexedgraph.IndexedMGraph;
import org.apache.stanbol.entityhub.model.clerezza.RdfValueFactory;
import org.apache.stanbol.entityhub.servicesapi.model.Entity;
import org.apache.stanbol.entityhub.servicesapi.model.Representation;
import org.apache.stanbol.entityhub.servicesapi.model.rdf.RdfResourceEnum;

/**
* Encodes an Entity into an single RDF graph by<ul>
* <li> adding the {@link Entity#getRepresentation()}
* <li> adding the {@link Entity#getMetadata()}
* <li> creating a foaf:primaryTopic link between the metadata and the representation
* <li> creating a foaf:isPromaryTopic link between the representation and the metadata
* <li> adding the foaf:Document type to the metadata.
* </ul>
* @author Rupert Westenthaler
*
*/
final class EntityToRDF {
    private EntityToRDF() { /* do not create instances of utility classes */}

    private final static UriRef FOAF_DOCUMENT = FOAF.Document;
    private final static UriRef FOAF_PRIMARY_TOPIC = FOAF.primaryTopic;
    private final static UriRef FOAF_PRIMARY_TOPIC_OF = FOAF.isPrimaryTopicOf;
    private final static UriRef signSite = new UriRef(RdfResourceEnum.site.getUri());
    private final static UriRef ENTITY_TYPE = new UriRef(RdfResourceEnum.Entity.getUri());
    private final static RdfValueFactory valueFactory = RdfValueFactory.getInstance();
    /**
     * The literal factory used (currently {@link LiteralFactory#getInstance()},
     * but we might use a custom one for Stanbol therefore it is better to
     * have it as a field
     */
    static final LiteralFactory literalFactory = LiteralFactory.getInstance();

    static MGraph toRDF(Representation representation) {
        MGraph graph = new IndexedMGraph();
        addRDFTo(graph, representation);
        return graph;
    }

    static void addRDFTo(MGraph graph, Representation representation) {
        graph.addAll(valueFactory.toRdfRepresentation(representation).getRdfGraph());
    }

    static TripleCollection toRDF(Entity entity) {
        MGraph graph = new IndexedMGraph();
        addRDFTo(graph, entity);
        return graph;
    }

    static void addRDFTo(MGraph graph, Entity entity) {
        addRDFTo(graph, entity.getRepresentation());
        addRDFTo(graph, entity.getMetadata());
        //now add some triples that represent the Sign
        addEntityTriplesToGraph(graph, entity);
    }


    /**
     * Adds the Triples that represent the Sign to the parsed graph. Note that
     * this method does not add triples for the representation. However it adds
     * the triple (sign,singRepresentation,representation)
     *
     * @param graph the graph to add the triples
     * @param sign the sign
     */
    static void addEntityTriplesToGraph(MGraph graph, Entity sign) {
        UriRef id = new UriRef(sign.getId());
        UriRef metaId = new UriRef(sign.getMetadata().getId());
        //add the FOAF triples between metadata and content
        graph.add(new TripleImpl(id, FOAF_PRIMARY_TOPIC_OF, metaId));
        graph.add(new TripleImpl(metaId, FOAF_PRIMARY_TOPIC, metaId));
        graph.add(new TripleImpl(metaId, RDF.type, FOAF_DOCUMENT));
        //add the site to the metadata
        //TODO: this should be the HTTP URI and not the id of the referenced site
        TypedLiteral siteName = literalFactory.createTypedLiteral(sign.getSite());
        graph.add(new TripleImpl(metaId, EntityToRDF.signSite, siteName));
       
    }

}
TOP

Related Classes of org.apache.stanbol.entityhub.jersey.writers.EntityToRDF

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.