@Override public WikidataValue visit(EntityIdValue value) { if (value.getEntityType().equals(EntityIdValue.ET_ITEM)) { return WikidataValue.forItem(Integer.valueOf(value.getId().substring(1))); } else if (value.getEntityType().equals(EntityIdValue.ET_PROPERTY)) { return WikidataValue.forProperty(Integer.valueOf(value.getId().substring(1))); } else { throw new IllegalArgumentException("Unknown entity type: " + value.getEntityType()); } }
private String encodeValue(WikidataValue value) { return gson.toJson(value.getJsonValue()); }
public static WikidataValue forItem(int itemId) { JsonObject obj = new JsonObject(); obj.addProperty("entity-type", "item"); obj.addProperty("numeric-id", itemId); return new WikidataValue(Type.ITEM, itemId, obj); }
@Override public double score(LocalId candidate, Map<String, String> row, Geometry geometry) throws DaoException { if (!row.containsKey(columnName)) { throw new IllegalArgumentException("No column with name " + columnName + " in dbx"); } String rowValue = row.get(columnName).toString(); for (WikidataStatement st : wikidataDao.getStatements(candidate.asLocalPage())) { if (st.getProperty() == null || st.getProperty().getId() != propertyId) { continue; } String candidateVal = null; if (st.getValue().getType() == WikidataValue.Type.ITEM) { candidateVal = String.valueOf(st.getValue().getItemValue()); } else if (st.getValue().getType() == WikidataValue.Type.INT) { candidateVal = String.valueOf(st.getValue().getIntValue()); } else if (st.getValue().getType() == WikidataValue.Type.STRING) { candidateVal = st.getValue().getStringValue(); } else { LOG.warn("Unexpected type for property " + st.getProperty() + ": " + st.getValue()); } if (candidateVal != null && candidateVal.equalsIgnoreCase(rowValue)) { return 1.0; } } return 0.0; } }
@Override public LocalWikidataStatement getLocalStatement(Language language, WikidataStatement statement) throws DaoException { language = getRealLang(language ); String item = getLabel(language, statement.getItem().getType(), statement.getItem().getId()); String prop = getLabel(language, statement.getProperty().getType(), statement.getProperty().getId()); String value = null; WikidataValue wdv = statement.getValue(); if (wdv.getType() == WikidataValue.Type.ITEM) { value = getLabel(language, WikidataEntity.Type.ITEM, wdv.getItemValue()); } else if (wdv.getValue() == null) { value = "unknown"; } else { value = wdv.getValue().toString(); } String full = item + " " + prop + " " + value; return new LocalWikidataStatement(language, statement, full, item, prop, value); }
public static void main(String args[]) throws ConfigurationException, DaoException { Env env = EnvBuilder.envFromArgs(args); Configurator conf = env.getConfigurator(); LocalPageDao lpDao = conf.get(LocalPageDao.class); WikidataDao wdDao = conf.get(WikidataDao.class); UniversalPageDao univDao = conf.get(UniversalPageDao.class); Language lang = env.getDefaultLanguage(); // Show statements for berlin Title title = new Title("Berlin", lang); LocalPage page = lpDao.getByTitle(title, NameSpace.ARTICLE); Map<String, List<LocalWikidataStatement>> statements = wdDao.getLocalStatements(page); System.out.println("Properties for " + title); for (String property : statements.keySet()) { System.out.println("values for property " + property + " are:"); for (LocalWikidataStatement lws : statements.get(property)) { System.out.println("\t" + lws.getFullStatement()); } } // Print out who was born in Berlin WikidataValue berlinEntity = WikidataValue.forItem(univDao.getUnivPageId(page)); for (WikidataStatement st : wdDao.getByValue("place of birth", berlinEntity)) { System.out.println(wdDao.getLocalStatement(lang, st).getFullStatement()); } } }
@Override public double score(LocalId candidate, Map<String, String> row, Geometry geometry) throws DaoException { for (WikidataStatement st : wikidataDao.getStatements(candidate.asLocalPage())) { if (st.getProperty() == null || st.getProperty().getId() != INSTANCE_OF_PROPERTY) { continue; } if (st.getValue().getType() == WikidataValue.Type.ITEM) { String name = getPropertyName(st.getValue().getIntValue()); if (name != null && instanceOfKeywords.contains(name.toLowerCase())) { return 1.0; } } } return 0.0; }
@Override public WikidataValue visit(MonolingualTextValue value) { return WikidataValue.forString(value.getText()); }
values.add(encodeValue(value)); if (type == null) { type = value.getTypeName(); if (!type.equals(value.getTypeName())) { throw new IllegalArgumentException("All wikidata filter values must have the same type");
@Override public double score(LocalId candidate, Map<String, String> row, Geometry geometry) throws DaoException { if (!row.containsKey(columnName)) { throw new IllegalArgumentException("No column with name " + columnName + " in dbx"); } String rowValue = row.get(columnName).toString(); for (WikidataStatement st : wikidataDao.getStatements(candidate.asLocalPage())) { if (st.getProperty() == null || st.getProperty().getId() != propertyId) { continue; } String candidateVal = null; if (st.getValue().getType() == WikidataValue.Type.ITEM) { candidateVal = String.valueOf(st.getValue().getItemValue()); } else if (st.getValue().getType() == WikidataValue.Type.INT) { candidateVal = String.valueOf(st.getValue().getIntValue()); } else if (st.getValue().getType() == WikidataValue.Type.STRING) { candidateVal = st.getValue().getStringValue(); } else { LOG.warn("Unexpected type for property " + st.getProperty() + ": " + st.getValue()); } if (candidateVal != null && candidateVal.equalsIgnoreCase(rowValue)) { return 1.0; } } return 0.0; } }
@Override public LocalWikidataStatement getLocalStatement(Language language, WikidataStatement statement) throws DaoException { language = getRealLang(language ); String item = getLabel(language, statement.getItem().getType(), statement.getItem().getId()); String prop = getLabel(language, statement.getProperty().getType(), statement.getProperty().getId()); String value = null; WikidataValue wdv = statement.getValue(); if (wdv.getType() == WikidataValue.Type.ITEM) { value = getLabel(language, WikidataEntity.Type.ITEM, wdv.getItemValue()); } else if (wdv.getValue() == null) { value = "unknown"; } else { value = wdv.getValue().toString(); } String full = item + " " + prop + " " + value; return new LocalWikidataStatement(language, statement, full, item, prop, value); }
public static void main(String args[]) throws ConfigurationException, DaoException { Env env = EnvBuilder.envFromArgs(args); Configurator conf = env.getConfigurator(); LocalPageDao lpDao = conf.get(LocalPageDao.class); WikidataDao wdDao = conf.get(WikidataDao.class); UniversalPageDao univDao = conf.get(UniversalPageDao.class); Language lang = env.getDefaultLanguage(); // Show statements for berlin Title title = new Title("Berlin", lang); LocalPage page = lpDao.getByTitle(title, NameSpace.ARTICLE); Map<String, List<LocalWikidataStatement>> statements = wdDao.getLocalStatements(page); System.out.println("Properties for " + title); for (String property : statements.keySet()) { System.out.println("values for property " + property + " are:"); for (LocalWikidataStatement lws : statements.get(property)) { System.out.println("\t" + lws.getFullStatement()); } } // Print out who was born in Berlin WikidataValue berlinEntity = WikidataValue.forItem(univDao.getUnivPageId(page)); for (WikidataStatement st : wdDao.getByValue("place of birth", berlinEntity)) { System.out.println(wdDao.getLocalStatement(lang, st).getFullStatement()); } } }
@Override public double score(LocalId candidate, Map<String, String> row, Geometry geometry) throws DaoException { for (WikidataStatement st : wikidataDao.getStatements(candidate.asLocalPage())) { if (st.getProperty() == null || st.getProperty().getId() != INSTANCE_OF_PROPERTY) { continue; } if (st.getValue().getType() == WikidataValue.Type.ITEM) { String name = getPropertyName(st.getValue().getIntValue()); if (name != null && instanceOfKeywords.contains(name.toLowerCase())) { return 1.0; } } } return 0.0; }
@Override public WikidataValue visit(StringValue value) { return WikidataValue.forString(value.getString()); }
values.add(encodeValue(value)); if (type == null) { type = value.getTypeName(); if (!type.equals(value.getTypeName())) { throw new IllegalArgumentException("All wikidata filter values must have the same type");
private String encodeValue(WikidataValue value) { return gson.toJson(value.getJsonValue()); }
for (WikidataStatement st : wd.getByValue("instance of", WikidataValue.forItem(6256))) { int countryId = st.getItem().getId(); WikidataEntity country = wd.getItem(countryId);
@Override public WikidataValue visit(EntityIdValue value) { if (value.getEntityType().equals(EntityIdValue.ET_ITEM)) { return WikidataValue.forItem(Integer.valueOf(value.getId().substring(1))); } else if (value.getEntityType().equals(EntityIdValue.ET_PROPERTY)) { return WikidataValue.forProperty(Integer.valueOf(value.getId().substring(1))); } else { throw new IllegalArgumentException("Unknown entity type: " + value.getEntityType()); } }
public static WikidataValue forInt(int value) { return new WikidataValue(Type.INT, value, new JsonPrimitive(value)); }
@Override public WikidataValue visit(MonolingualTextValue value) { return WikidataValue.forString(value.getText()); }