
# Query 1: find actions

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix dasp-core: <http://www.daspsec.org/ontologies/1.0/dasp-core#>
prefix dasp-core-req: <http://www.daspsec.org/ontologies/1.0/dasp-core-req#> 
prefix dasp-core-policy: <http://www.daspsec.org/ontologies/1.0/dasp-core-policy#> 
prefix dasp-core-api: <http://www.daspsec.org/ontologies/1.0/dasp-core-api#> 
 
SELECT ?subject ?predicate ?object
WHERE {
  ?subject rdf:type dasp-core:Action .
}

# Query 2: find action that corresponds to URL elements

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dasp-core: <http://www.daspsec.org/ontologies/1.0/dasp-core#>
PREFIX dasp-core-req: <http://www.daspsec.org/ontologies/1.0/dasp-core-req#>
PREFIX dasp-core-policy: <http://www.daspsec.org/ontologies/1.0/dasp-core-policy#>
PREFIX dasp-core-api: <http://www.daspsec.org/ontologies/1.0/dasp-core-api#>

SELECT  ?action ?predicate ?element1
WHERE {
  {
  ?action rdf:type dasp-core:Action .
  ?action dasp-core:hasURLPath1 ?element1 .
  ?element1 rdf:type dasp-core:FixedPathElement .
  ?element1 dasp-core:hasElementValue "messages" .
  ?action dasp-core:hasURLPath2 ?element2 .
    ?element2 rdf:type dasp-core:DynamicPathElement . }
  UNION
  {
    ?action rdf:type dasp-core:Action .
  ?action dasp-core:hasURLPath1 ?element1 .
  ?element1 rdf:type dasp-core:DynamicPathElement .
  ?element1 dasp-core:hasElementValue "messages" .
  ?action dasp-core:hasURLPath2 ?element2 .
    ?element2 rdf:type dasp-core:DynamicPathElement .
  }

}


# Query 3: Find action using subClassOf clause

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dasp-core: <http://www.daspsec.org/ontologies/1.0/dasp-core#>
PREFIX dasp-core-req: <http://www.daspsec.org/ontologies/1.0/dasp-core-req#>
PREFIX dasp-core-policy: <http://www.daspsec.org/ontologies/1.0/dasp-core-policy#>
PREFIX dasp-core-api: <http://www.daspsec.org/ontologies/1.0/dasp-core-api#>

SELECT  ?action ?predicate ?element1
WHERE {
  ?action rdf:type dasp-core:Action .
  ?action dasp-core:hasURLPath1 ?element1 .
  ?element1 rdf:type/rdfs:subClassOf*  dasp-core:URLPathObject .
  ?element1 dasp-core:hasElementValue "messages" .
  ?action dasp-core:hasURLPath2 ?element2 .
    ?element2 rdf:type dasp-core:DynamicPathElement .
}


# Query 4: Find a policy targeting an action

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dasp-core: <http://www.daspsec.org/ontologies/1.0/dasp-core#>
PREFIX dasp-core-req: <http://www.daspsec.org/ontologies/1.0/dasp-core-req#>
PREFIX dasp-core-policy: <http://www.daspsec.org/ontologies/1.0/dasp-core-policy#>
PREFIX dasp-core-api: <http://www.daspsec.org/ontologies/1.0/dasp-core-api#>
SELECT DISTINCT ?policy
WHERE {
  ?policy rdf:type dasp-core:SecurityPolicy .
  ?policy dasp-core:hasSecurityRule ?secrule .
  ?secrule rdf:type dasp-core:SecurityRule .
  ?secrule dasp-core:targetsAction dasp-core-api:Action1 .
}

# Query: Find rules and context that target specific policy and action

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dasp-core: <http://www.daspsec.org/ontologies/1.0/dasp-core#>
PREFIX dasp-core-req: <http://www.daspsec.org/ontologies/1.0/dasp-core-req#>
PREFIX dasp-core-policy: <http://www.daspsec.org/ontologies/1.0/dasp-core-policy#>
PREFIX dasp-core-api: <http://www.daspsec.org/ontologies/1.0/dasp-core-api#>
SELECT DISTINCT ?policy ?secrule ?action ?context
WHERE {
  dasp-core-policy:SecPol1 (owl:sameAs|^owl:sameAs)*  ?policy .
  dasp-core-api:Action1 (owl:sameAs|^owl:sameAs)* ?action .
  ?policy dasp-core:hasSecurityRule ?secrule .
  ?secrule dasp-core:targetsAction ?action .
  ?action rdf:type dasp-core:Action .
  ?secrule rdf:type dasp-core:SecurityRule .
  ?secrule dasp-core:hasContext ?context .
}
