|
ALe; This is more of a general
reasoning question, so I'd suggest looking for forums that get into more general aspects of inference. What I can tell you is that the
kind of reasoning you are attempting is not possible in OWL because of
Open World Assumptions. I.e. it's not
possible to infer that something is not
a member of a class because some
other information may become available
that infers or asserts that it is a member
of the class. OTOH, if you want to perform this kind of negation, I'd suggest using SPARQL. Try running the following in your SPARQL view (my query is approximate as your spec is semi-formal): CONSTRUCT {?person a :Extranjero} WHERE { ?person a :Person . FILTER NOT EXISTS {?person :hasnacionalidad "Mexicano" .} } This gives you an idea of how the inference can be made. To place this in a system of inferences I'd suggest using SPIN (http://www.w3.org/Submission/2011/SUBM-spin-overview-20110222/). To do this in Composer, configure inferencing to use SPIN (Inference > Configure Inferencing..., click the "Customize settings..." checkbox, Add>> TopSPIN and remove other reasoners from the pipeline. Create a new file by choosing File > New > RDF/OWL/SPIN File. When that file is open in Composer, open the Imports tab and import your data file (drag/drop the data file into the imports tab is easiest). Then create the two rules you want. To infer persons as members of :Mexican, double-click :Person to open it in the Class Form. Then choose Add empty row... for the spin:rule property and enter the following: CONSTRUCT { ?this a :Mexican .} WHERE { ?this :hasnacionalidad "Mexicano" . } The value of the ?this variable will be bound to each member of :Person before executing the query. I.e. if you have 50 members of :Person, the rule will be executed for each one, binding ?this to each member. For the Extranjero inference, do the same as above - in the :Person class choose Add empty row... for the spin:rule property and enter the following: CONSTRUCT {?this a :Extranjero .} WHERE { FILTER NOT EXISTS {?this :hasnacionalidad "Mexicano" .} . } Note this is a slight variant of the first query i did above. Run inferences as you have done before and the inferences you are looking for will be made. Generally speaking SPARQL and SPIN are a lot more direct about the computations one wants to make and is therefore much easier to work with. In addition, it is far less constrained than OWL, so you can practically run any computation or data transformation. It is well worth a try, and I'd suggest taking a look at a couple of resources: - http://www.topquadrant.com/products/SPIN.html - in Composer Help, go to TopBraid Composer > Application Development Tools > SPIN -- Scott On 2/28/2013 6:04 PM, aLe C wrote:
Hi -- -- You received this message because you are subscribed to the Google Group "TopBraid Suite Users", the topics of which include Enterprise Vocabulary Network (EVN), TopBraid Composer, TopBraid Live, TopBraid Ensemble, SPARQLMotion, SPARQL Web Pages and SPIN. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/topbraid-users?hl=en --- You received this message because you are subscribed to the Google Groups "TopBraid Suite Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out. |
- [topbraid-users] Rasoning aLe C
- Re: [topbraid-users] Rasoning Scott Henninger
- Re: [topbraid-users] Rasoning aLe C
- Re: [topbraid-users] Rasoning aLe C
- [topbraid-users] Re: Rasoning Scott Henninger
