<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Nikolina,<div><br></div><div>See inline answers below </div><div><br><div><div>On Apr 5, 2013, at 3:57 AM, Nikolina Koleva <<a href="mailto:nikkol@coli.uni-saarland.de">nikkol@coli.uni-saarland.de</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><meta http-equiv="Content-Type" content="text/html charset=us-ascii"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Dear Manuel,<div><br></div><div>I extract the root path for a class found in a BioPortal ontology by making use of the SPARQL endpoint. For this I send a query that iteratively collects the path. </div><div>An example query looks like this: </div><div><br></div><div><div><font face="Optima"><b>PREFIX rdfs: <<a href="http://www.w3.org/2000/01/rdf-schema#">http://www.w3.org/2000/01/rdf-schema#</a>> </b></font></div><div><font face="Optima"><b>PREFIX skos: <<a href="http://www.w3.org/2004/02/skos/core#">http://www.w3.org/2004/02/skos/core#</a>></b></font></div><div><font face="Optima"><b>SELECT * WHERE { GRAPH <<a href="http://bioportal.bioontology.org/ontologies/FMA">http://bioportal.bioontology.org/ontologies/FMA</a>> { <<a href="http://sig.uw.edu/fma#Brain">http://sig.uw.edu/fma#Brain</a>> rdfs:subClassOf ?parent.</b></font></div><div><font face="Optima"><b>OPTIONAL {?parent rdfs:label ?label}.</b></font></div><div><font face="Optima"><b>OPTIONAL {?parent skos:prefLabel ?prefLabel}.}} LIMIT 100</b></font></div></div><div><br></div><div>By getting the response for now I just select the last parent retrieved and set it to the child slot and do so until no parent is retrieved.</div><div><br></div><div>Tough there may be more than one paths from the root to a class and so I investigate the question how would I extract all.</div><div>One can collect them in the same manner as explained above. However, this doesn't seem to be very efficient.</div></div></blockquote><div><br></div><div>Right, this requires many calls to the SPARQL endpoint.</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div><div>The REST services allow to get all root paths. However, we want to stick to the SPARQL endpoint.</div><div>We were wondering how this is done there. </div><div><br></div><div>We experimented with the SPARQL 1.1 Proprty Paths for getting the root path and it is possible to use the "+" operator that gives all ancestors.</div></div><div>For example using stardog:</div><div><br></div><div><font face="Optima"><b>./stardog query -c <a href="snarl://localhost:5820/temp">snarl://localhost:5820/temp</a> -q "CONSTRUCT { ?s rdfs:subClassOf ?o } WHERE { ?s rdfs:subClassOf ?o. obo:OGMS_0000071 rdfs:subClassOf+ ?o }"</b></font></div><div><br></div><div>The query above delivers the paths that we need. Unfortunately the "+" operator is not yet allowed by the BioPortal SPARQL endpoint.</div><div><br></div><div>Are you going to update to the SPARQL 1.1 version? </div></div></blockquote><div><br></div><div>Unfortunately there are no "short-term" plans to implement property paths in our SPARQL endpoint. </div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Do you have any idea how this could be solved?</div></div></blockquote><div><br></div><div>Do you actually need the paths ? or are you just interested in the set of parents. If this was the case you can use subClassOf reasoning to climb up the tree (with this approach you loose the path).</div><div><br></div><div>You can send the http parameter "rules" with "SUBP+SUBC" to enable subClassOf and subPropertyOf reasoning in our triple store.</div><div><br></div><div>An example in Java:</div><div><br></div><div><a href="https://github.com/ncbo/sparql-code-examples/blob/master/java/src/org/ncbo/stanford/sparql/examples/ClosureExample.java">https://github.com/ncbo/sparql-code-examples/blob/master/java/src/org/ncbo/stanford/sparql/examples/ClosureExample.java</a></div><div><br></div><div>Manuel</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div>Thank you very much in advance!</div><div><br></div><div>Best regards,</div><div>Nikolina</div><div><br></div><div><a href="http://www.ifomis.org/">http://www.ifomis.org/</a></div></div></blockquote></div><br></div></body></html>