Disease
name
class
Drug
name
indication
metabolism
pregnancyCategory
GenericDrug
affectedOrganism
chemicalFormula
genericName
Ingredient
name
SideEffect
sideEffectName
public void buildSelect() throws OWLOntologyCreationException {
ontology = loadOntology();
pm = prefixManager();
query = "PREFIX dailymed: <http://www4.wiwiss.fu-berlin.de/dailymed/resource/dailymed/>"
+ "\n" + "PREFIX drugbank: <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/>"
+ "\n" + "PREFIX sider: <http://www4.wiwiss.fu-berlin.de/sider/resource/sider/> \n\n";
query += Query.SELECT.toString();
for (Iterator it = buildHierarchyOnto(ontology).entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
String key = pm.getShortForm((OWLEntity) entry.getKey()).replace(":", "");
String value = entry.getValue().toString();
if (key.equalsIgnoreCase(valueClass)) {
if (!value.isEmpty()) {
ArrayList<OWLEntity> arrayList = (ArrayList<OWLEntity>) entry.getValue();
for (OWLEntity o : arrayList) {
//System.out.println(" " + pm.getShortForm(o).replace(":", ""));
String valueKey = pm.getShortForm(o).replace(":", "");
query += " ?" + valueClass + "_" + valueKey;
}
}
//System.out.println(query);
}
}
}
PREFIX dailymed: <http://www4.wiwiss.fu-berlin.de/dailymed/resource/dailymed/>
PREFIX drugbank: <http://www4.wiwiss.fu-berlin.de/drugbank/resource/drugbank/>
PREFIX sider: <http://www4.wiwiss.fu-berlin.de/sider/resource/sider/>
SELECT ?Disease_name ?Disease_class
public void buildWhere() throws OWLOntologyCreationException {
//ontology = loadOntology();
//pm = prefixManager();
query += "\n" + Query.WHERE.toString() + " {";
String prefix = "ddg";
for (Iterator it = buildHierarchyOnto(ontology).entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
String key = pm.getShortForm((OWLEntity) entry.getKey()).replace(":", "");
String value = entry.getValue().toString();
if (key.equalsIgnoreCase(valueClass)) {
if (!value.isEmpty()) {
ArrayList<OWLEntity> arrayList = (ArrayList<OWLEntity>) entry.getValue();
for (OWLEntity o : arrayList) {
//System.out.println(" " + pm.getShortForm(o).replace(":", ""));
String valueKey = pm.getShortForm(o).replace(":", "");
query += "\n ?" + valueClass + " "
+ prefix + ":" + valueKey
+ " ?" + valueClass + "_" + valueKey + ".";
}
}
}
}
for (Iterator it = buildObjectPropertyOnto(ontology).iterator(); it.hasNext();) {
TripleStore ts = (TripleStore) it.next();
if (valueClass.equals(ts.getDomain())) {
query += "\n ?" + ts.getDomain() + " "
+ prefix + ":" + ts.getObjectProperty()
+ " ?" + ts.getRange() + ".";
//+ " ?" + ts.getDomain() + "_" + ts.getRange() + ".";
}
}
for (Iterator it = buildObjectPropertyOnto(ontology).iterator(); it.hasNext();) {
TripleStore ts = (TripleStore) it.next();
if (valueClass.equals(ts.getDomain()) && !valueClass.equals(ts.getRange())) {
//System.out.println(ts.getRange());
}
}
System.out.println(query);
}
SELECT ?Disease_name ?Disease_class
WHERE {
?Disease ddg:name ?Disease_name.
?Disease ddg:class ?Disease_class.
?Disease ddg:possibleDrug ?Drug.
A chamada recursiva que eu gostaria de fazer era a seguinte maneira:
Quando tivesse uma linha igual a ?Disease ddg:possibleDrug ?Drug. que faz referência para outra classe que todos os seus filhos fossem adicionados no SELECT, além de chamados no WHERE. E caso a minha classe Drug fizesse referências pra outras classes que tivesse novas chamadas recursivas.
Alguém sabe me dizer o que devo mudar no meu código para fazer com que o mesmo tenha tal comportamento?
Desde de já obrigado pela ajuda de todos.
Abraço.