How to add Property to Relation Type from RDF Triples

As we all know, OWL could not give any DataProperty to one ObjectProperty because it's itself a property.

So, if I want to add some properties to relation in Neo4J from RDF Triples, there is a trick.

I define a relation as a Class in OWL and some DataProperties to it too. Then I define 2 ObjectProperties between 3 Classes to express 1 relation with some properties to 2 class node.

for example:

I use:
(p:Person {name: "jason"})-[:workedAs]->(j:Job {type: "Engineer", beginFrom: "2019-01-01"})-[:existedIn]->(c:Company {name: "ABC"})

to express
(p:Person {name: "jason"})-[:workedIn {type: "Engineer", beginFrom: "2019-01-01"}]->(c:Company {name: "ABC"})

but the method I used is not intuitive and weird. what should i do ? (:(

I hope I cleared illustrate my dilemma and very looking forward to your reply.

Have a look at this article, and in particular, check the sub-section called "Reifying Relationships". I think this is directly related to what you're asking, and it contains some advice.


Thanks a lot, I guess I have already gotten your 2 points:

1, Maybe the "trick" I used is a better method, because it avoids to become "Vanilla" and make sense the index.

2, But I also need to take more account on my schema to check out that if there has some space to "Reifying".

Right ? :sweat_smile: