Skip to content
This repository has been archived by the owner on Mar 27, 2024. It is now read-only.

Commit

Permalink
Merge pull request #2612 from troyronda/fixbbs
Browse files Browse the repository at this point in the history
fix: normalizes VC prior to transforming node identifiers
  • Loading branch information
fqutishat authored Mar 6, 2021
2 parents 1b30fec + d83e137 commit 79bbc2a
Show file tree
Hide file tree
Showing 18 changed files with 379 additions and 38 deletions.
10 changes: 2 additions & 8 deletions cmd/aries-agent-mobile/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -180,18 +180,12 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
github.com/hyperledger/aries-framework-go/component/storageutil v0.0.0-20210212180552-b51f1b95ad7f h1:8UsaBnaRn42V9DpuHgE/uit1C+1FogCj6o528TZsD+E=
github.com/hyperledger/aries-framework-go/component/storageutil v0.0.0-20210212180552-b51f1b95ad7f/go.mod h1:Kun5rLHUq9YJGE7qXcmmHlHPnI9/ty/LpNZLnwDqBiA=
github.com/hyperledger/aries-framework-go/component/storageutil v0.0.0-20210224230531-58e1368e5661 h1:VmyvcZ2fMyrE7UCXPSAsMwjKOm5GlpxJSb8sWsTkeQY=
github.com/hyperledger/aries-framework-go/component/storageutil v0.0.0-20210224230531-58e1368e5661/go.mod h1:XaPVDJcbQT8BKmThfQdWPc+hgicHFAQzSOavHw2gn/4=
github.com/hyperledger/aries-framework-go/spi v0.0.0-20210205153949-f852f978a0d6/go.mod h1:fDr9wW00GJJl1lR1SFHmJW8utIocdvjO5RNhAYS05EY=
github.com/hyperledger/aries-framework-go/spi v0.0.0-20210210184327-0b9d0fd4c34e/go.mod h1:fDr9wW00GJJl1lR1SFHmJW8utIocdvjO5RNhAYS05EY=
github.com/hyperledger/aries-framework-go/spi v0.0.0-20210212180552-b51f1b95ad7f h1:/f3oQaTwO4lEWokYFVHixTMIu3uTxeUdWcPgwrPX/XA=
github.com/hyperledger/aries-framework-go/spi v0.0.0-20210212180552-b51f1b95ad7f/go.mod h1:fDr9wW00GJJl1lR1SFHmJW8utIocdvjO5RNhAYS05EY=
github.com/hyperledger/aries-framework-go/spi v0.0.0-20210224230531-58e1368e5661 h1:Je5vn+j5wYAC8+uuL6ZabK1VEPX6/fdgNlMA8dJjCFI=
github.com/hyperledger/aries-framework-go/spi v0.0.0-20210224230531-58e1368e5661/go.mod h1:fDr9wW00GJJl1lR1SFHmJW8utIocdvjO5RNhAYS05EY=
github.com/hyperledger/aries-framework-go/test/component v0.0.0-20210210184327-0b9d0fd4c34e h1:Rwo1t3inESFu8EgqXwpJY3WbcGasexT25SiVb88eIeI=
github.com/hyperledger/aries-framework-go/test/component v0.0.0-20210210184327-0b9d0fd4c34e/go.mod h1:/ljIFCu5iDIziwuvObF0vEc3fJ5dgDpT8RYAhQdNeHI=
github.com/hyperledger/aries-framework-go/test/component v0.0.0-20210219073333-c46e84ce678f/go.mod h1:/ljIFCu5iDIziwuvObF0vEc3fJ5dgDpT8RYAhQdNeHI=
github.com/hyperledger/aries-framework-go/test/component v0.0.0-20210224230531-58e1368e5661 h1:5qhGwJ5+Gea3wzr7MjGLUmmKb4BAj78ok6vP2v1ZwnI=
github.com/hyperledger/aries-framework-go/test/component v0.0.0-20210224230531-58e1368e5661/go.mod h1:/ljIFCu5iDIziwuvObF0vEc3fJ5dgDpT8RYAhQdNeHI=
Expand Down Expand Up @@ -253,8 +247,8 @@ github.com/onsi/gomega v1.4.3 h1:RE1xgDvH7imwFD45h+u2SgIfERHlS2yNG4DObb5BSKU=
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/piprate/json-gold v0.3.1-0.20201222165305-f4ce31c02ca3 h1:XZ5wU47zEb+01GyzcDuNFPAZMU8YNwcObKZ5wu/9DgE=
github.com/piprate/json-gold v0.3.1-0.20201222165305-f4ce31c02ca3/go.mod h1:OK1z7UgtBZk06n2cDE2OSq1kffmjFFp5/2yhLLCz9UM=
github.com/piprate/json-gold v0.4.0 h1:XQ6ZMLCjuXhtvqr60IrGl2uNYojl64B/dIUmI2iqThs=
github.com/piprate/json-gold v0.4.0/go.mod h1:OK1z7UgtBZk06n2cDE2OSq1kffmjFFp5/2yhLLCz9UM=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
4 changes: 2 additions & 2 deletions cmd/aries-agent-rest/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,8 @@ github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/piprate/json-gold v0.3.1-0.20201222165305-f4ce31c02ca3 h1:XZ5wU47zEb+01GyzcDuNFPAZMU8YNwcObKZ5wu/9DgE=
github.com/piprate/json-gold v0.3.1-0.20201222165305-f4ce31c02ca3/go.mod h1:OK1z7UgtBZk06n2cDE2OSq1kffmjFFp5/2yhLLCz9UM=
github.com/piprate/json-gold v0.4.0 h1:XQ6ZMLCjuXhtvqr60IrGl2uNYojl64B/dIUmI2iqThs=
github.com/piprate/json-gold v0.4.0/go.mod h1:OK1z7UgtBZk06n2cDE2OSq1kffmjFFp5/2yhLLCz9UM=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
Expand Down
4 changes: 2 additions & 2 deletions cmd/aries-js-worker/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -316,8 +316,8 @@ github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0Mw
github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
github.com/piprate/json-gold v0.3.1-0.20201222165305-f4ce31c02ca3 h1:XZ5wU47zEb+01GyzcDuNFPAZMU8YNwcObKZ5wu/9DgE=
github.com/piprate/json-gold v0.3.1-0.20201222165305-f4ce31c02ca3/go.mod h1:OK1z7UgtBZk06n2cDE2OSq1kffmjFFp5/2yhLLCz9UM=
github.com/piprate/json-gold v0.4.0 h1:XQ6ZMLCjuXhtvqr60IrGl2uNYojl64B/dIUmI2iqThs=
github.com/piprate/json-gold v0.4.0/go.mod h1:OK1z7UgtBZk06n2cDE2OSq1kffmjFFp5/2yhLLCz9UM=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
11 changes: 2 additions & 9 deletions pkg/doc/signature/jsonld/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -434,19 +434,12 @@ func (p *Processor) transformBlankNodes(docMap map[string]interface{},
return docMap, nil
}

proc := ld.NewJsonLdProcessor()
options := ld.NewJsonLdOptions("")
options.ProcessingMode = ld.JsonLd_1_1
options.Format = format
options.ProduceGeneralizedRdf = true
useDocumentLoader(options, procOptions.documentLoader, procOptions.documentLoaderCache)

docBytes, err := proc.ToRDF(docMap, options)
docBytes, err := p.GetCanonicalDocument(docMap, opts...)
if err != nil {
return nil, err
}

rows := splitMessageIntoLines(docBytes.(string))
rows := splitMessageIntoLines(string(docBytes))

for i, row := range rows {
rows[i] = TransformBlankNode(row)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,6 @@ func TestSuite_SelectiveDisclosure(t *testing.T) {
require.NotEmpty(t, proofs[0]["proofValue"])

case18DerivationBytes, err := json.Marshal(docWithSelectiveDisclosure)
t.Log(string(case18DerivationBytes))

pubKeyFetcher := verifiable.SingleKey(pubKeyBytes,"Bls12381G2Key2020")
docLoader := createLDPBBS2020DocumentLoader()
Expand Down
19 changes: 13 additions & 6 deletions pkg/doc/signature/verifier/public_key_verifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ type BBSG2SignatureVerifier struct {
func (v *BBSG2SignatureVerifier) Verify(pubKeyValue *PublicKey, doc, signature []byte) error {
bbs := bbs12381g2pub.New()

return bbs.Verify(splitMessageIntoLines(string(doc)), signature, pubKeyValue.Value)
return bbs.Verify(splitMessageIntoLines(string(doc), false), signature, pubKeyValue.Value)
}

// NewBBSG2SignatureProofVerifier creates a new BBSG2SignatureProofVerifier.
Expand All @@ -413,18 +413,25 @@ type BBSG2SignatureProofVerifier struct {
func (v *BBSG2SignatureProofVerifier) Verify(pubKeyValue *PublicKey, doc, signature []byte) error {
bbs := bbs12381g2pub.New()

return bbs.VerifyProof(splitMessageIntoLines(string(doc)), signature, v.nonce, pubKeyValue.Value)
return bbs.VerifyProof(splitMessageIntoLines(string(doc), true),
signature, v.nonce, pubKeyValue.Value)
}

func splitMessageIntoLines(msg string) [][]byte {
func splitMessageIntoLines(msg string, transformBlankNodes bool) [][]byte {
rows := strings.Split(msg, "\n")

msgs := make([][]byte, 0, len(rows))

for i := range rows {
if strings.TrimSpace(rows[i]) != "" {
msgs = append(msgs, []byte(transformFromBlankNode(rows[i])))
for _, row := range rows {
if strings.TrimSpace(row) == "" {
continue
}

if transformBlankNodes {
row = transformFromBlankNode(row)
}

msgs = append(msgs, []byte(row))
}

return msgs
Expand Down
8 changes: 4 additions & 4 deletions pkg/doc/verifiable/example_credential_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -679,8 +679,8 @@ func ExampleCredential_GenerateBBSSelectiveDisclosure() {
// "givenName": "JOHN",
// "id": "did:example:b34ca6cd37bbf23",
// "type": [
// "PermanentResident",
// "Person"
// "Person",
// "PermanentResident"
// ]
// },
// "id": "https://issuer.oidp.uscis.gov/credentials/83627465",
Expand All @@ -696,8 +696,8 @@ func ExampleCredential_GenerateBBSSelectiveDisclosure() {
// "verificationMethod": "did:example:123456#key1"
// },
// "type": [
// "VerifiableCredential",
// "PermanentResidentCard"
// "PermanentResidentCard",
// "VerifiableCredential"
// ]
//}
}
Expand Down
28 changes: 28 additions & 0 deletions test/bbs/data/case-18.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1",
"https://w3id.org/security/bbs/v1"
],
"id": "http://example.gov/credentials/3732",
"type": [
"VerifiableCredential",
"UniversityDegreeCredential"
],
"issuanceDate": "2020-03-10T04:24:12.164Z",
"credentialSubject": {
"id": "did:key:z5TcESXuYUE9aZWYwSdrUEGK1HNQFHyTt4aVpaCTVZcDXQmUheFwfNZmRksaAbBneNm5KyE52SdJeRCN1g6PJmF31GsHWwFiqUDujvasK3wTiDr3vvkYwEJHt7H5RGEKYEp1ErtQtcEBgsgY2DA9JZkHj1J9HZ8MRDTguAhoFtR4aTBQhgnkP4SwVbxDYMEZoF2TMYn3s#zUC7LTa4hWtaE9YKyDsMVGiRNqPMN3s4rjBdB3MFi6PcVWReNfR72y3oGW2NhNcaKNVhMobh7aHp8oZB3qdJCs7RebM2xsodrSm8MmePbN25NTGcpjkJMwKbcWfYDX7eHCJjPGM",
"degree": {
"type": "BachelorDegree",
"name": "Bachelor of Science and Arts"
}
},
"issuer": "did:key:zUC724vuGvHpnCGFG1qqpXb81SiBLu3KLSqVzenwEZNPoY35i2Bscb8DLaVwHvRFs6F2NkNNXRcPWvqnPDUd9ukdjLkjZd3u9zzL4wDZDUpkPAatLDGLEYVo8kkAzuAKJQMr7N2",
"proof": {
"type": "BbsBlsSignature2020",
"created": "2021-02-23T19:36:07Z",
"proofPurpose": "assertionMethod",
"proofValue": "qSjCNJzoDV3hv3gBPoUNN9m5lj8saDBBxC0iDHuFTXXz4PbbUhecmn/L3rPoGuySNatqC4I8VE22xQy0RAowIxoZCC+B2mZQIAb+/JGlXeAlWgEQc71WipfvsfqSn+KmR/rN1FREOy3rtSltyQ92rA==",
"verificationMethod": "did:key:zUC724vuGvHpnCGFG1qqpXb81SiBLu3KLSqVzenwEZNPoY35i2Bscb8DLaVwHvRFs6F2NkNNXRcPWvqnPDUd9ukdjLkjZd3u9zzL4wDZDUpkPAatLDGLEYVo8kkAzuAKJQMr7N2#zUC724vuGvHpnCGFG1qqpXb81SiBLu3KLSqVzenwEZNPoY35i2Bscb8DLaVwHvRFs6F2NkNNXRcPWvqnPDUd9ukdjLkjZd3u9zzL4wDZDUpkPAatLDGLEYVo8kkAzuAKJQMr7N2"
}
}
15 changes: 15 additions & 0 deletions test/bbs/data/case-19-reveal.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"@context": [
"https://www.w3.org/2018/credentials/v1",
"https://www.w3.org/2018/credentials/examples/v1",
"https://w3id.org/security/bbs/v1"
],
"type": ["UniversityDegreeCredential", "VerifiableCredential"],
"@explicit": true,
"issuer": {},
"issuanceDate": {},
"credentialSubject": {
"@explicit": true,
"degree": {}
}
}
200 changes: 200 additions & 0 deletions test/bbs/data/context/ordl.jsonld
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
{
"@context": {
"odrl": "http://www.w3.org/ns/odrl/2/",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"owl": "http://www.w3.org/2002/07/owl#",
"skos": "http://www.w3.org/2004/02/skos/core#",
"dct": "http://purl.org/dc/terms/",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"vcard": "http://www.w3.org/2006/vcard/ns#",
"foaf": "http://xmlns.com/foaf/0.1/",
"schema": "http://schema.org/",
"cc": "http://creativecommons.org/ns#",

"uid": "@id",
"type": "@type",

"Policy": "odrl:Policy",
"Rule": "odrl:Rule",
"profile": {"@type": "@id", "@id": "odrl:profile"},

"inheritFrom": {"@type": "@id", "@id": "odrl:inheritFrom"},

"ConflictTerm": "odrl:ConflictTerm",
"conflict": {"@type": "@vocab", "@id": "odrl:conflict"},
"perm": "odrl:perm",
"prohibit": "odrl:prohibit",
"invalid": "odrl:invalid",

"Agreement": "odrl:Agreement",
"Assertion": "odrl:Assertion",
"Offer": "odrl:Offer",
"Privacy": "odrl:Privacy",
"Request": "odrl:Request",
"Set": "odrl:Set",
"Ticket": "odrl:Ticket",

"Asset": "odrl:Asset",
"AssetCollection": "odrl:AssetCollection",
"relation": {"@type": "@id", "@id": "odrl:relation"},
"hasPolicy": {"@type": "@id", "@id": "odrl:hasPolicy"},

"target": {"@type": "@id", "@id": "odrl:target"},
"output": {"@type": "@id", "@id": "odrl:output"},

"partOf": {"@type": "@id", "@id": "odrl:partOf"},
"source": {"@type": "@id", "@id": "odrl:source"},

"Party": "odrl:Party",
"PartyCollection": "odrl:PartyCollection",
"function": {"@type": "@vocab", "@id": "odrl:function"},
"PartyScope": "odrl:PartyScope",

"assignee": {"@type": "@id", "@id": "odrl:assignee"},
"assigner": {"@type": "@id", "@id": "odrl:assigner"},
"assigneeOf": {"@type": "@id", "@id": "odrl:assigneeOf"},
"assignerOf": {"@type": "@id", "@id": "odrl:assignerOf"},
"attributedParty": {"@type": "@id", "@id": "odrl:attributedParty"},
"attributingParty": {"@type": "@id", "@id": "odrl:attributingParty"},
"compensatedParty": {"@type": "@id", "@id": "odrl:compensatedParty"},
"compensatingParty": {"@type": "@id", "@id": "odrl:compensatingParty"},
"consentingParty": {"@type": "@id", "@id": "odrl:consentingParty"},
"consentedParty": {"@type": "@id", "@id": "odrl:consentedParty"},
"informedParty": {"@type": "@id", "@id": "odrl:informedParty"},
"informingParty": {"@type": "@id", "@id": "odrl:informingParty"},
"trackingParty": {"@type": "@id", "@id": "odrl:trackingParty"},
"trackedParty": {"@type": "@id", "@id": "odrl:trackedParty"},
"contractingParty": {"@type": "@id", "@id": "odrl:contractingParty"},
"contractedParty": {"@type": "@id", "@id": "odrl:contractedParty"},

"Action": "odrl:Action",
"action": {"@type": "@vocab", "@id": "odrl:action"},
"includedIn": {"@type": "@id", "@id": "odrl:includedIn"},
"implies": {"@type": "@id", "@id": "odrl:implies"},

"Permission": "odrl:Permission",
"permission": {"@type": "@id", "@id": "odrl:permission"},

"Prohibition": "odrl:Prohibition",
"prohibition": {"@type": "@id", "@id": "odrl:prohibition"},

"obligation": {"@type": "@id", "@id": "odrl:obligation"},

"use": "odrl:use",
"grantUse": "odrl:grantUse",
"aggregate": "odrl:aggregate",
"annotate": "odrl:annotate",
"anonymize": "odrl:anonymize",
"archive": "odrl:archive",
"concurrentUse": "odrl:concurrentUse",
"derive": "odrl:derive",
"digitize": "odrl:digitize",
"display": "odrl:display",
"distribute": "odrl:distribute",
"execute": "odrl:execute",
"extract": "odrl:extract",
"give": "odrl:give",
"index": "odrl:index",
"install": "odrl:install",
"modify": "odrl:modify",
"move": "odrl:move",
"play": "odrl:play",
"present": "odrl:present",
"print": "odrl:print",
"read": "odrl:read",
"reproduce": "odrl:reproduce",
"sell": "odrl:sell",
"stream": "odrl:stream",
"textToSpeech": "odrl:textToSpeech",
"transfer": "odrl:transfer",
"transform": "odrl:transform",
"translate": "odrl:translate",

"Duty": "odrl:Duty",
"duty": {"@type": "@id", "@id": "odrl:duty"},
"consequence": {"@type": "@id", "@id": "odrl:consequence"},
"remedy": {"@type": "@id", "@id": "odrl:remedy"},

"acceptTracking": "odrl:acceptTracking",
"attribute": "odrl:attribute",
"compensate": "odrl:compensate",
"delete": "odrl:delete",
"ensureExclusivity": "odrl:ensureExclusivity",
"include": "odrl:include",
"inform": "odrl:inform",
"nextPolicy": "odrl:nextPolicy",
"obtainConsent": "odrl:obtainConsent",
"reviewPolicy": "odrl:reviewPolicy",
"uninstall": "odrl:uninstall",
"watermark": "odrl:watermark",

"Constraint": "odrl:Constraint",
"LogicalConstraint": "odrl:LogicalConstraint",
"constraint": {"@type": "@id", "@id": "odrl:constraint"},
"refinement": {"@type": "@id", "@id": "odrl:refinement"},
"Operator": "odrl:Operator",
"operator": {"@type": "@vocab", "@id": "odrl:operator"},
"RightOperand": "odrl:RightOperand",
"rightOperand": "odrl:rightOperand",
"rightOperandReference":{"@type": "xsd:anyURI", "@id": "odrl:rightOperandReference"},
"LeftOperand": "odrl:LeftOperand",
"leftOperand": {"@type": "@vocab", "@id": "odrl:leftOperand"},
"unit": "odrl:unit",
"dataType": {"@type": "xsd:anyType", "@id": "odrl:datatype"},
"status": "odrl:status",

"absolutePosition": "odrl:absolutePosition",
"absoluteSpatialPosition": "odrl:absoluteSpatialPosition",
"absoluteTemporalPosition":"odrl:absoluteTemporalPosition",
"absoluteSize": "odrl:absoluteSize",
"count": "odrl:count",
"dateTime": "odrl:dateTime",
"delayPeriod": "odrl:delayPeriod",
"deliveryChannel": "odrl:deliveryChannel",
"elapsedTime": "odrl:elapsedTime",
"event": "odrl:event",
"fileFormat": "odrl:fileFormat",
"industry": "odrl:industry:",
"language": "odrl:language",
"media": "odrl:media",
"meteredTime": "odrl:meteredTime",
"payAmount": "odrl:payAmount",
"percentage": "odrl:percentage",
"product": "odrl:product",
"purpose": "odrl:purpose",
"recipient": "odrl:recipient",
"relativePosition": "odrl:relativePosition",
"relativeSpatialPosition": "odrl:relativeSpatialPosition",
"relativeTemporalPosition":"odrl:relativeTemporalPosition",
"relativeSize": "odrl:relativeSize",
"resolution": "odrl:resolution",
"spatial": "odrl:spatial",
"spatialCoordinates": "odrl:spatialCoordinates",
"systemDevice": "odrl:systemDevice",
"timeInterval": "odrl:timeInterval",
"unitOfCount": "odrl:unitOfCount",
"version": "odrl:version",
"virtualLocation": "odrl:virtualLocation",

"eq": "odrl:eq",
"gt": "odrl:gt",
"gteq": "odrl:gteq",
"lt": "odrl:lt",
"lteq": "odrl:lteq",
"neq": "odrl:neg",
"isA": "odrl:isA",
"hasPart": "odrl:hasPart",
"isPartOf": "odrl:isPartOf",
"isAllOf": "odrl:isAllOf",
"isAnyOf": "odrl:isAnyOf",
"isNoneOf": "odrl:isNoneOf",
"or": "odrl:or",
"xone": "odrl:xone",
"and": "odrl:and",
"andSequence": "odrl:andSequence",

"policyUsage": "odrl:policyUsage"

}
}
Loading

0 comments on commit 79bbc2a

Please sign in to comment.