Hi, I am not sure if I am to file this as a support-request or a feature request since I still do not have a complete overview of what the module can do, and since I am somewhat new to RDF coming from the topic map community. I am interested in the possibility of creating bidirectional associations between nodes using rdf-triples, so I have looked into the possibilty of creating statements both with the rdf module alone and with the relations module. But as I understand it, if one would want to do something like this, one would have to do create two statements, one for each direction, and do several queries to be able to do this?
I have looked into owl:inverseOf , and thought that this might be the solution to what I am looking for, and a solution which eliminate the need for several queries. Is this possible to do today, and if so, how is it possible?
I am more than ready to participate in, and contribute to the development of semantic technology for Drupal, so if any time or (guided) coding on my part will be of any help, I am ready for that :)
Comments
Comment #1
scor commentedideally you'd achieve that by some form of reasoning. You would simply need to add a statement like
p1 owl:inverseOf p2to infers2 p2 s1froms1 p1 s2. ARC has a lightweight inferencing mechanism but afaik you need to write your own inferencing rules.Comment #2
minimalismore commentedHi!
Thanx for your reply :)
That is exactly what I did in the end.
Comment #3
no2e commentedHmm, so this is not possible with a GUI?
I think I want exactly the same as explained by minimalismore in the first entry, but I don't understand a single word of #1 :/
Comment #4
minimalismore commentedNo it is not possible in a gui at this point, partly because the inherent direction of RDF associations are one-way.
What #1 says, is that on has to create two predicates p1 and p2, say "hasEmploeyee" and "employedBy".
Then you have to make an assertion saing that hasEmploeyee owl:InverseOf EmployedBy.
That way you can either program a function that queries the reppositories for the inverse of the association type you are looking at.
I have created an unofficial module doing that for my company which does this, and it shoouldn't be too hard creating one as soon as you get a certain overview of the RDF-api. The Relations module is a great starting point for learning how to.
Comment #5
scor commentedI will integrate this in RDF CCK. It'll be easy since we extract a lot of information about the imported vocabularies (domain, range, superclass...) so the inferred owl:inverseOf statement can be generated automatically.
Comment #6
minimalismore commented@scor
That is a great idea :)
Especially if it will be possible to query it using sparql.
There is one thing I wonder about though. Should one just add the owl:inverseOf to one side of the relation, and then use sparql or whatever api one has to infer the bidirectionality. That means having to do more traversing when infering the invese from the side of the association that does not have the inverseOf-property.
In my ontology, i add the inverseOf-property to both sides, that way it is easier to query for the inverse regardless what side of the associaton one starts.
What do you think?
Comment #7
smustgrave commented