001
002package org.deepamehta.plugins.wikidata.service;
003
004import de.deepamehta.core.RelatedAssociation;
005import de.deepamehta.core.Topic;
006import de.deepamehta.core.service.PluginService;
007import de.deepamehta.core.service.ResultList;
008
009/**
010 * A very basic plugin to search and explore wikidata.
011 * Creates \"Wikidata Search Result Entity\"-Topics.
012 * Corresponding to the type of wikidata-entity found via a search these topics have either the child-type
013 * ("org.deepamehta.wikidata.search_entity_type") set to the value "property or the value "item".
014 *
015 * @author Malte Reißig (<malte@mikromedia.de>)
016 * @website https://github.com/mukil/dm4-wikidata
017 * @version 0.0.4-SNAPSHOT
018 */
019public interface WikidataSearchService extends PluginService {
020
021    /**
022     *  This method searches all wikidata entities by text and the given language code.
023     *
024     *  @param {entity}             entity-type (can be of entity-type "item" or "property")
025     *  @param {query}              name of wikidata property in search
026     *  @param {language_code}      ISO 639-1 language code (must exist in DM installation)
027     */
028    Topic searchWikidataEntity(String query, String iso_language_code, String entityType);
029
030    /**
031     *  This method gets (or creates) a \"Wikidata Search Entity\" (in DeepaMehta 4) by its ID (wikidata).
032     *  Updates values of the given topic if this wikidata-entity was already imported before.
033     *
034     *  @param {entityId}           wikidataId
035     */
036    Topic getOrCreateWikidataEntity(String wikidataEntityId, String iso_language_code);
037
038    /**
039     *  This method loads all claims (with language specific values) for a wikidata-entity into DeepaMehta 4.
040     *
041     *  @param {id}              \"Wikidata Search Entity\"-Topic ID
042     */
043    Topic loadClaimsAndRelatedWikidataItems(long entityTopicId, String iso_language_code);
044
045    /**
046     *  This method creates a DeepaMehta Association Type given a \"Wikidata Search Entity\" (of type=property).
047     *
048     *  @param {id}              \"Wikidata Search Entity\"-Topic ID (entity-type must be of value "property")
049     */
050    Topic createWikidataAssociationType(long entityTopicId);
051
052    /**
053     *  This method retrieves all associated associations of type "Wikidata Claim" for any given
054     * \"Wikidata Search Entity\" (of type=property).
055     *
056     *  @param {id}              \"Wikidata Search Entity\"-Topic ID (entity-type must be of value "property")
057     */
058    ResultList<RelatedAssociation> getTopicRelatedAssociations(long topicId);
059    
060    void assignToWikidataWorkspace(Topic topic);
061
062}