package org.biohackathon.SPARQLBuilder.OWL; import org.json.JSONObject; /** * クラスへ、あるいはクラスからの1ステップリンクを記述する * @author Norio KOBAYASHI * @since 28.01.2014 * @version 29.01.2014 */ public class ClassLink { private String propertyURI = null; private String linkedClassURI = null; private Direction direction = null; private int numOfLinks = 0; private int numOfLinkedInstances = 0; private int numOfOriginInstances = 0; private int numOfOriginClassInstances = 0; private int numOfLinkedClassInstances = 0; /** * プロパティURI、リンク先(元)クラス、リンクの向きを与える構成子 * * @param propertyURI プロパティのURI * @param linkedClassURI リンクの主語、、あるいはリンクの目的語となっているクラスのURI * @param direction プロパティの向き、linkedClassURIのクラスがリンク先になっているときはDirection.forward,リンク元になっているときはDirection.reverse, それら両方の時はDirection.bothを指定する * @param numOfLinks 当該プロパティで両端クラスのインスタンス同士をつないでいるリンク数(トリプル数) * @throws Exception * @since 28.01.2014 */ public ClassLink(String propertyURI, String linkedClassURI, Direction direction, int numLinks, int numOfOriginInstances, int numOfLinkedInstances, int numOfOriginClassInstances, int numofLinkedClassInstances){ this.propertyURI = propertyURI; this.linkedClassURI = linkedClassURI; this.direction = direction; this.numOfLinks = numLinks; this.numOfLinkedInstances = numOfLinkedInstances; this.numOfOriginInstances = numOfOriginInstances; this.numOfOriginClassInstances = numOfOriginClassInstances; this.numOfLinkedClassInstances = numofLinkedClassInstances; } public JSONObject toJSON(){ JSONObject obj = new JSONObject(); if( propertyURI != null ) { obj.put("propertyURI", propertyURI); } if( linkedClassURI != null ){ obj.put("linkedClassURI", linkedClassURI); } obj.put("numOfLinks", numOfLinks); obj.put("numOfLinkedInstances", numOfLinkedInstances); obj.put("numOfOriginInstances", numOfOriginInstances); obj.put("numOfOriginClassInstances", numOfOriginClassInstances); obj.put("numOfLinkedClassInstances", numOfLinkedClassInstances); return obj; } public int getNumOfLinks() { return numOfLinks; } public void setNumOfLinks(int numOfLinks) { this.numOfLinks = numOfLinks; } /** * 文字列表記を取得する * * @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(linkedClassURI); sb.append(" ["); sb.append(numOfOriginInstances); sb.append("/"); sb.append(numOfOriginClassInstances); sb.append("] ---"); sb.append(" ["); sb.append(numOfLinks); sb.append("] --->"); sb.append(" ["); sb.append(numOfLinkedInstances); sb.append("/"); sb.append(numOfLinkedClassInstances); sb.append("]"); return sb.toString(); } public String getPropertyURI() { return propertyURI; } public void setPropertyURI(String propertyURI) { this.propertyURI = propertyURI; } public String getLinkedClassURI() { return linkedClassURI; } public void setLinkedClassURI(String linkedClassURI) { this.linkedClassURI = linkedClassURI; } public Direction getDirection() { return direction; } public void setDirection(Direction direction) { this.direction = direction; } public final int getNumOfLinkedInstances() { return numOfLinkedInstances; } public final void setNumOfLinkedInstances(int numOfLinkedInstances) { this.numOfLinkedInstances = numOfLinkedInstances; } public final int getNumOfOriginInstances() { return numOfOriginInstances; } public final void setNumOfOriginInstances(int numOfOriginInstances) { this.numOfOriginInstances = numOfOriginInstances; } public final int getNumOfOriginClassInstances() { return numOfOriginClassInstances; } public final void setNumOfOriginClassInstances(int numOfOriginClassInstances) { this.numOfOriginClassInstances = numOfOriginClassInstances; } public final int getNumOfLinkedClassInstances() { return numOfLinkedClassInstances; } public final void setNumOfLinkedClassInstances(int numOfLinkedClassInstances) { this.numOfLinkedClassInstances = numOfLinkedClassInstances; } // private String[] propertyDomainClassURIs = null; // private String[] propertyRangeClassURIs = null; }