I have run it with Fuseki Server 0.2.3 using the MINUS sentence an takes 0.499 s using the same Ontology that I have used before.
And when a I try with the big one FMA (1'800.000 triples) it seems like works faster than the FILTER sentece... 2012/7/5 Federico López <fic...@gmail.com> > Well... I'm using the libraries that I get from de Maven Repository... > Excuse me... I just have check and I have been using ARQ 2.9.2... But the > Fuseki it is the old one... I going to try with the 0.2.3 version... > Thanks A lot... > > > 2012/7/5 Stephen Allen <sal...@apache.org> > >> Do you mind trying it with Fuseki 0.2.3? That contains ARQ 2.9.2 >> which has the performance improvement for MINUS queries that Andy was >> referring to. >> >> -Stephen >> >> [1] http://www.apache.org/dist/jena/binaries/ >> >> >> On Thu, Jul 5, 2012 at 10:55 AM, Federico López <fic...@gmail.com> wrote: >> > Mi PC is an Intel Core 2 Quad Q2800 @2.33Ghz 2.33Ghz... And I have 4GB >> of >> > RAM... (Excuse my poor English) >> > >> > 2012/7/5 Federico López <fic...@gmail.com> >> > >> >> I try the two queries in my Java project (I usea ARQ 2.8.8 and Fuseki >> >> 0.2.2) using with JUnit test. >> >> With the FILTER NOT EXISTS sentece takes 0.724s (or less) querying the >> >> roots in RadLex Ontology ( 234.442 triples), with the MINUS sentence >> >> takes 56.762s (even more)... >> >> >> >> >> >> 2012/7/5 Andy Seaborne <a...@apache.org> >> >> >> >>> On 05/07/12 18:30, Milorad Tosic wrote: >> >>> >> >>>> Would there by any differences in performance or eventually in result >> >>>> set if we would substitute >> >>>> FILTER NOT EXISTS { ?root rdfs:subClassOf ?super } >> >>>> with >> >>>> >> >>>> MINUS { ?root rdfs:subClassOf ?super } >> >>>> in the previous query? >> >>>> >> >>>> Milorad >> >>>> >> >>> >> >>> Depends - also the required temporary memory needed is different. The >> >>> MINUS implement is quite performant now (previously it would have been >> >>> the case the FILTER version was faster). >> >>> >> >>> The FILTER version streams - constant memory overhead. >> >>> >> >>> The MINUS version uses temporary RAM - in proportion to the size of >> the >> >>> data matched. >> >>> >> >>> If there are a lot of rdfs:subClassOf, e.g. have expanded the >> inferences >> >>> previous, it could be the MINUS version is slower. >> >>> >> >>> You'll have to try to be definitive. If you try, do let us know. >> >>> >> >>> Andy >> >>> >> >>> >> >>> >> >>>> >> >>>> >> >>>> ______________________________**__ >> >>>>> From: Federico López <fic...@gmail.com> >> >>>>> To: users@jena.apache.org >> >>>>> Sent: Thursday, July 5, 2012 5:28 PM >> >>>>> Subject: Re: I need to get the root element of a ontology >> >>>>> >> >>>>> 2012/7/5 Andy Seaborne <a...@apache.org> >> >>>>> >> >>>>> On 05/07/12 06:49, Federico López wrote: >> >>>>>> >> >>>>>> I looking for a good quey that allows me to get the roots >> elements of >> >>>>>>> a >> >>>>>>> Ontology. Also, I need to know wich one of these roots have >> >>>>>>> children... >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> Version of Jena used? >> >>>>>> I'm using fuseki 0.2.2... >> >>>>>> >> >>>>>> I have each ontology in a NAMED GRAPH.... >> >>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>> And you are querying the union graph? >> >>>>>> >> >>>>> >> >>>>> >> >>>>> I'm Querying each GRAPH at time... >> >>>>> >> >>>>> >> >>>>>> >> >>>>>> >> >>>>>> This is what I using for it but the query is taking too much. >> >>>>>>> >> >>>>>>> >> >>>>>> How big is the data (in triples)? >> >>>>>> >> >>>>>> Well... I'm querying Biomedical Ontologies like FMA(1'859.969 >> >>>>> triples), >> >>>>> RadLex(234.442), ICD10(165.310)... >> >>>>> >> >>>>> >> >>>>>> Are you using inference? >> >>>>>> >> >>>>> >> >>>>> I don't.... >> >>>>> >> >>>>> >> >>>>>> >> >>>>>> >> >>>>>> SELECT DISTINCT ?root ?label (COUNT(?child) AS ?nChild) >> >>>>>>> FROM <http://ontologyURI> >> >>>>>>> WHERE >> >>>>>>> { >> >>>>>>> ?root a ?class . >> >>>>>>> ?class rdfs:subClassOf owl:Class . >> >>>>>>> ?root rdfs:label ?label . >> >>>>>>> OPTIONAL { >> >>>>>>> ?root rdfs:subClassOf ?super . >> >>>>>>> } >> >>>>>>> OPTIONAL { >> >>>>>>> ?child rdfs:subClassOf ?root . >> >>>>>>> } >> >>>>>>> FILTER (!bound(?super)) >> >>>>>>> } >> >>>>>>> GROUP BY ?root ?label >> >>>>>>> >> >>>>>>> Any idea? >> >>>>>>> >> >>>>>>> Thanks... >> >>>>>>> >> >>>>>>> >> >>>>>>> >> >>>>>>> without inference, this maybe what you want: I'm guessing from >> your >> >>>>>> description: >> >>>>>> >> >>>>>> SELECT ?root >> >>>>>> { >> >>>>>> # A root is something that is of type class >> >>>>>> # which has no super class mentioned. >> >>>>>> ?root rdf:type owl:Class . >> >>>>>> FILTER NOT EXISTS { ?root rdfs:subClassOf ?super } >> >>>>>> >> >>>>>> ?root rdfs:label ?label . >> >>>>>> } >> >>>>>> >> >>>>>> Adding in the COUNT of ?child and GROUP BY is unlikely to be cheap. >> >>>>>> >> >>>>>> SELECT ?root (COUNT(DISTINCT ?child) AS ?nChild) >> >>>>>> { >> >>>>>> # A root is something that is of type class >> >>>>>> # which has no super class mentioned. >> >>>>>> ?root rdf:type owl:Class . >> >>>>>> FILTER NOT EXISTS { ?root rdfs:subClassOf ?super } >> >>>>>> >> >>>>>> ?root rdfs:label ?label . >> >>>>>> # Children, any depth, by property paths >> >>>>>> OPTIONAL { ?child rdfs:subClassOf+ ?root } >> >>>>>> } >> >>>>>> GROUP BY ?root >> >>>>>> Andy >> >>>>>> >> >>>>>> >> >>>>> And thanks, I going to try your query, but I think that is just >> that I >> >>>>> need >> >>>>> :D >> >>>>> >> >>>>> -- >> >>>>> *FEDERICO LÓPEZ GÓMEZ* >> >>>>> Estudiante Ingeniería de Sistemas >> >>>>> Universidad del Valle - Sede Tuluá >> >>>>> >> >>>>> >> >>>>> >> >>>>> >> >>> >> >>> >> >> >> >> >> >> -- >> >> *FEDERICO LÓPEZ GÓMEZ* >> >> Estudiante Ingeniería de Sistemas >> >> Universidad del Valle - Sede Tuluá >> >> >> >> >> > >> > >> > -- >> > *FEDERICO LÓPEZ GÓMEZ* >> > Estudiante Ingeniería de Sistemas >> > Universidad del Valle - Sede Tuluá >> > > > > -- > *FEDERICO LÓPEZ GÓMEZ* > Estudiante Ingeniería de Sistemas > Universidad del Valle - Sede Tuluá > > -- *FEDERICO LÓPEZ GÓMEZ* Estudiante Ingeniería de Sistemas Universidad del Valle - Sede Tuluá