reddy 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/HACKNOTES +2 -0
  2. data/History.txt +3 -0
  3. data/Manifest.txt +80 -0
  4. data/README.rdoc +48 -0
  5. data/README.txt +62 -0
  6. data/Rakefile +67 -0
  7. data/lib/reddy.rb +8 -0
  8. data/lib/reddy/bnode.rb +70 -0
  9. data/lib/reddy/exceptions/about_each_exception.rb +2 -0
  10. data/lib/reddy/exceptions/uri_relative_exception.rb +2 -0
  11. data/lib/reddy/graph.rb +182 -0
  12. data/lib/reddy/libxml_hacks.rb +6 -0
  13. data/lib/reddy/literal.rb +211 -0
  14. data/lib/reddy/n3_grammar.treetop +129 -0
  15. data/lib/reddy/n3parser.rb +145 -0
  16. data/lib/reddy/namespace.rb +73 -0
  17. data/lib/reddy/rdfaparser.rb +63 -0
  18. data/lib/reddy/rdfxmlparser.rb +254 -0
  19. data/lib/reddy/rexml_hacks.rb +97 -0
  20. data/lib/reddy/triple.rb +95 -0
  21. data/lib/reddy/uriref.rb +66 -0
  22. data/reddy.gemspec +50 -0
  23. data/spec/bnode_spec.rb +29 -0
  24. data/spec/graph_spec.rb +138 -0
  25. data/spec/literal_spec.rb +142 -0
  26. data/spec/n3parser_spec.rb +86 -0
  27. data/spec/namespaces_spec.rb +44 -0
  28. data/spec/parser_spec.rb +391 -0
  29. data/spec/rdfa_parser_spec.rb +28 -0
  30. data/spec/rexml_hacks_spec.rb +99 -0
  31. data/spec/triple_spec.rb +108 -0
  32. data/spec/uriref_spec.rb +96 -0
  33. data/test/longtests_spec.rb +25 -0
  34. data/test/n3_tests/lcsh/sh85062913.n3 +41 -0
  35. data/test/n3_tests/lcsh/sh85062913.nt +21 -0
  36. data/test/n3_tests/lcsh/sh85082139.n3 +157 -0
  37. data/test/n3_tests/lcsh/sh85082139.nt +79 -0
  38. data/test/n3_tests/lcsh/sh85118553.n3 +123 -0
  39. data/test/n3_tests/lcsh/sh85118553.nt +63 -0
  40. data/test/n3_tests/misc/on_now-01.n3 +30 -0
  41. data/test/n3_tests/misc/on_now-01.nt +15 -0
  42. data/test/n3_tests/n3p/simple-01.n3 +1 -0
  43. data/test/n3_tests/n3p/simple-01.nt +0 -0
  44. data/test/n3_tests/n3p/simple-02.n3 +4 -0
  45. data/test/n3_tests/n3p/simple-02.nt +0 -0
  46. data/test/n3_tests/n3p/simple-03.n3 +5 -0
  47. data/test/n3_tests/n3p/simple-03.nt +1 -0
  48. data/test/n3_tests/n3p/simple-04.n3 +6 -0
  49. data/test/n3_tests/n3p/simple-04.nt +3 -0
  50. data/test/n3_tests/n3p/simple-05.n3 +7 -0
  51. data/test/n3_tests/n3p/simple-05.nt +2 -0
  52. data/test/n3_tests/n3p/simple-06.n3 +6 -0
  53. data/test/n3_tests/n3p/simple-06.nt +4 -0
  54. data/test/n3_tests/n3p/simple-07.n3 +7 -0
  55. data/test/n3_tests/n3p/simple-07.nt +6 -0
  56. data/test/perf_test/test.rb +11 -0
  57. data/test/perf_test/tommorris.rdf +2267 -0
  58. data/test/rdf_tests/cc197bad-dc9c-440d-a5b5-d52ba2e14234.nt +24 -0
  59. data/test/rdf_tests/cc197bad-dc9c-440d-a5b5-d52ba2e14234.rdf +46 -0
  60. data/test/rdf_tests/tm_001.nt +1 -0
  61. data/test/rdf_tests/tm_001.rdf +7 -0
  62. data/test/rdf_tests/xml-literal-mixed.nt +7 -0
  63. data/test/rdf_tests/xml-literal-mixed.rdf +15 -0
  64. data/test/ruby_fundamentals.spec.rb +17 -0
  65. data/test/test_helper.rb +2 -0
  66. data/test/test_reddy.rb +11 -0
  67. data/test/test_uris.rb +13 -0
  68. data/test/xml.rdf +6 -0
  69. metadata +198 -0
