package org.biohackathon.SPARQLBuilder.OWL; import java.util.HashSet; /** * インスタンスへ、あるいはインスタンスからの1ステップリンクを記述する * @author Norio KOBAYASHI * @since 28.01.2014 * @version 29.01.2014 */ public class InstanceLink { private String propertyURI = null; private String[] linkedClassURIs = null; private String linkedInstanceURI = null; private Direction direction = null; /** * プロパティURI、リンク先(元)インスタンス、リンクの向きを与える構成子 *
* リンク先 (元) インスタンスについては、それが属しているすべてのクラスも与える * * @param propertyURI プロパティのURI * @param linkedInstanceURI リンクの主語、、あるいはリンクの目的語となっているインスタンスのURI * @param linkedClassURIs linkedInstanceURIのインスタンスが属しているすべてのクラスのURIの配列 * @param direction プロパティの向き、linkedClassURIのクラスがリンク先になっているときはDirection.forward,リンク元になっているときはDirection.reverse, それら両方の時はDirection.bothを指定する * @throws Exception * @since 28.01.2014 */ public InstanceLink(String propertyURI, String linkedInstanceURI, String[] linkedClassURIs, Direction direction){ this.propertyURI = propertyURI; this.linkedInstanceURI = linkedInstanceURI; this.linkedClassURIs = linkedClassURIs; this.direction = direction; } /** * linkedInstanceURIのインスタンスが属しているクラスを一つ追加する * * @param classURI 追加するlinkedInstanceURIのインスタンスが属しているクラスのURI * @throws Exception * @since 28.01.2014 */ public void addLinkedClassURI(String classURI){ if( linkedClassURIs == null || linkedClassURIs.length == 0 ){ linkedClassURIs = new String[]{classURI}; }else{ HashSet hSet = new HashSet(); for(String clsURI: linkedClassURIs){ hSet.add(clsURI); } hSet.add(classURI); linkedClassURIs = hSet.toArray(new String[0]); } } /** * 文字列表記を取得する * * @since 28.01.2014 */ public String toString(){ StringBuffer sb = new StringBuffer(); sb.append(propertyURI); if( direction == Direction.forward ){ sb.append(" --> "); }else{ if( direction == Direction.reverse ){ sb.append(" <-- "); }else{ sb.append(" <-> "); } } sb.append(linkedInstanceURI); sb.append(" rdf:type ["); if( linkedClassURIs != null ){ for( int i = 0; i < linkedClassURIs.length; i++ ) { if( i != 0 ) { sb.append(", "); } sb.append(linkedClassURIs[i]); } } sb.append("]"); return sb.toString(); } public String getPropertyURI() { return propertyURI; } public void setPropertyURI(String propertyURI) { this.propertyURI = propertyURI; } public String[] getLinkedClassURIs() { return linkedClassURIs; } public void setLinkedClassURIs(String[] linkedClassURIs) { this.linkedClassURIs = linkedClassURIs; } public Direction getDirection() { return direction; } public void setDirection(Direction direction) { this.direction = direction; } public String getLinkedInstanceURI() { return linkedInstanceURI; } public void setLinkedInstanceURI(String linkedInstanceURI) { this.linkedInstanceURI = linkedInstanceURI; } // private String[] propertyDomainClassURIs = null; // private String[] propertyRangeClassURIs = null; }