170 likes | 272 Views
Licensing Structured Data with Ease. Y. W. Law, C. N. Chong , S. Etalle, P. Hartel, and R. Corin Universiteit Twente, The Netherlands chong@cs.utwente.nl. Overview. Introduction and Motivation License Script Language Why Program-based REL? Why Prolog? Licensing Model I, II, and III
E N D
Licensing Structured Data with Ease Y. W. Law, C. N. Chong, S. Etalle, P. Hartel, and R. Corin Universiteit Twente, The Netherlands chong@cs.utwente.nl
Overview • Introduction and Motivation • LicenseScript Language • Why Program-based REL? • Why Prolog? • Licensing Model I, II, and III • Conclusions and Future Work
Introduction • Digital Rights Management (DRM) is a controversial technology. • We do not debate if DRM is good or bad. • Here, we use our LicenseScript, the rights expression language (REL) to license structured data.
Motivation • We are going to explain some of our design choices of LicenseScript. • We need to present several answers for the following questions: • Why program-based REL? • Why using Prolog?
LicenseScript Language • License consists of three parts: content, clauses, and bindings. • Clauseis a Prolog program to decide if the operation is allowed. • Bindings store license data. • Rule can be thought of as firmware of a system.
Why Program-based REL? • Formal Semantics • Useful properties can be formally verified. • Flexible and Highly Expressive • Able to express more novel usage scenarios.
Why Prolog? • The main component of LicenseScript. • We will show the power of Prolog in handling the structured data. • We propose 3 Licensing Models using LicenseScript that illustrates the advantages of Prolog.
Unlocking License lic(track, [canplay(B,_,Code):- get_value(B,unlockCode,Code)], [unlockCode=1234]) Rule play(N) : lic(N,C1,B1), lic(N,C2,B2) -> lic(N,C1,B1’), lic(N,C2,B2’) <= C2|-canunlock(B1,B1’,Code), C1|-canplay(B2,B2’,Code) Base License lic(track, [canunlock(B,_,Code): get_value(B,unlockCode,U), Code==U], [unlockCode=1234]) Licensing Model I Play • Lock part of the content, to unlock needs license. • Can distribute part of the content free as preview to attract users.
Enhanced License Basic License Add-on License Licensing Model II • A basic set of content and bonus content which can be added on top of the basic content. Combine
Licensing Model II (cont’d.) • We have given a formalism of the combination operation. • We have defined a formalism to resolve the potential name conflicts at clauses and bindings. • Content providers can have more flexible licensing to their structural data.
By using Licensing Model II, we can license the text and audio of the ebook, separately. ebook lic(ebook, [cansynrender(_,_):- candisplay(_,_), canlisten(_,_)], [type=[text,audio]]) ebook-text-part ebook-audio-part lic(ebook, [candisplay(_,_)], [type=[text]]) lic(ebook, [canlisten(_,_)], [type=[audio]]) Licensing Model III Combine
Conclusions and Future Work • We have provided three useful licensing schemes to use with LicenseScript. • We have shown the advantages of using Prolog in licensing. • Future work – security of LicenseScript: • To detect bad licenses. • To protect licenses confidentiality and integrity.
Name Conflicts Resolution Definition 1: Names lic (Content, C, B) Bindings, B Set of Names Head of Clauses,C Set of Names
X Y Z x y z Name Conflicts Resolution Definition 2: Renaming Function Renaming Function α bijection Y ∩ Z = {} z= α(x,Y)
Name Conflicts Resolution Definition 1: Combination Combine Functionφ lic1(n,C1,B1) lic3(n,C3,B3) lic2(n,C2,B2) • l3 is a valid license. • Number of (B3) = number of (B2) + number of (B1) • Number of (C3) = number of (C1) + number of (C2) – number of (C1 and C2 which has same head)
Name Conflicts Resolution Definition 1: Combination • There exists b in C1 and B1 (i.e., of lic1) but not in of lic2, there exists a unique b3in of lic3 then the corresponding Prolog clause in C1 also exists in C3. • Similarly, applies to C2 and B2. • There exists b in of lic1 (N1) and lic2 (N2), there exists unique b3(1) and b3(2), b3(1)≠ b3(2) such that b3(1)= α1(b, N1U N2) and b3(2)= α2(b, N1U N2), then the clause b:-b3(1),b3(2) in of lic3