Search Mailing List Archives
[protege-owl] Modeling Problem
tar at ISI.EDU
Thu Oct 9 10:32:31 PDT 2008
On Oct 9, 2008, at 4:58 AM, Michael Lodemann wrote:
> This one is a great hint. But I need sth like:
> curr_position(?sign, ?pos) ^ onRoadSection(?sign, ?road_sec) ^
> road_sec_start(?start_pos, ?road_sec) ^ road_sec_end(?end_pos, ?
> road_sec) ^
> swrlb:greaterThanOrEqual(?pos, ?start_pos) ^
> swrlb:lessThanOrEqual(?pos, ?end_pos) -> CorrectlyPlacedSign(?sign)
I haven't really worked with SWRL, but this all seems like it should
be a valid rule.
> Is this possible?
> And do "curr_position", "onRoadSection", "road_sec_start" and
> "road_sec_end" have to be (object)-properties in my ontology?
> And "CorrectlyPlacedSign" is a class as you described before, right?
> What about "?pos", "?star_pos" and "?end_pos"? In my ontology they
> currently are Datatype-properties of "Sign" and "RoadSection"
> Is it possible to handle it like this?
You can use a mix of object and datatype properties. For the
arithmetic and comparison built-ins, you would need to use datatype
properties to get appropriate values for them to operate on.
> That brings me to the next problem - negotiation.
> I can't model in SWRL that all not CorrectlyPlaced-Signs are
> MisPlaced-Signs, can I?
Correct. This is a consequence of open-world reasoning. There is no
"failure as negation" reasoning allowed.
> So do I have to create rules for every possible misplacement?
That is one possible method. With your specific example, it shouldn't
be too hard, since with the 1-dimensional model, you only have two
possibilities for an incorrectly placed sign. It is either before the
road segment or after it. Now, your full model may have other ways
signs could be incorrectly placed, so this may not be completely
practical. But you do have to essentially come up with the negated
rules yourself, especially since a number of the rule clauses really
exist only to bind variables and are not directly part of the correct
The other option is to do something procedural, like using Java code
to take the set-difference between all signs and all correctly-placed
signs. That allows you to introduce your own "closed world"
assumption outside of the OWL+SWRL reasoning system.
More information about the protege-owl