def _linear_order(licenses, limit=144): # More than 144 is not possible here if limit > 144: limit = 144 label = 0 obligations = [] prohibitions = [] licenses.append(License()) licenses[-1].set_labels([str(label)]) # obligations for action in ODRL.ACTIONS: if len(licenses) < limit: label += 1 obligations.append(action) licenses.append(License()) licenses[-1].set_labels([str(label)]) licenses[-1].set_obligations(frozenset(obligations)) # prohibitions for action in ODRL.ACTIONS: if len(licenses) < limit: label += 1 prohibitions.append(action) licenses.append(License()) licenses[-1].set_labels([str(label)]) licenses[-1].set_obligations(frozenset(obligations)) licenses[-1].set_prohibitions(frozenset(prohibitions))
def __init__(self, actions): self.infimum = License() self.infimum.set_labels(['infimum']) self.infimum.set_permissions(frozenset(actions)) self.supremum = License() self.supremum.set_labels(['supremum']) self.supremum.set_obligations(frozenset(actions)) self.supremum.set_prohibitions(frozenset(actions)) self.infimum.followings.append(self.supremum) self.supremum.precedings.append(self.infimum) self.licenses = []
def _lattice(licenses, nb_actions, consolidated=True): actions = ODRL.ACTIONS[:nb_actions] if not consolidated: for comb_perm in _all_actions_combinations(actions): for permission_set in comb_perm: permissions = frozenset(permission_set) for comb_oblig in _all_actions_combinations(actions): for obligation_set in comb_oblig: obligations = frozenset(obligation_set) if permissions.isdisjoint(obligations): for comb_prohib in _all_actions_combinations( actions): for prohibition_set in comb_prohib: prohibitions = frozenset(prohibition_set) if permissions.isdisjoint( prohibitions ) and obligations.isdisjoint(prohibitions): if len(permissions) + len( prohibitions) + len( obligations) > 0: licenses.append(License()) licenses[-1].set_labels([ '{}{}{}'.format( permissions, prohibitions, obligations) ]) licenses[-1].set_permissions( permissions) licenses[-1].set_obligations( obligations) licenses[-1].set_prohibitions( prohibitions) else: for comb_actions in _all_actions_combinations(actions): for other_sets in comb_actions: permissions = frozenset(actions) - frozenset(other_sets) for comb_other_actions in _all_actions_combinations( other_sets): for last_set in comb_other_actions: prohibitions = frozenset(last_set) obligations = frozenset(other_sets) - prohibitions if len(permissions) + len(prohibitions) + len( obligations) > 0: licenses.append(License()) licenses[-1].set_labels([ '{}{}{}'.format(permissions, prohibitions, obligations) ]) licenses[-1].set_permissions(permissions) licenses[-1].set_obligations(obligations) licenses[-1].set_prohibitions(prohibitions)
def _random_license(label): license = License() license.set_labels([str(label)]) license.set_permissions(frozenset(_generate_set())) license.set_obligations(frozenset(_generate_set())) license.set_prohibitions(frozenset(_generate_set())) return license
def _no_order(licenses, limit=144): # More than 144 is not possible here if limit > 144: limit = 144 label = 0 for action in ODRL.ACTIONS: if len(licenses) < limit: licenses.append(License()) licenses[-1].set_labels([str(label)]) licenses[-1].set_obligations(frozenset([action])) label += 1 for action in ODRL.ACTIONS: if len(licenses) < limit: licenses.append(License()) licenses[-1].set_labels([str(label)]) licenses[-1].set_prohibitions(frozenset([action])) label += 1
def objectLicense(neo_license): obj_license = License() obj_license.set_labels(neo_license.labels) obj_license.set_permissions(frozenset(neo_license.permissions)) obj_license.set_obligations(frozenset(neo_license.obligations)) obj_license.set_prohibitions(frozenset(neo_license.prohibitions)) datasets = [] for neo_dataset in neo_license.datasets.all(): datasets.append(objectDataset(neo_dataset)) obj_license.set_datasets(datasets) return obj_license
def add_license(request, graph): json_licenses = json.loads(request.body) added_licenses = [] # random.shuffle(json_licenses) license_levels = [] # level_median = 0 ''' try: with open(LEVELS_FILE, 'r') as f: license_levels = json.load(f) except IOError: pass ''' for json_license in json_licenses: object_license = License() object_license.from_json(json_license) if object_license.contains_only_odrl_actions(): if Constraints.is_license_viable(object_license): object_license, nb_visit = add_license_to_db( object_license, method='infimum', license_levels=license_levels, graph=graph) ''' if license_levels: level_median = median(license_levels) if object_license.get_level() > level_median: object_license, nb_visit = add_license_to_db(object_license, method='supremum', license_levels=license_levels, graph=graph) else: object_license, nb_visit = add_license_to_db(object_license, method='infimum', license_levels=license_levels, graph=graph) ''' added_licenses.append(object_license.to_json()) else: added_licenses.append( "Not a valid license: License is non-viable") else: added_licenses.append("Not a valid license: Use only ODRL actions") ''' with open(LEVELS_FILE, 'w') as outfile: json.dump(license_levels, outfile) ''' response = HttpResponse( json.dumps(added_licenses), content_type='application/json', status=201, ) response['Access-Control-Allow-Origin'] = '*' return response
def add_license(request): json_licenses = json.loads(request.body) added_licenses = [] for json_license in json_licenses: object_license = License() object_license.from_json(json_license) if object_license.contains_only_odrl_actions(): if Constraints.is_license_viable(object_license): object_license = add_license_to_db(object_license) added_licenses.append(object_license.to_json()) else: added_licenses.append( "Not a valid license: License is non-viable") else: added_licenses.append("Not a valid license: Use only ODRL actions") response = HttpResponse( json.dumps(added_licenses), content_type='application/json', status=201, ) response['Access-Control-Allow-Origin'] = '*' return response