Skip to content

Commit db5f90e

Browse files
committed
make ldcontext resolove http and https as interchangeable
1 parent 3720d30 commit db5f90e

2 files changed

Lines changed: 35 additions & 2 deletions

File tree

src/ROCrate/LDContext.fs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,12 @@ type LDContext(?mappings : Dictionary<string,string>, ?baseContexts : ResizeArra
110110
with get() = name
111111
and set(value) = name <- value
112112

113-
member this.AddMapping(term,definition) =
113+
member this.AddMapping(term : string,definition : string) =
114+
let http = definition.Replace("https://","http://")
115+
let https = definition.Replace("http://","https://")
114116
StringDictionary.addOrUpdate term definition mappings
115-
addReverseMapping term definition
117+
addReverseMapping term http
118+
addReverseMapping term https
116119

117120
member this.TryResolveTerm(term : string) =
118121
// Handle compact IRI

tests/ROCrate/LDContext.Tests.fs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ let nameTerm = "name"
1313
let nameIRI = "http://schema.org/name"
1414
let nameCompactIRI = "schema:name"
1515

16+
let nameIRIHttps = "https://schema.org/name"
17+
let schemaIRIHttps = "https://schema.org/"
18+
let nameCompactIRIHttps = "schema:name"
19+
1620
let nameIRIAlternative = "http://fantasy-site.org/name"
1721

1822

@@ -86,6 +90,18 @@ let tests_getTerm = testList "getTerm" [
8690
let resolved = context.TryGetTerm(nameIRI)
8791
let resolved = Expect.wantSome resolved "term was not resolved"
8892
Expect.equal resolved nameTerm "term was not resolved correctly"
93+
testCase "fullIRI_ignoreHTTPs" <| fun _ ->
94+
let context = new LDContext()
95+
context.AddMapping(nameTerm, nameIRIHttps)
96+
let resolved = context.TryGetTerm(nameIRI)
97+
let resolved = Expect.wantSome resolved "term was not resolved"
98+
Expect.equal resolved nameTerm "term was not resolved correctly"
99+
testCase "fullIRI_ignoreHTTP" <| fun _ ->
100+
let context = new LDContext()
101+
context.AddMapping(nameTerm, nameIRI)
102+
let resolved = context.TryGetTerm(nameIRIHttps)
103+
let resolved = Expect.wantSome resolved "term was not resolved"
104+
Expect.equal resolved nameTerm "term was not resolved correctly"
89105
testCase "compactIRI" <| fun _ ->
90106
let context = new LDContext()
91107
context.AddMapping(nameTerm, nameCompactIRI)
@@ -100,6 +116,20 @@ let tests_getTerm = testList "getTerm" [
100116
let resolved = context.TryGetTerm(nameIRI)
101117
let resolved = Expect.wantSome resolved "term was not resolved"
102118
Expect.equal resolved nameTerm "term was not resolved correctly"
119+
testCase "compactIRI_ignoreHTTPs" <| fun _ ->
120+
let context = new LDContext()
121+
context.AddMapping(nameTerm, nameCompactIRIHttps)
122+
context.AddMapping(schemaTerm, schemaIRIHttps)
123+
let resolved = context.TryGetTerm(nameIRI)
124+
let resolved = Expect.wantSome resolved "term was not resolved"
125+
Expect.equal resolved nameTerm "term was not resolved correctly"
126+
testCase "compactIRI_ignoreHTTP" <| fun _ ->
127+
let context = new LDContext()
128+
context.AddMapping(nameTerm, nameCompactIRI)
129+
context.AddMapping(schemaTerm, schemaIRI)
130+
let resolved = context.TryGetTerm(nameIRIHttps)
131+
let resolved = Expect.wantSome resolved "term was not resolved"
132+
Expect.equal resolved nameTerm "term was not resolved correctly"
103133
testCase "Nested_Shadowed" <| fun _ ->
104134
let innerContext = new LDContext()
105135
innerContext.AddMapping(nameTerm, nameIRI)

0 commit comments

Comments
 (0)