@@ -0,0 +1,28 @@
1
+ require 'lib/reddy'
2
+
3
+ # Specification: http://www.w3.org/TR/rdfa-syntax/
4
+ # docs:
5
+ # - http://www.xml.com/pub/a/2007/02/14/introducing-rdfa.html
6
+ # - http://www.w3.org/TR/xhtml-rdfa-primer/
7
+ # W3C test suite: http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/
8
+
9
+ describe "RDFa parser" do
10
+ it "should be able to pass xhtml1-0001.xhtml" do
11
+ sampledoc = <<-EOF;
12
+ <?xml version="1.0" encoding="UTF-8"?>
13
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">
14
+ <html xmlns="http://www.w3.org/1999/xhtml"
15
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
16
+ <head>
17
+ <title>Test 0001</title>
18
+ </head>
19
+ <body>
20
+ <p>This photo was taken by <span class="author" about="photo1.jpg" property="dc:creator">Mark Birbeck</span>.</p>
21
+ </body>
22
+ </html>
23
+ EOF
24
+
25
+ parser = RdfaParser.new(sampledoc, uri = "http://www.w3.org/2006/07/SWD/RDFa/testsuite/xhtml1-testcases/0001.xhtml")
26
+ parser.graph.size.should == 1
27
+ end
28
+ end
@@ -0,0 +1,99 @@
1
+ require 'lib/reddy'
2
+ require 'rexml/document'
3
+ #require 'lib/rexml_hacks'
4
+
5
+ describe "REXML" do
6
+ before do
7
+ string = <<-EOF;
8
+ <?xml version="1.0" ?>
9
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex="http://example.org/" xml:lang="en" xml:base="http://example.org/">
10
+ <rdf:Description>
11
+ <foo>bar</foo>
12
+ <bar:bar xmlns:bar="http://foo.com/">foo</bar:bar>
13
+ <ex:ex>fap</ex:ex>
14
+ </rdf:Description>
15
+ </rdf:RDF>
16
+ EOF
17
+
18
+ @doc = REXML::Document.new(string)
19
+
20
+ string2 = <<-EOF;
21
+ <?xml version="1.0" ?>
22
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex="http://example.org/">
23
+ <rdf:Description>
24
+ <foo>bar</foo>
25
+ <bar:bar xmlns:bar="http://foo.com/">foo</bar:bar>
26
+ <ex:ex>fap</ex:ex>
27
+ </rdf:Description>
28
+ </rdf:RDF>
29
+ EOF
30
+ @doc2 = REXML::Document.new(string2)
31
+ end
32
+
33
+ it "should have support for xml:base" do
34
+ @doc.root.elements[1].base?.should == true
35
+ @doc.root.elements[1].base.should == "http://example.org/"
36
+ @doc2.root.elements[1].base?.should_not == true
37
+ @doc2.root.elements[1].base.should == nil
38
+ end
39
+
40
+ it "should have support for xml:lang" do
41
+ @doc.root.elements[1].lang?.should == true
42
+ @doc.root.elements[1].lang.should == "en"
43
+ @doc2.root.elements[1].lang?.should_not == true
44
+ @doc2.root.elements[1].lang.should == nil
45
+ end
46
+
47
+ it "should allow individual writing-out of XML" do
48
+ # puts @doc.root.elements[1].write
49
+
50
+ sampledoc = <<-EOF;
51
+ <?xml version="1.0"?>
52
+
53
+ <!--
54
+ Copyright World Wide Web Consortium, (Massachusetts Institute of
55
+ Technology, Institut National de Recherche en Informatique et en
56
+ Automatique, Keio University).
57
+
58
+ All Rights Reserved.
59
+
60
+ Please see the full Copyright clause at
61
+ <http://www.w3.org/Consortium/Legal/copyright-software.html>
62
+
63
+ Description: Visibly used namespaces must be included in XML
64
+ Literal values. Treatment of namespaces that are not
65
+ visibly used (e.g. rdf: in this example) is implementation
66
+ dependent. Based on example from Issues List.
67
+
68
+
69
+ $Id: test001.rdf,v 1.2 2002/11/22 13:52:15 jcarroll Exp $
70
+
71
+ -->
72
+ <rdf:RDF xmlns="http://www.w3.org/1999/xhtml"
73
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
74
+ xmlns:html="http://NoHTML.example.org"
75
+ xmlns:my="http://my.example.org/">
76
+ <rdf:Description rdf:ID="John_Smith">
77
+ <my:Name rdf:parseType="Literal">
78
+ <html:h1>
79
+ <b>John</b>
80
+ </html:h1>
81
+ </my:Name>
82
+
83
+ </rdf:Description>
84
+ </rdf:RDF>
85
+ EOF
86
+ doc2 = REXML::Document.new(sampledoc)
87
+ expectedoutput_str = "<html:h1 xmlns:html=\'http://NoHTML.example.org\' xmlns:my=\'http://my.example.org/\' xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\'>\n <b xmlns=\'http://www.w3.org/1999/xhtml\'>John</b>\n </html:h1>"
88
+ expectedout = REXML::Document.new(expectedoutput_str)
89
+ doc2.root.elements[1].elements[1].elements[1].write_reddy == expectedout.root
90
+
91
+ sampledoc3 = <<-EOF;
92
+ <?xml version="1.0"?><RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Description><x:li xmlns:x="http://example.org/notRDF" /></Description></RDF>
93
+ EOF
94
+
95
+ doc3 = REXML::Document.new(sampledoc3)
96
+ out3 = REXML::Document.new(doc3.root.elements[1].write_reddy)
97
+ out3.root.class == REXML::Element
98
+ end
99
+ end
@@ -0,0 +1,108 @@
1
+ require 'lib/reddy'
2
+
3
+ describe "Triples" do
4
+ it "should have a subject" do
5
+ f = Triple.new(BNode.new, URIRef.new('http://xmlns.com/foaf/0.1/knows'), BNode.new)
6
+ f.subject.class.should == BNode
7
+ # puts f.to_ntriples
8
+ end
9
+
10
+ it "should require that the subject is a URIRef or BNode" do
11
+ lambda do
12
+ Triple.new(Literal.new("foo"), URIRef.new("http://xmlns.com/foaf/0.1/knows"), BNode.new)
13
+ end.should raise_error
14
+ end
15
+
16
+ it "should require that the predicate is a URIRef" do
17
+ lambda do
18
+ Triple.new(BNode.new, BNode.new, BNode.new)
19
+ end.should raise_error
20
+ end
21
+
22
+ it "should require that the object is a URIRef, BNode, Literal or Typed Literal" do
23
+ lambda do
24
+ Triple.new(BNode.new, URIRef.new("http://xmlns.com/foaf/0.1/knows"), [])
25
+ end.should raise_error
26
+ end
27
+
28
+ it "should emit an NTriple" do
29
+ s = URIRef.new("http://tommorris.org/foaf#me")
30
+ p = URIRef.new("http://xmlns.com/foaf/0.1/name")
31
+ o = Literal.untyped("Tom Morris")
32
+ f = Triple.new(s,p,o)
33
+
34
+ f.to_ntriples.should == "<http://tommorris.org/foaf#me> <http://xmlns.com/foaf/0.1/name> \"Tom Morris\" ."
35
+ end
36
+
37
+ describe "#coerce_subject" do
38
+ it "should accept a URIRef" do
39
+ ref = URIRef.new('http://localhost/')
40
+ Triple.coerce_subject(ref).should == ref
41
+ end
42
+
43
+ it "should accept a BNode" do
44
+ node = BNode.new('a')
45
+ Triple.coerce_subject(node).should == node
46
+ end
47
+
48
+ it "should accept a uri string and make URIRef" do
49
+ Triple.coerce_subject('http://localhost/').should == URIRef.new('http://localhost/')
50
+ end
51
+
52
+ it "should accept an Addressable::URI object and make URIRef" do
53
+ Triple.coerce_subject(Addressable::URI.parse("http://localhost/")).should == URIRef.new("http://localhost/")
54
+ end
55
+
56
+ it "should turn an other string into a BNode" do
57
+ Triple.coerce_subject('foo').should == BNode.new('foo')
58
+ end
59
+
60
+ it "should raise an InvalidSubject exception with any other class argument" do
61
+ lambda do
62
+ Triple.coerce_subject(Object.new)
63
+ end.should raise_error(Reddy::Triple::InvalidSubject)
64
+ end
65
+ end
66
+
67
+ describe "#coerce_predicate" do
68
+ it "should make a string into a URI ref" do
69
+ Triple.coerce_predicate("http://localhost/").should == URIRef.new('http://localhost/')
70
+ end
71
+
72
+ it "should leave a URIRef alone" do
73
+ ref = URIRef.new('http://localhost/')
74
+ Triple.coerce_predicate(ref).should == ref
75
+ end
76
+
77
+ it "should barf on an illegal uri string" do
78
+ lambda do
79
+ Triple.coerce_predicate("I'm just a soul whose intention is good")
80
+ end.should raise_error(Reddy::Triple::InvalidPredicate)
81
+ end
82
+ end
83
+
84
+ describe "#coerce_object" do
85
+ it "should leave URIRefs alone" do
86
+ ref = URIRef.new("http://localhost/")
87
+ Triple.coerce_object(ref).should == ref
88
+ end
89
+
90
+ it "should accept an Addressable::URI object and make URIRef" do
91
+ Triple.coerce_object(Addressable::URI.parse("http://localhost/")).should == URIRef.new("http://localhost/")
92
+ end
93
+
94
+ it "should leave BNodes alone" do
95
+ ref = BNode.new()
96
+ Triple.coerce_object(ref).should == ref
97
+ end
98
+
99
+ it "should leave Literals alone" do
100
+ ref = Literal.untyped('foo')
101
+ Triple.coerce_object(ref).should == ref
102
+
103
+ typedref = Literal.build_from('foo')
104
+ Triple.coerce_object(ref).should == ref
105
+ end
106
+
107
+ end
108
+ end
@@ -0,0 +1,96 @@
1
+ require 'webrick'
2
+ include WEBrick
3
+ require 'lib/reddy'
4
+ #require 'lib/uriref'
5
+
6
+ describe "URI References" do
7
+ it "should output NTriples" do
8
+ f = URIRef.new("http://tommorris.org/foaf/")
9
+ f.to_ntriples.should == "<http://tommorris.org/foaf/>"
10
+ end
11
+
12
+ it "should handle Unicode symbols inside URLs" do
13
+ lambda do
14
+ f = URIRef.new("http://example.org/#Andr%E9")
15
+ end.should_not raise_error
16
+ end
17
+
18
+ # it "do not contain any control characters (#x00 - #x1F, #x74-#x9F)" do
19
+ # lambda do
20
+ # f = URIRef.new("http://tommorris.org/blog/")
21
+ # f.test_string("http://tommorris.org/blog")
22
+ # end.should_not raise_error
23
+ #
24
+ # lambda do
25
+ # f = URIRef.new("http://xmlns.com/foaf/0.1/knows")
26
+ # f.test_string("http://xmlns.com/foaf/0.1/knows")
27
+ # end.should_not raise_error
28
+ # end
29
+
30
+ it "should return the 'last fragment' name" do
31
+ fragment = URIRef.new("http://example.org/foo#bar")
32
+ fragment.short_name.should == "bar"
33
+
34
+ path = URIRef.new("http://example.org/foo/bar")
35
+ path.short_name.should == "bar"
36
+
37
+ nonetest = URIRef.new("http://example.org/")
38
+ nonetest.short_name.should == false
39
+ end
40
+
41
+ it "produce a valid URI character sequence (per RFC 2396 §2.1) representing an absolute URI with optional fragment identifier" do
42
+ pending "TODO: figure out a series of tests for RFC 2396 §2.1 adherence"
43
+ end
44
+
45
+ it "should throw errors on suspicious protocols and non-protocols" do
46
+ lambda do
47
+ URIRef.new("javascript:alert(\"pass\")")
48
+ end.should raise_error
49
+ end
50
+
51
+ it "must not be a relative URI" do
52
+ lambda do
53
+ URIRef.new("foo")
54
+ end.should raise_error
55
+ end
56
+
57
+ it "should discourage use of %-escaped characters" do
58
+ pending "TODO: figure out a way to discourage %-escaped character usage"
59
+ end
60
+
61
+ it "should allow another URIRef to be added" do
62
+ uri = URIRef.new("http://example.org/") + "foo#bar"
63
+ uri.to_s.should == "http://example.org/foo#bar"
64
+ uri.class.should == URIRef
65
+
66
+ uri2 = URIRef.new("http://example.org/") + Addressable::URI.parse("foo#bar")
67
+ uri2.to_s.should == "http://example.org/foo#bar"
68
+ end
69
+
70
+ # TEST turned off until parser is working.
71
+ # it "should allow the programmer to Follow His Nose" do
72
+ # a = URIRef.new("http://127.0.0.1:3001/test")
73
+ #
74
+ # # server
75
+ # test_proc = lambda { |req, resp|
76
+ # resp['Content-Type'] = "application/rdf+xml"
77
+ # resp.body = <<-EOF;
78
+ # <?xml version="1.0" ?>
79
+ # <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
80
+ # <rdf:Description rdf:about="http://localhost:3001/test">
81
+ # <foaf:name>Testy McTest</foaf:name>
82
+ # </rdf:Description>
83
+ # </rdf:RDF>
84
+ # EOF
85
+ # }
86
+ # test = HTTPServlet::ProcHandler.new(test_proc)
87
+ # s = HTTPServer.new(:Port => 3001)
88
+ # s.mount("/test", test)
89
+ # trap("INT"){ s.shutdown }
90
+ # thread = Thread.new { s.start }
91
+ # graph = a.load_graph
92
+ # s.shutdown
93
+ # graph.class.should == Reddy::Graph
94
+ # graph.size.should == 1
95
+ # end
96
+ end
@@ -0,0 +1,25 @@
1
+ describe "Reddy library"
2
+ it "should allow the programmer to Follow His Nose" do
3
+ a = URIRef.new("http://127.0.0.1:3001/test")
4
+ test_proc = lambda { |req, resp|
5
+ resp['Content-Type'] = "application/rdf+xml"
6
+ resp.body = <<-EOF;
7
+ <?xml version="1.0" ?>
8
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:foaf="http://xmlns.com/foaf/0.1/">
9
+ <rdf:Description rdf:about="http://localhost:3001/test">
10
+ <foaf:name>Testy McTest</foaf:name>
11
+ </rdf:Description>
12
+ </rdf:RDF>
13
+ EOF
14
+ }
15
+ test = HTTPServlet::ProcHandler.new(test_proc)
16
+ s = HTTPServer.new(:Port => 3001)
17
+ s.mount("/test", test)
18
+ trap("INT"){ s.shutdown }
19
+ thread = Thread.new { s.start }
20
+ graph = a.load_graph
21
+ s.shutdown
22
+ graph.class.should == Reddy::Graph
23
+ graph.size.should == 1
24
+ end
25
+ end
@@ -0,0 +1,41 @@
1
+
2
+ @prefix lcsh_10: <http://lcsh.info/sh85112589#>.
3
+ @prefix lcsh_11: <http://lcsh.info/sh85008324#>.
4
+ @prefix lcsh_12: <http://lcsh.info/sh85029102#>.
5
+ @prefix lcsh_13: <http://lcsh.info/sh85100849#>.
6
+ @prefix lcsh_14: <http://lcsh.info/sh85108488#>.
7
+ @prefix lcsh_15: <http://lcsh.info/sh85043208#>.
8
+ @prefix lcsh_16: <http://lcsh.info/sh85083186#>.
9
+ @prefix lcsh_17: <http://lcsh.info/sh85118626#>.
10
+ @prefix lcsh_18: <http://lcsh.info/sh85108398#>.
11
+ @prefix lcsh_19: <http://lcsh.info/sh85075529#>.
12
+ @prefix lcsh_20: <http://lcsh.info/sh85026700#>.
13
+ @prefix lcsh_6: <http://lcsh.info/sh85062913#>.
14
+ @prefix lcsh_7: <http://lcsh.info/sh96000718#>.
15
+ @prefix lcsh_8: <http://lcsh.info/sh91004532#>.
16
+ @prefix lcsh_9: <http://lcsh.info/sh91002683#>.
17
+ @prefix dcterms: <http://purl.org/dc/terms/>.
18
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
19
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#>.
20
+
21
+ lcsh_6:concept a skos:Concept;
22
+ dcterms:LCC "AZ";
23
+ dcterms:created "1986-02-11"^^<http://www.w3.org/2001/XMLSchema#date>;
24
+ dcterms:modified "2006-08-02T11:15:32"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
25
+ skos:broader lcsh_19:concept;
26
+ skos:inScheme <http://lcsh.info/>;
27
+ skos:narrower lcsh_11:concept,
28
+ lcsh_12:concept,
29
+ lcsh_15:concept,
30
+ lcsh_16:concept,
31
+ lcsh_13:concept,
32
+ lcsh_18:concept,
33
+ lcsh_14:concept,
34
+ lcsh_10:concept,
35
+ lcsh_17:concept,
36
+ lcsh_9:concept,
37
+ lcsh_8:concept,
38
+ lcsh_7:concept;
39
+ skos:prefLabel "Humanities"@en;
40
+ skos:related lcsh_20:concept;
41
+ skos:scopeNote "Here are entered works on the branches of learning regarded as having a cultural character, including literature, the arts, history, philosophy, religion, etc."@en.
@@ -0,0 +1,21 @@
1
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2004/02/skos/core#Concept> .
2
+ <http://lcsh.info/sh85062913#concept> <http://purl.org/dc/terms/LCC> "AZ" .
3
+ <http://lcsh.info/sh85062913#concept> <http://purl.org/dc/terms/created> "1986-02-11"^^<http://www.w3.org/2001/XMLSchema#date> .
4
+ <http://lcsh.info/sh85062913#concept> <http://purl.org/dc/terms/modified> "2006-08-02T11:15:32"^^<http://www.w3.org/2001/XMLSchema#dateTime> .
5
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#broader> <http://lcsh.info/sh85075529#concept> .
6
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#inScheme> <http://lcsh.info/> .
7
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85008324#concept> .
8
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85029102#concept> .
9
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85043208#concept> .
10
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85083186#concept> .
11
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85100849#concept> .
12
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85108398#concept> .
13
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85108488#concept> .
14
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85112589#concept> .
15
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh85118626#concept> .
16
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh91002683#concept> .
17
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh91004532#concept> .
18
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#narrower> <http://lcsh.info/sh96000718#concept> .
19
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#prefLabel> "Humanities"@en .
20
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#related> <http://lcsh.info/sh85026700#concept> .
21
+ <http://lcsh.info/sh85062913#concept> <http://www.w3.org/2004/02/skos/core#scopeNote> "Here are entered works on the branches of learning regarded as having a cultural character, including literature, the arts, history, philosophy, religion, etc."@en .
@@ -0,0 +1,157 @@
1
+
2
+ @prefix lcsh_10: <http://lcsh.info/sh85082365#>.
3
+ @prefix lcsh_11: <http://lcsh.info/sh85050839#>.
4
+ @prefix lcsh_12: <http://lcsh.info/sh85093228#>.
5
+ @prefix lcsh_13: <http://lcsh.info/sh85046844#>.
6
+ @prefix lcsh_14: <http://lcsh.info/sh85037299#>.
7
+ @prefix lcsh_15: <http://lcsh.info/sh85018308#>.
8
+ @prefix lcsh_16: <http://lcsh.info/sh85084442#>.
9
+ @prefix lcsh_17: <http://lcsh.info/sh85078115#>.
10
+ @prefix lcsh_18: <http://lcsh.info/sh85052941#>.
11
+ @prefix lcsh_19: <http://lcsh.info/sh85048251#>.
12
+ @prefix lcsh_20: <http://lcsh.info/sh85127551#>.
13
+ @prefix lcsh_21: <http://lcsh.info/sh85007163#>.
14
+ @prefix lcsh_22: <http://lcsh.info/sh85120237#>.
15
+ @prefix lcsh_23: <http://lcsh.info/sh85044510#>.
16
+ @prefix lcsh_24: <http://lcsh.info/sh85034914#>.
17
+ @prefix lcsh_25: <http://lcsh.info/sh85064861#>.
18
+ @prefix lcsh_26: <http://lcsh.info/sh85107377#>.
19
+ @prefix lcsh_27: <http://lcsh.info/sh85066296#>.
20
+ @prefix lcsh_28: <http://lcsh.info/sh85072381#>.
21
+ @prefix lcsh_29: <http://lcsh.info/sh85121771#>.
22
+ @prefix lcsh_30: <http://lcsh.info/sh85063720#>.
23
+ @prefix lcsh_31: <http://lcsh.info/sh2006005613#>.
24
+ @prefix lcsh_32: <http://lcsh.info/sh85003425#>.
25
+ @prefix lcsh_33: <http://lcsh.info/sh85067539#>.
26
+ @prefix lcsh_34: <http://lcsh.info/sh98004034#>.
27
+ @prefix lcsh_35: <http://lcsh.info/sh2006005417#>.
28
+ @prefix lcsh_36: <http://lcsh.info/sh85054133#>.
29
+ @prefix lcsh_37: <http://lcsh.info/sh85036222#>.
30
+ @prefix lcsh_38: <http://lcsh.info/sh85137519#>.
31
+ @prefix lcsh_39: <http://lcsh.info/sh85082181#>.
32
+ @prefix lcsh_40: <http://lcsh.info/sh85093229#>.
33
+ @prefix lcsh_41: <http://lcsh.info/sh85031123#>.
34
+ @prefix lcsh_42: <http://lcsh.info/sh85038555#>.
35
+ @prefix lcsh_43: <http://lcsh.info/sh85008822#>.
36
+ @prefix lcsh_44: <http://lcsh.info/sh85092418#>.
37
+ @prefix lcsh_45: <http://lcsh.info/sh85120387#>.
38
+ @prefix lcsh_46: <http://lcsh.info/sh85052327#>.
39
+ @prefix lcsh_47: <http://lcsh.info/sh85048025#>.
40
+ @prefix lcsh_48: <http://lcsh.info/sh85111827#>.
41
+ @prefix lcsh_49: <http://lcsh.info/sh85120145#>.
42
+ @prefix lcsh_50: <http://lcsh.info/sh85058939#>.
43
+ @prefix lcsh_51: <http://lcsh.info/sh85053967#>.
44
+ @prefix lcsh_52: <http://lcsh.info/sh85031124#>.
45
+ @prefix lcsh_53: <http://lcsh.info/sh85065806#>.
46
+ @prefix lcsh_54: <http://lcsh.info/sh85032235#>.
47
+ @prefix lcsh_55: <http://lcsh.info/sh85065324#>.
48
+ @prefix lcsh_56: <http://lcsh.info/sh85014083#>.
49
+ @prefix lcsh_57: <http://lcsh.info/sh2003001099#>.
50
+ @prefix lcsh_58: <http://lcsh.info/sh95005230#>.
51
+ @prefix lcsh_59: <http://lcsh.info/sh85147590#>.
52
+ @prefix lcsh_6: <http://lcsh.info/sh85082139#>.
53
+ @prefix lcsh_60: <http://lcsh.info/sh85031122#>.
54
+ @prefix lcsh_61: <http://lcsh.info/sh85075570#>.
55
+ @prefix lcsh_62: <http://lcsh.info/sh85014235#>.
56
+ @prefix lcsh_63: <http://lcsh.info/sh85051099#>.
57
+ @prefix lcsh_64: <http://lcsh.info/sh85056481#>.
58
+ @prefix lcsh_65: <http://lcsh.info/sh85107090#>.
59
+ @prefix lcsh_66: <http://lcsh.info/sh85040869#>.
60
+ @prefix lcsh_67: <http://lcsh.info/sh85009562#>.
61
+ @prefix lcsh_68: <http://lcsh.info/sh85051148#>.
62
+ @prefix lcsh_69: <http://lcsh.info/sh85067656#>.
63
+ @prefix lcsh_7: <http://lcsh.info/sh85148106#>.
64
+ @prefix lcsh_70: <http://lcsh.info/sh85010589#>.
65
+ @prefix lcsh_71: <http://lcsh.info/sh85142449#>.
66
+ @prefix lcsh_72: <http://lcsh.info/sh85082120#>.
67
+ @prefix lcsh_73: <http://lcsh.info/sh85083608#>.
68
+ @prefix lcsh_74: <http://lcsh.info/sh85142090#>.
69
+ @prefix lcsh_75: <http://lcsh.info/sh85029268#>.
70
+ @prefix lcsh_76: <http://lcsh.info/sh85135362#>.
71
+ @prefix lcsh_77: <http://lcsh.info/sh85099995#>.
72
+ @prefix lcsh_78: <http://lcsh.info/sh85118553#>.
73
+ @prefix lcsh_8: <http://lcsh.info/sh85028801#>.
74
+ @prefix lcsh_9: <http://lcsh.info/sh85040316#>.
75
+ @prefix dcterms: <http://purl.org/dc/terms/>.
76
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
77
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#>.
78
+
79
+ lcsh_6:concept a skos:Concept;
80
+ dcterms:LCC "QA";
81
+ dcterms:created "1986-02-11"^^<http://www.w3.org/2001/XMLSchema#date>;
82
+ dcterms:modified "1993-05-27T14:35:44"^^<http://www.w3.org/2001/XMLSchema#dateTime>;
83
+ skos:altLabel "Math"@en;
84
+ skos:broader lcsh_78:concept;
85
+ skos:inScheme <http://lcsh.info/>;
86
+ skos:narrower lcsh_57:concept,
87
+ lcsh_35:concept,
88
+ lcsh_31:concept,
89
+ lcsh_32:concept,
90
+ lcsh_21:concept,
91
+ lcsh_43:concept,
92
+ lcsh_67:concept,
93
+ lcsh_70:concept,
94
+ lcsh_56:concept,
95
+ lcsh_62:concept,
96
+ lcsh_15:concept,
97
+ lcsh_8:concept,
98
+ lcsh_75:concept,
99
+ lcsh_60:concept,
100
+ lcsh_41:concept,
101
+ lcsh_52:concept,
102
+ lcsh_54:concept,
103
+ lcsh_24:concept,
104
+ lcsh_37:concept,
105
+ lcsh_14:concept,
106
+ lcsh_42:concept,
107
+ lcsh_9:concept,
108
+ lcsh_66:concept,
109
+ lcsh_23:concept,
110
+ lcsh_13:concept,
111
+ lcsh_47:concept,
112
+ lcsh_19:concept,
113
+ lcsh_11:concept,
114
+ lcsh_63:concept,
115
+ lcsh_68:concept,
116
+ lcsh_46:concept,
117
+ lcsh_18:concept,
118
+ lcsh_51:concept,
119
+ lcsh_36:concept,
120
+ lcsh_64:concept,
121
+ lcsh_50:concept,
122
+ lcsh_30:concept,
123
+ lcsh_25:concept,
124
+ lcsh_55:concept,
125
+ lcsh_53:concept,
126
+ lcsh_27:concept,
127
+ lcsh_33:concept,
128
+ lcsh_69:concept,
129
+ lcsh_28:concept,
130
+ lcsh_61:concept,
131
+ lcsh_17:concept,
132
+ lcsh_72:concept,
133
+ lcsh_39:concept,
134
+ lcsh_10:concept,
135
+ lcsh_73:concept,
136
+ lcsh_16:concept,
137
+ lcsh_44:concept,
138
+ lcsh_12:concept,
139
+ lcsh_40:concept,
140
+ lcsh_77:concept,
141
+ lcsh_65:concept,
142
+ lcsh_26:concept,
143
+ lcsh_48:concept,
144
+ lcsh_49:concept,
145
+ lcsh_22:concept,
146
+ lcsh_45:concept,
147
+ lcsh_29:concept,
148
+ lcsh_20:concept,
149
+ lcsh_76:concept,
150
+ lcsh_38:concept,
151
+ lcsh_74:concept,
152
+ lcsh_71:concept,
153
+ lcsh_59:concept,
154
+ lcsh_7:concept,
155
+ lcsh_58:concept,
156
+ lcsh_34:concept;
157
+ skos:prefLabel "Mathematics"@en.