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