Recently, I've been working on building a dataset. I have downloaded some open-source datasets like YAGO, and my next step is to determine whether the relationships in these datasets have certain properties such as Symmetric, Asymmetry, Transitivity. I explained this three properties as below:
Given a relationship R from entity A to entity B, it can be represented as a triplet (A, R, B).
Given R is a Symmetric relation:
If there exists a triplet (A, R, B), then there must also be (B, R, A).
Given R is an Asymmetry relation:
If there exists a triplet (A, R, B), then there must no (B, R, A)
Given R is a Transitivity relation:
If there exist triplets (A, R, B) and (B, R, C), then there must be (A, R, C)
I will explain my questions in two points as below:
- I don't systematically learn the properties of relations. I mean I don't even how many types of relations there exactly are. I would like to find some resources, such as books or other materials, that provide a systematic introduction to the properties of relationships.
- I don't hava a good idea to verify whether a relation in a large dataset posseses a certain property. Of course, I have some basic thoughts, such as , based on semantics of the relation, juding whether it possesses a certain property, I give an example as below: R is A relation called has brother, it is obvious that if A has brother B, then B has brother A. So R is a symmetric relation. That's a semantics preliminary judge. and then I would traverse the whole dataset to verify my semantics preliminary judge. However, I believe there might be better approaches available, but I don't know where I can systematically learn about this.
Your usage of the term 'property' is a bit confusing to me. In the triple (A, R, B), many would call R the property. What I understand you mean with 'property' is e.g. symmetric - some call that a characteristic.
To answer question 1: Have a look at the property characteristics in the OWL2 Primer. OWL is an ontology language with a formal basis used for many Knowledge Graphs.
For question 2: Do you want to detect characteristics of properties in a graph from instance data? You probably have the challenge that not all triples that infer from the characteristics you search are instantiated in the graph. Therefore it will be difficult to query the graph for the infered triples to find the properties.
To give an example for the transitive property "locatedIn": The triples (Berlin locatedIn Germany) and (Germany locatedIn EU) could be in a graph. The triple (Berlin locatedIn EU) could very well not be instantiated in the graph. Then you won't receive a query result when searching the triple patterns in the graph.
Keep in mind that a characteristic for a property must hold for all occurrences in the graph.