OP1 is serialized as follows:
<op1>
<entity_declarations>
<placeholder type="ObjectProperty">?p</placeholder>
<placeholder type="Class">?A</placeholder>
<placeholder type="Class">?B</placeholder>
<placeholder type="Class">?C</placeholder>
</entity_declarations>
<axioms>
<axiom>?p domain ?A</axiom>
<axiom>?p range ?B</axiom>
<axiom>?C subClassOf ?B</axiom>
</axioms>
</op1>
This is translated into a SPARQL query (omitting declarations of prefixes):
SELECT *
WHERE {
?p rdf:type owl:ObjectProperty.
?A rdf:type owl:Class. ?B rdf:type owl:Class. ?C rdf:type owl:Class.
?p rdfs:domain ?A;
rdfs:range ?B.
?C rdfs:subClassOf ?B.
}
Furthermore, there are the specific naming constraints that filter out some query results:
<ndp>
<comparison threshold="1.0" measure="equal">
<s1>?B</s1>
<s2>head_term(?p)</s2>
</comparison>
<exist>verb_form(?C)</exist>
</ndp>
As a result, we have the binding of placeholders, e.g.:
<pattern_instance> <binding placeholder="?p">hasDecision</binding> <binding placeholder="?B">Decision</binding> <binding placeholder="?A">Paper</binding> <binding placeholder="?C">Acceptance</binding> </pattern_instance>
This would be the output of the OntologyPatternDetection RESTful service.