Search Mailing List Archives
[protege-owl] Modeling Problem
milo at informatik.uni-kiel.de
Fri Oct 10 02:01:44 PDT 2008
>> 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.
That sounds great, because I just started to try out SWRL the day before
>> 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.
How would you model for example the "curr_position"-Property? The thing
is, it has a domain "Sign" and a range "Sign.Position", which is a
datatype-property. So "curr-position" cannot be an object-property, right?
But what else? Same proplem with "road_sec_start" D:"RoadSection"
R:"RoadSection.Start" and "road_sec_end" D:"RoadSection"
Should I consider to model "Position" as a class so that "Sign" has a
postion and "RoadSection" has two positions (start, end)? Are there
aliases? ... like RoadSection.(Postion as Start), RoadSection(Postion as
End)? How do I model this?
>> 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
> placement test.
Ok, that is what I thought. Thanks for the clearance.
> 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.
I would like to have it all together in one OWL-file. So I would like to
avoid the usage of jena etc.
Thanks for your help! Perhaps you can help me going further with
modeling the mixed-up-property "curr_position(Sign, Sign.Position)".
More information about the protege-owl