Difference between revisions of "Concept:PID/Java"
Jump to navigation
Jump to search
m (created by WikiTask 2017-04-18T10:15:37Z) |
m (created by WikiTask 2017-11-29T14:37:20Z) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 37: | Line 37: | ||
/** | /** | ||
− | * get the | + | * get the SiDIF representation of the given property |
* | * | ||
− | * @param name | + | * @param name - the name of the property |
− | * @param value | + | * @param value - the value of the property |
− | * @return | + | * @param type - the type of the property |
+ | * @return - the SiDIF Sting representation of the property | ||
*/ | */ | ||
public static String propertySiDIF(String name, String value, String type) { | public static String propertySiDIF(String name, String value, String type) { | ||
− | // default is | + | // default is a comment line which can be filled by uncommenting |
− | String result = ""; | + | String result = String.format("# is is %s of it\n",name);; |
// if the value is not empty | // if the value is not empty | ||
if ((value != null) && (!("".equals(value.trim())))) { | if ((value != null) && (!("".equals(value.trim())))) { | ||
Line 56: | Line 57: | ||
// create a SIDIF Property line like | // create a SIDIF Property line like | ||
// "John" is lastname of it | // "John" is lastname of it | ||
− | + | // convert double quotes to single quotes - FIXME - should we escape instead? | |
+ | value=value.replace("\"","'"); | ||
+ | result = String.format("%s%s%s is %s of it\n",quote,value,quote,name); | ||
} | } | ||
// return the SiDIF property line | // return the SiDIF property line | ||
Line 95: | Line 98: | ||
} | } | ||
} // TopicBase | } // TopicBase | ||
+ | /** | ||
+ | * CANInfo | ||
+ | * OBD-II Diagnostic CAN Bus Information item | ||
+ | */ | ||
+ | public static class CANInfo extends TopicBase { | ||
+ | |||
+ | public String name; | ||
+ | public String description; | ||
+ | public String unit; | ||
+ | public String pid; | ||
+ | |||
+ | public String getName() { return name; } | ||
+ | public void setName(String pName) { name=pName; } | ||
+ | public String getDescription() { return description; } | ||
+ | public void setDescription(String pDescription) { description=pDescription; } | ||
+ | public String getUnit() { return unit; } | ||
+ | public void setUnit(String pUnit) { unit=pUnit; } | ||
+ | public String getPid() { return pid; } | ||
+ | public void setPid(String pPid) { pid=pPid; } | ||
+ | /** | ||
+ | * convert this CANInfo to a JSON string | ||
+ | */ | ||
+ | public String toJson() { return JSON.toJSONString(this); } | ||
+ | |||
+ | /** | ||
+ | * convert this CANInfo to a WikiSon string | ||
+ | * @return the WikiSon representation of this CANInfo | ||
+ | */ | ||
+ | public String toWikiSon() { | ||
+ | String wikison= "{{CANInfo\n"; | ||
+ | wikison+=toWikiSon("name",name); | ||
+ | wikison+=toWikiSon("description",description); | ||
+ | wikison+=toWikiSon("unit",unit); | ||
+ | wikison+=toWikiSon("pid",pid); | ||
+ | wikison+="}}\n"; | ||
+ | return wikison; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * convert this CANInfo to a SiDIF string | ||
+ | * @return the SiDIF representation of this CANInfo | ||
+ | */ | ||
+ | public String toSiDIF() { | ||
+ | String siDIF = String.format("%s isA CANInfo\n",this.pageid); | ||
+ | siDIF+=propertySiDIF("name",name,"Text"); | ||
+ | siDIF+=propertySiDIF("description",description,"Text"); | ||
+ | siDIF+=propertySiDIF("unit",unit,"Text"); | ||
+ | siDIF+=propertySiDIF("pid",pid,"Page"); | ||
+ | return siDIF; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * get the pageid for this topic | ||
+ | */ | ||
+ | public String getPageid() { return pageid; }; | ||
+ | |||
+ | /** | ||
+ | * default constructor for CANInfo | ||
+ | */ | ||
+ | public CANInfo() {} | ||
+ | |||
+ | /** | ||
+ | * construct a CANInfo from the given Triple | ||
+ | * @param query - the TripleQuery to get the triples from | ||
+ | * @param pCANInfoTriple - the triple to construct me from | ||
+ | */ | ||
+ | public CANInfo(TripleQuery query,Triple pCANInfoTriple) { | ||
+ | this(query,pCANInfoTriple.getSubject().toString()); | ||
+ | } // constructor | ||
+ | |||
+ | /** | ||
+ | * construct a CANInfo from the given pageId | ||
+ | * @param query - the TripleQuery to get the triples from | ||
+ | * @param pageid - pageid | ||
+ | */ | ||
+ | public CANInfo(TripleQuery query,String pageid) { | ||
+ | this.pageid=pageid; | ||
+ | Triple nameTriple=query.selectSingle(pageid,"name",null); | ||
+ | if (nameTriple==null) | ||
+ | nameTriple=query.selectSingle(pageid,"Property:CANInfo_name",null); | ||
+ | if (nameTriple!=null) | ||
+ | name=nameTriple.getObject().toString(); | ||
+ | Triple descriptionTriple=query.selectSingle(pageid,"description",null); | ||
+ | if (descriptionTriple==null) | ||
+ | descriptionTriple=query.selectSingle(pageid,"Property:CANInfo_description",null); | ||
+ | if (descriptionTriple!=null) | ||
+ | description=descriptionTriple.getObject().toString(); | ||
+ | Triple unitTriple=query.selectSingle(pageid,"unit",null); | ||
+ | if (unitTriple==null) | ||
+ | unitTriple=query.selectSingle(pageid,"Property:CANInfo_unit",null); | ||
+ | if (unitTriple!=null) | ||
+ | unit=unitTriple.getObject().toString(); | ||
+ | Triple pidTriple=query.selectSingle(pageid,"pid",null); | ||
+ | if (pidTriple==null) | ||
+ | pidTriple=query.selectSingle(pageid,"Property:CANInfo_pid",null); | ||
+ | if (pidTriple!=null) | ||
+ | pid=pidTriple.getObject().toString(); | ||
+ | init(query); | ||
+ | } // constructor for CANInfo | ||
+ | |||
+ | // >>>{user defined topic code}{CANInfo}{CANInfo} | ||
+ | // <<<{user defined topic code}{CANInfo}{CANInfo} | ||
+ | } // class CANInfo | ||
+ | /** | ||
+ | * Manager for CANInfo | ||
+ | */ | ||
+ | public static class CANInfoManager extends TopicBase { | ||
+ | |||
+ | public String topicName="CANInfo"; | ||
+ | public transient List<CANInfo> mCANInfos=new ArrayList<CANInfo>(); | ||
+ | public transient Map<String,CANInfo> mCANInfoMap=new LinkedHashMap<String,CANInfo>(); | ||
+ | |||
+ | /** | ||
+ | * get my CANInfos | ||
+ | */ | ||
+ | public List<CANInfo> getCANInfos() { | ||
+ | List<CANInfo> result=this.mCANInfos; | ||
+ | return result; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * add a new CANInfo | ||
+ | */ | ||
+ | public CANInfo add(CANInfo pCANInfo) { | ||
+ | mCANInfos.add(pCANInfo); | ||
+ | mCANInfoMap.put(pCANInfo.getPageid(),pCANInfo); | ||
+ | return pCANInfo; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * add a new CANInfo from the given triple | ||
+ | */ | ||
+ | public CANInfo add(TripleQuery query,Triple pCANInfoTriple) { | ||
+ | CANInfo lCANInfo=new CANInfo(query,pCANInfoTriple); | ||
+ | add(lCANInfo); | ||
+ | return lCANInfo; | ||
+ | } | ||
+ | |||
+ | // reinitialize my mCANInfo map | ||
+ | public void reinit() { | ||
+ | mCANInfoMap.clear(); | ||
+ | for (CANInfo lCANInfo:mCANInfos) { | ||
+ | mCANInfoMap.put(lCANInfo.getPageid(),lCANInfo); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // convert this manager to json format | ||
+ | public String toJson() { return JSON.toJSONString(this); } | ||
+ | |||
+ | // get a new manager from the given json string | ||
+ | public static CANInfoManager fromJson(String json) { | ||
+ | CANInfoManager result=JSON.parseObject(json, CANInfoManager.class); | ||
+ | result.reinit(); | ||
+ | return result; | ||
+ | } | ||
+ | |||
+ | // default constructor for CANInfo Manager | ||
+ | public CANInfoManager() {} | ||
+ | |||
+ | // add CANInfos from the given query | ||
+ | public void addCANInfos(TripleQuery pCANInfoQuery,TripleQuery query) { | ||
+ | if (pCANInfoQuery!=null) { | ||
+ | for (Triple lCANInfoTriple:pCANInfoQuery.getTriples()) { | ||
+ | add(query,lCANInfoTriple); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // construct me from the given triple Query query | ||
+ | public CANInfoManager(TripleQuery query) { | ||
+ | // first query the SiDIF bases triplestore | ||
+ | TripleQuery lCANInfoQuery=query.query(null,"isA","CANInfo"); | ||
+ | addCANInfos(lCANInfoQuery,query); | ||
+ | // then the SMW triplestore | ||
+ | lCANInfoQuery=query.query(null,"Property:IsA","CANInfo"); | ||
+ | addCANInfos(lCANInfoQuery,query); | ||
+ | init(query); | ||
+ | } // constructor for CANInfo Manager | ||
+ | |||
+ | // >>>{user defined topicmanager code}{CANInfo}{CANInfo} | ||
+ | // <<<{user defined topicmanager code}{CANInfo}{CANInfo} | ||
+ | } // class CANInfo Manager | ||
/** | /** | ||
* PID | * PID | ||
Line 103: | Line 288: | ||
public String id; | public String id; | ||
public String name; | public String name; | ||
+ | public String description; | ||
public String links; | public String links; | ||
public String examples; | public String examples; | ||
+ | public String frequency; | ||
public String getId() { return id; } | public String getId() { return id; } | ||
Line 110: | Line 297: | ||
public String getName() { return name; } | public String getName() { return name; } | ||
public void setName(String pName) { name=pName; } | public void setName(String pName) { name=pName; } | ||
+ | public String getDescription() { return description; } | ||
+ | public void setDescription(String pDescription) { description=pDescription; } | ||
public String getLinks() { return links; } | public String getLinks() { return links; } | ||
public void setLinks(String pLinks) { links=pLinks; } | public void setLinks(String pLinks) { links=pLinks; } | ||
public String getExamples() { return examples; } | public String getExamples() { return examples; } | ||
public void setExamples(String pExamples) { examples=pExamples; } | public void setExamples(String pExamples) { examples=pExamples; } | ||
+ | public String getFrequency() { return frequency; } | ||
+ | public void setFrequency(String pFrequency) { frequency=pFrequency; } | ||
/** | /** | ||
* convert this PID to a JSON string | * convert this PID to a JSON string | ||
Line 121: | Line 312: | ||
/** | /** | ||
* convert this PID to a WikiSon string | * convert this PID to a WikiSon string | ||
+ | * @return the WikiSon representation of this PID | ||
*/ | */ | ||
public String toWikiSon() { | public String toWikiSon() { | ||
Line 126: | Line 318: | ||
wikison+=toWikiSon("id",id); | wikison+=toWikiSon("id",id); | ||
wikison+=toWikiSon("name",name); | wikison+=toWikiSon("name",name); | ||
+ | wikison+=toWikiSon("description",description); | ||
wikison+=toWikiSon("links",links); | wikison+=toWikiSon("links",links); | ||
wikison+=toWikiSon("examples",examples); | wikison+=toWikiSon("examples",examples); | ||
+ | wikison+=toWikiSon("frequency",frequency); | ||
wikison+="}}\n"; | wikison+="}}\n"; | ||
return wikison; | return wikison; | ||
+ | } | ||
+ | |||
+ | /** | ||
+ | * convert this PID to a SiDIF string | ||
+ | * @return the SiDIF representation of this PID | ||
+ | */ | ||
+ | public String toSiDIF() { | ||
+ | String siDIF = String.format("%s isA PID\n",this.pageid); | ||
+ | siDIF+=propertySiDIF("id",id,"Text"); | ||
+ | siDIF+=propertySiDIF("name",name,"Text"); | ||
+ | siDIF+=propertySiDIF("description",description,"Text"); | ||
+ | siDIF+=propertySiDIF("links",links,"Text"); | ||
+ | siDIF+=propertySiDIF("examples",examples,"Text"); | ||
+ | siDIF+=propertySiDIF("frequency",frequency,"Text"); | ||
+ | return siDIF; | ||
} | } | ||
Line 168: | Line 377: | ||
if (nameTriple!=null) | if (nameTriple!=null) | ||
name=nameTriple.getObject().toString(); | name=nameTriple.getObject().toString(); | ||
+ | Triple descriptionTriple=query.selectSingle(pageid,"description",null); | ||
+ | if (descriptionTriple==null) | ||
+ | descriptionTriple=query.selectSingle(pageid,"Property:PID_description",null); | ||
+ | if (descriptionTriple!=null) | ||
+ | description=descriptionTriple.getObject().toString(); | ||
Triple linksTriple=query.selectSingle(pageid,"links",null); | Triple linksTriple=query.selectSingle(pageid,"links",null); | ||
if (linksTriple==null) | if (linksTriple==null) | ||
Line 178: | Line 392: | ||
if (examplesTriple!=null) | if (examplesTriple!=null) | ||
examples=examplesTriple.getObject().toString(); | examples=examplesTriple.getObject().toString(); | ||
+ | Triple frequencyTriple=query.selectSingle(pageid,"frequency",null); | ||
+ | if (frequencyTriple==null) | ||
+ | frequencyTriple=query.selectSingle(pageid,"Property:PID_frequency",null); | ||
+ | if (frequencyTriple!=null) | ||
+ | frequency=frequencyTriple.getObject().toString(); | ||
init(query); | init(query); | ||
} // constructor for PID | } // constructor for PID | ||
Line 263: | Line 482: | ||
// <<<{user defined topicmanager code}{PID}{PID} | // <<<{user defined topicmanager code}{PID}{PID} | ||
} // class PID Manager | } // class PID Manager | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
+ | </source> |
Latest revision as of 15:37, 29 November 2017
java code
@// This is a rythm template
@// the args are the standard wikiTask arguments
@import org.sidif.triple.TripleQuery
@import org.sidif.triple.Triple
@import com.alibaba.fastjson.JSON
@args() {
String title
String logo
org.sidif.wiki.WikiTask wikiTask
org.sidif.triple.TripleStore tripleStore
}
@def static {
/**
* Base class
*/
static abstract class TopicBase {
// each Topic has a pageid - for non subobject thats the pagename
public String pageid;
/**
* get a WikiSon version of the given name value
*
* @param name
* @param value
* @return - the string representation
*/
public String toWikiSon(String name, String value) {
String result = "<!-- " + name + " is null-->\n";
if (value != null)
result = "|" + name + "=" + value + "\n";
return result;
}
/**
* get the SiDIF representation of the given property
*
* @param name - the name of the property
* @param value - the value of the property
* @param type - the type of the property
* @return - the SiDIF Sting representation of the property
*/
public static String propertySiDIF(String name, String value, String type) {
// default is a comment line which can be filled by uncommenting
String result = String.format("# is is %s of it\n",name);;
// if the value is not empty
if ((value != null) && (!("".equals(value.trim())))) {
// do we need to quote the result?
String quote = "";
// this depends on the Type
if ("Text".equals(type)) {
quote = "\"";
}
// create a SIDIF Property line like
// "John" is lastname of it
// convert double quotes to single quotes - FIXME - should we escape instead?
value=value.replace("\"","'");
result = String.format("%s%s%s is %s of it\n",quote,value,quote,name);
}
// return the SiDIF property line
return result;
}
/**
* get me as a String
*
* @param name
* @param value
* @return
*/
public static String propertySiDIF(String name, String value) {
String result = propertySiDIF(name, value, "Text");
return result;
}
/**
* check if the given boolean String value is true
*
* @param value
* @return true if the value is not null and has true/TRUE as it's string
* content
*/
public boolean isTrue(String value) {
boolean result = false;
if (value != null && value.toLowerCase().equals("true")) {
result = true;
}
return result;
}
/**
* initialize
*/
public void init(TripleQuery query) {
}
} // TopicBase
/**
* CANInfo
* OBD-II Diagnostic CAN Bus Information item
*/
public static class CANInfo extends TopicBase {
public String name;
public String description;
public String unit;
public String pid;
public String getName() { return name; }
public void setName(String pName) { name=pName; }
public String getDescription() { return description; }
public void setDescription(String pDescription) { description=pDescription; }
public String getUnit() { return unit; }
public void setUnit(String pUnit) { unit=pUnit; }
public String getPid() { return pid; }
public void setPid(String pPid) { pid=pPid; }
/**
* convert this CANInfo to a JSON string
*/
public String toJson() { return JSON.toJSONString(this); }
/**
* convert this CANInfo to a WikiSon string
* @return the WikiSon representation of this CANInfo
*/
public String toWikiSon() {
String wikison= "{{CANInfo\n";
wikison+=toWikiSon("name",name);
wikison+=toWikiSon("description",description);
wikison+=toWikiSon("unit",unit);
wikison+=toWikiSon("pid",pid);
wikison+="}}\n";
return wikison;
}
/**
* convert this CANInfo to a SiDIF string
* @return the SiDIF representation of this CANInfo
*/
public String toSiDIF() {
String siDIF = String.format("%s isA CANInfo\n",this.pageid);
siDIF+=propertySiDIF("name",name,"Text");
siDIF+=propertySiDIF("description",description,"Text");
siDIF+=propertySiDIF("unit",unit,"Text");
siDIF+=propertySiDIF("pid",pid,"Page");
return siDIF;
}
/**
* get the pageid for this topic
*/
public String getPageid() { return pageid; };
/**
* default constructor for CANInfo
*/
public CANInfo() {}
/**
* construct a CANInfo from the given Triple
* @param query - the TripleQuery to get the triples from
* @param pCANInfoTriple - the triple to construct me from
*/
public CANInfo(TripleQuery query,Triple pCANInfoTriple) {
this(query,pCANInfoTriple.getSubject().toString());
} // constructor
/**
* construct a CANInfo from the given pageId
* @param query - the TripleQuery to get the triples from
* @param pageid - pageid
*/
public CANInfo(TripleQuery query,String pageid) {
this.pageid=pageid;
Triple nameTriple=query.selectSingle(pageid,"name",null);
if (nameTriple==null)
nameTriple=query.selectSingle(pageid,"Property:CANInfo_name",null);
if (nameTriple!=null)
name=nameTriple.getObject().toString();
Triple descriptionTriple=query.selectSingle(pageid,"description",null);
if (descriptionTriple==null)
descriptionTriple=query.selectSingle(pageid,"Property:CANInfo_description",null);
if (descriptionTriple!=null)
description=descriptionTriple.getObject().toString();
Triple unitTriple=query.selectSingle(pageid,"unit",null);
if (unitTriple==null)
unitTriple=query.selectSingle(pageid,"Property:CANInfo_unit",null);
if (unitTriple!=null)
unit=unitTriple.getObject().toString();
Triple pidTriple=query.selectSingle(pageid,"pid",null);
if (pidTriple==null)
pidTriple=query.selectSingle(pageid,"Property:CANInfo_pid",null);
if (pidTriple!=null)
pid=pidTriple.getObject().toString();
init(query);
} // constructor for CANInfo
// >>>{user defined topic code}{CANInfo}{CANInfo}
// <<<{user defined topic code}{CANInfo}{CANInfo}
} // class CANInfo
/**
* Manager for CANInfo
*/
public static class CANInfoManager extends TopicBase {
public String topicName="CANInfo";
public transient List<CANInfo> mCANInfos=new ArrayList<CANInfo>();
public transient Map<String,CANInfo> mCANInfoMap=new LinkedHashMap<String,CANInfo>();
/**
* get my CANInfos
*/
public List<CANInfo> getCANInfos() {
List<CANInfo> result=this.mCANInfos;
return result;
}
/**
* add a new CANInfo
*/
public CANInfo add(CANInfo pCANInfo) {
mCANInfos.add(pCANInfo);
mCANInfoMap.put(pCANInfo.getPageid(),pCANInfo);
return pCANInfo;
}
/**
* add a new CANInfo from the given triple
*/
public CANInfo add(TripleQuery query,Triple pCANInfoTriple) {
CANInfo lCANInfo=new CANInfo(query,pCANInfoTriple);
add(lCANInfo);
return lCANInfo;
}
// reinitialize my mCANInfo map
public void reinit() {
mCANInfoMap.clear();
for (CANInfo lCANInfo:mCANInfos) {
mCANInfoMap.put(lCANInfo.getPageid(),lCANInfo);
}
}
// convert this manager to json format
public String toJson() { return JSON.toJSONString(this); }
// get a new manager from the given json string
public static CANInfoManager fromJson(String json) {
CANInfoManager result=JSON.parseObject(json, CANInfoManager.class);
result.reinit();
return result;
}
// default constructor for CANInfo Manager
public CANInfoManager() {}
// add CANInfos from the given query
public void addCANInfos(TripleQuery pCANInfoQuery,TripleQuery query) {
if (pCANInfoQuery!=null) {
for (Triple lCANInfoTriple:pCANInfoQuery.getTriples()) {
add(query,lCANInfoTriple);
}
}
}
// construct me from the given triple Query query
public CANInfoManager(TripleQuery query) {
// first query the SiDIF bases triplestore
TripleQuery lCANInfoQuery=query.query(null,"isA","CANInfo");
addCANInfos(lCANInfoQuery,query);
// then the SMW triplestore
lCANInfoQuery=query.query(null,"Property:IsA","CANInfo");
addCANInfos(lCANInfoQuery,query);
init(query);
} // constructor for CANInfo Manager
// >>>{user defined topicmanager code}{CANInfo}{CANInfo}
// <<<{user defined topicmanager code}{CANInfo}{CANInfo}
} // class CANInfo Manager
/**
* PID
* OBD-II Diagnostic Parameter
*/
public static class PID extends TopicBase {
public String id;
public String name;
public String description;
public String links;
public String examples;
public String frequency;
public String getId() { return id; }
public void setId(String pId) { id=pId; }
public String getName() { return name; }
public void setName(String pName) { name=pName; }
public String getDescription() { return description; }
public void setDescription(String pDescription) { description=pDescription; }
public String getLinks() { return links; }
public void setLinks(String pLinks) { links=pLinks; }
public String getExamples() { return examples; }
public void setExamples(String pExamples) { examples=pExamples; }
public String getFrequency() { return frequency; }
public void setFrequency(String pFrequency) { frequency=pFrequency; }
/**
* convert this PID to a JSON string
*/
public String toJson() { return JSON.toJSONString(this); }
/**
* convert this PID to a WikiSon string
* @return the WikiSon representation of this PID
*/
public String toWikiSon() {
String wikison= "{{PID\n";
wikison+=toWikiSon("id",id);
wikison+=toWikiSon("name",name);
wikison+=toWikiSon("description",description);
wikison+=toWikiSon("links",links);
wikison+=toWikiSon("examples",examples);
wikison+=toWikiSon("frequency",frequency);
wikison+="}}\n";
return wikison;
}
/**
* convert this PID to a SiDIF string
* @return the SiDIF representation of this PID
*/
public String toSiDIF() {
String siDIF = String.format("%s isA PID\n",this.pageid);
siDIF+=propertySiDIF("id",id,"Text");
siDIF+=propertySiDIF("name",name,"Text");
siDIF+=propertySiDIF("description",description,"Text");
siDIF+=propertySiDIF("links",links,"Text");
siDIF+=propertySiDIF("examples",examples,"Text");
siDIF+=propertySiDIF("frequency",frequency,"Text");
return siDIF;
}
/**
* get the pageid for this topic
*/
public String getPageid() { return pageid; };
/**
* default constructor for PID
*/
public PID() {}
/**
* construct a PID from the given Triple
* @param query - the TripleQuery to get the triples from
* @param pPIDTriple - the triple to construct me from
*/
public PID(TripleQuery query,Triple pPIDTriple) {
this(query,pPIDTriple.getSubject().toString());
} // constructor
/**
* construct a PID from the given pageId
* @param query - the TripleQuery to get the triples from
* @param pageid - pageid
*/
public PID(TripleQuery query,String pageid) {
this.pageid=pageid;
Triple idTriple=query.selectSingle(pageid,"id",null);
if (idTriple==null)
idTriple=query.selectSingle(pageid,"Property:PID_id",null);
if (idTriple!=null)
id=idTriple.getObject().toString();
Triple nameTriple=query.selectSingle(pageid,"name",null);
if (nameTriple==null)
nameTriple=query.selectSingle(pageid,"Property:PID_name",null);
if (nameTriple!=null)
name=nameTriple.getObject().toString();
Triple descriptionTriple=query.selectSingle(pageid,"description",null);
if (descriptionTriple==null)
descriptionTriple=query.selectSingle(pageid,"Property:PID_description",null);
if (descriptionTriple!=null)
description=descriptionTriple.getObject().toString();
Triple linksTriple=query.selectSingle(pageid,"links",null);
if (linksTriple==null)
linksTriple=query.selectSingle(pageid,"Property:PID_links",null);
if (linksTriple!=null)
links=linksTriple.getObject().toString();
Triple examplesTriple=query.selectSingle(pageid,"examples",null);
if (examplesTriple==null)
examplesTriple=query.selectSingle(pageid,"Property:PID_examples",null);
if (examplesTriple!=null)
examples=examplesTriple.getObject().toString();
Triple frequencyTriple=query.selectSingle(pageid,"frequency",null);
if (frequencyTriple==null)
frequencyTriple=query.selectSingle(pageid,"Property:PID_frequency",null);
if (frequencyTriple!=null)
frequency=frequencyTriple.getObject().toString();
init(query);
} // constructor for PID
// >>>{user defined topic code}{PID}{PID}
// <<<{user defined topic code}{PID}{PID}
} // class PID
/**
* Manager for PID
*/
public static class PIDManager extends TopicBase {
public String topicName="PID";
public transient List<PID> mPIDs=new ArrayList<PID>();
public transient Map<String,PID> mPIDMap=new LinkedHashMap<String,PID>();
/**
* get my PIDs
*/
public List<PID> getPIDs() {
List<PID> result=this.mPIDs;
return result;
}
/**
* add a new PID
*/
public PID add(PID pPID) {
mPIDs.add(pPID);
mPIDMap.put(pPID.getPageid(),pPID);
return pPID;
}
/**
* add a new PID from the given triple
*/
public PID add(TripleQuery query,Triple pPIDTriple) {
PID lPID=new PID(query,pPIDTriple);
add(lPID);
return lPID;
}
// reinitialize my mPID map
public void reinit() {
mPIDMap.clear();
for (PID lPID:mPIDs) {
mPIDMap.put(lPID.getPageid(),lPID);
}
}
// convert this manager to json format
public String toJson() { return JSON.toJSONString(this); }
// get a new manager from the given json string
public static PIDManager fromJson(String json) {
PIDManager result=JSON.parseObject(json, PIDManager.class);
result.reinit();
return result;
}
// default constructor for PID Manager
public PIDManager() {}
// add PIDs from the given query
public void addPIDs(TripleQuery pPIDQuery,TripleQuery query) {
if (pPIDQuery!=null) {
for (Triple lPIDTriple:pPIDQuery.getTriples()) {
add(query,lPIDTriple);
}
}
}
// construct me from the given triple Query query
public PIDManager(TripleQuery query) {
// first query the SiDIF bases triplestore
TripleQuery lPIDQuery=query.query(null,"isA","PID");
addPIDs(lPIDQuery,query);
// then the SMW triplestore
lPIDQuery=query.query(null,"Property:IsA","PID");
addPIDs(lPIDQuery,query);
init(query);
} // constructor for PID Manager
// >>>{user defined topicmanager code}{PID}{PID}
// <<<{user defined topicmanager code}{PID}{PID}
} // class PID Manager
}