Let's say I'm trying to model a type/field system like this:
Type1 hasField field11   // and field12, field13, etc.
field11 isType Type2     // and field12, field13, etc. are also some Type#
Type2 hasField field21   // and field22, field23, etc.
etc.
And with a rule I could convert this to a simpler case of just a
single hasChild link
(?a isType ?b) (?a hasField ?c) -> (?a hasChild ?c)

So, now if I choose a root:
root isType Type1

now I have a tree (possibly recursive as that is allowed) with root as the root.

So, let me use a concise notation of a/b/c means a hasChild b and b
hasChild c (as above), I need to be able to query a path for things
associated with it which should both return everything that is
attached to c (c ? ?), plus everything that would apply to the a/b/c
path.

And I need make such statements not just one path at a time, but path
expressions such as apply things to a/b/** (all descendants of a/b).
Or a/b/**/d (d if it's a descendant of a/b). And maybe more complex.

There might be many 10,000's of types and fields. And there might be
1,000's of statements about path expressions. And there might be
100,000's of paths that would be queried for. And multiply that by
about 10 for all the other information that would be about each node
besides hasField.

Is this something that is reasonable to do in Jena/RDF/OWL? If so, I
would appreciate some help both in how to declare such statements
about path expressions (I assume it would use rules somehow which I
did read about reasoners in the doc) and how to query them.

Thank you!

Reply via email to