Search in sources :

Example 1 with SuggestionFunction

use of org.apache.stanbol.enhancer.ldpath.function.SuggestionFunction in project stanbol by apache.

the class EnhancerLDPath method getConfig.

/**
     * The LDPath configuration including the <ul>
     * <li> Namespaces defined by the {@link NamespaceEnum}
     * <li> the LDPath functions for the Stanbol Enhancement Structure
     * </ul>
     * @return the LDPath configuration for the Stanbol Enhancer
     */
public static final Configuration<RDFTerm> getConfig() {
    if (CONFIG == null) {
        CONFIG = new DefaultConfiguration<RDFTerm>();
        //add the namespaces
        for (NamespaceEnum ns : NamespaceEnum.values()) {
            CONFIG.addNamespace(ns.getPrefix(), ns.getNamespace());
        }
        //now add the functions
        addFunction(CONFIG, new ContentFunction());
        String path;
        NodeSelector<RDFTerm> selector;
        //TextAnnotations
        path = String.format("^%s[%s is %s]", ENHANCER_EXTRACTED_FROM, RDF_TYPE, ENHANCER_TEXTANNOTATION);
        try {
            selector = Utils.parseSelector(path);
        } catch (ParseException e) {
            throw new IllegalStateException("Unable to parse the ld-path selector '" + path + "'used to select all TextAnnotations of a contentItem!", e);
        }
        addFunction(CONFIG, new PathFunction<RDFTerm>("textAnnotation", selector));
        //EntityAnnotations
        path = String.format("^%s[%s is %s]", ENHANCER_EXTRACTED_FROM, RDF_TYPE, ENHANCER_ENTITYANNOTATION);
        try {
            selector = Utils.parseSelector(path);
        } catch (ParseException e) {
            throw new IllegalStateException("Unable to parse the ld-path selector '" + path + "'used to select all EntityAnnotations of a contentItem!", e);
        }
        addFunction(CONFIG, new PathFunction<RDFTerm>("entityAnnotation", selector));
        //TopicAnnotations
        path = String.format("^%s[%s is %s]", ENHANCER_EXTRACTED_FROM, RDF_TYPE, ENHANCER_TOPICANNOTATION);
        try {
            selector = Utils.parseSelector(path);
        } catch (ParseException e) {
            throw new IllegalStateException("Unable to parse the ld-path selector '" + path + "'used to select all TopicAnnotations of a contentItem!", e);
        }
        addFunction(CONFIG, new PathFunction<RDFTerm>("topicAnnotation", selector));
        //Enhancements
        path = String.format("^%s[%s is %s]", ENHANCER_EXTRACTED_FROM, RDF_TYPE, ENHANCER_ENHANCEMENT);
        try {
            selector = Utils.parseSelector(path);
        } catch (ParseException e) {
            throw new IllegalStateException("Unable to parse the ld-path selector '" + path + "'used to select all Enhancements of a contentItem!", e);
        }
        addFunction(CONFIG, new PathFunction<RDFTerm>("enhancement", selector));
        //Suggested EntityAnnotations for Text/TopicAnnotations
        //(1) to select the suggestions
        NodeSelector<RDFTerm> linkedEntityAnnotations;
        path = String.format("^%s[%s is %s]", DC_RELATION, RDF_TYPE, ENHANCER_ENTITYANNOTATION, ENHANCER_CONFIDENCE);
        try {
            linkedEntityAnnotations = Utils.parseSelector(path);
        } catch (ParseException e) {
            throw new IllegalStateException("Unable to parse the ld-path selector '" + path + "'used to select all entity suggestions for an Enhancement!", e);
        }
        //(2) to select the confidence value of Enhancements
        NodeSelector<RDFTerm> confidenceSelector;
        path = ENHANCER_CONFIDENCE.toString();
        try {
            confidenceSelector = Utils.parseSelector(path);
        } catch (ParseException e) {
            throw new IllegalStateException("Unable to parse the ld-path selector '" + path + "'used to select the confidence of suggestions!", e);
        }
        //The resultSelector is NULL because this directly returns the EntityAnnotations
        addFunction(CONFIG, new SuggestionFunction("suggestion", linkedEntityAnnotations, confidenceSelector, null));
        //Suggested Entities for Text/TopicAnnotations
        //The suggestion and confidence selectors can be the same as above,
        //but we need an additional result selector
        NodeSelector<RDFTerm> entityReferenceSelector;
        path = ENHANCER_ENTITY_REFERENCE.toString();
        try {
            entityReferenceSelector = Utils.parseSelector(path);
        } catch (ParseException e) {
            throw new IllegalStateException("Unable to parse the ld-path selector '" + path + "'used to select the entity referenced by a EntityAnnotation!", e);
        }
        addFunction(CONFIG, new SuggestionFunction("suggestedEntity", linkedEntityAnnotations, confidenceSelector, entityReferenceSelector));
    }
    return CONFIG;
}
Also used : SuggestionFunction(org.apache.stanbol.enhancer.ldpath.function.SuggestionFunction) ContentFunction(org.apache.stanbol.enhancer.ldpath.function.ContentFunction) RDFTerm(org.apache.clerezza.commons.rdf.RDFTerm) ParseException(org.apache.marmotta.ldpath.parser.ParseException) NamespaceEnum(org.apache.stanbol.enhancer.servicesapi.rdf.NamespaceEnum)

Aggregations

RDFTerm (org.apache.clerezza.commons.rdf.RDFTerm)1 ParseException (org.apache.marmotta.ldpath.parser.ParseException)1 ContentFunction (org.apache.stanbol.enhancer.ldpath.function.ContentFunction)1 SuggestionFunction (org.apache.stanbol.enhancer.ldpath.function.SuggestionFunction)1 NamespaceEnum (org.apache.stanbol.enhancer.servicesapi.rdf.NamespaceEnum)1