Great! Thanks for the good job done. Though, just in case, you got the 
equivalent results set, right?




>________________________________
> From: Federico López <[email protected]>
>To: [email protected] 
>Sent: Thursday, July 5, 2012 7:55 PM
>Subject: Re: I need to get the root element of a ontology
> 
>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 <[email protected]>
>
>> 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 <[email protected]>
>>
>>> 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 <[email protected]>
>>>>> To: [email protected]
>>>>> 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 <[email protected]>
>>>>>
>>>>>  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á
>
>
>

Reply via email to