diff --git a/doc/example_rdfs/example_data/2010-04-16-ab_cutoff_300_contrast_20%.ttl b/doc/example_rdfs/example_data/2010-04-16-ab_cutoff_300_contrast_20%.ttl new file mode 100644 index 00000000..98408db7 --- /dev/null +++ b/doc/example_rdfs/example_data/2010-04-16-ab_cutoff_300_contrast_20%.ttl @@ -0,0 +1,516 @@ +@prefix odml: . +@prefix rdf: . +@prefix rdfs: . +@prefix xml: . +@prefix xsd: . + +odml:Hub odml:hasDocument odml:cd24b60f-1d5e-4040-9881-5e5a597baef7 . + + a rdf:Bag ; + rdf:li " Munich", + "Ludwig-Maximilian University" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "File" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Software" ; + odml:hasValue odml:ab7572bb-854c-467e-a908-352f112ef109 . + + a rdf:Bag ; + rdf:li "Good" . + + a rdf:Bag ; + rdf:li "16:35:51" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Immobilization" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "136.8" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Mode" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "P-unit" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "LocalAnaesthesia" ; + odml:hasValue odml:e33108e2-72cc-4833-a1e6-e5439df682f0 . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Firing Rate1" ; + odml:hasUnit "Hz" ; + odml:hasValue odml:e9417a2c-20ac-4f0d-99ab-5de3c36ef73d . + + a rdf:Bag ; + rdf:li "0.0" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Date" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "float" ; + odml:hasName "UpperCutoffFrequency" ; + odml:hasUnit "Hz" ; + odml:hasValue odml:adb90936-7e05-4a7b-bff2-ebe60fa1d6ba . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Lab" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "120.0" . + + a rdf:Bag ; + rdf:li "in vivo" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Address" ; + odml:hasValue odml:ee931e48-ee0b-474d-a59a-fa89b0b69443 . + + a rdf:Bag ; + rdf:li "Jan Benda" . + + a rdf:Bag ; + rdf:li 1e+01 . + + a odml:Section ; + odml:hasName "Cell" ; + odml:hasProperty , + , + , + , + odml:d6ca1018-ac58-4b63-a6a5-8c5ca28c7c99 ; + odml:hasType "Cell" . + + a rdf:Bag ; + rdf:li "Henriette Walz" . + + a odml:Section ; + odml:hasName "Subject" ; + odml:hasProperty , + , + , + , + ; + odml:hasType "Subject" . + + a rdf:Bag ; + rdf:li "13.0" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Time" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Folder" ; + odml:hasValue odml:a13e3cf0-1d76-420f-aa48-8da7278355c5 . + + a rdf:Bag ; + rdf:li "/home/efish/stimuli/whitenoise/gwn300Hz10s0.3.dat" . + + a rdf:Bag ; + rdf:li "Pancuronium bromide" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "P-Value1" ; + odml:hasValue . + + a odml:Section ; + odml:hasName "Setup" ; + odml:hasProperty , + , + , + , + , + , + odml:a76a3bab-695f-4e68-a88c-27eae1942576, + odml:eb0f32a8-8d54-402a-9023-1230229216b4 ; + odml:hasType "Setup" . + + a rdf:Bag ; + rdf:li "Apteronotus albifrons" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "LocalAnaesthetic" ; + odml:hasValue odml:f1f790f6-e72f-42a8-95a8-06dc28acfc36 . + + a odml:Section ; + odml:hasName "Stimulus" ; + odml:hasProperty , + , + , + , + , + , + odml:afbc3b09-1026-4fe3-844d-88733a725590, + odml:c4eb4dd6-3325-472b-84b4-616a9fca98c6, + odml:ca686128-b4a8-433f-8e47-011ef7cf30db, + odml:dd337c00-e453-4952-a3c6-eb4a5e7f8eb2 ; + odml:hasType "stimulus/white_noise" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Gender" ; + odml:hasValue odml:acb39fae-4a71-4d87-b06f-ab06991cb70c . + + a rdf:Bag ; + rdf:li "1003.4" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Type" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Department" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "CV" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Additional noise upper cutoff" ; + odml:hasUnit "Hz" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Location" ; + odml:hasValue odml:c8e610ef-0f50-4630-8c32-f6a7d49e5f13 . + + a rdf:Bag ; + rdf:li "20.0" . + + a rdf:Bag ; + rdf:li "Jan Benda" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Identifier" ; + odml:hasValue odml:aad9b7c9-7f6d-4a98-9ec6-bedc62edb9e0 . + + a rdf:Bag ; + rdf:li " LMU-Munich", + "Department Biology II" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Baseline rate" ; + odml:hasUnit "Hz" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "Jan Benda" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Transdermal amplitude" ; + odml:hasUnit "mV" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "CellType" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Additional noise lower cutoff" ; + odml:hasUnit "Hz" ; + odml:hasValue odml:d59a760f-12a9-4738-87ba-c1691d86cbc3 . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Size" ; + odml:hasUnit "cm" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "Acquisition" . + + a rdf:Bag ; + rdf:li "none" . + + a odml:Section ; + odml:hasName "Preparation" ; + odml:hasProperty , + , + , + , + odml:e01a58c5-51c9-4944-94da-6ffbb587ca3c, + odml:ee0db711-3f22-4de5-b699-f1acfc1e3a8c, + odml:f76074c7-c60d-4b7c-9b62-00d9d55e8d7e ; + odml:hasType "Preparation" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Recording quality" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "0.0" . + + a odml:Section ; + odml:hasName "Recording" ; + odml:hasProperty , + , + , + , + , + , + , + odml:c1747b35-e6b2-4b7f-80b9-cbead0243ce0, + odml:ca2f5e6b-3dd8-43b1-9741-94f00a42d8b8, + odml:d7b64566-73ea-43fc-9f5c-d6adb335e078, + odml:e9e8a0ab-7bff-43e4-9fa6-a3018c2002b4, + odml:eecba499-0e45-472e-8772-27b4aebabfcc ; + odml:hasType "Recording" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Species" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "0.202" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Additional noise" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "0.14" . + + a rdf:Bag ; + rdf:li "true" . + + a rdf:Bag ; + rdf:li "2010-04-16" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "University" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Depth" ; + odml:hasUnit "um" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Contrast" ; + odml:hasUnit "%" ; + odml:hasValue . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "EOD Frequency" ; + odml:hasUnit "Hz" ; + odml:hasValue . + + a rdf:Bag ; + rdf:li "0.9.6 (04/12/10)" . + + a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Recording duration" ; + odml:hasUnit "m" ; + odml:hasValue odml:b6665829-517c-4e1f-98bb-3440520c99ee . + + a rdf:Bag ; + rdf:li "1.82" . + +odml:a0427b00-0c00-446d-9a8e-4cbfc4bf3189 a rdf:Bag ; + rdf:li "metadata.xml" . + +odml:a13e3cf0-1d76-420f-aa48-8da7278355c5 a rdf:Bag ; + rdf:li "/home/efish/relacs/plugins/efish/2010-04-16-ab" . + +odml:a1625c83-8dff-464e-af87-d17c1004dc7b a rdf:Bag ; + rdf:li "2010-04-16-ab" . + +odml:a76a3bab-695f-4e68-a88c-27eae1942576 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Creator" ; + odml:hasValue . + +odml:aad9b7c9-7f6d-4a98-9ec6-bedc62edb9e0 a rdf:Bag ; + rdf:li "eFish-Setup" . + +odml:ab7572bb-854c-467e-a908-352f112ef109 a rdf:Bag ; + rdf:li "RELACS" . + +odml:acb39fae-4a71-4d87-b06f-ab06991cb70c a rdf:Bag ; + rdf:li "unknown" . + +odml:adb90936-7e05-4a7b-bff2-ebe60fa1d6ba a rdf:Bag ; + rdf:li 3e+02 . + +odml:afbc3b09-1026-4fe3-844d-88733a725590 a odml:Property ; + odml:hasDtype "float" ; + odml:hasName "Duration" ; + odml:hasUnit "s" ; + odml:hasValue . + +odml:b6665829-517c-4e1f-98bb-3440520c99ee a rdf:Bag ; + rdf:li "13.9" . + +odml:ba6da178-db8b-4dcb-b6d1-182bd12cf89c a odml:CellProperties ; + odml:hasName "Cell properties" ; + odml:hasProperty , + , + odml:bebd5743-79d0-4a57-8b96-ad48435103e1 ; + odml:hasType "Cell properties" . + +odml:bdde80d8-a944-485c-9fd2-2c3f96f871fa a rdf:Bag ; + rdf:li "1007.0" . + +odml:bebd5743-79d0-4a57-8b96-ad48435103e1 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "EOD Frequency" ; + odml:hasUnit "Hz" ; + odml:hasValue odml:bdde80d8-a944-485c-9fd2-2c3f96f871fa . + +odml:c1747b35-e6b2-4b7f-80b9-cbead0243ce0 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Comment" ; + odml:hasValue odml:e6bd7a4f-2205-4197-b334-61c9d4babf6c . + +odml:c4eb4dd6-3325-472b-84b4-616a9fca98c6 a odml:Property ; + odml:hasDtype "float" ; + odml:hasName "StandardDeviation" ; + odml:hasValue odml:d44d9c3f-53e2-4676-9ab1-4341ecddc3f6 . + +odml:c7c6cae0-64bb-4f0d-b852-37a8dc8d8983 a rdf:Bag ; + rdf:li "0.0" . + +odml:c8e610ef-0f50-4630-8c32-f6a7d49e5f13 a rdf:Bag ; + rdf:li "D01-043" . + +odml:c9156c75-4cf9-43b8-b1d5-57780e3651a0 a rdf:Bag ; + rdf:li "MS 222" . + +odml:ca2f5e6b-3dd8-43b1-9741-94f00a42d8b8 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Software version" ; + odml:hasValue . + +odml:ca686128-b4a8-433f-8e47-011ef7cf30db a odml:Property ; + odml:hasDtype "float" ; + odml:hasName "SampleRate" ; + odml:hasUnit "s" ; + odml:hasValue odml:d32e9dbf-c485-4d8d-90d6-a34ba02c9422 . + +odml:cd24b60f-1d5e-4040-9881-5e5a597baef7 a odml:Document ; + odml:hasAuthor "grewe" ; + odml:hasSection , + , + , + , + , + , + odml:ba6da178-db8b-4dcb-b6d1-182bd12cf89c . + +odml:d32e9dbf-c485-4d8d-90d6-a34ba02c9422 a rdf:Bag ; + rdf:li 1e-03 . + +odml:d44d9c3f-53e2-4676-9ab1-4341ecddc3f6 a rdf:Bag ; + rdf:li 3e-01 . + +odml:d59a760f-12a9-4738-87ba-c1691d86cbc3 a rdf:Bag ; + rdf:li "0.0" . + +odml:d6ca1018-ac58-4b63-a6a5-8c5ca28c7c99 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Structure" ; + odml:hasValue odml:fa67ea93-1640-4a2c-bc67-2915bb2955c9 . + +odml:d7b64566-73ea-43fc-9f5c-d6adb335e078 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Experimenter" ; + odml:hasValue . + +odml:dd337c00-e453-4952-a3c6-eb4a5e7f8eb2 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Additional noise contrast" ; + odml:hasUnit "%" ; + odml:hasValue odml:c7c6cae0-64bb-4f0d-b852-37a8dc8d8983 . + +odml:e01a58c5-51c9-4944-94da-6ffbb587ca3c a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Anaesthetic" ; + odml:hasValue odml:c9156c75-4cf9-43b8-b1d5-57780e3651a0 . + +odml:e33108e2-72cc-4833-a1e6-e5439df682f0 a rdf:Bag ; + rdf:li "true" . + +odml:e6bd7a4f-2205-4197-b334-61c9d4babf6c a rdf:Bag ; + rdf:li "weak response" . + +odml:e9417a2c-20ac-4f0d-99ab-5de3c36ef73d a rdf:Bag ; + rdf:li "136.0" . + +odml:e9e8a0ab-7bff-43e4-9fa6-a3018c2002b4 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Name" ; + odml:hasValue odml:a1625c83-8dff-464e-af87-d17c1004dc7b . + +odml:eb0f32a8-8d54-402a-9023-1230229216b4 a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Maintainer" ; + odml:hasValue . + +odml:ee0db711-3f22-4de5-b699-f1acfc1e3a8c a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "AnaestheticDose" ; + odml:hasUnit "mg" ; + odml:hasValue . + +odml:ee931e48-ee0b-474d-a59a-fa89b0b69443 a rdf:Bag ; + rdf:li " 82152 Planegg-Martinsried", + " Germany", + "Grosshaderner Str. 2" . + +odml:eecba499-0e45-472e-8772-27b4aebabfcc a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "File" ; + odml:hasValue odml:a0427b00-0c00-446d-9a8e-4cbfc4bf3189 . + +odml:f1f790f6-e72f-42a8-95a8-06dc28acfc36 a rdf:Bag ; + rdf:li "Lidocaine" . + +odml:f76074c7-c60d-4b7c-9b62-00d9d55e8d7e a odml:Property ; + odml:hasDtype "string" ; + odml:hasName "Anaesthesia" ; + odml:hasValue . + +odml:fa67ea93-1640-4a2c-bc67-2915bb2955c9 a rdf:Bag ; + rdf:li "Nerve" . + diff --git a/doc/example_rdfs/sparql_example_queries.py b/doc/example_rdfs/sparql_example_queries.py new file mode 100644 index 00000000..5c37b256 --- /dev/null +++ b/doc/example_rdfs/sparql_example_queries.py @@ -0,0 +1,86 @@ +from rdflib import Graph, Namespace, RDF +from rdflib.plugins.sparql import prepareQuery + +resource = "./python-odml/doc/example_rdfs/example_data/2010-04-16-ab_cutoff_300_contrast_20%.ttl" + +g = Graph() +g.parse(resource, format='turtle') +# select d.* from dataset d, stimulus s where s.contrast = '20%' +q1 = prepareQuery("""SELECT * + WHERE { + ?d rdf:type odml:Document . + ?d odml:hasSection ?s . + ?s rdf:type odml:Section . + ?s odml:hasName "Stimulus" . + ?s odml:hasProperty ?p . + ?p odml:hasName "Contrast" . + ?p odml:hasValue ?v . + ?p odml:hasUnit "%" . + ?v rdf:type rdf:Bag . + ?v rdf:li "20.0" . + }""", initNs={"odml": Namespace("https://g-node.org/projects/odml-rdf#"), + "rdf": RDF}) + +g = Graph() +g.parse(resource, format='turtle') +# select d.* from dataset d, stimulus s, cell c where s.contrast = '20%' and c.celltype='P-unit' +q2 = prepareQuery("""SELECT * + WHERE { + ?d rdf:type odml:Document . + ?d odml:hasSection ?s . + ?s rdf:type odml:Section . + ?s odml:hasName "Stimulus" . + ?s odml:hasProperty ?p . + + ?p odml:hasName "Contrast" . + ?p odml:hasValue ?v . + ?p odml:hasUnit "%" . + ?v rdf:type rdf:Bag . + ?v rdf:li "20.0" . + + + ?d odml:hasSection ?s1 . + ?s1 odml:hasName "Cell" . + ?s1 odml:hasProperty ?p1 . + + ?p1 odml:hasName "CellType" . + ?p1 odml:hasValue ?v1 . + ?v1 rdf:li "P-unit" . + }""", initNs={"odml": Namespace("https://g-node.org/projects/odml-rdf#"), + "rdf": RDF}) + +# select d.* from dataset d, CellProperties s, EOD Frequency c where c.unit = 'Hz' +g = Graph() +g.parse(resource, format='turtle') +q3 = prepareQuery("""SELECT * + WHERE { + ?d rdf:type odml:Document . + ?d odml:hasSection ?s . + ?s rdf:type odml:CellProperties . + ?s odml:hasProperty ?p . + + ?p odml:hasName "EOD Frequency" . + ?p odml:hasValue ?v . + ?p odml:hasUnit "Hz" . + ?v rdf:type rdf:Bag . + ?v rdf:li ?value . + }""", initNs={"odml": Namespace("https://g-node.org/projects/odml-rdf#"), + "rdf": RDF}) + +print("q1") +for row in g.query(q1): + print("Doc: {0}, Sec: {1}, \n" + "Prop: {2}, Bag: {3}".format(row.d, row.s, row.p, row.v)) + +print("q2") +for row in g.query(q2): + print("Doc: {0}, Sec: {1}, \n" + "Prop: {2}, Bag: {3}".format(row.d, row.s, row.p, row.v)) + print("Doc: {0}, Sec: {1}, \n" + "Prop: {2}, Bag: {3}".format(row.d, row.s1, row.p1, row.v1)) + +print("q3") +for row in g.query(q3): + print("Doc: {0}, Sec: {1}, \n" + "Prop: {2}, Bag: {3} \n" + "Value: {4}".format(row.d, row.s, row.p, row.v, row.value))