Skip to content

Commit

Permalink
Merge pull request #22 from Wikidata/datamodel-general-update
Browse files Browse the repository at this point in the history
Datamodel general update
  • Loading branch information
Fredo Erxleben committed Feb 19, 2014
2 parents 11ebcf5 + c55a95e commit 10fd7a5
Show file tree
Hide file tree
Showing 62 changed files with 2,702 additions and 1,300 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package org.wikidata.wdtk.datamodel.implementation;

/*
* #%L
* Wikidata Toolkit Data Model
* %%
* Copyright (C) 2014 Wikidata Toolkit Developers
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/

import java.util.Collections;
import java.util.List;

import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.wikidata.wdtk.datamodel.interfaces.Claim;
import org.wikidata.wdtk.datamodel.interfaces.EntityIdValue;
import org.wikidata.wdtk.datamodel.interfaces.Snak;

/**
* Implementation of {@link Claim}.
*
* @author Markus Kroetzsch
*
*/
public class ClaimImpl implements Claim {

final EntityIdValue subject;
final Snak mainSnak;
final List<? extends Snak> qualifiers;

/**
* Constructor.
*
* @param subject
* the subject the Claim refers to
* @param mainSnak
* the main Snak of the Claim
* @param qualifiers
* the qualifiers of the Claim
*/
ClaimImpl(EntityIdValue subject, Snak mainSnak,
List<? extends Snak> qualifiers) {
Validate.notNull(subject, "Statement subjects cannot be null");
Validate.notNull(mainSnak, "Statement main Snaks cannot be null");
Validate.notNull(qualifiers, "Statement qualifiers cannot be null");

this.subject = subject;
this.mainSnak = mainSnak;
this.qualifiers = qualifiers;
}

@Override
public EntityIdValue getSubject() {
return subject;
}

@Override
public Snak getMainSnak() {
return mainSnak;
}

@Override
public List<? extends Snak> getQualifiers() {
return Collections.unmodifiableList(qualifiers);
}

/*
* (non-Javadoc)
*
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
return new HashCodeBuilder(31, 569).append(this.subject)
.append(this.mainSnak).append(this.qualifiers).toHashCode();
}

/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof ClaimImpl)) {
return false;
}

ClaimImpl other = (ClaimImpl) obj;
return this.subject.equals(other.subject)
&& this.mainSnak.equals(other.mainSnak)
&& this.qualifiers.equals(other.qualifiers);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,24 +24,27 @@
import java.util.List;
import java.util.Map;

import org.wikidata.wdtk.datamodel.interfaces.Claim;
import org.wikidata.wdtk.datamodel.interfaces.DataObjectFactory;
import org.wikidata.wdtk.datamodel.interfaces.DatatypeId;
import org.wikidata.wdtk.datamodel.interfaces.EntityId;
import org.wikidata.wdtk.datamodel.interfaces.DatatypeIdValue;
import org.wikidata.wdtk.datamodel.interfaces.EntityIdValue;
import org.wikidata.wdtk.datamodel.interfaces.GlobeCoordinatesValue;
import org.wikidata.wdtk.datamodel.interfaces.ItemId;
import org.wikidata.wdtk.datamodel.interfaces.ItemRecord;
import org.wikidata.wdtk.datamodel.interfaces.ItemDocument;
import org.wikidata.wdtk.datamodel.interfaces.ItemIdValue;
import org.wikidata.wdtk.datamodel.interfaces.MonolingualTextValue;
import org.wikidata.wdtk.datamodel.interfaces.NoValueSnak;
import org.wikidata.wdtk.datamodel.interfaces.PropertyId;
import org.wikidata.wdtk.datamodel.interfaces.PropertyRecord;
import org.wikidata.wdtk.datamodel.interfaces.PropertyDocument;
import org.wikidata.wdtk.datamodel.interfaces.PropertyIdValue;
import org.wikidata.wdtk.datamodel.interfaces.QuantityValue;
import org.wikidata.wdtk.datamodel.interfaces.Reference;
import org.wikidata.wdtk.datamodel.interfaces.SiteLink;
import org.wikidata.wdtk.datamodel.interfaces.Snak;
import org.wikidata.wdtk.datamodel.interfaces.SomeValueSnak;
import org.wikidata.wdtk.datamodel.interfaces.Statement;
import org.wikidata.wdtk.datamodel.interfaces.StatementGroup;
import org.wikidata.wdtk.datamodel.interfaces.StatementRank;
import org.wikidata.wdtk.datamodel.interfaces.StringValue;
import org.wikidata.wdtk.datamodel.interfaces.TimeValue;
import org.wikidata.wdtk.datamodel.interfaces.UrlValue;
import org.wikidata.wdtk.datamodel.interfaces.Value;
import org.wikidata.wdtk.datamodel.interfaces.ValueSnak;

Expand All @@ -55,34 +58,32 @@
public class DataObjectFactoryImpl implements DataObjectFactory {

@Override
public ItemId getItemId(String id, String baseIri) {
return new ItemIdImpl(id, baseIri);
public ItemIdValue getItemIdValue(String id, String baseIri) {
return new ItemIdValueImpl(id, baseIri);
}

@Override
public PropertyId getPropertyId(String id, String baseIri) {
return new PropertyIdImpl(id, baseIri);
public PropertyIdValue getPropertyIdValue(String id, String baseIri) {
return new PropertyIdValueImpl(id, baseIri);
}

@Override
public DatatypeId getDatatypeId(String id) {
public DatatypeIdValue getDatatypeIdValue(String id) {
return new DatatypeIdImpl(id);
}

@Override
public UrlValue getUrlValue(String url) {
return new UrlValueImpl(url);
public TimeValue getTimeValue(int year, byte month, byte day, byte hour,
byte minute, byte second, byte precision, int beforeTolerance,
int afterTolerance, int timezoneOffset, String calendarModel) {
return new TimeValueImpl(year, month, day, hour, minute, second,
precision, beforeTolerance, afterTolerance, timezoneOffset,
calendarModel);
}

@Override
public TimeValue getTimeValue(int year, byte month, byte day,
byte precision, String calendarModel) {
return new TimeValueImpl(year, month, day, precision, calendarModel);
}

@Override
public GlobeCoordinatesValue getGlobeCoordinatesValue(double latitude,
double longitude, double precision, String globeIri) {
public GlobeCoordinatesValue getGlobeCoordinatesValue(long latitude,
long longitude, long precision, String globeIri) {
return new GlobeCoordinatesValueImpl(latitude, longitude, precision,
globeIri);
}
Expand All @@ -92,33 +93,54 @@ public StringValue getStringValue(String string) {
return new StringValueImpl(string);
}

@Override
public MonolingualTextValue getMonolingualTextValue(String text,
String languageCode) {
return new MonolingualTextValueImpl(text, languageCode);
}

@Override
public QuantityValue getQuantityValue(BigDecimal numericValue,
BigDecimal lowerBound, BigDecimal upperBound) {
return new QuantityValueImpl(numericValue, lowerBound, upperBound);
}

@Override
public ValueSnak getValueSnak(PropertyId propertyId, Value value) {
public ValueSnak getValueSnak(PropertyIdValue propertyId, Value value) {
return new ValueSnakImpl(propertyId, value);
}

@Override
public SomeValueSnak getSomeValueSnak(PropertyId propertyId) {
public SomeValueSnak getSomeValueSnak(PropertyIdValue propertyId) {
return new SomeValueSnakImpl(propertyId);
}

@Override
public NoValueSnak getNoValueSnak(PropertyId propertyId) {
public NoValueSnak getNoValueSnak(PropertyIdValue propertyId) {
return new NoValueSnakImpl(propertyId);
}

@Override
public Statement getStatement(EntityId subject, Snak mainSnak,
List<? extends Snak> qualifiers,
List<List<? extends Snak>> references, StatementRank rank) {
return new StatementImpl(subject, mainSnak, qualifiers, references,
rank);
public Claim getClaim(EntityIdValue subject, Snak mainSnak,
List<? extends Snak> qualifiers) {
return new ClaimImpl(subject, mainSnak, qualifiers);
}

@Override
public Reference getReference(List<? extends ValueSnak> valueSnaks) {
return new ReferenceImpl(valueSnaks);
}

@Override
public Statement getStatement(Claim claim,
List<? extends Reference> references, StatementRank rank,
String statementId) {
return new StatementImpl(claim, references, rank, statementId);
}

@Override
public StatementGroup getStatementGroup(List<Statement> statements) {
return new StatementGroupImpl(statements);
}

@Override
Expand All @@ -128,20 +150,23 @@ public SiteLink getSiteLink(String title, String siteKey, String baseIri,
}

@Override
public PropertyRecord getPropertyRecord(PropertyId propertyId,
Map<String, String> labels, Map<String, String> descriptions,
Map<String, List<String>> aliases, DatatypeId datatypeId) {
return new PropertyRecordImpl(propertyId, labels, descriptions,
public PropertyDocument getPropertyDocument(PropertyIdValue propertyId,
List<MonolingualTextValue> labels,
List<MonolingualTextValue> descriptions,
List<MonolingualTextValue> aliases, DatatypeIdValue datatypeId) {
return new PropertyDocumentImpl(propertyId, labels, descriptions,
aliases, datatypeId);
}

@Override
public ItemRecord getItemRecord(ItemId itemId, Map<String, String> labels,
Map<String, String> descriptions,
Map<String, List<String>> aliases, List<Statement> statements,
public ItemDocument getItemDocument(ItemIdValue itemIdValue,
List<MonolingualTextValue> labels,
List<MonolingualTextValue> descriptions,
List<MonolingualTextValue> aliases,
List<StatementGroup> statementGroups,
Map<String, SiteLink> siteLinks) {
return new ItemRecordImpl(itemId, labels, descriptions, aliases,
statements, siteLinks);
return new ItemDocumentImpl(itemIdValue, labels, descriptions, aliases,
statementGroups, siteLinks);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,21 +21,21 @@
*/

import org.apache.commons.lang3.Validate;
import org.wikidata.wdtk.datamodel.interfaces.DatatypeId;
import org.wikidata.wdtk.datamodel.interfaces.DatatypeIdValue;

/**
* Implementation of {@link DatatypeId}
* Implementation of {@link DatatypeIdValue}
*
* @author Markus Kroetzsch
*
*/
public class DatatypeIdImpl implements DatatypeId {
public class DatatypeIdImpl implements DatatypeIdValue {

final String iri;

/**
* Constructor. The datatype IRI is usually one of the constants defined in
* {@link DatatypeId}, but this is not enforced, since there might be
* {@link DatatypeIdValue}, but this is not enforced, since there might be
* extensions that provide additional types.
*
* @param datatypeIri
Expand Down Expand Up @@ -74,11 +74,11 @@ public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof DatatypeId)) {
if (!(obj instanceof DatatypeIdValue)) {
return false;
}

return iri.equals(((DatatypeId) obj).getIri());
return iri.equals(((DatatypeIdValue) obj).getIri());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@

import org.apache.commons.lang3.Validate;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.wikidata.wdtk.datamodel.interfaces.EntityId;
import org.wikidata.wdtk.datamodel.interfaces.EntityIdValue;

/**
* Generic implementation of {@link EntityId} that works with arbitrary Wikibase
* Generic implementation of {@link EntityIdValue} that works with arbitrary Wikibase
* instances: it requires a baseIri that identifies the site globally.
*
* TODO It would be cleaner to have an object that manages the site context
Expand All @@ -38,7 +38,7 @@
* @author Markus Kroetzsch
*
*/
public abstract class EntityIdImpl implements EntityId {
public abstract class EntityIdValueImpl implements EntityIdValue {

final String id;
final String baseIri;
Expand All @@ -52,7 +52,7 @@ public abstract class EntityIdImpl implements EntityId {
* the first part of the IRI of the site this belongs to, e.g.,
* "http://www.wikidata.org/entity/"
*/
EntityIdImpl(String id, String baseIri) {
EntityIdValueImpl(String id, String baseIri) {
Validate.notNull(id, "Entity ids cannot be null");
Validate.notNull(baseIri, "Entity base IRIs cannot be null");
this.id = id;
Expand Down Expand Up @@ -93,11 +93,11 @@ public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof EntityIdImpl)) {
if (!(obj instanceof EntityIdValueImpl)) {
return false;
}

EntityIdImpl other = (EntityIdImpl) obj;
EntityIdValueImpl other = (EntityIdValueImpl) obj;
return id.equals(other.id) && baseIri.equals(other.baseIri);
}

Expand Down

0 comments on commit 10fd7a5

Please sign in to comment.