X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=doc%2Fsparql.xml;h=8889cc5da759749d8465b0b6a1bebecac43a948c;hb=6b479c913940c19b3c5148076ab52cd91cb378a0;hp=ba4eca7f8526e783ded7eca44ecdc2585f757e5e;hpb=e5b5ae2b4836f76d84aae25c0edf4312b761dae4;p=mp-sparql-moved-to-github.git
diff --git a/doc/sparql.xml b/doc/sparql.xml
index ba4eca7..8889cc5 100644
--- a/doc/sparql.xml
+++ b/doc/sparql.xml
@@ -77,6 +77,15 @@
+ <modifier/>
+
+
+ Optional section that allows you to add solution sequences or
+ modifiers.
+
+
+
+
@@ -89,7 +98,7 @@
- EXAMPLES
+ EXAMPLE
Configuration for database "Default" that allows searching works. Only
the field (use attribute) "bf.wtitle" is supported.
@@ -97,11 +106,10 @@
+ schema="sparql-results">
rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns
bf: http://bibframe.org/vocab/
- SELECT ?work ?wtitle
+
?work a bf:Work
?work bf:workTitle ?wt
?wt bf:titleValue ?wtitle
@@ -110,9 +118,123 @@
]]>
+ The matching is done by a simple case-sensitive substring match. There is
+ no deduplication, so if a work has two titles, we get two rows.
+ EXAMPLE
+
+ A more complex configuration for database "work". This could be included in
+ the same filter section as the "Default" db above.
+
+ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns
+ bf: http://bibframe.org/vocab/
+
+ ?work a bf:Work
+
+ OPTIONAL {
+ ?work bf:workTitle ?wt .
+ ?wt bf:titleValue ?wtitle }
+
+ OPTIONAL {
+ ?work bf:creator ?creator .
+ ?creator bf:label ?creatorlabel }
+
+ OPTIONAL {
+ ?work bf:subject ?subject .
+ ?subject bf:label ?subjectlabel }
+
+ ?wt bf:titleValue %v FILTER(contains(%v, %s))
+ ?creator bf:label %v FILTER(contains(%v, %s))
+ ?subject bf:label %v FILTER(contains(%v, %s))
+ {
+ ?work ?op1 ?child .
+ ?child ?op2 %v FILTER(contains(STR(%v), %s))
+ }
+
+ GROUP BY $work
+
+]]>
+
+
+
+ This returns one row for each work. Titles, authors, and subjects
+ are all optional. If they repeat, the repeated values are concatenated into
+ a single field, separated by semicolons. This is done by the GROUP_DIGEST
+ function that is specific to the Virtuoso back end.
+
+
+ This example supports use attributes 4 (title), 1003 (author), 21 (subject),
+ and 1016 (keyword) which matches any literal in a triplet that refers to the
+ work, so it works for the titleValue in the workTitle, as well as the label
+ in the subject, and what ever else there may be. Like the preceding example,
+ the matching is by a simple substring, case sensitive. A more realistic term
+ matching could be done with regular expressions, at the cost of some readability
+ portability, and performance.
+
+
+
+ EXAMPLE
+
+ Configuration for database "works". This uses CONSTRUCT to produce rdf.
+
+ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns
+ bf: http://bibframe.org/vocab/
+
+ ?work a bf:Work
+
+ ?work bf:workTitle ?wt
+ ?wt bf:titleValue ?wtitle
+ ?wt bf:titleValue %v FILTER(contains(%v, %s))
+ ?work bf:creator ?creator
+ ?creator bf:label ?creatorlabel
+ ?creator bf:label %v FILTER(contains(%v, %s))
+ ?work bf:subject ?subject
+ ?subject bf:label ?subjectlabel
+ ?subject bf:label %v FILTER(contains(%v, %s))
+
+ ]]>
+
+
+
+
+ EXAMPLE
+
+ Configuration for database "instance". Like "work" above this uses SELECT
+ to return row-based data, this time from the instances. This is not deduplicated,
+ so if an instance has two titles, we get two rows, and if it also has
+ two formats, we get four rows. The DISTINCT in the SELECT
+
+ rdf: http://www.w3.org/1999/02/22-rdf-syntax-ns
+ bf: http://bibframe.org/vocab/
+
+ ?instance a bf:Instance
+ ?instance bf:title ?title
+ ?instance bf:title %v FILTER(contains(%v, %s))
+ ?instance bf:format ?format
+ ?instance bf:format %s
+
+ ]]>
+
+
+
+
+
+
SEE ALSO