Skip to content

Instantly share code, notes, and snippets.

@RubenVerborgh
Last active June 29, 2016 12:51
Show Gist options
  • Save RubenVerborgh/39f0e8d63e33e435371a to your computer and use it in GitHub Desktop.
Save RubenVerborgh/39f0e8d63e33e435371a to your computer and use it in GitHub Desktop.
Turtle IRI resolution compliance test
[
{
"@context": {"@base": "http://a/bb/ccc/d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s001", "urn:ex:p": "g:h"},
{"@id": "urn:ex:s002", "urn:ex:p": "g"},
{"@id": "urn:ex:s003", "urn:ex:p": "./g"},
{"@id": "urn:ex:s004", "urn:ex:p": "g/"},
{"@id": "urn:ex:s005", "urn:ex:p": "/g"},
{"@id": "urn:ex:s006", "urn:ex:p": "//g"},
{"@id": "urn:ex:s007", "urn:ex:p": "?y"},
{"@id": "urn:ex:s008", "urn:ex:p": "g?y"},
{"@id": "urn:ex:s009", "urn:ex:p": "#s"},
{"@id": "urn:ex:s010", "urn:ex:p": "g#s"},
{"@id": "urn:ex:s011", "urn:ex:p": "g?y#s"},
{"@id": "urn:ex:s012", "urn:ex:p": ";x"},
{"@id": "urn:ex:s013", "urn:ex:p": "g;x"},
{"@id": "urn:ex:s014", "urn:ex:p": "g;x?y#s"},
{"@id": "urn:ex:s015", "urn:ex:p": ""},
{"@id": "urn:ex:s016", "urn:ex:p": "."},
{"@id": "urn:ex:s017", "urn:ex:p": "./"},
{"@id": "urn:ex:s018", "urn:ex:p": ".."},
{"@id": "urn:ex:s019", "urn:ex:p": "../"},
{"@id": "urn:ex:s020", "urn:ex:p": "../g"},
{"@id": "urn:ex:s021", "urn:ex:p": "../.."},
{"@id": "urn:ex:s022", "urn:ex:p": "../../"},
{"@id": "urn:ex:s023", "urn:ex:p": "../../g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s024", "urn:ex:p": "../../../g"},
{"@id": "urn:ex:s025", "urn:ex:p": "../../../../g"},
{"@id": "urn:ex:s026", "urn:ex:p": "/./g"},
{"@id": "urn:ex:s027", "urn:ex:p": "/../g"},
{"@id": "urn:ex:s028", "urn:ex:p": "g."},
{"@id": "urn:ex:s029", "urn:ex:p": ".g"},
{"@id": "urn:ex:s030", "urn:ex:p": "g.."},
{"@id": "urn:ex:s031", "urn:ex:p": "..g"},
{"@id": "urn:ex:s032", "urn:ex:p": "./../g"},
{"@id": "urn:ex:s033", "urn:ex:p": "./g/."},
{"@id": "urn:ex:s034", "urn:ex:p": "g/./h"},
{"@id": "urn:ex:s035", "urn:ex:p": "g/../h"},
{"@id": "urn:ex:s036", "urn:ex:p": "g;x=1/./y"},
{"@id": "urn:ex:s037", "urn:ex:p": "g;x=1/../y"},
{"@id": "urn:ex:s038", "urn:ex:p": "g?y/./x"},
{"@id": "urn:ex:s039", "urn:ex:p": "g?y/../x"},
{"@id": "urn:ex:s040", "urn:ex:p": "g#s/./x"},
{"@id": "urn:ex:s041", "urn:ex:p": "g#s/../x"},
{"@id": "urn:ex:s042", "urn:ex:p": "http:g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/d/", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s043", "urn:ex:p": "g:h"},
{"@id": "urn:ex:s044", "urn:ex:p": "g"},
{"@id": "urn:ex:s045", "urn:ex:p": "./g"},
{"@id": "urn:ex:s046", "urn:ex:p": "g/"},
{"@id": "urn:ex:s047", "urn:ex:p": "/g"},
{"@id": "urn:ex:s048", "urn:ex:p": "//g"},
{"@id": "urn:ex:s049", "urn:ex:p": "?y"},
{"@id": "urn:ex:s050", "urn:ex:p": "g?y"},
{"@id": "urn:ex:s051", "urn:ex:p": "#s"},
{"@id": "urn:ex:s052", "urn:ex:p": "g#s"},
{"@id": "urn:ex:s053", "urn:ex:p": "g?y#s"},
{"@id": "urn:ex:s054", "urn:ex:p": ";x"},
{"@id": "urn:ex:s055", "urn:ex:p": "g;x"},
{"@id": "urn:ex:s056", "urn:ex:p": "g;x?y#s"},
{"@id": "urn:ex:s057", "urn:ex:p": ""},
{"@id": "urn:ex:s058", "urn:ex:p": "."},
{"@id": "urn:ex:s059", "urn:ex:p": "./"},
{"@id": "urn:ex:s060", "urn:ex:p": ".."},
{"@id": "urn:ex:s061", "urn:ex:p": "../"},
{"@id": "urn:ex:s062", "urn:ex:p": "../g"},
{"@id": "urn:ex:s063", "urn:ex:p": "../.."},
{"@id": "urn:ex:s064", "urn:ex:p": "../../"},
{"@id": "urn:ex:s065", "urn:ex:p": "../../g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/d/", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s066", "urn:ex:p": "../../../g"},
{"@id": "urn:ex:s067", "urn:ex:p": "../../../../g"},
{"@id": "urn:ex:s068", "urn:ex:p": "/./g"},
{"@id": "urn:ex:s069", "urn:ex:p": "/../g"},
{"@id": "urn:ex:s070", "urn:ex:p": "g."},
{"@id": "urn:ex:s071", "urn:ex:p": ".g"},
{"@id": "urn:ex:s072", "urn:ex:p": "g.."},
{"@id": "urn:ex:s073", "urn:ex:p": "..g"},
{"@id": "urn:ex:s074", "urn:ex:p": "./../g"},
{"@id": "urn:ex:s075", "urn:ex:p": "./g/."},
{"@id": "urn:ex:s076", "urn:ex:p": "g/./h"},
{"@id": "urn:ex:s077", "urn:ex:p": "g/../h"},
{"@id": "urn:ex:s078", "urn:ex:p": "g;x=1/./y"},
{"@id": "urn:ex:s079", "urn:ex:p": "g;x=1/../y"},
{"@id": "urn:ex:s080", "urn:ex:p": "g?y/./x"},
{"@id": "urn:ex:s081", "urn:ex:p": "g?y/../x"},
{"@id": "urn:ex:s082", "urn:ex:p": "g#s/./x"},
{"@id": "urn:ex:s083", "urn:ex:p": "g#s/../x"},
{"@id": "urn:ex:s084", "urn:ex:p": "http:g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/./d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s085", "urn:ex:p": "g:h"},
{"@id": "urn:ex:s086", "urn:ex:p": "g"},
{"@id": "urn:ex:s087", "urn:ex:p": "./g"},
{"@id": "urn:ex:s088", "urn:ex:p": "g/"},
{"@id": "urn:ex:s089", "urn:ex:p": "/g"},
{"@id": "urn:ex:s090", "urn:ex:p": "//g"},
{"@id": "urn:ex:s091", "urn:ex:p": "?y"},
{"@id": "urn:ex:s092", "urn:ex:p": "g?y"},
{"@id": "urn:ex:s093", "urn:ex:p": "#s"},
{"@id": "urn:ex:s094", "urn:ex:p": "g#s"},
{"@id": "urn:ex:s095", "urn:ex:p": "g?y#s"},
{"@id": "urn:ex:s096", "urn:ex:p": ";x"},
{"@id": "urn:ex:s097", "urn:ex:p": "g;x"},
{"@id": "urn:ex:s098", "urn:ex:p": "g;x?y#s"},
{"@id": "urn:ex:s099", "urn:ex:p": ""},
{"@id": "urn:ex:s100", "urn:ex:p": "."},
{"@id": "urn:ex:s101", "urn:ex:p": "./"},
{"@id": "urn:ex:s102", "urn:ex:p": ".."},
{"@id": "urn:ex:s103", "urn:ex:p": "../"},
{"@id": "urn:ex:s104", "urn:ex:p": "../g"},
{"@id": "urn:ex:s105", "urn:ex:p": "../.."},
{"@id": "urn:ex:s106", "urn:ex:p": "../../"},
{"@id": "urn:ex:s107", "urn:ex:p": "../../g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/./d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s108", "urn:ex:p": "../../../g"},
{"@id": "urn:ex:s109", "urn:ex:p": "../../../../g"},
{"@id": "urn:ex:s110", "urn:ex:p": "/./g"},
{"@id": "urn:ex:s111", "urn:ex:p": "/../g"},
{"@id": "urn:ex:s112", "urn:ex:p": "g."},
{"@id": "urn:ex:s113", "urn:ex:p": ".g"},
{"@id": "urn:ex:s114", "urn:ex:p": "g.."},
{"@id": "urn:ex:s115", "urn:ex:p": "..g"},
{"@id": "urn:ex:s116", "urn:ex:p": "./../g"},
{"@id": "urn:ex:s117", "urn:ex:p": "./g/."},
{"@id": "urn:ex:s118", "urn:ex:p": "g/./h"},
{"@id": "urn:ex:s119", "urn:ex:p": "g/../h"},
{"@id": "urn:ex:s120", "urn:ex:p": "g;x=1/./y"},
{"@id": "urn:ex:s121", "urn:ex:p": "g;x=1/../y"},
{"@id": "urn:ex:s122", "urn:ex:p": "g?y/./x"},
{"@id": "urn:ex:s123", "urn:ex:p": "g?y/../x"},
{"@id": "urn:ex:s124", "urn:ex:p": "g#s/./x"},
{"@id": "urn:ex:s125", "urn:ex:p": "g#s/../x"},
{"@id": "urn:ex:s126", "urn:ex:p": "http:g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/../d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s127", "urn:ex:p": "g:h"},
{"@id": "urn:ex:s128", "urn:ex:p": "g"},
{"@id": "urn:ex:s129", "urn:ex:p": "./g"},
{"@id": "urn:ex:s130", "urn:ex:p": "g/"},
{"@id": "urn:ex:s131", "urn:ex:p": "/g"},
{"@id": "urn:ex:s132", "urn:ex:p": "//g"},
{"@id": "urn:ex:s133", "urn:ex:p": "?y"},
{"@id": "urn:ex:s134", "urn:ex:p": "g?y"},
{"@id": "urn:ex:s135", "urn:ex:p": "#s"},
{"@id": "urn:ex:s136", "urn:ex:p": "g#s"},
{"@id": "urn:ex:s137", "urn:ex:p": "g?y#s"},
{"@id": "urn:ex:s138", "urn:ex:p": ";x"},
{"@id": "urn:ex:s139", "urn:ex:p": "g;x"},
{"@id": "urn:ex:s140", "urn:ex:p": "g;x?y#s"},
{"@id": "urn:ex:s141", "urn:ex:p": ""},
{"@id": "urn:ex:s142", "urn:ex:p": "."},
{"@id": "urn:ex:s143", "urn:ex:p": "./"},
{"@id": "urn:ex:s144", "urn:ex:p": ".."},
{"@id": "urn:ex:s145", "urn:ex:p": "../"},
{"@id": "urn:ex:s146", "urn:ex:p": "../g"},
{"@id": "urn:ex:s147", "urn:ex:p": "../.."},
{"@id": "urn:ex:s148", "urn:ex:p": "../../"},
{"@id": "urn:ex:s149", "urn:ex:p": "../../g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/../d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s150", "urn:ex:p": "../../../g"},
{"@id": "urn:ex:s151", "urn:ex:p": "../../../../g"},
{"@id": "urn:ex:s152", "urn:ex:p": "/./g"},
{"@id": "urn:ex:s153", "urn:ex:p": "/../g"},
{"@id": "urn:ex:s154", "urn:ex:p": "g."},
{"@id": "urn:ex:s155", "urn:ex:p": ".g"},
{"@id": "urn:ex:s156", "urn:ex:p": "g.."},
{"@id": "urn:ex:s157", "urn:ex:p": "..g"},
{"@id": "urn:ex:s158", "urn:ex:p": "./../g"},
{"@id": "urn:ex:s159", "urn:ex:p": "./g/."},
{"@id": "urn:ex:s160", "urn:ex:p": "g/./h"},
{"@id": "urn:ex:s161", "urn:ex:p": "g/../h"},
{"@id": "urn:ex:s162", "urn:ex:p": "g;x=1/./y"},
{"@id": "urn:ex:s163", "urn:ex:p": "g;x=1/../y"},
{"@id": "urn:ex:s164", "urn:ex:p": "g?y/./x"},
{"@id": "urn:ex:s165", "urn:ex:p": "g?y/../x"},
{"@id": "urn:ex:s166", "urn:ex:p": "g#s/./x"},
{"@id": "urn:ex:s167", "urn:ex:p": "g#s/../x"},
{"@id": "urn:ex:s168", "urn:ex:p": "http:g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/.", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s169", "urn:ex:p": "g:h"},
{"@id": "urn:ex:s170", "urn:ex:p": "g"},
{"@id": "urn:ex:s171", "urn:ex:p": "./g"},
{"@id": "urn:ex:s172", "urn:ex:p": "g/"},
{"@id": "urn:ex:s173", "urn:ex:p": "/g"},
{"@id": "urn:ex:s174", "urn:ex:p": "//g"},
{"@id": "urn:ex:s175", "urn:ex:p": "?y"},
{"@id": "urn:ex:s176", "urn:ex:p": "g?y"},
{"@id": "urn:ex:s177", "urn:ex:p": "#s"},
{"@id": "urn:ex:s178", "urn:ex:p": "g#s"},
{"@id": "urn:ex:s179", "urn:ex:p": "g?y#s"},
{"@id": "urn:ex:s180", "urn:ex:p": ";x"},
{"@id": "urn:ex:s181", "urn:ex:p": "g;x"},
{"@id": "urn:ex:s182", "urn:ex:p": "g;x?y#s"},
{"@id": "urn:ex:s183", "urn:ex:p": ""},
{"@id": "urn:ex:s184", "urn:ex:p": "."},
{"@id": "urn:ex:s185", "urn:ex:p": "./"},
{"@id": "urn:ex:s186", "urn:ex:p": ".."},
{"@id": "urn:ex:s187", "urn:ex:p": "../"},
{"@id": "urn:ex:s188", "urn:ex:p": "../g"},
{"@id": "urn:ex:s189", "urn:ex:p": "../.."},
{"@id": "urn:ex:s190", "urn:ex:p": "../../"},
{"@id": "urn:ex:s191", "urn:ex:p": "../../g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/.", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s192", "urn:ex:p": "../../../g"},
{"@id": "urn:ex:s193", "urn:ex:p": "../../../../g"},
{"@id": "urn:ex:s194", "urn:ex:p": "/./g"},
{"@id": "urn:ex:s195", "urn:ex:p": "/../g"},
{"@id": "urn:ex:s196", "urn:ex:p": "g."},
{"@id": "urn:ex:s197", "urn:ex:p": ".g"},
{"@id": "urn:ex:s198", "urn:ex:p": "g.."},
{"@id": "urn:ex:s199", "urn:ex:p": "..g"},
{"@id": "urn:ex:s200", "urn:ex:p": "./../g"},
{"@id": "urn:ex:s201", "urn:ex:p": "./g/."},
{"@id": "urn:ex:s202", "urn:ex:p": "g/./h"},
{"@id": "urn:ex:s203", "urn:ex:p": "g/../h"},
{"@id": "urn:ex:s204", "urn:ex:p": "g;x=1/./y"},
{"@id": "urn:ex:s205", "urn:ex:p": "g;x=1/../y"},
{"@id": "urn:ex:s206", "urn:ex:p": "g?y/./x"},
{"@id": "urn:ex:s207", "urn:ex:p": "g?y/../x"},
{"@id": "urn:ex:s208", "urn:ex:p": "g#s/./x"},
{"@id": "urn:ex:s209", "urn:ex:p": "g#s/../x"},
{"@id": "urn:ex:s210", "urn:ex:p": "http:g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/..", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s211", "urn:ex:p": "g:h"},
{"@id": "urn:ex:s212", "urn:ex:p": "g"},
{"@id": "urn:ex:s213", "urn:ex:p": "./g"},
{"@id": "urn:ex:s214", "urn:ex:p": "g/"},
{"@id": "urn:ex:s215", "urn:ex:p": "/g"},
{"@id": "urn:ex:s216", "urn:ex:p": "//g"},
{"@id": "urn:ex:s217", "urn:ex:p": "?y"},
{"@id": "urn:ex:s218", "urn:ex:p": "g?y"},
{"@id": "urn:ex:s219", "urn:ex:p": "#s"},
{"@id": "urn:ex:s220", "urn:ex:p": "g#s"},
{"@id": "urn:ex:s221", "urn:ex:p": "g?y#s"},
{"@id": "urn:ex:s222", "urn:ex:p": ";x"},
{"@id": "urn:ex:s223", "urn:ex:p": "g;x"},
{"@id": "urn:ex:s224", "urn:ex:p": "g;x?y#s"},
{"@id": "urn:ex:s225", "urn:ex:p": ""},
{"@id": "urn:ex:s226", "urn:ex:p": "."},
{"@id": "urn:ex:s227", "urn:ex:p": "./"},
{"@id": "urn:ex:s228", "urn:ex:p": ".."},
{"@id": "urn:ex:s229", "urn:ex:p": "../"},
{"@id": "urn:ex:s230", "urn:ex:p": "../g"},
{"@id": "urn:ex:s231", "urn:ex:p": "../.."},
{"@id": "urn:ex:s232", "urn:ex:p": "../../"},
{"@id": "urn:ex:s233", "urn:ex:p": "../../g"}
]
},
{
"@context": {"@base": "http://a/bb/ccc/..", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s234", "urn:ex:p": "../../../g"},
{"@id": "urn:ex:s235", "urn:ex:p": "../../../../g"},
{"@id": "urn:ex:s236", "urn:ex:p": "/./g"},
{"@id": "urn:ex:s237", "urn:ex:p": "/../g"},
{"@id": "urn:ex:s238", "urn:ex:p": "g."},
{"@id": "urn:ex:s239", "urn:ex:p": ".g"},
{"@id": "urn:ex:s240", "urn:ex:p": "g.."},
{"@id": "urn:ex:s241", "urn:ex:p": "..g"},
{"@id": "urn:ex:s242", "urn:ex:p": "./../g"},
{"@id": "urn:ex:s243", "urn:ex:p": "./g/."},
{"@id": "urn:ex:s244", "urn:ex:p": "g/./h"},
{"@id": "urn:ex:s245", "urn:ex:p": "g/../h"},
{"@id": "urn:ex:s246", "urn:ex:p": "g;x=1/./y"},
{"@id": "urn:ex:s247", "urn:ex:p": "g;x=1/../y"},
{"@id": "urn:ex:s248", "urn:ex:p": "g?y/./x"},
{"@id": "urn:ex:s249", "urn:ex:p": "g?y/../x"},
{"@id": "urn:ex:s250", "urn:ex:p": "g#s/./x"},
{"@id": "urn:ex:s251", "urn:ex:p": "g#s/../x"},
{"@id": "urn:ex:s252", "urn:ex:p": "http:g"}
]
},
{
"@context": {"@base": "file:///a/bb/ccc/d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s253", "urn:ex:p": "g:h"},
{"@id": "urn:ex:s254", "urn:ex:p": "g"},
{"@id": "urn:ex:s255", "urn:ex:p": "./g"},
{"@id": "urn:ex:s256", "urn:ex:p": "g/"},
{"@id": "urn:ex:s257", "urn:ex:p": "/g"},
{"@id": "urn:ex:s258", "urn:ex:p": "//g"},
{"@id": "urn:ex:s259", "urn:ex:p": "?y"},
{"@id": "urn:ex:s260", "urn:ex:p": "g?y"},
{"@id": "urn:ex:s261", "urn:ex:p": "#s"},
{"@id": "urn:ex:s262", "urn:ex:p": "g#s"},
{"@id": "urn:ex:s263", "urn:ex:p": "g?y#s"},
{"@id": "urn:ex:s264", "urn:ex:p": ";x"},
{"@id": "urn:ex:s265", "urn:ex:p": "g;x"},
{"@id": "urn:ex:s266", "urn:ex:p": "g;x?y#s"},
{"@id": "urn:ex:s267", "urn:ex:p": ""},
{"@id": "urn:ex:s268", "urn:ex:p": "."},
{"@id": "urn:ex:s269", "urn:ex:p": "./"},
{"@id": "urn:ex:s270", "urn:ex:p": ".."},
{"@id": "urn:ex:s271", "urn:ex:p": "../"},
{"@id": "urn:ex:s272", "urn:ex:p": "../g"},
{"@id": "urn:ex:s273", "urn:ex:p": "../.."},
{"@id": "urn:ex:s274", "urn:ex:p": "../../"},
{"@id": "urn:ex:s275", "urn:ex:p": "../../g"}
]
},
{
"@context": {"@base": "file:///a/bb/ccc/d;p?q", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s276", "urn:ex:p": "../../../g"},
{"@id": "urn:ex:s277", "urn:ex:p": "../../../../g"},
{"@id": "urn:ex:s278", "urn:ex:p": "/./g"},
{"@id": "urn:ex:s279", "urn:ex:p": "/../g"},
{"@id": "urn:ex:s280", "urn:ex:p": "g."},
{"@id": "urn:ex:s281", "urn:ex:p": ".g"},
{"@id": "urn:ex:s282", "urn:ex:p": "g.."},
{"@id": "urn:ex:s283", "urn:ex:p": "..g"},
{"@id": "urn:ex:s284", "urn:ex:p": "./../g"},
{"@id": "urn:ex:s285", "urn:ex:p": "./g/."},
{"@id": "urn:ex:s286", "urn:ex:p": "g/./h"},
{"@id": "urn:ex:s287", "urn:ex:p": "g/../h"},
{"@id": "urn:ex:s288", "urn:ex:p": "g;x=1/./y"},
{"@id": "urn:ex:s289", "urn:ex:p": "g;x=1/../y"},
{"@id": "urn:ex:s290", "urn:ex:p": "g?y/./x"},
{"@id": "urn:ex:s291", "urn:ex:p": "g?y/../x"},
{"@id": "urn:ex:s292", "urn:ex:p": "g#s/./x"},
{"@id": "urn:ex:s293", "urn:ex:p": "g#s/../x"},
{"@id": "urn:ex:s294", "urn:ex:p": "http:g"}
]
},
{
"@context": {"@base": "http://abc/def/ghi", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s295", "urn:ex:p": "."},
{"@id": "urn:ex:s296", "urn:ex:p": ".?a=b"},
{"@id": "urn:ex:s297", "urn:ex:p": ".#a=b"},
{"@id": "urn:ex:s298", "urn:ex:p": ".."},
{"@id": "urn:ex:s299", "urn:ex:p": "..?a=b"},
{"@id": "urn:ex:s300", "urn:ex:p": "..#a=b"}
]
},
{
"@context": {"@base": "http://ab//de//ghi", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s301", "urn:ex:p": "xyz"},
{"@id": "urn:ex:s302", "urn:ex:p": "./xyz"},
{"@id": "urn:ex:s303", "urn:ex:p": "../xyz"}
]
},
{
"@context": {"@base": "http://abc/d:f/ghi", "urn:ex:p": {"@type": "@id"}},
"@graph": [
{"@id": "urn:ex:s304", "urn:ex:p": "xyz"},
{"@id": "urn:ex:s305", "urn:ex:p": "./xyz"},
{"@id": "urn:ex:s306", "urn:ex:p": "../xyz"}
]
}
]
# RFC3986 normal examples
<urn:ex:s001> <urn:ex:p> <g:h>.
<urn:ex:s002> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s003> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s004> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s005> <urn:ex:p> <http://a/g>.
<urn:ex:s006> <urn:ex:p> <http://g>.
<urn:ex:s007> <urn:ex:p> <http://a/bb/ccc/d;p?y>.
<urn:ex:s008> <urn:ex:p> <http://a/bb/ccc/g?y>.
<urn:ex:s009> <urn:ex:p> <http://a/bb/ccc/d;p?q#s>.
<urn:ex:s010> <urn:ex:p> <http://a/bb/ccc/g#s>.
<urn:ex:s011> <urn:ex:p> <http://a/bb/ccc/g?y#s>.
<urn:ex:s012> <urn:ex:p> <http://a/bb/ccc/;x>.
<urn:ex:s013> <urn:ex:p> <http://a/bb/ccc/g;x>.
<urn:ex:s014> <urn:ex:p> <http://a/bb/ccc/g;x?y#s>.
<urn:ex:s015> <urn:ex:p> <http://a/bb/ccc/d;p?q>.
<urn:ex:s016> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s017> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s018> <urn:ex:p> <http://a/bb/>.
<urn:ex:s019> <urn:ex:p> <http://a/bb/>.
<urn:ex:s020> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s021> <urn:ex:p> <http://a/>.
<urn:ex:s022> <urn:ex:p> <http://a/>.
<urn:ex:s023> <urn:ex:p> <http://a/g>.
# RFC3986 abnormal examples
<urn:ex:s024> <urn:ex:p> <http://a/g>.
<urn:ex:s025> <urn:ex:p> <http://a/g>.
<urn:ex:s026> <urn:ex:p> <http://a/g>.
<urn:ex:s027> <urn:ex:p> <http://a/g>.
<urn:ex:s028> <urn:ex:p> <http://a/bb/ccc/g.>.
<urn:ex:s029> <urn:ex:p> <http://a/bb/ccc/.g>.
<urn:ex:s030> <urn:ex:p> <http://a/bb/ccc/g..>.
<urn:ex:s031> <urn:ex:p> <http://a/bb/ccc/..g>.
<urn:ex:s032> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s033> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s034> <urn:ex:p> <http://a/bb/ccc/g/h>.
<urn:ex:s035> <urn:ex:p> <http://a/bb/ccc/h>.
<urn:ex:s036> <urn:ex:p> <http://a/bb/ccc/g;x=1/y>.
<urn:ex:s037> <urn:ex:p> <http://a/bb/ccc/y>.
<urn:ex:s038> <urn:ex:p> <http://a/bb/ccc/g?y/./x>.
<urn:ex:s039> <urn:ex:p> <http://a/bb/ccc/g?y/../x>.
<urn:ex:s040> <urn:ex:p> <http://a/bb/ccc/g#s/./x>.
<urn:ex:s041> <urn:ex:p> <http://a/bb/ccc/g#s/../x>.
<urn:ex:s042> <urn:ex:p> <http:g>.
# RFC3986 normal examples with trailing slash in base IRI
<urn:ex:s043> <urn:ex:p> <g:h>.
<urn:ex:s044> <urn:ex:p> <http://a/bb/ccc/d/g>.
<urn:ex:s045> <urn:ex:p> <http://a/bb/ccc/d/g>.
<urn:ex:s046> <urn:ex:p> <http://a/bb/ccc/d/g/>.
<urn:ex:s047> <urn:ex:p> <http://a/g>.
<urn:ex:s048> <urn:ex:p> <http://g>.
<urn:ex:s049> <urn:ex:p> <http://a/bb/ccc/d/?y>.
<urn:ex:s050> <urn:ex:p> <http://a/bb/ccc/d/g?y>.
<urn:ex:s051> <urn:ex:p> <http://a/bb/ccc/d/#s>.
<urn:ex:s052> <urn:ex:p> <http://a/bb/ccc/d/g#s>.
<urn:ex:s053> <urn:ex:p> <http://a/bb/ccc/d/g?y#s>.
<urn:ex:s054> <urn:ex:p> <http://a/bb/ccc/d/;x>.
<urn:ex:s055> <urn:ex:p> <http://a/bb/ccc/d/g;x>.
<urn:ex:s056> <urn:ex:p> <http://a/bb/ccc/d/g;x?y#s>.
<urn:ex:s057> <urn:ex:p> <http://a/bb/ccc/d/>.
<urn:ex:s058> <urn:ex:p> <http://a/bb/ccc/d/>.
<urn:ex:s059> <urn:ex:p> <http://a/bb/ccc/d/>.
<urn:ex:s060> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s061> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s062> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s063> <urn:ex:p> <http://a/bb/>.
<urn:ex:s064> <urn:ex:p> <http://a/bb/>.
<urn:ex:s065> <urn:ex:p> <http://a/bb/g>.
# RFC3986 abnormal examples with trailing slash in base IRI
<urn:ex:s066> <urn:ex:p> <http://a/g>.
<urn:ex:s067> <urn:ex:p> <http://a/g>.
<urn:ex:s068> <urn:ex:p> <http://a/g>.
<urn:ex:s069> <urn:ex:p> <http://a/g>.
<urn:ex:s070> <urn:ex:p> <http://a/bb/ccc/d/g.>.
<urn:ex:s071> <urn:ex:p> <http://a/bb/ccc/d/.g>.
<urn:ex:s072> <urn:ex:p> <http://a/bb/ccc/d/g..>.
<urn:ex:s073> <urn:ex:p> <http://a/bb/ccc/d/..g>.
<urn:ex:s074> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s075> <urn:ex:p> <http://a/bb/ccc/d/g/>.
<urn:ex:s076> <urn:ex:p> <http://a/bb/ccc/d/g/h>.
<urn:ex:s077> <urn:ex:p> <http://a/bb/ccc/d/h>.
<urn:ex:s078> <urn:ex:p> <http://a/bb/ccc/d/g;x=1/y>.
<urn:ex:s079> <urn:ex:p> <http://a/bb/ccc/d/y>.
<urn:ex:s080> <urn:ex:p> <http://a/bb/ccc/d/g?y/./x>.
<urn:ex:s081> <urn:ex:p> <http://a/bb/ccc/d/g?y/../x>.
<urn:ex:s082> <urn:ex:p> <http://a/bb/ccc/d/g#s/./x>.
<urn:ex:s083> <urn:ex:p> <http://a/bb/ccc/d/g#s/../x>.
<urn:ex:s084> <urn:ex:p> <http:g>.
# RFC3986 normal examples with /. in the base IRI
<urn:ex:s085> <urn:ex:p> <g:h>.
<urn:ex:s086> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s087> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s088> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s089> <urn:ex:p> <http://a/g>.
<urn:ex:s090> <urn:ex:p> <http://g>.
<urn:ex:s091> <urn:ex:p> <http://a/bb/ccc/./d;p?y>.
<urn:ex:s092> <urn:ex:p> <http://a/bb/ccc/g?y>.
<urn:ex:s093> <urn:ex:p> <http://a/bb/ccc/./d;p?q#s>.
<urn:ex:s094> <urn:ex:p> <http://a/bb/ccc/g#s>.
<urn:ex:s095> <urn:ex:p> <http://a/bb/ccc/g?y#s>.
<urn:ex:s096> <urn:ex:p> <http://a/bb/ccc/;x>.
<urn:ex:s097> <urn:ex:p> <http://a/bb/ccc/g;x>.
<urn:ex:s098> <urn:ex:p> <http://a/bb/ccc/g;x?y#s>.
<urn:ex:s099> <urn:ex:p> <http://a/bb/ccc/./d;p?q>.
<urn:ex:s100> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s101> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s102> <urn:ex:p> <http://a/bb/>.
<urn:ex:s103> <urn:ex:p> <http://a/bb/>.
<urn:ex:s104> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s105> <urn:ex:p> <http://a/>.
<urn:ex:s106> <urn:ex:p> <http://a/>.
<urn:ex:s107> <urn:ex:p> <http://a/g>.
# RFC3986 abnormal examples with /. in the base IRI
<urn:ex:s108> <urn:ex:p> <http://a/g>.
<urn:ex:s109> <urn:ex:p> <http://a/g>.
<urn:ex:s110> <urn:ex:p> <http://a/g>.
<urn:ex:s111> <urn:ex:p> <http://a/g>.
<urn:ex:s112> <urn:ex:p> <http://a/bb/ccc/g.>.
<urn:ex:s113> <urn:ex:p> <http://a/bb/ccc/.g>.
<urn:ex:s114> <urn:ex:p> <http://a/bb/ccc/g..>.
<urn:ex:s115> <urn:ex:p> <http://a/bb/ccc/..g>.
<urn:ex:s116> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s117> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s118> <urn:ex:p> <http://a/bb/ccc/g/h>.
<urn:ex:s119> <urn:ex:p> <http://a/bb/ccc/h>.
<urn:ex:s120> <urn:ex:p> <http://a/bb/ccc/g;x=1/y>.
<urn:ex:s121> <urn:ex:p> <http://a/bb/ccc/y>.
<urn:ex:s122> <urn:ex:p> <http://a/bb/ccc/g?y/./x>.
<urn:ex:s123> <urn:ex:p> <http://a/bb/ccc/g?y/../x>.
<urn:ex:s124> <urn:ex:p> <http://a/bb/ccc/g#s/./x>.
<urn:ex:s125> <urn:ex:p> <http://a/bb/ccc/g#s/../x>.
<urn:ex:s126> <urn:ex:p> <http:g>.
# RFC3986 normal examples with /.. in the base IRI
<urn:ex:s127> <urn:ex:p> <g:h>.
<urn:ex:s128> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s129> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s130> <urn:ex:p> <http://a/bb/g/>.
<urn:ex:s131> <urn:ex:p> <http://a/g>.
<urn:ex:s132> <urn:ex:p> <http://g>.
<urn:ex:s133> <urn:ex:p> <http://a/bb/ccc/../d;p?y>.
<urn:ex:s134> <urn:ex:p> <http://a/bb/g?y>.
<urn:ex:s135> <urn:ex:p> <http://a/bb/ccc/../d;p?q#s>.
<urn:ex:s136> <urn:ex:p> <http://a/bb/g#s>.
<urn:ex:s137> <urn:ex:p> <http://a/bb/g?y#s>.
<urn:ex:s138> <urn:ex:p> <http://a/bb/;x>.
<urn:ex:s139> <urn:ex:p> <http://a/bb/g;x>.
<urn:ex:s140> <urn:ex:p> <http://a/bb/g;x?y#s>.
<urn:ex:s141> <urn:ex:p> <http://a/bb/ccc/../d;p?q>.
<urn:ex:s142> <urn:ex:p> <http://a/bb/>.
<urn:ex:s143> <urn:ex:p> <http://a/bb/>.
<urn:ex:s144> <urn:ex:p> <http://a/>.
<urn:ex:s145> <urn:ex:p> <http://a/>.
<urn:ex:s146> <urn:ex:p> <http://a/g>.
<urn:ex:s147> <urn:ex:p> <http://a/>.
<urn:ex:s148> <urn:ex:p> <http://a/>.
<urn:ex:s149> <urn:ex:p> <http://a/g>.
# RFC3986 abnormal examples with /.. in the base IRI
<urn:ex:s150> <urn:ex:p> <http://a/g>.
<urn:ex:s151> <urn:ex:p> <http://a/g>.
<urn:ex:s152> <urn:ex:p> <http://a/g>.
<urn:ex:s153> <urn:ex:p> <http://a/g>.
<urn:ex:s154> <urn:ex:p> <http://a/bb/g.>.
<urn:ex:s155> <urn:ex:p> <http://a/bb/.g>.
<urn:ex:s156> <urn:ex:p> <http://a/bb/g..>.
<urn:ex:s157> <urn:ex:p> <http://a/bb/..g>.
<urn:ex:s158> <urn:ex:p> <http://a/g>.
<urn:ex:s159> <urn:ex:p> <http://a/bb/g/>.
<urn:ex:s160> <urn:ex:p> <http://a/bb/g/h>.
<urn:ex:s161> <urn:ex:p> <http://a/bb/h>.
<urn:ex:s162> <urn:ex:p> <http://a/bb/g;x=1/y>.
<urn:ex:s163> <urn:ex:p> <http://a/bb/y>.
<urn:ex:s164> <urn:ex:p> <http://a/bb/g?y/./x>.
<urn:ex:s165> <urn:ex:p> <http://a/bb/g?y/../x>.
<urn:ex:s166> <urn:ex:p> <http://a/bb/g#s/./x>.
<urn:ex:s167> <urn:ex:p> <http://a/bb/g#s/../x>.
<urn:ex:s168> <urn:ex:p> <http:g>.
# RFC3986 normal examples with trailing /. in the base IRI
<urn:ex:s169> <urn:ex:p> <g:h>.
<urn:ex:s170> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s171> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s172> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s173> <urn:ex:p> <http://a/g>.
<urn:ex:s174> <urn:ex:p> <http://g>.
<urn:ex:s175> <urn:ex:p> <http://a/bb/ccc/.?y>.
<urn:ex:s176> <urn:ex:p> <http://a/bb/ccc/g?y>.
<urn:ex:s177> <urn:ex:p> <http://a/bb/ccc/.#s>.
<urn:ex:s178> <urn:ex:p> <http://a/bb/ccc/g#s>.
<urn:ex:s179> <urn:ex:p> <http://a/bb/ccc/g?y#s>.
<urn:ex:s180> <urn:ex:p> <http://a/bb/ccc/;x>.
<urn:ex:s181> <urn:ex:p> <http://a/bb/ccc/g;x>.
<urn:ex:s182> <urn:ex:p> <http://a/bb/ccc/g;x?y#s>.
<urn:ex:s183> <urn:ex:p> <http://a/bb/ccc/.>.
<urn:ex:s184> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s185> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s186> <urn:ex:p> <http://a/bb/>.
<urn:ex:s187> <urn:ex:p> <http://a/bb/>.
<urn:ex:s188> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s189> <urn:ex:p> <http://a/>.
<urn:ex:s190> <urn:ex:p> <http://a/>.
<urn:ex:s191> <urn:ex:p> <http://a/g>.
# RFC3986 abnormal examples with trailing /. in the base IRI
<urn:ex:s192> <urn:ex:p> <http://a/g>.
<urn:ex:s193> <urn:ex:p> <http://a/g>.
<urn:ex:s194> <urn:ex:p> <http://a/g>.
<urn:ex:s195> <urn:ex:p> <http://a/g>.
<urn:ex:s196> <urn:ex:p> <http://a/bb/ccc/g.>.
<urn:ex:s197> <urn:ex:p> <http://a/bb/ccc/.g>.
<urn:ex:s198> <urn:ex:p> <http://a/bb/ccc/g..>.
<urn:ex:s199> <urn:ex:p> <http://a/bb/ccc/..g>.
<urn:ex:s200> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s201> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s202> <urn:ex:p> <http://a/bb/ccc/g/h>.
<urn:ex:s203> <urn:ex:p> <http://a/bb/ccc/h>.
<urn:ex:s204> <urn:ex:p> <http://a/bb/ccc/g;x=1/y>.
<urn:ex:s205> <urn:ex:p> <http://a/bb/ccc/y>.
<urn:ex:s206> <urn:ex:p> <http://a/bb/ccc/g?y/./x>.
<urn:ex:s207> <urn:ex:p> <http://a/bb/ccc/g?y/../x>.
<urn:ex:s208> <urn:ex:p> <http://a/bb/ccc/g#s/./x>.
<urn:ex:s209> <urn:ex:p> <http://a/bb/ccc/g#s/../x>.
<urn:ex:s210> <urn:ex:p> <http:g>.
# RFC3986 normal examples with trailing /.. in the base IRI
<urn:ex:s211> <urn:ex:p> <g:h>.
<urn:ex:s212> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s213> <urn:ex:p> <http://a/bb/ccc/g>.
<urn:ex:s214> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s215> <urn:ex:p> <http://a/g>.
<urn:ex:s216> <urn:ex:p> <http://g>.
<urn:ex:s217> <urn:ex:p> <http://a/bb/ccc/..?y>.
<urn:ex:s218> <urn:ex:p> <http://a/bb/ccc/g?y>.
<urn:ex:s219> <urn:ex:p> <http://a/bb/ccc/..#s>.
<urn:ex:s220> <urn:ex:p> <http://a/bb/ccc/g#s>.
<urn:ex:s221> <urn:ex:p> <http://a/bb/ccc/g?y#s>.
<urn:ex:s222> <urn:ex:p> <http://a/bb/ccc/;x>.
<urn:ex:s223> <urn:ex:p> <http://a/bb/ccc/g;x>.
<urn:ex:s224> <urn:ex:p> <http://a/bb/ccc/g;x?y#s>.
<urn:ex:s225> <urn:ex:p> <http://a/bb/ccc/..>.
<urn:ex:s226> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s227> <urn:ex:p> <http://a/bb/ccc/>.
<urn:ex:s228> <urn:ex:p> <http://a/bb/>.
<urn:ex:s229> <urn:ex:p> <http://a/bb/>.
<urn:ex:s230> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s231> <urn:ex:p> <http://a/>.
<urn:ex:s232> <urn:ex:p> <http://a/>.
<urn:ex:s233> <urn:ex:p> <http://a/g>.
# RFC3986 abnormal examples with trailing /.. in the base IRI
<urn:ex:s234> <urn:ex:p> <http://a/g>.
<urn:ex:s235> <urn:ex:p> <http://a/g>.
<urn:ex:s236> <urn:ex:p> <http://a/g>.
<urn:ex:s237> <urn:ex:p> <http://a/g>.
<urn:ex:s238> <urn:ex:p> <http://a/bb/ccc/g.>.
<urn:ex:s239> <urn:ex:p> <http://a/bb/ccc/.g>.
<urn:ex:s240> <urn:ex:p> <http://a/bb/ccc/g..>.
<urn:ex:s241> <urn:ex:p> <http://a/bb/ccc/..g>.
<urn:ex:s242> <urn:ex:p> <http://a/bb/g>.
<urn:ex:s243> <urn:ex:p> <http://a/bb/ccc/g/>.
<urn:ex:s244> <urn:ex:p> <http://a/bb/ccc/g/h>.
<urn:ex:s245> <urn:ex:p> <http://a/bb/ccc/h>.
<urn:ex:s246> <urn:ex:p> <http://a/bb/ccc/g;x=1/y>.
<urn:ex:s247> <urn:ex:p> <http://a/bb/ccc/y>.
<urn:ex:s248> <urn:ex:p> <http://a/bb/ccc/g?y/./x>.
<urn:ex:s249> <urn:ex:p> <http://a/bb/ccc/g?y/../x>.
<urn:ex:s250> <urn:ex:p> <http://a/bb/ccc/g#s/./x>.
<urn:ex:s251> <urn:ex:p> <http://a/bb/ccc/g#s/../x>.
<urn:ex:s252> <urn:ex:p> <http:g>.
# RFC3986 normal examples with file path
<urn:ex:s253> <urn:ex:p> <g:h>.
<urn:ex:s254> <urn:ex:p> <file:///a/bb/ccc/g>.
<urn:ex:s255> <urn:ex:p> <file:///a/bb/ccc/g>.
<urn:ex:s256> <urn:ex:p> <file:///a/bb/ccc/g/>.
<urn:ex:s257> <urn:ex:p> <file:///g>.
<urn:ex:s258> <urn:ex:p> <file://g>.
<urn:ex:s259> <urn:ex:p> <file:///a/bb/ccc/d;p?y>.
<urn:ex:s260> <urn:ex:p> <file:///a/bb/ccc/g?y>.
<urn:ex:s261> <urn:ex:p> <file:///a/bb/ccc/d;p?q#s>.
<urn:ex:s262> <urn:ex:p> <file:///a/bb/ccc/g#s>.
<urn:ex:s263> <urn:ex:p> <file:///a/bb/ccc/g?y#s>.
<urn:ex:s264> <urn:ex:p> <file:///a/bb/ccc/;x>.
<urn:ex:s265> <urn:ex:p> <file:///a/bb/ccc/g;x>.
<urn:ex:s266> <urn:ex:p> <file:///a/bb/ccc/g;x?y#s>.
<urn:ex:s267> <urn:ex:p> <file:///a/bb/ccc/d;p?q>.
<urn:ex:s268> <urn:ex:p> <file:///a/bb/ccc/>.
<urn:ex:s269> <urn:ex:p> <file:///a/bb/ccc/>.
<urn:ex:s270> <urn:ex:p> <file:///a/bb/>.
<urn:ex:s271> <urn:ex:p> <file:///a/bb/>.
<urn:ex:s272> <urn:ex:p> <file:///a/bb/g>.
<urn:ex:s273> <urn:ex:p> <file:///a/>.
<urn:ex:s274> <urn:ex:p> <file:///a/>.
<urn:ex:s275> <urn:ex:p> <file:///a/g>.
# RFC3986 abnormal examples with file path
<urn:ex:s276> <urn:ex:p> <file:///g>.
<urn:ex:s277> <urn:ex:p> <file:///g>.
<urn:ex:s278> <urn:ex:p> <file:///g>.
<urn:ex:s279> <urn:ex:p> <file:///g>.
<urn:ex:s280> <urn:ex:p> <file:///a/bb/ccc/g.>.
<urn:ex:s281> <urn:ex:p> <file:///a/bb/ccc/.g>.
<urn:ex:s282> <urn:ex:p> <file:///a/bb/ccc/g..>.
<urn:ex:s283> <urn:ex:p> <file:///a/bb/ccc/..g>.
<urn:ex:s284> <urn:ex:p> <file:///a/bb/g>.
<urn:ex:s285> <urn:ex:p> <file:///a/bb/ccc/g/>.
<urn:ex:s286> <urn:ex:p> <file:///a/bb/ccc/g/h>.
<urn:ex:s287> <urn:ex:p> <file:///a/bb/ccc/h>.
<urn:ex:s288> <urn:ex:p> <file:///a/bb/ccc/g;x=1/y>.
<urn:ex:s289> <urn:ex:p> <file:///a/bb/ccc/y>.
<urn:ex:s290> <urn:ex:p> <file:///a/bb/ccc/g?y/./x>.
<urn:ex:s291> <urn:ex:p> <file:///a/bb/ccc/g?y/../x>.
<urn:ex:s292> <urn:ex:p> <file:///a/bb/ccc/g#s/./x>.
<urn:ex:s293> <urn:ex:p> <file:///a/bb/ccc/g#s/../x>.
<urn:ex:s294> <urn:ex:p> <http:g>.
# additional cases
<urn:ex:s295> <urn:ex:p> <http://abc/def/>.
<urn:ex:s296> <urn:ex:p> <http://abc/def/?a=b>.
<urn:ex:s297> <urn:ex:p> <http://abc/def/#a=b>.
<urn:ex:s298> <urn:ex:p> <http://abc/>.
<urn:ex:s299> <urn:ex:p> <http://abc/?a=b>.
<urn:ex:s300> <urn:ex:p> <http://abc/#a=b>.
<urn:ex:s301> <urn:ex:p> <http://ab//de//xyz>.
<urn:ex:s302> <urn:ex:p> <http://ab//de//xyz>.
<urn:ex:s303> <urn:ex:p> <http://ab//de/xyz>.
<urn:ex:s304> <urn:ex:p> <http://abc/d:f/xyz>.
<urn:ex:s305> <urn:ex:p> <http://abc/d:f/xyz>.
<urn:ex:s306> <urn:ex:p> <http://abc/xyz>.
<outer xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:urn="urn:">
<rdf:RDF xml:base="http://a/bb/ccc/d;p?q">
<!-- RFC3986 normal examples -->
<rdf:Description rdf:about="urn:ex:s001"><urn:ex:p rdf:resource="g:h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s002"><urn:ex:p rdf:resource="g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s003"><urn:ex:p rdf:resource="./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s004"><urn:ex:p rdf:resource="g/"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s005"><urn:ex:p rdf:resource="/g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s006"><urn:ex:p rdf:resource="//g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s007"><urn:ex:p rdf:resource="?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s008"><urn:ex:p rdf:resource="g?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s009"><urn:ex:p rdf:resource="#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s010"><urn:ex:p rdf:resource="g#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s011"><urn:ex:p rdf:resource="g?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s012"><urn:ex:p rdf:resource=";x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s013"><urn:ex:p rdf:resource="g;x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s014"><urn:ex:p rdf:resource="g;x?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s015"><urn:ex:p rdf:resource=""/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s016"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s017"><urn:ex:p rdf:resource="./"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s018"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s019"><urn:ex:p rdf:resource="../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s020"><urn:ex:p rdf:resource="../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s021"><urn:ex:p rdf:resource="../.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s022"><urn:ex:p rdf:resource="../../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s023"><urn:ex:p rdf:resource="../../g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/d;p?q">
<!-- RFC3986 abnormal examples -->
<rdf:Description rdf:about="urn:ex:s024"><urn:ex:p rdf:resource="../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s025"><urn:ex:p rdf:resource="../../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s026"><urn:ex:p rdf:resource="/./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s027"><urn:ex:p rdf:resource="/../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s028"><urn:ex:p rdf:resource="g."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s029"><urn:ex:p rdf:resource=".g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s030"><urn:ex:p rdf:resource="g.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s031"><urn:ex:p rdf:resource="..g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s032"><urn:ex:p rdf:resource="./../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s033"><urn:ex:p rdf:resource="./g/."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s034"><urn:ex:p rdf:resource="g/./h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s035"><urn:ex:p rdf:resource="g/../h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s036"><urn:ex:p rdf:resource="g;x=1/./y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s037"><urn:ex:p rdf:resource="g;x=1/../y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s038"><urn:ex:p rdf:resource="g?y/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s039"><urn:ex:p rdf:resource="g?y/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s040"><urn:ex:p rdf:resource="g#s/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s041"><urn:ex:p rdf:resource="g#s/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s042"><urn:ex:p rdf:resource="http:g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/d/">
<!-- RFC3986 normal examples with trailing slash in base IRI -->
<rdf:Description rdf:about="urn:ex:s043"><urn:ex:p rdf:resource="g:h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s044"><urn:ex:p rdf:resource="g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s045"><urn:ex:p rdf:resource="./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s046"><urn:ex:p rdf:resource="g/"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s047"><urn:ex:p rdf:resource="/g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s048"><urn:ex:p rdf:resource="//g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s049"><urn:ex:p rdf:resource="?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s050"><urn:ex:p rdf:resource="g?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s051"><urn:ex:p rdf:resource="#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s052"><urn:ex:p rdf:resource="g#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s053"><urn:ex:p rdf:resource="g?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s054"><urn:ex:p rdf:resource=";x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s055"><urn:ex:p rdf:resource="g;x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s056"><urn:ex:p rdf:resource="g;x?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s057"><urn:ex:p rdf:resource=""/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s058"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s059"><urn:ex:p rdf:resource="./"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s060"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s061"><urn:ex:p rdf:resource="../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s062"><urn:ex:p rdf:resource="../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s063"><urn:ex:p rdf:resource="../.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s064"><urn:ex:p rdf:resource="../../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s065"><urn:ex:p rdf:resource="../../g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/d/">
<!-- RFC3986 abnormal examples with trailing slash in base IRI -->
<rdf:Description rdf:about="urn:ex:s066"><urn:ex:p rdf:resource="../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s067"><urn:ex:p rdf:resource="../../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s068"><urn:ex:p rdf:resource="/./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s069"><urn:ex:p rdf:resource="/../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s070"><urn:ex:p rdf:resource="g."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s071"><urn:ex:p rdf:resource=".g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s072"><urn:ex:p rdf:resource="g.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s073"><urn:ex:p rdf:resource="..g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s074"><urn:ex:p rdf:resource="./../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s075"><urn:ex:p rdf:resource="./g/."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s076"><urn:ex:p rdf:resource="g/./h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s077"><urn:ex:p rdf:resource="g/../h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s078"><urn:ex:p rdf:resource="g;x=1/./y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s079"><urn:ex:p rdf:resource="g;x=1/../y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s080"><urn:ex:p rdf:resource="g?y/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s081"><urn:ex:p rdf:resource="g?y/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s082"><urn:ex:p rdf:resource="g#s/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s083"><urn:ex:p rdf:resource="g#s/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s084"><urn:ex:p rdf:resource="http:g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/./d;p?q">
<!-- RFC3986 normal examples0 with ./ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s085"><urn:ex:p rdf:resource="g:h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s086"><urn:ex:p rdf:resource="g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s087"><urn:ex:p rdf:resource="./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s088"><urn:ex:p rdf:resource="g/"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s089"><urn:ex:p rdf:resource="/g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s090"><urn:ex:p rdf:resource="//g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s091"><urn:ex:p rdf:resource="?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s092"><urn:ex:p rdf:resource="g?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s093"><urn:ex:p rdf:resource="#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s094"><urn:ex:p rdf:resource="g#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s095"><urn:ex:p rdf:resource="g?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s096"><urn:ex:p rdf:resource=";x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s097"><urn:ex:p rdf:resource="g;x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s098"><urn:ex:p rdf:resource="g;x?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s099"><urn:ex:p rdf:resource=""/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s100"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s101"><urn:ex:p rdf:resource="./"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s102"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s103"><urn:ex:p rdf:resource="../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s104"><urn:ex:p rdf:resource="../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s105"><urn:ex:p rdf:resource="../.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s106"><urn:ex:p rdf:resource="../../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s107"><urn:ex:p rdf:resource="../../g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/./d;p?q">
<!-- RFC3986 abnormal examples with ./ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s108"><urn:ex:p rdf:resource="../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s109"><urn:ex:p rdf:resource="../../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s110"><urn:ex:p rdf:resource="/./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s111"><urn:ex:p rdf:resource="/../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s112"><urn:ex:p rdf:resource="g."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s113"><urn:ex:p rdf:resource=".g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s114"><urn:ex:p rdf:resource="g.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s115"><urn:ex:p rdf:resource="..g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s116"><urn:ex:p rdf:resource="./../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s117"><urn:ex:p rdf:resource="./g/."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s118"><urn:ex:p rdf:resource="g/./h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s119"><urn:ex:p rdf:resource="g/../h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s120"><urn:ex:p rdf:resource="g;x=1/./y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s121"><urn:ex:p rdf:resource="g;x=1/../y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s122"><urn:ex:p rdf:resource="g?y/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s123"><urn:ex:p rdf:resource="g?y/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s124"><urn:ex:p rdf:resource="g#s/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s125"><urn:ex:p rdf:resource="g#s/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s126"><urn:ex:p rdf:resource="http:g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/../d;p?q">
<!-- RFC3986 normal examples with ../ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s127"><urn:ex:p rdf:resource="g:h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s128"><urn:ex:p rdf:resource="g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s129"><urn:ex:p rdf:resource="./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s130"><urn:ex:p rdf:resource="g/"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s131"><urn:ex:p rdf:resource="/g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s132"><urn:ex:p rdf:resource="//g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s133"><urn:ex:p rdf:resource="?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s134"><urn:ex:p rdf:resource="g?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s135"><urn:ex:p rdf:resource="#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s136"><urn:ex:p rdf:resource="g#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s137"><urn:ex:p rdf:resource="g?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s138"><urn:ex:p rdf:resource=";x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s139"><urn:ex:p rdf:resource="g;x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s140"><urn:ex:p rdf:resource="g;x?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s141"><urn:ex:p rdf:resource=""/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s142"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s143"><urn:ex:p rdf:resource="./"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s144"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s145"><urn:ex:p rdf:resource="../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s146"><urn:ex:p rdf:resource="../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s147"><urn:ex:p rdf:resource="../.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s148"><urn:ex:p rdf:resource="../../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s149"><urn:ex:p rdf:resource="../../g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/../d;p?q">
<!-- RFC3986 abnormal examples with ../ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s150"><urn:ex:p rdf:resource="../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s151"><urn:ex:p rdf:resource="../../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s152"><urn:ex:p rdf:resource="/./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s153"><urn:ex:p rdf:resource="/../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s154"><urn:ex:p rdf:resource="g."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s155"><urn:ex:p rdf:resource=".g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s156"><urn:ex:p rdf:resource="g.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s157"><urn:ex:p rdf:resource="..g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s158"><urn:ex:p rdf:resource="./../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s159"><urn:ex:p rdf:resource="./g/."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s160"><urn:ex:p rdf:resource="g/./h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s161"><urn:ex:p rdf:resource="g/../h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s162"><urn:ex:p rdf:resource="g;x=1/./y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s163"><urn:ex:p rdf:resource="g;x=1/../y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s164"><urn:ex:p rdf:resource="g?y/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s165"><urn:ex:p rdf:resource="g?y/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s166"><urn:ex:p rdf:resource="g#s/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s167"><urn:ex:p rdf:resource="g#s/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s168"><urn:ex:p rdf:resource="http:g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/.">
<!-- RFC3986 normal examples with trailing ./ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s169"><urn:ex:p rdf:resource="g:h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s170"><urn:ex:p rdf:resource="g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s171"><urn:ex:p rdf:resource="./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s172"><urn:ex:p rdf:resource="g/"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s173"><urn:ex:p rdf:resource="/g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s174"><urn:ex:p rdf:resource="//g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s175"><urn:ex:p rdf:resource="?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s176"><urn:ex:p rdf:resource="g?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s177"><urn:ex:p rdf:resource="#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s178"><urn:ex:p rdf:resource="g#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s179"><urn:ex:p rdf:resource="g?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s180"><urn:ex:p rdf:resource=";x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s181"><urn:ex:p rdf:resource="g;x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s182"><urn:ex:p rdf:resource="g;x?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s183"><urn:ex:p rdf:resource=""/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s184"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s185"><urn:ex:p rdf:resource="./"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s186"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s187"><urn:ex:p rdf:resource="../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s188"><urn:ex:p rdf:resource="../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s189"><urn:ex:p rdf:resource="../.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s190"><urn:ex:p rdf:resource="../../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s191"><urn:ex:p rdf:resource="../../g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/.">
<!-- RFC3986 abnormal examples with trailing ./ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s192"><urn:ex:p rdf:resource="../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s193"><urn:ex:p rdf:resource="../../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s194"><urn:ex:p rdf:resource="/./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s195"><urn:ex:p rdf:resource="/../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s196"><urn:ex:p rdf:resource="g."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s197"><urn:ex:p rdf:resource=".g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s198"><urn:ex:p rdf:resource="g.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s199"><urn:ex:p rdf:resource="..g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s200"><urn:ex:p rdf:resource="./../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s201"><urn:ex:p rdf:resource="./g/."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s202"><urn:ex:p rdf:resource="g/./h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s203"><urn:ex:p rdf:resource="g/../h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s204"><urn:ex:p rdf:resource="g;x=1/./y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s205"><urn:ex:p rdf:resource="g;x=1/../y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s206"><urn:ex:p rdf:resource="g?y/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s207"><urn:ex:p rdf:resource="g?y/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s208"><urn:ex:p rdf:resource="g#s/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s209"><urn:ex:p rdf:resource="g#s/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s210"><urn:ex:p rdf:resource="http:g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/..">
<!-- RFC3986 normal examples with trailing ../ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s211"><urn:ex:p rdf:resource="g:h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s212"><urn:ex:p rdf:resource="g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s213"><urn:ex:p rdf:resource="./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s214"><urn:ex:p rdf:resource="g/"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s215"><urn:ex:p rdf:resource="/g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s216"><urn:ex:p rdf:resource="//g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s217"><urn:ex:p rdf:resource="?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s218"><urn:ex:p rdf:resource="g?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s219"><urn:ex:p rdf:resource="#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s220"><urn:ex:p rdf:resource="g#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s221"><urn:ex:p rdf:resource="g?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s222"><urn:ex:p rdf:resource=";x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s223"><urn:ex:p rdf:resource="g;x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s224"><urn:ex:p rdf:resource="g;x?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s225"><urn:ex:p rdf:resource=""/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s226"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s227"><urn:ex:p rdf:resource="./"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s228"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s229"><urn:ex:p rdf:resource="../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s230"><urn:ex:p rdf:resource="../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s231"><urn:ex:p rdf:resource="../.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s232"><urn:ex:p rdf:resource="../../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s233"><urn:ex:p rdf:resource="../../g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://a/bb/ccc/..">
<!-- RFC3986 abnormal examples with trailing ../ in the base IRI -->
<rdf:Description rdf:about="urn:ex:s234"><urn:ex:p rdf:resource="../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s235"><urn:ex:p rdf:resource="../../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s236"><urn:ex:p rdf:resource="/./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s237"><urn:ex:p rdf:resource="/../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s238"><urn:ex:p rdf:resource="g."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s239"><urn:ex:p rdf:resource=".g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s240"><urn:ex:p rdf:resource="g.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s241"><urn:ex:p rdf:resource="..g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s242"><urn:ex:p rdf:resource="./../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s243"><urn:ex:p rdf:resource="./g/."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s244"><urn:ex:p rdf:resource="g/./h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s245"><urn:ex:p rdf:resource="g/../h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s246"><urn:ex:p rdf:resource="g;x=1/./y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s247"><urn:ex:p rdf:resource="g;x=1/../y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s248"><urn:ex:p rdf:resource="g?y/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s249"><urn:ex:p rdf:resource="g?y/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s250"><urn:ex:p rdf:resource="g#s/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s251"><urn:ex:p rdf:resource="g#s/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s252"><urn:ex:p rdf:resource="http:g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="file:///a/bb/ccc/d;p?q">
<!-- RFC3986 normal examples with file path -->
<rdf:Description rdf:about="urn:ex:s253"><urn:ex:p rdf:resource="g:h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s254"><urn:ex:p rdf:resource="g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s255"><urn:ex:p rdf:resource="./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s256"><urn:ex:p rdf:resource="g/"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s257"><urn:ex:p rdf:resource="/g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s258"><urn:ex:p rdf:resource="//g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s259"><urn:ex:p rdf:resource="?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s260"><urn:ex:p rdf:resource="g?y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s261"><urn:ex:p rdf:resource="#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s262"><urn:ex:p rdf:resource="g#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s263"><urn:ex:p rdf:resource="g?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s264"><urn:ex:p rdf:resource=";x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s265"><urn:ex:p rdf:resource="g;x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s266"><urn:ex:p rdf:resource="g;x?y#s"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s267"><urn:ex:p rdf:resource=""/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s268"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s269"><urn:ex:p rdf:resource="./"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s270"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s271"><urn:ex:p rdf:resource="../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s272"><urn:ex:p rdf:resource="../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s273"><urn:ex:p rdf:resource="../.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s274"><urn:ex:p rdf:resource="../../"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s275"><urn:ex:p rdf:resource="../../g"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="file:///a/bb/ccc/d;p?q">
<!-- RFC3986 abnormal examples with file path -->
<rdf:Description rdf:about="urn:ex:s276"><urn:ex:p rdf:resource="../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s277"><urn:ex:p rdf:resource="../../../../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s278"><urn:ex:p rdf:resource="/./g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s279"><urn:ex:p rdf:resource="/../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s280"><urn:ex:p rdf:resource="g."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s281"><urn:ex:p rdf:resource=".g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s282"><urn:ex:p rdf:resource="g.."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s283"><urn:ex:p rdf:resource="..g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s284"><urn:ex:p rdf:resource="./../g"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s285"><urn:ex:p rdf:resource="./g/."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s286"><urn:ex:p rdf:resource="g/./h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s287"><urn:ex:p rdf:resource="g/../h"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s288"><urn:ex:p rdf:resource="g;x=1/./y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s289"><urn:ex:p rdf:resource="g;x=1/../y"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s290"><urn:ex:p rdf:resource="g?y/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s291"><urn:ex:p rdf:resource="g?y/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s292"><urn:ex:p rdf:resource="g#s/./x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s293"><urn:ex:p rdf:resource="g#s/../x"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s294"><urn:ex:p rdf:resource="http:g"/></rdf:Description>
</rdf:RDF>
<!-- additional cases -->
<rdf:RDF xml:base="http://abc/def/ghi">
<rdf:Description rdf:about="urn:ex:s295"><urn:ex:p rdf:resource="."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s296"><urn:ex:p rdf:resource=".?a=b"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s297"><urn:ex:p rdf:resource=".#a=b"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s298"><urn:ex:p rdf:resource=".."/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s299"><urn:ex:p rdf:resource="..?a=b"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s300"><urn:ex:p rdf:resource="..#a=b"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://ab//de//ghi">
<rdf:Description rdf:about="urn:ex:s301"><urn:ex:p rdf:resource="xyz"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s302"><urn:ex:p rdf:resource="./xyz"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s303"><urn:ex:p rdf:resource="../xyz"/></rdf:Description>
</rdf:RDF>
<rdf:RDF xml:base="http://abc/d:f/ghi">
<rdf:Description rdf:about="urn:ex:s304"><urn:ex:p rdf:resource="xyz"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s305"><urn:ex:p rdf:resource="./xyz"/></rdf:Description>
<rdf:Description rdf:about="urn:ex:s306"><urn:ex:p rdf:resource="../xyz"/></rdf:Description>
</rdf:RDF>
</outer>
# RFC3986 normal examples
@base <http://a/bb/ccc/d;p?q>.
<urn:ex:s001> <urn:ex:p> <g:h>.
<urn:ex:s002> <urn:ex:p> <g>.
<urn:ex:s003> <urn:ex:p> <./g>.
<urn:ex:s004> <urn:ex:p> <g/>.
<urn:ex:s005> <urn:ex:p> </g>.
<urn:ex:s006> <urn:ex:p> <//g>.
<urn:ex:s007> <urn:ex:p> <?y>.
<urn:ex:s008> <urn:ex:p> <g?y>.
<urn:ex:s009> <urn:ex:p> <#s>.
<urn:ex:s010> <urn:ex:p> <g#s>.
<urn:ex:s011> <urn:ex:p> <g?y#s>.
<urn:ex:s012> <urn:ex:p> <;x>.
<urn:ex:s013> <urn:ex:p> <g;x>.
<urn:ex:s014> <urn:ex:p> <g;x?y#s>.
<urn:ex:s015> <urn:ex:p> <>.
<urn:ex:s016> <urn:ex:p> <.>.
<urn:ex:s017> <urn:ex:p> <./>.
<urn:ex:s018> <urn:ex:p> <..>.
<urn:ex:s019> <urn:ex:p> <../>.
<urn:ex:s020> <urn:ex:p> <../g>.
<urn:ex:s021> <urn:ex:p> <../..>.
<urn:ex:s022> <urn:ex:p> <../../>.
<urn:ex:s023> <urn:ex:p> <../../g>.
# RFC3986 abnormal examples
@base <http://a/bb/ccc/d;p?q>.
<urn:ex:s024> <urn:ex:p> <../../../g>.
<urn:ex:s025> <urn:ex:p> <../../../../g>.
<urn:ex:s026> <urn:ex:p> </./g>.
<urn:ex:s027> <urn:ex:p> </../g>.
<urn:ex:s028> <urn:ex:p> <g.>.
<urn:ex:s029> <urn:ex:p> <.g>.
<urn:ex:s030> <urn:ex:p> <g..>.
<urn:ex:s031> <urn:ex:p> <..g>.
<urn:ex:s032> <urn:ex:p> <./../g>.
<urn:ex:s033> <urn:ex:p> <./g/.>.
<urn:ex:s034> <urn:ex:p> <g/./h>.
<urn:ex:s035> <urn:ex:p> <g/../h>.
<urn:ex:s036> <urn:ex:p> <g;x=1/./y>.
<urn:ex:s037> <urn:ex:p> <g;x=1/../y>.
<urn:ex:s038> <urn:ex:p> <g?y/./x>.
<urn:ex:s039> <urn:ex:p> <g?y/../x>.
<urn:ex:s040> <urn:ex:p> <g#s/./x>.
<urn:ex:s041> <urn:ex:p> <g#s/../x>.
<urn:ex:s042> <urn:ex:p> <http:g>.
# RFC3986 normal examples with trailing slash in base IRI
@base <http://a/bb/ccc/d/>.
<urn:ex:s043> <urn:ex:p> <g:h>.
<urn:ex:s044> <urn:ex:p> <g>.
<urn:ex:s045> <urn:ex:p> <./g>.
<urn:ex:s046> <urn:ex:p> <g/>.
<urn:ex:s047> <urn:ex:p> </g>.
<urn:ex:s048> <urn:ex:p> <//g>.
<urn:ex:s049> <urn:ex:p> <?y>.
<urn:ex:s050> <urn:ex:p> <g?y>.
<urn:ex:s051> <urn:ex:p> <#s>.
<urn:ex:s052> <urn:ex:p> <g#s>.
<urn:ex:s053> <urn:ex:p> <g?y#s>.
<urn:ex:s054> <urn:ex:p> <;x>.
<urn:ex:s055> <urn:ex:p> <g;x>.
<urn:ex:s056> <urn:ex:p> <g;x?y#s>.
<urn:ex:s057> <urn:ex:p> <>.
<urn:ex:s058> <urn:ex:p> <.>.
<urn:ex:s059> <urn:ex:p> <./>.
<urn:ex:s060> <urn:ex:p> <..>.
<urn:ex:s061> <urn:ex:p> <../>.
<urn:ex:s062> <urn:ex:p> <../g>.
<urn:ex:s063> <urn:ex:p> <../..>.
<urn:ex:s064> <urn:ex:p> <../../>.
<urn:ex:s065> <urn:ex:p> <../../g>.
# RFC3986 abnormal examples with trailing slash in base IRI
@base <http://a/bb/ccc/d/>.
<urn:ex:s066> <urn:ex:p> <../../../g>.
<urn:ex:s067> <urn:ex:p> <../../../../g>.
<urn:ex:s068> <urn:ex:p> </./g>.
<urn:ex:s069> <urn:ex:p> </../g>.
<urn:ex:s070> <urn:ex:p> <g.>.
<urn:ex:s071> <urn:ex:p> <.g>.
<urn:ex:s072> <urn:ex:p> <g..>.
<urn:ex:s073> <urn:ex:p> <..g>.
<urn:ex:s074> <urn:ex:p> <./../g>.
<urn:ex:s075> <urn:ex:p> <./g/.>.
<urn:ex:s076> <urn:ex:p> <g/./h>.
<urn:ex:s077> <urn:ex:p> <g/../h>.
<urn:ex:s078> <urn:ex:p> <g;x=1/./y>.
<urn:ex:s079> <urn:ex:p> <g;x=1/../y>.
<urn:ex:s080> <urn:ex:p> <g?y/./x>.
<urn:ex:s081> <urn:ex:p> <g?y/../x>.
<urn:ex:s082> <urn:ex:p> <g#s/./x>.
<urn:ex:s083> <urn:ex:p> <g#s/../x>.
<urn:ex:s084> <urn:ex:p> <http:g>.
# RFC3986 normal examples with /. in the base IRI
@base <http://a/bb/ccc/./d;p?q>.
<urn:ex:s085> <urn:ex:p> <g:h>.
<urn:ex:s086> <urn:ex:p> <g>.
<urn:ex:s087> <urn:ex:p> <./g>.
<urn:ex:s088> <urn:ex:p> <g/>.
<urn:ex:s089> <urn:ex:p> </g>.
<urn:ex:s090> <urn:ex:p> <//g>.
<urn:ex:s091> <urn:ex:p> <?y>.
<urn:ex:s092> <urn:ex:p> <g?y>.
<urn:ex:s093> <urn:ex:p> <#s>.
<urn:ex:s094> <urn:ex:p> <g#s>.
<urn:ex:s095> <urn:ex:p> <g?y#s>.
<urn:ex:s096> <urn:ex:p> <;x>.
<urn:ex:s097> <urn:ex:p> <g;x>.
<urn:ex:s098> <urn:ex:p> <g;x?y#s>.
<urn:ex:s099> <urn:ex:p> <>.
<urn:ex:s100> <urn:ex:p> <.>.
<urn:ex:s101> <urn:ex:p> <./>.
<urn:ex:s102> <urn:ex:p> <..>.
<urn:ex:s103> <urn:ex:p> <../>.
<urn:ex:s104> <urn:ex:p> <../g>.
<urn:ex:s105> <urn:ex:p> <../..>.
<urn:ex:s106> <urn:ex:p> <../../>.
<urn:ex:s107> <urn:ex:p> <../../g>.
# RFC3986 abnormal examples with /. in the base IRI
@base <http://a/bb/ccc/./d;p?q>.
<urn:ex:s108> <urn:ex:p> <../../../g>.
<urn:ex:s109> <urn:ex:p> <../../../../g>.
<urn:ex:s110> <urn:ex:p> </./g>.
<urn:ex:s111> <urn:ex:p> </../g>.
<urn:ex:s112> <urn:ex:p> <g.>.
<urn:ex:s113> <urn:ex:p> <.g>.
<urn:ex:s114> <urn:ex:p> <g..>.
<urn:ex:s115> <urn:ex:p> <..g>.
<urn:ex:s116> <urn:ex:p> <./../g>.
<urn:ex:s117> <urn:ex:p> <./g/.>.
<urn:ex:s118> <urn:ex:p> <g/./h>.
<urn:ex:s119> <urn:ex:p> <g/../h>.
<urn:ex:s120> <urn:ex:p> <g;x=1/./y>.
<urn:ex:s121> <urn:ex:p> <g;x=1/../y>.
<urn:ex:s122> <urn:ex:p> <g?y/./x>.
<urn:ex:s123> <urn:ex:p> <g?y/../x>.
<urn:ex:s124> <urn:ex:p> <g#s/./x>.
<urn:ex:s125> <urn:ex:p> <g#s/../x>.
<urn:ex:s126> <urn:ex:p> <http:g>.
# RFC3986 normal examples with /.. in the base IRI
@base <http://a/bb/ccc/../d;p?q>.
<urn:ex:s127> <urn:ex:p> <g:h>.
<urn:ex:s128> <urn:ex:p> <g>.
<urn:ex:s129> <urn:ex:p> <./g>.
<urn:ex:s130> <urn:ex:p> <g/>.
<urn:ex:s131> <urn:ex:p> </g>.
<urn:ex:s132> <urn:ex:p> <//g>.
<urn:ex:s133> <urn:ex:p> <?y>.
<urn:ex:s134> <urn:ex:p> <g?y>.
<urn:ex:s135> <urn:ex:p> <#s>.
<urn:ex:s136> <urn:ex:p> <g#s>.
<urn:ex:s137> <urn:ex:p> <g?y#s>.
<urn:ex:s138> <urn:ex:p> <;x>.
<urn:ex:s139> <urn:ex:p> <g;x>.
<urn:ex:s140> <urn:ex:p> <g;x?y#s>.
<urn:ex:s141> <urn:ex:p> <>.
<urn:ex:s142> <urn:ex:p> <.>.
<urn:ex:s143> <urn:ex:p> <./>.
<urn:ex:s144> <urn:ex:p> <..>.
<urn:ex:s145> <urn:ex:p> <../>.
<urn:ex:s146> <urn:ex:p> <../g>.
<urn:ex:s147> <urn:ex:p> <../..>.
<urn:ex:s148> <urn:ex:p> <../../>.
<urn:ex:s149> <urn:ex:p> <../../g>.
# RFC3986 abnormal examples with /.. in the base IRI
@base <http://a/bb/ccc/../d;p?q>.
<urn:ex:s150> <urn:ex:p> <../../../g>.
<urn:ex:s151> <urn:ex:p> <../../../../g>.
<urn:ex:s152> <urn:ex:p> </./g>.
<urn:ex:s153> <urn:ex:p> </../g>.
<urn:ex:s154> <urn:ex:p> <g.>.
<urn:ex:s155> <urn:ex:p> <.g>.
<urn:ex:s156> <urn:ex:p> <g..>.
<urn:ex:s157> <urn:ex:p> <..g>.
<urn:ex:s158> <urn:ex:p> <./../g>.
<urn:ex:s159> <urn:ex:p> <./g/.>.
<urn:ex:s160> <urn:ex:p> <g/./h>.
<urn:ex:s161> <urn:ex:p> <g/../h>.
<urn:ex:s162> <urn:ex:p> <g;x=1/./y>.
<urn:ex:s163> <urn:ex:p> <g;x=1/../y>.
<urn:ex:s164> <urn:ex:p> <g?y/./x>.
<urn:ex:s165> <urn:ex:p> <g?y/../x>.
<urn:ex:s166> <urn:ex:p> <g#s/./x>.
<urn:ex:s167> <urn:ex:p> <g#s/../x>.
<urn:ex:s168> <urn:ex:p> <http:g>.
# RFC3986 normal examples with trailing /. in the base IRI
@base <http://a/bb/ccc/.>.
<urn:ex:s169> <urn:ex:p> <g:h>.
<urn:ex:s170> <urn:ex:p> <g>.
<urn:ex:s171> <urn:ex:p> <./g>.
<urn:ex:s172> <urn:ex:p> <g/>.
<urn:ex:s173> <urn:ex:p> </g>.
<urn:ex:s174> <urn:ex:p> <//g>.
<urn:ex:s175> <urn:ex:p> <?y>.
<urn:ex:s176> <urn:ex:p> <g?y>.
<urn:ex:s177> <urn:ex:p> <#s>.
<urn:ex:s178> <urn:ex:p> <g#s>.
<urn:ex:s179> <urn:ex:p> <g?y#s>.
<urn:ex:s180> <urn:ex:p> <;x>.
<urn:ex:s181> <urn:ex:p> <g;x>.
<urn:ex:s182> <urn:ex:p> <g;x?y#s>.
<urn:ex:s183> <urn:ex:p> <>.
<urn:ex:s184> <urn:ex:p> <.>.
<urn:ex:s185> <urn:ex:p> <./>.
<urn:ex:s186> <urn:ex:p> <..>.
<urn:ex:s187> <urn:ex:p> <../>.
<urn:ex:s188> <urn:ex:p> <../g>.
<urn:ex:s189> <urn:ex:p> <../..>.
<urn:ex:s190> <urn:ex:p> <../../>.
<urn:ex:s191> <urn:ex:p> <../../g>.
# RFC3986 abnormal examples with trailing /. in the base IRI
@base <http://a/bb/ccc/.>.
<urn:ex:s192> <urn:ex:p> <../../../g>.
<urn:ex:s193> <urn:ex:p> <../../../../g>.
<urn:ex:s194> <urn:ex:p> </./g>.
<urn:ex:s195> <urn:ex:p> </../g>.
<urn:ex:s196> <urn:ex:p> <g.>.
<urn:ex:s197> <urn:ex:p> <.g>.
<urn:ex:s198> <urn:ex:p> <g..>.
<urn:ex:s199> <urn:ex:p> <..g>.
<urn:ex:s200> <urn:ex:p> <./../g>.
<urn:ex:s201> <urn:ex:p> <./g/.>.
<urn:ex:s202> <urn:ex:p> <g/./h>.
<urn:ex:s203> <urn:ex:p> <g/../h>.
<urn:ex:s204> <urn:ex:p> <g;x=1/./y>.
<urn:ex:s205> <urn:ex:p> <g;x=1/../y>.
<urn:ex:s206> <urn:ex:p> <g?y/./x>.
<urn:ex:s207> <urn:ex:p> <g?y/../x>.
<urn:ex:s208> <urn:ex:p> <g#s/./x>.
<urn:ex:s209> <urn:ex:p> <g#s/../x>.
<urn:ex:s210> <urn:ex:p> <http:g>.
# RFC3986 normal examples with trailing /.. in the base IRI
@base <http://a/bb/ccc/..>.
<urn:ex:s211> <urn:ex:p> <g:h>.
<urn:ex:s212> <urn:ex:p> <g>.
<urn:ex:s213> <urn:ex:p> <./g>.
<urn:ex:s214> <urn:ex:p> <g/>.
<urn:ex:s215> <urn:ex:p> </g>.
<urn:ex:s216> <urn:ex:p> <//g>.
<urn:ex:s217> <urn:ex:p> <?y>.
<urn:ex:s218> <urn:ex:p> <g?y>.
<urn:ex:s219> <urn:ex:p> <#s>.
<urn:ex:s220> <urn:ex:p> <g#s>.
<urn:ex:s221> <urn:ex:p> <g?y#s>.
<urn:ex:s222> <urn:ex:p> <;x>.
<urn:ex:s223> <urn:ex:p> <g;x>.
<urn:ex:s224> <urn:ex:p> <g;x?y#s>.
<urn:ex:s225> <urn:ex:p> <>.
<urn:ex:s226> <urn:ex:p> <.>.
<urn:ex:s227> <urn:ex:p> <./>.
<urn:ex:s228> <urn:ex:p> <..>.
<urn:ex:s229> <urn:ex:p> <../>.
<urn:ex:s230> <urn:ex:p> <../g>.
<urn:ex:s231> <urn:ex:p> <../..>.
<urn:ex:s232> <urn:ex:p> <../../>.
<urn:ex:s233> <urn:ex:p> <../../g>.
# RFC3986 abnormal examples with trailing /.. in the base IRI
@base <http://a/bb/ccc/..>.
<urn:ex:s234> <urn:ex:p> <../../../g>.
<urn:ex:s235> <urn:ex:p> <../../../../g>.
<urn:ex:s236> <urn:ex:p> </./g>.
<urn:ex:s237> <urn:ex:p> </../g>.
<urn:ex:s238> <urn:ex:p> <g.>.
<urn:ex:s239> <urn:ex:p> <.g>.
<urn:ex:s240> <urn:ex:p> <g..>.
<urn:ex:s241> <urn:ex:p> <..g>.
<urn:ex:s242> <urn:ex:p> <./../g>.
<urn:ex:s243> <urn:ex:p> <./g/.>.
<urn:ex:s244> <urn:ex:p> <g/./h>.
<urn:ex:s245> <urn:ex:p> <g/../h>.
<urn:ex:s246> <urn:ex:p> <g;x=1/./y>.
<urn:ex:s247> <urn:ex:p> <g;x=1/../y>.
<urn:ex:s248> <urn:ex:p> <g?y/./x>.
<urn:ex:s249> <urn:ex:p> <g?y/../x>.
<urn:ex:s250> <urn:ex:p> <g#s/./x>.
<urn:ex:s251> <urn:ex:p> <g#s/../x>.
<urn:ex:s252> <urn:ex:p> <http:g>.
# RFC3986 normal examples with file path
@base <file:///a/bb/ccc/d;p?q>.
<urn:ex:s253> <urn:ex:p> <g:h>.
<urn:ex:s254> <urn:ex:p> <g>.
<urn:ex:s255> <urn:ex:p> <./g>.
<urn:ex:s256> <urn:ex:p> <g/>.
<urn:ex:s257> <urn:ex:p> </g>.
<urn:ex:s258> <urn:ex:p> <//g>.
<urn:ex:s259> <urn:ex:p> <?y>.
<urn:ex:s260> <urn:ex:p> <g?y>.
<urn:ex:s261> <urn:ex:p> <#s>.
<urn:ex:s262> <urn:ex:p> <g#s>.
<urn:ex:s263> <urn:ex:p> <g?y#s>.
<urn:ex:s264> <urn:ex:p> <;x>.
<urn:ex:s265> <urn:ex:p> <g;x>.
<urn:ex:s266> <urn:ex:p> <g;x?y#s>.
<urn:ex:s267> <urn:ex:p> <>.
<urn:ex:s268> <urn:ex:p> <.>.
<urn:ex:s269> <urn:ex:p> <./>.
<urn:ex:s270> <urn:ex:p> <..>.
<urn:ex:s271> <urn:ex:p> <../>.
<urn:ex:s272> <urn:ex:p> <../g>.
<urn:ex:s273> <urn:ex:p> <../..>.
<urn:ex:s274> <urn:ex:p> <../../>.
<urn:ex:s275> <urn:ex:p> <../../g>.
# RFC3986 abnormal examples with file path
@base <file:///a/bb/ccc/d;p?q>.
<urn:ex:s276> <urn:ex:p> <../../../g>.
<urn:ex:s277> <urn:ex:p> <../../../../g>.
<urn:ex:s278> <urn:ex:p> </./g>.
<urn:ex:s279> <urn:ex:p> </../g>.
<urn:ex:s280> <urn:ex:p> <g.>.
<urn:ex:s281> <urn:ex:p> <.g>.
<urn:ex:s282> <urn:ex:p> <g..>.
<urn:ex:s283> <urn:ex:p> <..g>.
<urn:ex:s284> <urn:ex:p> <./../g>.
<urn:ex:s285> <urn:ex:p> <./g/.>.
<urn:ex:s286> <urn:ex:p> <g/./h>.
<urn:ex:s287> <urn:ex:p> <g/../h>.
<urn:ex:s288> <urn:ex:p> <g;x=1/./y>.
<urn:ex:s289> <urn:ex:p> <g;x=1/../y>.
<urn:ex:s290> <urn:ex:p> <g?y/./x>.
<urn:ex:s291> <urn:ex:p> <g?y/../x>.
<urn:ex:s292> <urn:ex:p> <g#s/./x>.
<urn:ex:s293> <urn:ex:p> <g#s/../x>.
<urn:ex:s294> <urn:ex:p> <http:g>.
# additional cases
@base <http://abc/def/ghi>.
<urn:ex:s295> <urn:ex:p> <.>.
<urn:ex:s296> <urn:ex:p> <.?a=b>.
<urn:ex:s297> <urn:ex:p> <.#a=b>.
<urn:ex:s298> <urn:ex:p> <..>.
<urn:ex:s299> <urn:ex:p> <..?a=b>.
<urn:ex:s300> <urn:ex:p> <..#a=b>.
@base <http://ab//de//ghi>.
<urn:ex:s301> <urn:ex:p> <xyz>.
<urn:ex:s302> <urn:ex:p> <./xyz>.
<urn:ex:s303> <urn:ex:p> <../xyz>.
@base <http://abc/d:f/ghi>.
<urn:ex:s304> <urn:ex:p> <xyz>.
<urn:ex:s305> <urn:ex:p> <./xyz>.
<urn:ex:s306> <urn:ex:p> <../xyz>.
<!DOCTYPE xhtml>
<html><body>
<div xml:base="http://a/bb/ccc/d;p?q">
<!-- RFC3986 normal examples -->
<link about="urn:ex:s001" property="urn:ex:p" href="g:h"/>
<link about="urn:ex:s002" property="urn:ex:p" href="g"/>
<link about="urn:ex:s003" property="urn:ex:p" href="./g"/>
<link about="urn:ex:s004" property="urn:ex:p" href="g/"/>
<link about="urn:ex:s005" property="urn:ex:p" href="/g"/>
<link about="urn:ex:s006" property="urn:ex:p" href="//g"/>
<link about="urn:ex:s007" property="urn:ex:p" href="?y"/>
<link about="urn:ex:s008" property="urn:ex:p" href="g?y"/>
<link about="urn:ex:s009" property="urn:ex:p" href="#s"/>
<link about="urn:ex:s010" property="urn:ex:p" href="g#s"/>
<link about="urn:ex:s011" property="urn:ex:p" href="g?y#s"/>
<link about="urn:ex:s012" property="urn:ex:p" href=";x"/>
<link about="urn:ex:s013" property="urn:ex:p" href="g;x"/>
<link about="urn:ex:s014" property="urn:ex:p" href="g;x?y#s"/>
<link about="urn:ex:s015" property="urn:ex:p" href=""/>
<link about="urn:ex:s016" property="urn:ex:p" href="."/>
<link about="urn:ex:s017" property="urn:ex:p" href="./"/>
<link about="urn:ex:s018" property="urn:ex:p" href=".."/>
<link about="urn:ex:s019" property="urn:ex:p" href="../"/>
<link about="urn:ex:s020" property="urn:ex:p" href="../g"/>
<link about="urn:ex:s021" property="urn:ex:p" href="../.."/>
<link about="urn:ex:s022" property="urn:ex:p" href="../../"/>
<link about="urn:ex:s023" property="urn:ex:p" href="../../g"/>
</div>
<div xml:base="http://a/bb/ccc/d;p?q">
<!-- RFC3986 abnormal examples -->
<link about="urn:ex:s024" property="urn:ex:p" href="../../../g"/>
<link about="urn:ex:s025" property="urn:ex:p" href="../../../../g"/>
<link about="urn:ex:s026" property="urn:ex:p" href="/./g"/>
<link about="urn:ex:s027" property="urn:ex:p" href="/../g"/>
<link about="urn:ex:s028" property="urn:ex:p" href="g."/>
<link about="urn:ex:s029" property="urn:ex:p" href=".g"/>
<link about="urn:ex:s030" property="urn:ex:p" href="g.."/>
<link about="urn:ex:s031" property="urn:ex:p" href="..g"/>
<link about="urn:ex:s032" property="urn:ex:p" href="./../g"/>
<link about="urn:ex:s033" property="urn:ex:p" href="./g/."/>
<link about="urn:ex:s034" property="urn:ex:p" href="g/./h"/>
<link about="urn:ex:s035" property="urn:ex:p" href="g/../h"/>
<link about="urn:ex:s036" property="urn:ex:p" href="g;x=1/./y"/>
<link about="urn:ex:s037" property="urn:ex:p" href="g;x=1/../y"/>
<link about="urn:ex:s038" property="urn:ex:p" href="g?y/./x"/>
<link about="urn:ex:s039" property="urn:ex:p" href="g?y/../x"/>
<link about="urn:ex:s040" property="urn:ex:p" href="g#s/./x"/>
<link about="urn:ex:s041" property="urn:ex:p" href="g#s/../x"/>
<link about="urn:ex:s042" property="urn:ex:p" href="http:g"/>
</div>
<div xml:base="http://a/bb/ccc/d/">
<!-- RFC3986 normal examples with trailing slash in base IRI -->
<link about="urn:ex:s043" property="urn:ex:p" href="g:h"/>
<link about="urn:ex:s044" property="urn:ex:p" href="g"/>
<link about="urn:ex:s045" property="urn:ex:p" href="./g"/>
<link about="urn:ex:s046" property="urn:ex:p" href="g/"/>
<link about="urn:ex:s047" property="urn:ex:p" href="/g"/>
<link about="urn:ex:s048" property="urn:ex:p" href="//g"/>
<link about="urn:ex:s049" property="urn:ex:p" href="?y"/>
<link about="urn:ex:s050" property="urn:ex:p" href="g?y"/>
<link about="urn:ex:s051" property="urn:ex:p" href="#s"/>
<link about="urn:ex:s052" property="urn:ex:p" href="g#s"/>
<link about="urn:ex:s053" property="urn:ex:p" href="g?y#s"/>
<link about="urn:ex:s054" property="urn:ex:p" href=";x"/>
<link about="urn:ex:s055" property="urn:ex:p" href="g;x"/>
<link about="urn:ex:s056" property="urn:ex:p" href="g;x?y#s"/>
<link about="urn:ex:s057" property="urn:ex:p" href=""/>
<link about="urn:ex:s058" property="urn:ex:p" href="."/>
<link about="urn:ex:s059" property="urn:ex:p" href="./"/>
<link about="urn:ex:s060" property="urn:ex:p" href=".."/>
<link about="urn:ex:s061" property="urn:ex:p" href="../"/>
<link about="urn:ex:s062" property="urn:ex:p" href="../g"/>
<link about="urn:ex:s063" property="urn:ex:p" href="../.."/>
<link about="urn:ex:s064" property="urn:ex:p" href="../../"/>
<link about="urn:ex:s065" property="urn:ex:p" href="../../g"/>
</div>
<div xml:base="http://a/bb/ccc/d/">
<!-- RFC3986 abnormal examples with trailing slash in base IRI -->
<link about="urn:ex:s066" property="urn:ex:p" href="../../../g"/>
<link about="urn:ex:s067" property="urn:ex:p" href="../../../../g"/>
<link about="urn:ex:s068" property="urn:ex:p" href="/./g"/>
<link about="urn:ex:s069" property="urn:ex:p" href="/../g"/>
<link about="urn:ex:s070" property="urn:ex:p" href="g."/>
<link about="urn:ex:s071" property="urn:ex:p" href=".g"/>
<link about="urn:ex:s072" property="urn:ex:p" href="g.."/>
<link about="urn:ex:s073" property="urn:ex:p" href="..g"/>
<link about="urn:ex:s074" property="urn:ex:p" href="./../g"/>
<link about="urn:ex:s075" property="urn:ex:p" href="./g/."/>
<link about="urn:ex:s076" property="urn:ex:p" href="g/./h"/>
<link about="urn:ex:s077" property="urn:ex:p" href="g/../h"/>
<link about="urn:ex:s078" property="urn:ex:p" href="g;x=1/./y"/>
<link about="urn:ex:s079" property="urn:ex:p" href="g;x=1/../y"/>
<link about="urn:ex:s080" property="urn:ex:p" href="g?y/./x"/>
<link about="urn:ex:s081" property="urn:ex:p" href="g?y/../x"/>
<link about="urn:ex:s082" property="urn:ex:p" href="g#s/./x"/>
<link about="urn:ex:s083" property="urn:ex:p" href="g#s/../x"/>
<link about="urn:ex:s084" property="urn:ex:p" href="http:g"/>
</div>
<div xml:base="http://a/bb/ccc/./d;p?q">
<!-- RFC3986 normal examples0 with ./ in the base IRI -->
<link about="urn:ex:s085" property="urn:ex:p" href="g:h"/>
<link about="urn:ex:s086" property="urn:ex:p" href="g"/>
<link about="urn:ex:s087" property="urn:ex:p" href="./g"/>
<link about="urn:ex:s088" property="urn:ex:p" href="g/"/>
<link about="urn:ex:s089" property="urn:ex:p" href="/g"/>
<link about="urn:ex:s090" property="urn:ex:p" href="//g"/>
<link about="urn:ex:s091" property="urn:ex:p" href="?y"/>
<link about="urn:ex:s092" property="urn:ex:p" href="g?y"/>
<link about="urn:ex:s093" property="urn:ex:p" href="#s"/>
<link about="urn:ex:s094" property="urn:ex:p" href="g#s"/>
<link about="urn:ex:s095" property="urn:ex:p" href="g?y#s"/>
<link about="urn:ex:s096" property="urn:ex:p" href=";x"/>
<link about="urn:ex:s097" property="urn:ex:p" href="g;x"/>
<link about="urn:ex:s098" property="urn:ex:p" href="g;x?y#s"/>
<link about="urn:ex:s099" property="urn:ex:p" href=""/>
<link about="urn:ex:s100" property="urn:ex:p" href="."/>
<link about="urn:ex:s101" property="urn:ex:p" href="./"/>
<link about="urn:ex:s102" property="urn:ex:p" href=".."/>
<link about="urn:ex:s103" property="urn:ex:p" href="../"/>
<link about="urn:ex:s104" property="urn:ex:p" href="../g"/>
<link about="urn:ex:s105" property="urn:ex:p" href="../.."/>
<link about="urn:ex:s106" property="urn:ex:p" href="../../"/>
<link about="urn:ex:s107" property="urn:ex:p" href="../../g"/>
</div>
<div xml:base="http://a/bb/ccc/./d;p?q">
<!-- RFC3986 abnormal examples with ./ in the base IRI -->
<link about="urn:ex:s108" property="urn:ex:p" href="../../../g"/>
<link about="urn:ex:s109" property="urn:ex:p" href="../../../../g"/>
<link about="urn:ex:s110" property="urn:ex:p" href="/./g"/>
<link about="urn:ex:s111" property="urn:ex:p" href="/../g"/>
<link about="urn:ex:s112" property="urn:ex:p" href="g."/>
<link about="urn:ex:s113" property="urn:ex:p" href=".g"/>
<link about="urn:ex:s114" property="urn:ex:p" href="g.."/>
<link about="urn:ex:s115" property="urn:ex:p" href="..g"/>
<link about="urn:ex:s116" property="urn:ex:p" href="./../g"/>
<link about="urn:ex:s117" property="urn:ex:p" href="./g/."/>
<link about="urn:ex:s118" property="urn:ex:p" href="g/./h"/>
<link about="urn:ex:s119" property="urn:ex:p" href="g/../h"/>
<link about="urn:ex:s120" property="urn:ex:p" href="g;x=1/./y"/>
<link about="urn:ex:s121" property="urn:ex:p" href="g;x=1/../y"/>
<link about="urn:ex:s122" property="urn:ex:p" href="g?y/./x"/>
<link about="urn:ex:s123" property="urn:ex:p" href="g?y/../x"/>
<link about="urn:ex:s124" property="urn:ex:p" href="g#s/./x"/>
<link about="urn:ex:s125" property="urn:ex:p" href="g#s/../x"/>
<link about="urn:ex:s126" property="urn:ex:p" href="http:g"/>
</div>
<div xml:base="http://a/bb/ccc/../d;p?q">
<!-- RFC3986 normal examples with ../ in the base IRI -->
<link about="urn:ex:s127" property="urn:ex:p" href="g:h"/>
<link about="urn:ex:s128" property="urn:ex:p" href="g"/>
<link about="urn:ex:s129" property="urn:ex:p" href="./g"/>
<link about="urn:ex:s130" property="urn:ex:p" href="g/"/>
<link about="urn:ex:s131" property="urn:ex:p" href="/g"/>
<link about="urn:ex:s132" property="urn:ex:p" href="//g"/>
<link about="urn:ex:s133" property="urn:ex:p" href="?y"/>
<link about="urn:ex:s134" property="urn:ex:p" href="g?y"/>
<link about="urn:ex:s135" property="urn:ex:p" href="#s"/>
<link about="urn:ex:s136" property="urn:ex:p" href="g#s"/>
<link about="urn:ex:s137" property="urn:ex:p" href="g?y#s"/>
<link about="urn:ex:s138" property="urn:ex:p" href=";x"/>
<link about="urn:ex:s139" property="urn:ex:p" href="g;x"/>
<link about="urn:ex:s140" property="urn:ex:p" href="g;x?y#s"/>
<link about="urn:ex:s141" property="urn:ex:p" href=""/>
<link about="urn:ex:s142" property="urn:ex:p" href="."/>
<link about="urn:ex:s143" property="urn:ex:p" href="./"/>
<link about="urn:ex:s144" property="urn:ex:p" href=".."/>
<link about="urn:ex:s145" property="urn:ex:p" href="../"/>
<link about="urn:ex:s146" property="urn:ex:p" href="../g"/>
<link about="urn:ex:s147" property="urn:ex:p" href="../.."/>
<link about="urn:ex:s148" property="urn:ex:p" href="../../"/>
<link about="urn:ex:s149" property="urn:ex:p" href="../../g"/>
</div>
<div xml:base="http://a/bb/ccc/../d;p?q">
<!-- RFC3986 abnormal examples with ../ in the base IRI -->
<link about="urn:ex:s150" property="urn:ex:p" href="../../../g"/>
<link about="urn:ex:s151" property="urn:ex:p" href="../../../../g"/>
<link about="urn:ex:s152" property="urn:ex:p" href="/./g"/>
<link about="urn:ex:s153" property="urn:ex:p" href="/../g"/>
<link about="urn:ex:s154" property="urn:ex:p" href="g."/>
<link about="urn:ex:s155" property="urn:ex:p" href=".g"/>
<link about="urn:ex:s156" property="urn:ex:p" href="g.."/>
<link about="urn:ex:s157" property="urn:ex:p" href="..g"/>
<link about="urn:ex:s158" property="urn:ex:p" href="./../g"/>
<link about="urn:ex:s159" property="urn:ex:p" href="./g/."/>
<link about="urn:ex:s160" property="urn:ex:p" href="g/./h"/>
<link about="urn:ex:s161" property="urn:ex:p" href="g/../h"/>
<link about="urn:ex:s162" property="urn:ex:p" href="g;x=1/./y"/>
<link about="urn:ex:s163" property="urn:ex:p" href="g;x=1/../y"/>
<link about="urn:ex:s164" property="urn:ex:p" href="g?y/./x"/>
<link about="urn:ex:s165" property="urn:ex:p" href="g?y/../x"/>
<link about="urn:ex:s166" property="urn:ex:p" href="g#s/./x"/>
<link about="urn:ex:s167" property="urn:ex:p" href="g#s/../x"/>
<link about="urn:ex:s168" property="urn:ex:p" href="http:g"/>
</div>
<div xml:base="http://a/bb/ccc/.">
<!-- RFC3986 normal examples with trailing ./ in the base IRI -->
<link about="urn:ex:s169" property="urn:ex:p" href="g:h"/>
<link about="urn:ex:s170" property="urn:ex:p" href="g"/>
<link about="urn:ex:s171" property="urn:ex:p" href="./g"/>
<link about="urn:ex:s172" property="urn:ex:p" href="g/"/>
<link about="urn:ex:s173" property="urn:ex:p" href="/g"/>
<link about="urn:ex:s174" property="urn:ex:p" href="//g"/>
<link about="urn:ex:s175" property="urn:ex:p" href="?y"/>
<link about="urn:ex:s176" property="urn:ex:p" href="g?y"/>
<link about="urn:ex:s177" property="urn:ex:p" href="#s"/>
<link about="urn:ex:s178" property="urn:ex:p" href="g#s"/>
<link about="urn:ex:s179" property="urn:ex:p" href="g?y#s"/>
<link about="urn:ex:s180" property="urn:ex:p" href=";x"/>
<link about="urn:ex:s181" property="urn:ex:p" href="g;x"/>
<link about="urn:ex:s182" property="urn:ex:p" href="g;x?y#s"/>
<link about="urn:ex:s183" property="urn:ex:p" href=""/>
<link about="urn:ex:s184" property="urn:ex:p" href="."/>
<link about="urn:ex:s185" property="urn:ex:p" href="./"/>
<link about="urn:ex:s186" property="urn:ex:p" href=".."/>
<link about="urn:ex:s187" property="urn:ex:p" href="../"/>
<link about="urn:ex:s188" property="urn:ex:p" href="../g"/>
<link about="urn:ex:s189" property="urn:ex:p" href="../.."/>
<link about="urn:ex:s190" property="urn:ex:p" href="../../"/>
<link about="urn:ex:s191" property="urn:ex:p" href="../../g"/>
</div>
<div xml:base="http://a/bb/ccc/.">
<!-- RFC3986 abnormal examples with trailing ./ in the base IRI -->
<link about="urn:ex:s192" property="urn:ex:p" href="../../../g"/>
<link about="urn:ex:s193" property="urn:ex:p" href="../../../../g"/>
<link about="urn:ex:s194" property="urn:ex:p" href="/./g"/>
<link about="urn:ex:s195" property="urn:ex:p" href="/../g"/>
<link about="urn:ex:s196" property="urn:ex:p" href="g."/>
<link about="urn:ex:s197" property="urn:ex:p" href=".g"/>
<link about="urn:ex:s198" property="urn:ex:p" href="g.."/>
<link about="urn:ex:s199" property="urn:ex:p" href="..g"/>
<link about="urn:ex:s200" property="urn:ex:p" href="./../g"/>
<link about="urn:ex:s201" property="urn:ex:p" href="./g/."/>
<link about="urn:ex:s202" property="urn:ex:p" href="g/./h"/>
<link about="urn:ex:s203" property="urn:ex:p" href="g/../h"/>
<link about="urn:ex:s204" property="urn:ex:p" href="g;x=1/./y"/>
<link about="urn:ex:s205" property="urn:ex:p" href="g;x=1/../y"/>
<link about="urn:ex:s206" property="urn:ex:p" href="g?y/./x"/>
<link about="urn:ex:s207" property="urn:ex:p" href="g?y/../x"/>
<link about="urn:ex:s208" property="urn:ex:p" href="g#s/./x"/>
<link about="urn:ex:s209" property="urn:ex:p" href="g#s/../x"/>
<link about="urn:ex:s210" property="urn:ex:p" href="http:g"/>
</div>
<div xml:base="http://a/bb/ccc/..">
<!-- RFC3986 normal examples with trailing ../ in the base IRI -->
<link about="urn:ex:s211" property="urn:ex:p" href="g:h"/>
<link about="urn:ex:s212" property="urn:ex:p" href="g"/>
<link about="urn:ex:s213" property="urn:ex:p" href="./g"/>
<link about="urn:ex:s214" property="urn:ex:p" href="g/"/>
<link about="urn:ex:s215" property="urn:ex:p" href="/g"/>
<link about="urn:ex:s216" property="urn:ex:p" href="//g"/>
<link about="urn:ex:s217" property="urn:ex:p" href="?y"/>
<link about="urn:ex:s218" property="urn:ex:p" href="g?y"/>
<link about="urn:ex:s219" property="urn:ex:p" href="#s"/>
<link about="urn:ex:s220" property="urn:ex:p" href="g#s"/>
<link about="urn:ex:s221" property="urn:ex:p" href="g?y#s"/>
<link about="urn:ex:s222" property="urn:ex:p" href=";x"/>
<link about="urn:ex:s223" property="urn:ex:p" href="g;x"/>
<link about="urn:ex:s224" property="urn:ex:p" href="g;x?y#s"/>
<link about="urn:ex:s225" property="urn:ex:p" href=""/>
<link about="urn:ex:s226" property="urn:ex:p" href="."/>
<link about="urn:ex:s227" property="urn:ex:p" href="./"/>
<link about="urn:ex:s228" property="urn:ex:p" href=".."/>
<link about="urn:ex:s229" property="urn:ex:p" href="../"/>
<link about="urn:ex:s230" property="urn:ex:p" href="../g"/>
<link about="urn:ex:s231" property="urn:ex:p" href="../.."/>
<link about="urn:ex:s232" property="urn:ex:p" href="../../"/>
<link about="urn:ex:s233" property="urn:ex:p" href="../../g"/>
<link about="urn:ex:s210" property="urn:ex:p" href="http:g"/>
</div>
<div xml:base="http://a/bb/ccc/..">
<!-- RFC3986 abnormal examples with trailing ../ in the base IRI -->
<link about="urn:ex:s234" property="urn:ex:p" href="../../../g"/>
<link about="urn:ex:s235" property="urn:ex:p" href="../../../../g"/>
<link about="urn:ex:s236" property="urn:ex:p" href="/./g"/>
<link about="urn:ex:s237" property="urn:ex:p" href="/../g"/>
<link about="urn:ex:s238" property="urn:ex:p" href="g."/>
<link about="urn:ex:s239" property="urn:ex:p" href=".g"/>
<link about="urn:ex:s240" property="urn:ex:p" href="g.."/>
<link about="urn:ex:s241" property="urn:ex:p" href="..g"/>
<link about="urn:ex:s242" property="urn:ex:p" href="./../g"/>
<link about="urn:ex:s243" property="urn:ex:p" href="./g/."/>
<link about="urn:ex:s244" property="urn:ex:p" href="g/./h"/>
<link about="urn:ex:s245" property="urn:ex:p" href="g/../h"/>
<link about="urn:ex:s246" property="urn:ex:p" href="g;x=1/./y"/>
<link about="urn:ex:s247" property="urn:ex:p" href="g;x=1/../y"/>
<link about="urn:ex:s248" property="urn:ex:p" href="g?y/./x"/>
<link about="urn:ex:s249" property="urn:ex:p" href="g?y/../x"/>
<link about="urn:ex:s250" property="urn:ex:p" href="g#s/./x"/>
<link about="urn:ex:s251" property="urn:ex:p" href="g#s/../x"/>
<link about="urn:ex:s252" property="urn:ex:p" href="http:g"/>
</div>
<div xml:base="file:///a/bb/ccc/d;p?q">
<!-- RFC3986 normal examples with file path -->
<link about="urn:ex:s253" property="urn:ex:p" href="g:h"/>
<link about="urn:ex:s254" property="urn:ex:p" href="g"/>
<link about="urn:ex:s255" property="urn:ex:p" href="./g"/>
<link about="urn:ex:s256" property="urn:ex:p" href="g/"/>
<link about="urn:ex:s257" property="urn:ex:p" href="/g"/>
<link about="urn:ex:s258" property="urn:ex:p" href="//g"/>
<link about="urn:ex:s259" property="urn:ex:p" href="?y"/>
<link about="urn:ex:s260" property="urn:ex:p" href="g?y"/>
<link about="urn:ex:s261" property="urn:ex:p" href="#s"/>
<link about="urn:ex:s262" property="urn:ex:p" href="g#s"/>
<link about="urn:ex:s263" property="urn:ex:p" href="g?y#s"/>
<link about="urn:ex:s264" property="urn:ex:p" href=";x"/>
<link about="urn:ex:s265" property="urn:ex:p" href="g;x"/>
<link about="urn:ex:s266" property="urn:ex:p" href="g;x?y#s"/>
<link about="urn:ex:s267" property="urn:ex:p" href=""/>
<link about="urn:ex:s268" property="urn:ex:p" href="."/>
<link about="urn:ex:s269" property="urn:ex:p" href="./"/>
<link about="urn:ex:s270" property="urn:ex:p" href=".."/>
<link about="urn:ex:s271" property="urn:ex:p" href="../"/>
<link about="urn:ex:s272" property="urn:ex:p" href="../g"/>
<link about="urn:ex:s273" property="urn:ex:p" href="../.."/>
<link about="urn:ex:s274" property="urn:ex:p" href="../../"/>
<link about="urn:ex:s275" property="urn:ex:p" href="../../g"/>
</div>
<div xml:base="file:///a/bb/ccc/d;p?q">
<!-- RFC3986 abnormal examples with file path -->
<link about="urn:ex:s276" property="urn:ex:p" href="../../../g"/>
<link about="urn:ex:s277" property="urn:ex:p" href="../../../../g"/>
<link about="urn:ex:s278" property="urn:ex:p" href="/./g"/>
<link about="urn:ex:s279" property="urn:ex:p" href="/../g"/>
<link about="urn:ex:s280" property="urn:ex:p" href="g."/>
<link about="urn:ex:s281" property="urn:ex:p" href=".g"/>
<link about="urn:ex:s282" property="urn:ex:p" href="g.."/>
<link about="urn:ex:s283" property="urn:ex:p" href="..g"/>
<link about="urn:ex:s284" property="urn:ex:p" href="./../g"/>
<link about="urn:ex:s285" property="urn:ex:p" href="./g/."/>
<link about="urn:ex:s286" property="urn:ex:p" href="g/./h"/>
<link about="urn:ex:s287" property="urn:ex:p" href="g/../h"/>
<link about="urn:ex:s288" property="urn:ex:p" href="g;x=1/./y"/>
<link about="urn:ex:s289" property="urn:ex:p" href="g;x=1/../y"/>
<link about="urn:ex:s290" property="urn:ex:p" href="g?y/./x"/>
<link about="urn:ex:s291" property="urn:ex:p" href="g?y/../x"/>
<link about="urn:ex:s292" property="urn:ex:p" href="g#s/./x"/>
<link about="urn:ex:s293" property="urn:ex:p" href="g#s/../x"/>
<link about="urn:ex:s294" property="urn:ex:p" href="http:g"/>
</div>
<!-- additional cases -->
<div xml:base="http://abc/def/ghi">
<link about="urn:ex:s295" property="urn:ex:p" href="."/>
<link about="urn:ex:s296" property="urn:ex:p" href=".?a=b"/>
<link about="urn:ex:s297" property="urn:ex:p" href=".#a=b"/>
<link about="urn:ex:s298" property="urn:ex:p" href=".."/>
<link about="urn:ex:s299" property="urn:ex:p" href="..?a=b"/>
<link about="urn:ex:s300" property="urn:ex:p" href="..#a=b"/>
</div>
<div xml:base="http://ab//de//ghi">
<link about="urn:ex:s301" property="urn:ex:p" href="xyz"/>
<link about="urn:ex:s302" property="urn:ex:p" href="./xyz"/>
<link about="urn:ex:s303" property="urn:ex:p" href="../xyz"/>
</div>
<div xml:base="http://abc/d:f/ghi">
<link about="urn:ex:s304" property="urn:ex:p" href="xyz"/>
<link about="urn:ex:s305" property="urn:ex:p" href="./xyz"/>
<link about="urn:ex:s306" property="urn:ex:p" href="../xyz"/>
</div>
</body></html>
#!/usr/bin/env node
var fs = require('fs'),
assert = require('assert')
execFile = require('child_process').execFile;
var args = process.argv.slice(2);
if (!args.length) {
console.error('usage: node test-iri-resolution.js <parser_command> [<parser_arg1> ...]');
process.exit(1);
}
var expected = fs.readFileSync('iri-resolution.nt', { encoding: 'utf8' })
.split('\n')
.filter(function (l) { return l[0] === '<'; })
.map(function (l) { return l.match(/<([^<>]*)>\.$/)[1]; });
var base = '', match;
var input = fs.readFileSync('iri-resolution.ttl', { encoding: 'utf8' })
.split('\n')
.reduce(function (all, l) {
if (match = l.match(/@base <([^<>]*)>/))
base = match[1];
else if (match = l.match(/<([^<>]*)>\.$/))
all.push({ base: base, iri: match[1] });
return all;
}, []);
assert.equal(expected.length, input.length, 'unequal number of test cases');
console.log('Trying %s test cases', input.length);
var index = 0, passed = 0, errored = 0, total = expected.length, tmpfile = 'tmp.ttl';
(function next() {
var base = input[index].base, iri = input[index].iri, correct = expected[index],
document = '@base <' + base + '>.\n<urn:ex:s> <urn:ex:p> <' + iri + '>.';
fs.writeFileSync(tmpfile, document, { encoding: 'utf8' });
process.stdout.write(' ' + pad((index + 1) + '.', 4) +
' resolving ' + pad('<' + iri + '>', 20) +
' against ' + pad('<' + base + '>', 30) + ': ');
execFile(args[0], args.slice(1).concat(tmpfile), function (error, stdout, stderr) {
try { fs.unlinkSync(tmpfile); } catch (e) {}
if (error) {
errored++;
process.stdout.write('ERROR (expected <' + correct + '>)\n');
}
else {
// Find first URL after urn:ex:p
var url = /<([^>]+)>/g;
while ((match = url.exec(stdout.toString())) && (match[1] !== 'urn:ex:p'));
var result = (match = url.exec(stdout.toString())) ? match[1] : '(none)';
if (result === correct)
process.stdout.write('PASS (<' + result + '>)\n'), passed++;
else
process.stdout.write('FAIL (got <' + result + '> instead of <' + correct + '>)\n');
}
if (++index < total)
next();
else
console.log('%s tests, %s passed, %s failed, %s errored',
total, passed, total - passed - errored, errored);
});
})();
function pad(s, length) {
while (s.length < length)
s += ' ';
return s;
}
@gkellogg
Copy link

gkellogg commented Sep 5, 2015

urn:ex:s257 seems wrong. <file:///a/bb/ccc/d;p?q> has an empty authority with path /a/bb/ccc/d;p, and is an absolute path, so the result should be <file:///g>.

Same reasoning for urn:ex:s277 through urn:ex:s279.

According to RFC 3986, the authority begins after // and ends at the first /.

The authority component is preceded by a double slash ("//") and is terminated by the next slash ("/"), question mark ("?"), or number sign ("#") character, or by the end of the URI.

@gkellogg
Copy link

gkellogg commented Sep 5, 2015

Please consider pulling changes from my fork https://gist.github.com/gkellogg/278621acc9b627d486e6. This includes versions for XHTML5 (which allows the use of xml:base) and RDF/XML. It also corrects the expected results per my previous comment.

@gkellogg
Copy link

gkellogg commented Sep 6, 2015

I added a JSON-LD version to the fork as well.

@RubenVerborgh
Copy link
Author

Thanks, @gkellogg, merged!

@RubenVerborgh
Copy link
Author

@gkellogg I think that urn:ex:s276 should also resolve to file:///g rather than file:///a/g. Could you confirm?

@RubenVerborgh
Copy link
Author

Fixed urn:ex:s276 to file:///g.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment