@@ -2570,4 +2570,209 @@ odrl:extract odrl:includedIn odrl:use.`, `@prefix : <http://example.org/> .
2570
2570
} =>
2571
2571
{
2572
2572
?report report:satisfactionState report:Unsatisfied .
2573
- } .` ] ;
2573
+ } .` ] ;
2574
+ export const SIMPLE_RULES : string [ ] = [ `@prefix : <http://example.org/> .
2575
+ @prefix math: <http://www.w3.org/2000/10/swap/math#> .
2576
+ @prefix dct: <http://purl.org/dc/terms/> .
2577
+ @prefix list: <http://www.w3.org/2000/10/swap/list#> .
2578
+ @prefix log: <http://www.w3.org/2000/10/swap/log#> .
2579
+ @prefix odrl: <http://www.w3.org/ns/odrl/2/> .
2580
+ @prefix report: <https://w3id.org/force/compliance-report#> .
2581
+ @prefix string: <http://www.w3.org/2000/10/swap/string#> .
2582
+ @prefix temp: <http://example.com/request/> .
2583
+
2584
+ # uuid backward rule (component)
2585
+ {
2586
+ ?input :getUUID ?urnUuid
2587
+ }
2588
+ <=
2589
+ {
2590
+ ?input log:skolem ?uniqueNode .
2591
+ ?uniqueNode log:uuid ?uuidString .
2592
+ ( "urn:uuid:" ?uuidString ) string:concatenation ?urnUuidString .
2593
+ ?urnUuid log:uri ?urnUuidString .
2594
+ } .
2595
+
2596
+ # Policy report
2597
+ {
2598
+ ?policy a ?policyType .
2599
+ ?policyType list:in ( odrl:Agreement odrl:Set odrl:Policy odrl:Offer ) .
2600
+ ?policyRequest a odrl:Request .
2601
+ temp:currentTime dct:issued ?time .
2602
+ ( ?policy ) :getUUID ?urnUuid .
2603
+ }
2604
+ =>
2605
+ {
2606
+ ?urnUuid a report:PolicyReport ;
2607
+ dct:created ?time ;
2608
+ report:policy ?policy ;
2609
+ report:policyRequest ?policyRequest .
2610
+ } .
2611
+
2612
+ # Permission report (expecting explicit permission type)
2613
+ # create permission report
2614
+ {
2615
+ ?policyReport a report:PolicyReport ;
2616
+ report:policy ?policy ;
2617
+ report:policyRequest ?policyRequest .
2618
+ ?policy odrl:permission ?permission .
2619
+ ?policyRequest odrl:permission ?requestPermission .
2620
+ ( ?permission ) :getUUID ?urnUuid .
2621
+ }
2622
+ =>
2623
+ {
2624
+ ?policyReport report:ruleReport ?urnUuid .
2625
+ ?urnUuid a report:PermissionReport ;
2626
+ report:attemptState report:Attempted ;
2627
+ report:rule ?permission ;
2628
+ report:ruleRequest ?requestPermission .
2629
+ } .
2630
+
2631
+ # check whether permission report is active
2632
+ {
2633
+ ?urnUuid a report:PermissionReport ;
2634
+ report:attemptState report:Attempted ;
2635
+ report:rule ?permission ;
2636
+ report:ruleRequest ?requestPermission .
2637
+
2638
+ # check for number of constraint reports
2639
+ (
2640
+ ?template
2641
+ {
2642
+ ?urnUuid report:premiseReport _:s
2643
+ }
2644
+ ?L
2645
+ ) log:collectAllIn ?SCOPE .
2646
+ ?L list:length ?numberConstraints .
2647
+
2648
+ # check for satisfied constraints
2649
+ (
2650
+ ?premiseReport
2651
+ {
2652
+ ?urnUuid report:premiseReport ?premiseReport .
2653
+ ?premiseReport report:satisfactionState report:Satisfied .
2654
+ }
2655
+ ?list
2656
+ ) log:collectAllIn ?SCOPE .
2657
+ ?list list:length ?satisfiedConstraints .
2658
+ ?satisfiedConstraints log:equalTo ?numberConstraints .
2659
+ }
2660
+ =>
2661
+ {
2662
+ ?urnUuid report:activationState report:Active .
2663
+ } .
2664
+ {
2665
+ ?urnUuid a report:PermissionReport ;
2666
+ report:attemptState report:Attempted ;
2667
+ report:rule ?permission ;
2668
+ report:ruleRequest ?requestPermission .
2669
+
2670
+ # check for number of constraint reports
2671
+ (
2672
+ ?template
2673
+ {
2674
+ ?urnUuid report:premiseReport _:s
2675
+ }
2676
+ ?L
2677
+ ) log:collectAllIn ?SCOPE .
2678
+ ?L list:length ?numberConstraints .
2679
+
2680
+ # check for satisfied constraints
2681
+ (
2682
+ ?premiseReport
2683
+ {
2684
+ ?urnUuid report:premiseReport ?premiseReport .
2685
+ ?premiseReport report:satisfactionState report:Satisfied .
2686
+ }
2687
+ ?list
2688
+ ) log:collectAllIn ?SCOPE .
2689
+ ?list list:length ?satisfiedConstraints .
2690
+ ?satisfiedConstraints log:notEqualTo ?numberConstraints .
2691
+ }
2692
+ =>
2693
+ {
2694
+ ?urnUuid report:activationState report:Inactive .
2695
+ } .
2696
+
2697
+
2698
+ # Constraint report
2699
+
2700
+ # Target report
2701
+ {
2702
+ ?ruleReport a report:PermissionReport ;
2703
+ report:rule ?permission ;
2704
+ report:ruleRequest ?requestPermission .
2705
+ ?permission odrl:target ?resource .
2706
+ ?requestPermission odrl:target ?requestedResource .
2707
+ ?resource log:equalTo ?requestedResource .
2708
+ ( ?resource ) :getUUID ?urnUuid .
2709
+ }
2710
+ =>
2711
+ {
2712
+ ?ruleReport report:premiseReport ?urnUuid .
2713
+ ?urnUuid a report:TargetReport ;
2714
+ report:satisfactionState report:Satisfied .
2715
+ } .
2716
+ # Party report
2717
+ {
2718
+ ?ruleReport a report:PermissionReport ;
2719
+ report:rule ?permission ;
2720
+ report:ruleRequest ?requestPermission .
2721
+ ?permission odrl:assignee ?party .
2722
+ ?requestPermission odrl:assignee ?requestedParty .
2723
+ ?party log:equalTo ?requestedParty .
2724
+ ( ?party ) :getUUID ?urnUuid .
2725
+ }
2726
+ =>
2727
+ {
2728
+ ?ruleReport report:premiseReport ?urnUuid .
2729
+ ?urnUuid a report:PartyReport ;
2730
+ report:satisfactionState report:Satisfied .
2731
+ } .
2732
+ {
2733
+ ?ruleReport a report:PermissionReport ;
2734
+ report:rule ?permission ;
2735
+ report:ruleRequest ?requestPermission .
2736
+ ?permission odrl:assignee ?party .
2737
+ ?requestPermission odrl:assignee ?requestedParty .
2738
+ ?party log:notEqualTo ?requestedParty .
2739
+ ( ?party ) :getUUID ?urnUuid .
2740
+ }
2741
+ =>
2742
+ {
2743
+ ?ruleReport report:premiseReport ?urnUuid .
2744
+ ?urnUuid a report:PartyReport ;
2745
+ report:satisfactionState report:Unsatisfied .
2746
+ } .
2747
+ # Action report -> simple action
2748
+ {
2749
+ ?ruleReport a report:PermissionReport ;
2750
+ report:rule ?permission ;
2751
+ report:ruleRequest ?requestPermission .
2752
+ ?permission odrl:action ?action .
2753
+ ?requestPermission odrl:action ?requestedAction .
2754
+ ?action log:equalTo ?requestedAction .
2755
+ ( ?action ) :getUUID ?urnUuid .
2756
+ }
2757
+ =>
2758
+ {
2759
+ ?ruleReport report:premiseReport ?urnUuid .
2760
+ ?urnUuid a report:ActionReport ;
2761
+ report:satisfactionState report:Satisfied .
2762
+ } .
2763
+ {
2764
+ ?ruleReport a report:PermissionReport ;
2765
+ report:rule ?permission ;
2766
+ report:ruleRequest ?requestPermission .
2767
+ ?permission odrl:action ?action .
2768
+ ?requestPermission odrl:action ?requestedAction .
2769
+ ?action log:notEqualTo ?requestedAction .
2770
+ ( ?action ) :getUUID ?urnUuid .
2771
+ }
2772
+ =>
2773
+ {
2774
+ ?ruleReport report:premiseReport ?urnUuid .
2775
+ ?urnUuid a report:ActionReport ;
2776
+ report:satisfactionState report:Unsatisfied .
2777
+ } .
2778
+ ` ] ;
0 commit comments