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.