All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.protege.webprotege.index.BuiltInSkosEntitiesIndexImpl Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.index;

import com.google.common.collect.ImmutableSet;
import org.semanticweb.owlapi.model.*;
import org.semanticweb.owlapi.vocab.SKOSVocabulary;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.Collection;
import java.util.stream.Stream;

import static com.google.common.collect.ImmutableSet.toImmutableSet;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 2020-07-27
 */
public class BuiltInSkosEntitiesIndexImpl implements BuiltInSkosEntitiesIndex {

    @Nonnull
    private final ImmutableSet annotationProperties;

    @Nonnull
    private final ImmutableSet classes;

    @Nonnull
    private final ImmutableSet objectProperties;

    @Nonnull
    private final ImmutableSet dataProperties;
    @Inject
    public BuiltInSkosEntitiesIndexImpl(@Nonnull OWLDataFactory dataFactory) {
        annotationProperties = SKOSVocabulary.getAnnotationProperties(dataFactory)
                      .stream()
                      .collect(toImmutableSet());

        classes = SKOSVocabulary.getClasses(dataFactory)
                .stream()
                .collect(toImmutableSet());
        objectProperties = SKOSVocabulary.getObjectProperties(dataFactory)
                .stream()
                .collect(toImmutableSet());
        dataProperties = SKOSVocabulary.getDataProperties(dataFactory)
                .stream()
                .collect(toImmutableSet());
    }

    @Nonnull
    @Override
    public Stream getBuiltInEntities() {
        return Stream.of(annotationProperties, classes, objectProperties, dataProperties)
                .flatMap(Collection::stream);
    }

    @Nonnull
    @Override
    public Stream getAnnotationProperties() {
        return annotationProperties.stream();
    }

    @Nonnull
    @Override
    public Stream getClasses() {
        return classes.stream();
    }

    @Nonnull
    @Override
    public Stream getObjectProperties() {
        return objectProperties.stream();
    }

    @Nonnull
    @Override
    public Stream getDataProperties() {
        return dataProperties.stream();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy