stardog-manual-4.0.5
TRANSCRIPT
-
8/17/2019 stardog-manual-4.0.5
1/263
Stardog 4: The
ManualI)/-*d0c/$*)D*c0()/a/$*)
D*2)'*ad$)" 9 S0++*-/
C*)/-$b0/$)"
R*ad(a+
E)/-+-$. P-($0( S0++*-/
Ra'/$( S0++*-/
P-$1a/ Ma1) R+*.$/*-$.
P-$1a/ D*c&- R+*.$/*-$.
P-$*-$/4 B0" F$3.
P-$*-$/4 Fa/0- R'a..
Q0$c& S/a-/ G0$d
R,0$-()/.
I).c0-$/4
U+"-ad$)" /* S/a-d*" >
L$)03 a)d OSX
W$)d*2.
>:?; Fb-0a-4
-
8/17/2019 stardog-manual-4.0.5
2/263
U.$)" S/a-d*"
Q0-4$)"
T-a1-.$)"
U+da/$)"
V-.$*)$)"E3+*-/$)"
Sa-c#$)"
Ob!0.ca/$)"
B-*2.$)"
Na(.+ac$)"
CLI O)'$) H'+ a&a Ma) Pa".
Ad($)$./-$)" S/a-d*"
C*((a)d L$) I)/-!ac
S-1- Ad($)
Da/aba. Ad($)
Ca+ac$/4 P'a))$)"
U.$)" S/a-d*" *) W$)d*2.
Sc0-$/4
R.*0-c.
P-($..$*).
D!a0'/ Sc0-$/4 C*)!$"0-a/$*)
Na(d G-a+# Sc0-$/4
E)/-+-$. A0/#)/$ca/$*)
Ma)a"$)" S/a-d*" Sc0-'4
D+'*4$)" S/a-d*" Sc0-'4
H$"# A1a$'ab$'$/4 C'0./-
G0a-a)/.S$)"' S-1- M$"-a/$*)
C*)!$"0-a/$*)
I)./a''a/$*)
C*)!$"0-a/$*) I..0.
Ma)a"()/
-
8/17/2019 stardog-manual-4.0.5
3/263
G-a+# Sa-c#
I)d3$)" S/-a/"4
Ma$)/a$)$)" Sa-c# I)d3.
I)/"-a/$*) 2$/# SPARQL
Sa-c# S4)/a3
OWL 8 R0' Ra.*)$)"
Ra.*)$)" T4+.
U.$)" Ra.*)$)"
E3+'a$)$)" Ra.*)$)" R.0'/.
U.-d!$)d R0' Ra.*)$)"
S+c$a' P-d$ca/.
Q0-4 R2-$/$)"
Sa( A. Ra.*)$)"
R(*1$)" U)2a)/d I)!-)c.
P-!*-(a)c H$)/.
N*/ S$)" E3+c/d R.0'/.
K)*2) I..0.
T-($)*'*"4
Va'$da/$)" C*)./-a$)/.
G//$)" S/a-/d 2$/# ICV
ICV 9 OWL < Ra.*)$)"
U.$)" ICV !-*( CLI
ICV G0a-d M*d
E3+'a$)$)" ICV V$*'a/$*).
R+a$-$)" ICV V$*'a/$*).
ICV E3a(+'.
U.$)" ICV P-*"-a((a/$ca''4
T-($)*'*"4
V$-/0a' G-a+#.
S0++*-/d RDBMS.
Ma)a"$)" V$-/0a' G-a+#.
Q0-4$)" V$-/0a' G-a+#.
-
8/17/2019 stardog-manual-4.0.5
4/263
V$-/0a' G-a+# Sc0-$/4
Ma/-$a'$5$)" V$-/0a' G-a+#.
CSV a. V$-/0a' G-a+#
S/a-d*" Ma++$)" S4)/a3
P-*+-/4 G-a+#.M*/$1a/$*) 9 I(+'()/a/$*)
S/a-d*" 9 G-('$) C*).*'
S/a-d*" 9 G-('$) S-1-
G*.+a/$a' Q0-4
E)ab'$)" G*.+a/$a' S0++*-/
G*.+a/$a' Da/a
SPARQL I)/"-a/$*)E)#a)cd P*'4"*).
P-*"-a(($)" S/a-d*"
Sa(+' C*d
Ja1a P-*"-a(($)"
SNARL P-*/*c*' B07-.
E3a(+'.
U.$)" S.a(
U.$)" J)a
C'$)/S-1- S/a-d*"
C*))c/$*) P**'$)"
API D+-ca/$*)
U.$)" Ma1)
N/2*-& P-*"-a(($)"
SPARQL P-*/*c*'S/a-d*" R.*0-c.
Ad($) R.*0-c.
Ja1a.c-$+/ P-*"-a(($)"
./a-d*"%.
-
8/17/2019 stardog-manual-4.0.5
5/263
C'*%0- P-*"-a(($)"
I)./a''a/$*)
O1-1$2
API O1-1$2
E3a(+'.
N/ P-*"-a(($)"
d*/N/RDF D*c0()/a/$*)
S+-$)" P-*"-a(($)"
O1-1$2
Ba.$c S+-$)"
S+-$)" Ba/c#
G-**14 P-*"-a(($)"
O1-1$2
E3a(+'.
SNARL M$"-a/$*) G0$d
S/a-d*" >
S/a-d*" =
S/a-d*" <
U)d-./a)d$)" S/a-d*"
F-,0)/'4 A.&d Q0./$*).
B)c#(a-& R.0'/.
C*(+a/$b$'$/4 P*'$c$.
K)*2) I..0.
G'*..a-4
A++)d$3SPARQL Q0-4 F0)c/$*).
M$'./*).
-
8/17/2019 stardog-manual-4.0.5
6/263
W#a/. N2 $)S/a-d*" ;
V$-/0a' G-a+#.
T$)&-P*+= G-('$) 9 P-*+-/4 G-a+#.
G*.+a/$a' Q0-4
RDF Na(.+ac. *+/$*)a'
-,0$-. Ja1a
S/a-d*" > API C#a)".
RDF ;;
Q0$c& S/a-/ G0$d
I)/-*d0c/$*)RDF "-a+# da/a (*d' SPARQL
+-*+-/4 "-a+# (*d' G-('$) "-a+# /-a1-.a' 'a)"0a"
OWL <
RELEASE NOTES
($'./*).
http://www.w3.org/RDF/http://www.w3.org/TR/sparql11-overview/https://github.com/tinkerpop/blueprints/wiki/Property-Graph-Modelhttp://tinkerpop.incubator.apache.org/docs/3.0.2-incubating/#_on_gremlin_language_variantshttp://www.w3.org/TR/owl2-overview/http://docs.stardog.com/release-notes/http://docs.stardog.com/release-notes/http://www.w3.org/TR/owl2-overview/http://tinkerpop.incubator.apache.org/docs/3.0.2-incubating/#_on_gremlin_language_variantshttps://github.com/tinkerpop/blueprints/wiki/Property-Graph-Modelhttp://www.w3.org/TR/sparql11-overview/http://www.w3.org/RDF/
-
8/17/2019 stardog-manual-4.0.5
7/263
D*c0()/a/$*)
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
✓ ✓
D*2)'*ad$)"7 S0++*-/
D*2)'*ad S/a-d*" .0++*-/ !*-0(
G$//- c#a/
C*)/-$b0/$)"
./a-d*"
d*c. ./a-d*"%. ./a-d*""-**14 ./a-d*".+-$)" ./a-d*"-b ./a-d*"c'%
;d$/$)" /#. d*c. *) G$/#0b
http://docs.stardog.com/stardog-manual-4.0.5.pdfhttp://docs.stardog.com/4.0.3http://docs.stardog.com/stardog-manual-4.0.3.pdfhttp://docs.stardog.com/4.0.2http://docs.stardog.com/stardog-manual-4.0.2.pdfhttp://docs.stardog.com/4.0.1http://docs.stardog.com/stardog-manual-4.0.1.pdfhttp://docs.stardog.com/4.0http://docs.stardog.com/stardog-manual-4.0.pdfhttp://docs.stardog.com/3.1.4http://docs.stardog.com/stardog-manual-3.1.4.pdfhttp://stardog.com/#downloadhttps://groups.google.com/a/clarkparsia.com/d/forum/stardoghttps://gitter.im/Complexible/stardog-exampleshttps://github.com/complexible/stardog-docshttps://github.com/complexible/stardog-docshttps://github.com/complexible/stardog.jshttps://github.com/complexible/stardog-groovyhttps://github.com/complexible/stardog-springhttps://github.com/antoniogarrote/stardog-rbhttps://github.com/complexible/stardog-cljhttps://github.com/Complexible/stardog-docs/tree/master/src/dochttps://github.com/Complexible/stardog-docs/tree/master/src/dochttps://github.com/complexible/stardog-cljhttps://github.com/antoniogarrote/stardog-rbhttps://github.com/complexible/stardog-springhttps://github.com/complexible/stardog-groovyhttps://github.com/complexible/stardog.jshttps://github.com/complexible/stardog-docshttps://github.com/complexible/stardog-docshttps://gitter.im/Complexible/stardog-exampleshttps://groups.google.com/a/clarkparsia.com/d/forum/stardoghttp://stardog.com/#downloadhttp://docs.stardog.com/stardog-manual-3.1.4.pdfhttp://docs.stardog.com/3.1.4http://docs.stardog.com/stardog-manual-4.0.pdfhttp://docs.stardog.com/4.0http://docs.stardog.com/stardog-manual-4.0.1.pdfhttp://docs.stardog.com/4.0.1http://docs.stardog.com/stardog-manual-4.0.2.pdfhttp://docs.stardog.com/4.0.2http://docs.stardog.com/stardog-manual-4.0.3.pdfhttp://docs.stardog.com/4.0.3http://docs.stardog.com/stardog-manual-4.0.5.pdf
-
8/17/2019 stardog-manual-4.0.5
8/263
R*ad(a+
E)/-+-$. P-($0( S0++*-/
E(a$'
Ra'/$( S0++*-/
P-$1a/Ma1)R+*.$/*-$.
U.$)" Ma1)
-
8/17/2019 stardog-manual-4.0.5
9/263
-
8/17/2019 stardog-manual-4.0.5
10/263
Q0$c& S/a-/ G0$d
R,0$-()/.
sun.misc.Unsafe
I).c0-$/4
admin admin
Sc0-$/4
U+"-ad$)" /*S/a-d*" ;
S/a-d*" > SNARL
M$"-a/$*) G0$d
L$)03 a)d OSX
$ export STARDOG_HOME=/data/stardog
-
8/17/2019 stardog-manual-4.0.5
11/263
STARDOG_HOME user.dir
0+"-ad +-*c.. STARDOG_HOME
STARDOG_HOME
STARDOG_HOME
stardog-license-key.bin
stardog-license-key.bin
stardog-license-key.bin STARDOG_HOME
<
#//+'*ca'#*./?
-
8/17/2019 stardog-manual-4.0.5
12/263
W$)d*2.
cmd
stardog-license-key.bin
/B
stardog-license-key.bin
stardog-license-key.bin STARDOG_HOME
=
> set STARDOG_HOME=C:\data\stardog
> COPY /B stardog-license-key.bin %STARDOG_HOME%
> stardog-admin.bat server start
> stardog-admin.bat db create -n myDB data.ttl
> stardog.bat query myDB "SELECT DISTINCT ?s WHERE { ?s ?p ?o } LIMIT 10"
-
8/17/2019 stardog-manual-4.0.5
13/263
#//+'*ca'#*./?
-
8/17/2019 stardog-manual-4.0.5
14/263
Q0-4 F0)c/$*).
SPARQL Q0-4 F0)c/$*).
Fd-a/dQ0-$.
SERVICE>
SERVICE
?serviceURL
Service
http://:/{db}/query
HTTPA0/#)/$ca/$*)
SERVICE
+a..2*-d !$'
services.sdpass STARDOG_HOME Service
Service
Q0-4$)"RDBMS1$a V$-/0a' G-a+#.
?
http://www.w3.org/TR/sparql11-federated-query/http://www.w3.org/TR/sparql11-federated-query/
-
8/17/2019 stardog-manual-4.0.5
15/263
V$-/0a' G-a+#.
Q0-4$)"G*.+a/$a' Da/a
G*.+a/$a' Q0-4
T-a1-.$)"
G-($) C*).*'
U+da/$)"
SPARQLU+da/
INSERT DELETE
PREFIX dc:
PREFIX ns:
INSERT DATA
{ GRAPH { ns:price 42 } }
-
8/17/2019 stardog-manual-4.0.5
16/263
WHERE
@
Add$)"Da/a2$/#/#CLI
C-a/$)" a Da/aba.
add
-f --format
add
PREFIX dc:
DELETE DATA
{
dc:title "David Copperfield" ;
dc:creator "Edmund Wells" .
}
PREFIX foaf:
WITH DELETE { ?person foaf: givenName 'Bill' }
INSERT { ?person foaf: givenName 'William' }
WHERE
{ ?person foaf: givenName 'Bill' }
$ stardog data add myDatabase 1.rdf 2.rdf 3.rdf
http://docs.stardog.com/man/data-add.htmlhttp://docs.stardog.com/man/data-add.html
-
8/17/2019 stardog-manual-4.0.5
17/263
--named-graph -g
R(*1$)"Da/a2$/# /# CLI
remove
http://foo myDatabase
1.rdf myDatabase
2.rdf 3.rdf http://foo
myDatabase
H*2S/a-d*"Ha)d'. RDFPa-.$)"
strict.parsing c*)!$"0-a/$*) *+/$*)
$ stardog data remove -g http://foo myDatabase
$ stardog data remove myDatabase 1.rdf
$ stardog data remove -g http://foo -f TURTLE myDatabase 2.rdf 3.rdf
http://docs.stardog.com/man/data-remove.htmlhttp://docs.stardog.com/man/data-remove.html
-
8/17/2019 stardog-manual-4.0.5
18/263
"2.5"^^xsd:int
V-.$*)$)"
/# ./a-d*"3a(+'. -+*
versioning.enabled
stardog-admin metadata set
Ma) Pa".
C*(($//$)"C#a)".
data
add/remove commit
$ stardog-admin db create -o versioning.enabled=true -n myDb
https://github.com/Complexible/stardog-examples/blob/master/examples/cli/versioning/README.mdhttps://github.com/Complexible/stardog-examples/blob/master/examples/cli/versioning/README.md
-
8/17/2019 stardog-manual-4.0.5
19/263
data add data remove query
V$2$)" R1$.$*).
--after --before --committer
R1-/$)"R1$.$*).
V$2$)"D$6.
$ stardog vcs commit --add add_file1.ttl add_file2.ttl --remove remove_file.ttl -m
"This is an example commit" myDb
$ stardog vcs commit --query update.sparql -m "This is another commit" myDb
$ stardog vcs list myDb
$ stardog vcs list --committer userName myDb
$ stardog vcs revert myDb
$ stardog vcs revert myDb de44369d-cc7b-4244-a3fb-3f6e271420b0
-
8/17/2019 stardog-manual-4.0.5
20/263
U.$)"Ta".
Q0-4$)"/#R1$.$*) H$./*-4
E3+*-/$)"
export
DEFAULT ALL --named-graph
N-TRIPLES, RDF/XML, TURTLE, TRIG N-TRIPLES
TRIG
$ stardog vcs diff myDb
$ stardog vcs diff myDb de44369d-cc7b-4244-a3fb-3f6e271420b0
$ stardog vcs tag --list myDb
$ stardog vcs query myDb 'SELECT...'
http://docs.stardog.com/man/data-export.htmlhttp://docs.stardog.com/man/data-export.html
-
8/17/2019 stardog-manual-4.0.5
21/263
Sa-c#$)"
Ma)a"$)" Sa-c#
Sa-c#$)" 2$/# /# C*((a)d L$)
search (a) +a"
$ stardog data export --format TURTLE myDatabase myDatabase_output.ttl
$ stardog data export --named-graph http://example.org/context myDatabase
myDatabase_output.nt
$ stardog help query search
$ stardog query search -q "html" -l 10 catalog
Index Score Hit
====================
0 6.422 urn:x-domain:oreilly.com:product:9780596527402.IP1 6.422 urn:x-domain:oreilly.com:product:9780596003166.IP
2 6.422 urn:x-domain:oreilly.com:product:9781565924949.IP
3 6.422 urn:x-domain:oreilly.com:product:9780596002251.IP
4 6.422 urn:x-domain:oreilly.com:product:9780596101978.IP
5 6.422 urn:x-domain:oreilly.com:product:9780596154066.IP
6 6.422 urn:x-domain:oreilly.com:product:9780596157616.IP
http://docs.stardog.com/man/query-search.htmlhttp://docs.stardog.com/man/query-search.htmlhttp://docs.stardog.com/man/query-search.html
-
8/17/2019 stardog-manual-4.0.5
22/263
G-a+# Sa-c#
Ob!0.ca/$)"
export
RDF RDFS OWL
./a-d*"3a(+'. G$/#0b -+*
7 6.422 urn:x-domain:oreilly.com:product:9780596805876.IP
8 6.422 urn:x-domain:oreilly.com:product:9780596527273.IP
9 6.422 urn:x-domain:oreilly.com:product:9780596002961.IP
$ stardog data obfuscate myDatabase obfDatabase.ttl
$ stardog data obfuscate --config obfConfig.ttl myDatabase obfDatabase.ttl
https://github.com/Complexible/stardog-examples/blob/master/config/obfuscation.ttl:https://github.com/Complexible/stardog-examples/blob/master/config/obfuscation.ttl:
-
8/17/2019 stardog-manual-4.0.5
23/263
B-*2.$)"
http://foo:5820 foo
A Sc-).#*/ T*0-…
d*2)'*ad
$ stardog query obfuscate --config obfConfig.ttl myDatabase myQuery.sparql >
obfQuery.ttl
http://foo:5820/http://stardog.com/http://stardog.com/http://foo:5820/
-
8/17/2019 stardog-manual-4.0.5
24/263
WbC*).*'
-
8/17/2019 stardog-manual-4.0.5
25/263
B-*2.$)" /#G-a+#
-
8/17/2019 stardog-manual-4.0.5
26/263
Ma)a"$)"a Da/aba.
-
8/17/2019 stardog-manual-4.0.5
27/263
Sa-c#$)"/#G-a+#
Na(.+ac$)"
Na(.+ac P-!$3 B$)d$)".
-
8/17/2019 stardog-manual-4.0.5
28/263
http://api.stardog.com/
:Alice a :Person ;
:knows :Bob .
$ stardog-admin db create -n mydb data.ttl
$ stardog query mydb "SELECT * { ?person a :Person }"
+--------+
| person |
+--------+| :Alice |
+--------+
Query returned 1 results inin 00: 00: 00.111
$ stardog data export mydb
@prefix : .
@prefix owl: .
@prefix rdf: .
http://api.stardog.com/http://api.stardog.com/
-
8/17/2019 stardog-manual-4.0.5
29/263
http://docs.stardog.com/man/query-status.htmlhttp://docs.stardog.com/man/query-list.htmlhttp://docs.stardog.com/man/query-kill.htmlhttp://docs.stardog.com/man/metadata-set.htmlhttp://docs.stardog.com/man/metadata-get.htmlhttp://docs.stardog.com/man/license-info.htmlhttp://docs.stardog.com/man/icv-remove.htmlhttp://docs.stardog.com/man/icv-drop.htmlhttp://docs.stardog.com/man/icv-add.htmlhttp://docs.stardog.com/man/db-status.htmlhttp://docs.stardog.com/man/db-restore.htmlhttp://docs.stardog.com/man/db-repair.htmlhttp://docs.stardog.com/man/db-optimize.htmlhttp://docs.stardog.com/man/db-online.htmlhttp://docs.stardog.com/man/db-online.htmlhttp://docs.stardog.com/man/db-offline.htmlhttp://docs.stardog.com/man/db-migrate.htmlhttp://docs.stardog.com/man/db-list.htmlhttp://docs.stardog.com/man/db-drop.htmlhttp://docs.stardog.com/man/db-create.htmlhttp://docs.stardog.com/man/db-copy.htmlhttp://docs.stardog.com/man/db-backup.htmlhttp://docs.stardog.com/man/cluster-zkstop.htmlhttp://docs.stardog.com/man/cluster-zkstart.htmlhttp://docs.stardog.com/man/cluster-proxystop.htmlhttp://docs.stardog.com/man/cluster-proxystart.htmlhttp://docs.stardog.com/man/cluster-info.htmlhttp://docs.stardog.com/man/cluster-generate.htmlhttp://docs.stardog.com/man/vcs-tag.htmlhttp://docs.stardog.com/man/vcs-revert.htmlhttp://docs.stardog.com/man/vcs-query.htmlhttp://docs.stardog.com/man/vcs-list.htmlhttp://docs.stardog.com/man/vcs-diff.htmlhttp://docs.stardog.com/man/vcs-commit.htmlhttp://docs.stardog.com/man/reasoning-undo.htmlhttp://docs.stardog.com/man/reasoning-schema.htmlhttp://docs.stardog.com/man/reasoning-explain.htmlhttp://docs.stardog.com/man/reasoning-consistency.htmlhttp://docs.stardog.com/man/query-search.htmlhttp://docs.stardog.com/man/query-obfuscate.htmlhttp://docs.stardog.com/man/query-explain.htmlhttp://docs.stardog.com/man/query-execute.htmlhttp://docs.stardog.com/man/namespace-remove.htmlhttp://docs.stardog.com/man/namespace-list.htmlhttp://docs.stardog.com/man/namespace-import.htmlhttp://docs.stardog.com/man/namespace-add.htmlhttp://docs.stardog.com/man/icv-validate.htmlhttp://docs.stardog.com/man/icv-fix.htmlhttp://docs.stardog.com/man/icv-export.htmlhttp://docs.stardog.com/man/icv-explain.htmlhttp://docs.stardog.com/man/icv-convert.htmlhttp://docs.stardog.com/man/data-size.htmlhttp://docs.stardog.com/man/data-remove.htmlhttp://docs.stardog.com/man/data-obfuscate.htmlhttp://docs.stardog.com/man/data-export.htmlhttp://docs.stardog.com/man/data-add.html
-
8/17/2019 stardog-manual-4.0.5
30/263
role add role grant role list role permission role remove role revoke
server start server status server stop
user add user addrole user disable user enable user grant user list
user passwd user permission user remove user removerole user revoke
virtual add virtual import virtual list virtual mappings virtual
options virtual remove
I)./a''$)"Ma)Pa". L*ca''4
Ad($)$./-$)" S/a-d*"
Sc0-$/4
C*((a)dL$) I)/-!ac
stardog-admin
stardog
$ cp docs/man/man1/* /usr/local/share/man1
$ cp docs/man/man8/* /usr/local/share/man8$ mandb
$ man stardog-admin-server-start
http://docs.stardog.com/man/role-add.htmlhttp://docs.stardog.com/man/role-grant.htmlhttp://docs.stardog.com/man/role-list.htmlhttp://docs.stardog.com/man/role-permission.htmlhttp://docs.stardog.com/man/role-remove.htmlhttp://docs.stardog.com/man/role-revoke.htmlhttp://docs.stardog.com/man/server-start.htmlhttp://docs.stardog.com/man/server-status.htmlhttp://docs.stardog.com/man/server-stop.htmlhttp://docs.stardog.com/man/user-add.htmlhttp://docs.stardog.com/man/user-addrole.htmlhttp://docs.stardog.com/man/user-disable.htmlhttp://docs.stardog.com/man/user-enable.htmlhttp://docs.stardog.com/man/user-grant.htmlhttp://docs.stardog.com/man/user-list.htmlhttp://docs.stardog.com/man/user-passwd.htmlhttp://docs.stardog.com/man/user-permission.htmlhttp://docs.stardog.com/man/user-remove.htmlhttp://docs.stardog.com/man/user-removerole.htmlhttp://docs.stardog.com/man/user-revoke.htmlhttp://docs.stardog.com/man/virtual-add.htmlhttp://docs.stardog.com/man/virtual-import.htmlhttp://docs.stardog.com/man/virtual-list.htmlhttp://docs.stardog.com/man/virtual-mappings.htmlhttp://docs.stardog.com/man/virtual-options.htmlhttp://docs.stardog.com/man/virtual-options.htmlhttp://docs.stardog.com/man/virtual-remove.htmlhttp://docs.stardog.com/man/virtual-remove.htmlhttp://docs.stardog.com/man/virtual-options.htmlhttp://docs.stardog.com/man/virtual-options.htmlhttp://docs.stardog.com/man/virtual-mappings.htmlhttp://docs.stardog.com/man/virtual-list.htmlhttp://docs.stardog.com/man/virtual-import.htmlhttp://docs.stardog.com/man/virtual-add.htmlhttp://docs.stardog.com/man/user-revoke.htmlhttp://docs.stardog.com/man/user-removerole.htmlhttp://docs.stardog.com/man/user-remove.htmlhttp://docs.stardog.com/man/user-permission.htmlhttp://docs.stardog.com/man/user-passwd.htmlhttp://docs.stardog.com/man/user-list.htmlhttp://docs.stardog.com/man/user-grant.htmlhttp://docs.stardog.com/man/user-enable.htmlhttp://docs.stardog.com/man/user-disable.htmlhttp://docs.stardog.com/man/user-addrole.htmlhttp://docs.stardog.com/man/user-add.htmlhttp://docs.stardog.com/man/server-stop.htmlhttp://docs.stardog.com/man/server-status.htmlhttp://docs.stardog.com/man/server-start.htmlhttp://docs.stardog.com/man/role-revoke.htmlhttp://docs.stardog.com/man/role-remove.htmlhttp://docs.stardog.com/man/role-permission.htmlhttp://docs.stardog.com/man/role-list.htmlhttp://docs.stardog.com/man/role-grant.htmlhttp://docs.stardog.com/man/role-add.html
-
8/17/2019 stardog-manual-4.0.5
31/263
H'+
Sc0-$/4 C*).$d-a/$*).
stardog-
admin
stardog
stardog-admin
Sc0-$/4
stardog help
$ stardog-admin help
$ stardog
$ stardog-admin
-
8/17/2019 stardog-manual-4.0.5
32/263
C*((a)d G-*0+.
(a) +a".
$ stardog help [command_group_name]
usage: stardog [ ]
The most commonly used stardog commands are:
data Commands which can modify or dump the contents of a database
helphelp Display helphelp information
icv Commands forfor working with with Stardog Integrity Constraint Constraint support
namespace Commands which work work with with the namespaces defined forfor a database database
queryquery Commands which queryquery a Stardog database database
-
8/17/2019 stardog-manual-4.0.5
33/263
stardog-admin
A0/*c*(+'/
bash
H*(b-2
`.bash\_profile
reasoning Commands which useuse the reasoning capabilities of of a Stardog database database
version version Prints information about this version version of of Stardog
See 'stardog help' forfor more information on on a specific command.
$ stardog help query execute
$ stardog reasoning consistency -u myUsername -p myPassword -r myDB
$ stardog-admin db migrate -u myUsername -p myPassword myDb
$ brew install bash-completion
ifif [ -f `brew --prefix`/etc/bash_completion ]; thenthen
. `brew --prefix`/etc/bash_completion
fifi
-
8/17/2019 stardog-manual-4.0.5
34/263
MacP*-/.
.bash\_profile
Ub0)/0
Fd*-a
A'' P'a/!*-(.
stardog-completion.sh
bash\_completion.d /etc/bash_completion.d, /usr/local/
etc/bash_completion.d or ~/bash_completion.d.
.bash_profile
$ sudo port install bash-completion
ifif [ -f /opt/local/etc/bash_completion ]; thenthen
. /opt/local/etc/bash_completion
fifi
$ sudo apt-get install bash-completion
$ sudo yum install bash-completion
source ~/.stardog-completion.sh
-
8/17/2019 stardog-manual-4.0.5
35/263
-
8/17/2019 stardog-manual-4.0.5
36/263
E3a(+' C*))c/$*)S/-$)".
connectionOptions ; =
S-1-Ad($)
U+"-ad$)"S/a-d*"S-1-
Q0$c& S/a-/ G0$d
STARDOG_HOME
STARDOG_HOME;:
STARDOG_HOME
{scheme}{machineName}:{port}/{databaseName};{connectionOptions}
snarl://server/billion-triples-punk
http://localhost:5000/myDatabase
http://169.175.100.5:1111/myOtherDatabase;reasoning=true
snarl://stardog:8888/the_database snarl://localhost:1024/db1;reasoning=true
-
8/17/2019 stardog-manual-4.0.5
37/263
--home
HTTP7 SNARL S-1- U)$!$ca/$*)
--server
stardog-admin
--server -n
S-1- Sc0-$/4
Sc0-$/4
C*)!$"0-$)"S/a-d*" S-1-
Da/aba. Ad($)
stardog.home
STARDOG_HOME
stardog.properties
STARDOG_HOME
-
8/17/2019 stardog-manual-4.0.5
38/263
C*)!$"0-$)"T(+*-a-4 Sc-a/c# S+ac
java.io.tmpdir
java.io.tmpdir
java.io.tmpdir
STARDOG_HOME;;
S/a-d*"C*)!$"0-a/$*)
stardog.properties
;<
query.all.graphs true
false
query.timeout
Ma)a"$)" Q0-$.
logging.[access,audit].[enabled,type,file]
logging.slow_query.enabled logging.slow_query.time
logging.slow_query.type
enabled true
time
type text binary
logging.slow_query.time query.timeout
http.max.request.parameters
Integer.MAX_VALUE
http.max.request.parameters
-
8/17/2019 stardog-manual-4.0.5
39/263
database.connection.timeout
h m s ms
1h 5m 90s
500ms 1h
password.length.min
password.length.min
password.length.max 4
password.length.max
1024
password.regex
[\\w@#$%]+
security.named.graphs false
spatial.use.jts false
S/a-/$)"7 S/*++$)" /#S-1-
stardog-admin
stardog.log
$ stardog-admin server start
$ stardog-admin server start --logfile mystardog.log --port= 8080
-
8/17/2019 stardog-manual-4.0.5
40/263
--port
--no-http --no-snarl
--server
0.0.0.0
--bind server start
S-1- M*)$/*-$)"2$/#Wa/c#d*"7 JMX
Acc..$)"Wa/c#d*"
GET /watchdog
C*)!$"0-$)"Wa/c#d*"
5833
watchdog.port stardog.properties
watchdog.remote.access false stardog.properties
watchdog.enabled false stardog.properties
$ stardog-admin server stop
-
8/17/2019 stardog-manual-4.0.5
41/263
L*c&$)" S/a-d*"H*(
STARDOG_HOME
STARDOG_HOME
STARDOG_HOME
--home
Acc.. 7 A0d$/ L*""$)"
stardog.properties #//+."$/#0bc*(C*(+'3$b'./a-d*"3a(+'.b'*b(a./-
c*)!$"./a-d*"+-*+-/$.
Ja1a P-*"-a(($)"
Ma)a"$)" Q0-$.
Da/aba. Ad($)
C*)!$"0-$)"a Da/aba.
https://github.com/Complexible/stardog-examples/blob/master/config/stardog.propertieshttps://github.com/Complexible/stardog-examples/blob/master/config/stardog.propertieshttps://github.com/Complexible/stardog-examples/blob/master/config/stardog.propertieshttps://github.com/Complexible/stardog-examples/blob/master/config/stardog.properties
-
8/17/2019 stardog-manual-4.0.5
42/263
metadata-get metadata-set Ma)
Pa".
C*)!$"0-a/$*)O+/$*).
*3 Table of Config$!a#ion Op#ion"
preserve.bnode.idspreserve.bnode.ids true Da/aba.O+/$*).PRESERVE
FALSE
database.archetypes database.archetypes Da/aba.O+/$*).ARCHETYP
database.name database.name Da/aba.O+/$*).NAME
[A-Za-z]{1}[A-Za-z
database.namespaces database.namespaces rdf,
rdfs,
xsd, owl,
stardog
Da/aba.O+/$*).NAMESPA
database.online database.online true Da/aba.O+/$*).ONLINE
http://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#PRESERVE_BNODE_IDShttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#ARCHETYPEShttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#NAMEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#NAMESPACEShttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#ONLINEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#ONLINEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#NAMESPACEShttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#NAMEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#ARCHETYPEShttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#PRESERVE_BNODE_IDS
-
8/17/2019 stardog-manual-4.0.5
43/263
icv.active.graphsicv.active.graphs default ICVO+/$*).ICVACTIVEGRA
icv.active.graphs
icv.consistency.automaticicv.consistency.automatic false ICVO+/$*).ICVCONSISTEN
icv.enabledicv.enabled false ICVO+/$*).ICVENABLED
icv.reasoning.enabledicv.reasoning.enabled false ICVO+/$*).ICVREASONING
index.connection.timeoutindex.connection.timeout 3,600,000 I)d3O+/$*).INDEXCONNE
index.differential.enable.limitindex.differential.enable.limit 500,000 I)d3O+/$*).DIFFINDEXM
index.differential.merge.limitindex.differential.merge.limit 20,000 I)d3O+/$*).DIFFINDEXM
index.literals.canonicalindex.literals.canonical true I)d3O+/$*).CANONICALL
http://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_ACTIVE_GRAPHShttp://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_CONSISTENCY_AUTOMATIChttp://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_REASONING_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#INDEX_CONNECTION_TIMEOUT_MShttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#DIFF_INDEX_MIN_LIMIThttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#DIFF_INDEX_MAX_LIMIThttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#CANONICAL_LITERALShttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#CANONICAL_LITERALShttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#DIFF_INDEX_MAX_LIMIThttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#DIFF_INDEX_MIN_LIMIThttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#INDEX_CONNECTION_TIMEOUT_MShttp://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_REASONING_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_CONSISTENCY_AUTOMATIChttp://docs.stardog.com/java/snarl/com/complexible/stardog/icv/ICVOptions.html#ICV_ACTIVE_GRAPHS
-
8/17/2019 stardog-manual-4.0.5
44/263
index.named.graphsindex.named.graphs true I)d3O+/$*).INDEXNAMED
index.persistindex.persist false I)d3O+/$*).PERSIST
index.persist.syncindex.persist.sync true I)d3O+/$*).SYNC
index.statistics.update.automaticindex.statistics.update.automatic true I)d3O+/$*).AUTOSTATS
index.typeindex.type disk I)d3O+/$*).INDEXTYPE
index.type
query.timeoutquery.timeout Da/aba.O+/$*).QUERYTI
reasoning.consistency.automaticreasoning.consistency.automatic false Ra.*)$)"O+/$*).CONSIST
reasoning.punning.enabledreasoning.punning.enabled false Ra.*)$)"O+/$*).PUNNING
reasoning.schema.graphsreasoning.schema.graphs * Ra.*)$)"O+/$*).SCHEMA
http://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#INDEX_NAMED_GRAPHShttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#PERSISThttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#SYNChttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#AUTO_STATS_UPDATEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#INDEX_TYPEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#QUERY_TIMEOUThttp://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#CONSISTENCY_AUTOMATIChttp://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#PUNNING_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#SCHEMA_GRAPHShttp://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#SCHEMA_GRAPHShttp://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#PUNNING_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#CONSISTENCY_AUTOMATIChttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#QUERY_TIMEOUThttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#INDEX_TYPEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#AUTO_STATS_UPDATEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#SYNChttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#PERSISThttp://docs.stardog.com/java/snarl/com/complexible/stardog/index/IndexOptions.html#INDEX_NAMED_GRAPHS
-
8/17/2019 stardog-manual-4.0.5
45/263
tag:stardog:ap
tag:stardog:api:context:all
default *
reasoning.typereasoning.type SL
SL RL QL EL DL R
reasoning.approximatereasoning.approximate false Ra.*)$)"O+/$*).APPROXI
search.enabled search.enabled false Sa-c#O+/$*).SEARCHABLE
strict.parsing strict.parsing true Da/aba.O+/$*).STRICTPA
true false
search.reindex.mode search.reindex.mode async
search.reindex.mode
Q0a-/5 c-*) 3+-..$*)
search.wildcard.search.enabled search.wildcard.search.enabled false Sa-c#O+/$*).LEADINGWI
search.default.limit search.default.limit 10 Sa-c#O+/$*).SEARCHDEF
http://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#SCHEMA_GRAPHShttp://docs.stardog.com/java/snarl/com/complexible/stardog/search/SearchOptions.html#SEARCHABLEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#STRICT_PARSINGhttp://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontriggerhttp://docs.stardog.com/java/snarl/com/complexible/stardog/search/SearchOptions.html#LEADING_WILDCARD_SEARCH_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/search/SearchOptions.html#SEARCH_DEFAULT_LIMIThttp://docs.stardog.com/java/snarl/com/complexible/stardog/search/SearchOptions.html#SEARCH_DEFAULT_LIMIThttp://docs.stardog.com/java/snarl/com/complexible/stardog/search/SearchOptions.html#LEADING_WILDCARD_SEARCH_ENABLEDhttp://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontriggerhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#STRICT_PARSINGhttp://docs.stardog.com/java/snarl/com/complexible/stardog/search/SearchOptions.html#SEARCHABLEhttp://docs.stardog.com/java/snarl/com/complexible/stardog/reasoning/ReasoningOptions.html#SCHEMA_GRAPHS
-
8/17/2019 stardog-manual-4.0.5
46/263
transaction.isolationtransaction.isolation SNAPSHOT Da/aba.O+/$*).TRANSACT
transaction.loggingtransaction.logging false Da/aba.O+/$*).TRANSACT
transaction.logging.rotation.sizetransaction.logging.rotation.size 524288000 Da/aba.O+/$*).TRANSACT
transaction.logging true
transaction.logging.rotation.removetransaction.logging.rotation.remove true Da/aba.O+/$*).TRANSACT
transaction.logging true
query.all.graphsquery.all.graphs false Da/aba.O+/$*).QUERYAL
true
false
spatial.enabled spatial.enabled false G*.+a/$a'O+/$*).SPATIAL
spatial.precision spatial.precision 11 G*.+a/$a'O+/$*).SPATIAL
A N*/ Ab*0/ Da/aba.S/a/0.
offline
http://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_ISOLATIONhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_LOGGINGhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_LOGGINGhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_LOGGINGhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#QUERY_ALL_GRAPHShttp://docs.stardog.com/java/snarl/com/complexible/stardog/spatial/GeospatialOptions.html#SPATIAL_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/spatial/GeospatialOptions.html#SPATIAL_PRECISIONhttp://docs.stardog.com/java/snarl/com/complexible/stardog/spatial/GeospatialOptions.html#SPATIAL_PRECISIONhttp://docs.stardog.com/java/snarl/com/complexible/stardog/spatial/GeospatialOptions.html#SPATIAL_ENABLEDhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#QUERY_ALL_GRAPHShttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_LOGGINGhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_LOGGINGhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_LOGGINGhttp://docs.stardog.com/java/snarl/com/complexible/stardog/db/DatabaseOptions.html#TRANSACTION_ISOLATION
-
8/17/2019 stardog-manual-4.0.5
47/263
Ma)a"$)"Da/aba.S/a/0.
O)'$)a)dO6'$)
stardog-admin help db
E3a(+'.
C-a/$)" a Da/aba.
[A-Za-z]{1}[A-Za-z0-9_-]
$ stardog-admin db offline myDatabase
$ stardog-admin db online myDatabase
-
8/17/2019 stardog-manual-4.0.5
48/263
system admin watchdog docs
stardog-admin help db create
Da/aba.A-c#/4+.
PROV SKOS
SKOSA-c#/4+
http://www.w3.org/TR/prov-overview/http://www.w3.org/2004/02/skos/http://www.w3.org/2004/02/skos/http://www.w3.org/TR/prov-overview/
-
8/17/2019 stardog-manual-4.0.5
49/263
PROVA-c#/4+
U.-d!$)dA-c#/4+.
S/a-d*" E3a(+'. -+*.$/*-4
Da/aba.C-a/$*)T(+'a/.
E3a(+'.
database.name
$ stardog-admin db create -n myDb input.ttl another_file.rdf moredata.rdf.gz
$ stardog-admin db create -c database.properties
https://github.com/Complexible/stardog-examples/blob/master/examples/foaf/readme.mdhttps://github.com/Complexible/stardog-examples/blob/master/examples/foaf/readme.md
-
8/17/2019 stardog-manual-4.0.5
50/263
db create
Da/aba.C-a/O+/$*).
+3 Table of Op#ion" fo! S#a!dog5" create command
--name -n
--copy-server-
side
false
--type -t M D
--index-triples-
only -i
false
$ stardog-admin db create -n db -o icv.enabled=true icv.reasoning.enabled=true --
input.ttl
-
8/17/2019 stardog-manual-4.0.5
51/263
R+a$-$)"a Da/aba.
system
Bac&$)" U+a)d R./*-$)"
export
stardog-admin db backup stardog-admin db restore
$ stardog-admin db repair myDB
$ stardog-admin db repair system
-
8/17/2019 stardog-manual-4.0.5
52/263
backup restore
Bac&0+
stardog-admin db backup
$STARDOG_HOME/.backup -t --to
foobar
R./*-
$ stardog-admin db backup foobar
$ stardog-admin db backup --to /my/network/share/stardog-backups foobar
$ stardog-admin db restore $STARDOG_HOME/.backups/myDb/2012- 06-21
http://docs.stardog.com/man/db-backup.htmlhttp://docs.stardog.com/man/db-restore.htmlhttp://docs.stardog.com/man/db-restore.htmlhttp://docs.stardog.com/man/db-backup.html
-
8/17/2019 stardog-manual-4.0.5
53/263
O)/$( Da/aba.M$"-a/$*). !*-Bac&0+
foobar
Na(.+acP-!$3 B$)d$)".
PREFIX
PREFIX
namespace
$ stardog-admin db migrate foobar
$ stardog query myDB "select * {?s rdf:type owl:Class}"
$ stardog namespace add myDb --prefix ex --uri 'http://example.org/test#'
$ stardog namespace remove myDb --prefix ex
$ stardog namespace list myDB
-
8/17/2019 stardog-manual-4.0.5
54/263
RDF, RDFS, XSD OWL
SELECT
CONSTRUCT
I)d3S/-a/"$.
FROM FROM NAMED
index.named.graphs
false -i --index-
triples-only
D$6-)/$a' I)d3.
-
8/17/2019 stardog-manual-4.0.5
55/263
index.differential.merge.limit
index.differential.enable.limit
index.differential.merge.limit
index.differential.merge.limit
L*ad$)"C*(+-..dDa/a
;=
GZIP a)dBZIP9
create .gz .bz2
test.ttl.gz
-
8/17/2019 stardog-manual-4.0.5
56/263
ZIP
.zip
D-*++$)"a Da/aba.
drop
U.$)" I)/"-$/4C*)./-a$)/Va'$da/$*)
Va'$da/$)"
C*)./-a$)/.
icv
icv
stardog help icv stardog-admin help icv
M$"-a/$)" a Da/aba.
migrate
migrate
$ stardog-admin db drop my_db
-
8/17/2019 stardog-manual-4.0.5
57/263
myDatabase
G//$)" Da/aba. I)!*-(a/$*)
Ma)a"$)"Q0-$.
C*)!$"0-$)"Q0-4Ma)a"()/
query.timeout
query.timeout
0
$ stardog-admin db migrate myDatabase
$ stardog-admin metadata get my_db_name
$ stardog-admin metadata get -o index.named.graphs my_db_name
-
8/17/2019 stardog-manual-4.0.5
58/263
L$./$)" Q0-$.
query list
D'/$)"Q0-$.
query kill
A0/*(a/$ca''4K$''$)"Q0-$.
$ stardog-admin query list
+----+----------+-------+--------------+
| ID | Database | User | Elapsed time |
+----+----------+-------+--------------+
| 2 | test | admin | 00: 00:20.165 |
| 3 | test | admin | 00: 00:16.223 |
| 4 | test | admin | 00: 00: 08.769 |
+----+----------+-------+--------------+
3 queries running
$ stardog-admin query kill 3
Query 3 killed successfully
-
8/17/2019 stardog-manual-4.0.5
59/263
query.timeout
;>
query.timeout
query.timeout 0
query.timeout
query.timeout
Q0-4S/a/0.
query status
S'*2 Q0-4 L*""$)"
$ stardog-admin query status 1
Username: admin
Database: test
Started : 2013- 02- 06 09:10:45 AM
Elapsed : 00: 01:19.187
Query :
select ?x ?p ?o1 ?y ?o2
where {
?x ?p ?o1.
?y ?p ?o2.
filter (?o1 > ?o2).
}
order by ?o1
limit 5
-
8/17/2019 stardog-manual-4.0.5
60/263
C*)!$"0-$)" S/a-d*" S-1-
P-*/*c*'.a)dJa1a API
S/a-d*". A+$a-4
Ja1ad*c.
Sc0-$/4a)dQ0-4 Ma)a"()/
Ma)a"$)"Sa-c#
U.$)" S/a-d*"
search.enabled
sync
async
c-*) 3+-..$*)
search.reindex.mode
sync async sync
search.reindex.mode
$ stardog-admin db create -o search.enabled=true -n myDb
http://docs.stardog.apiary.io/http://docs.stardog.com/java/snarl/http://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontriggerhttp://www.quartz-scheduler.org/documentation/quartz-2.1.x/tutorials/crontriggerhttp://docs.stardog.com/java/snarl/http://docs.stardog.apiary.io/
-
8/17/2019 stardog-manual-4.0.5
61/263
ACID T-a).ac/$*).
;?
A/*($c$/4
;@
C*).$./)c4
Va'$da/$)" C*)./-a$)/.
I.*'a/$*)
READ COMMITTED
READ COMMITTED SNAPSHOT SERIALIZABLE
transaction.isolation
READ COMMITTED READ COMMITTED SNAPSHOT
:x :val 1
http://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committedhttp://en.wikipedia.org/wiki/Isolation_(database_systems)#Read_committed
-
8/17/2019 stardog-manual-4.0.5
62/263
,3 Table of #he di(e!ence be#&een RCI and RCSI
0 SELECT ?val {?x
:val ?val}
1
SELECT ?val {?x
:val ?val}
1
SELECT ?val {?x
:val ?val}
1
1 BEGINBEGIN TXTX
2 INSERT {:x :value
2}
DELETE {:x :value
?old}
3 SELECT ?val {?x
:val ?val}
2
SELECT ?val {?x
:val ?val}
1
SELECT ?val {?x
:val ?val}
1
4 BEGINBEGIN TXTX
5 COMMIT COMMIT
6 SELECT ?val {?x
:val ?val}
2
SELECT ?val {?x
:val ?val}
2
SELECT ?val {?x
:val ?val}
1
8 INSERT {:x :value
3}
DELETE {:x :value
?old}
9 COMMIT COMMIT
-
8/17/2019 stardog-manual-4.0.5
63/263
10 SELECT ?val {?x
:val ?val}
3
SELECT ?val {?x
:val ?val}
3
SELECT ?val {?x
:val ?val}
3
READ
COMMITTED SNAPSHOT
READ COMMITTED
SNAPSHOT :counter :val 1
1 2
3
SERIALIZABLE SERIALIZABLE
D0-ab$'$/4
C*(($/Fa$'0- A0/*-c*1-4
INSERT { :counter :val ?newValue }DELETE { :counter :val ?oldValue }
WHERE { :counter :val ?oldValue
BIND (?oldValue+1 AS ?newValue) }
-
8/17/2019 stardog-manual-4.0.5
64/263
;
stardog-admin db online
O+/$($5$)"B0'&Da/a L*ad$)"
c*(+-..d da/a
C*)!$"0-$)" a Da/aba.
/-$+'. *)'4 $)d3$)"
-
8/17/2019 stardog-manual-4.0.5
65/263
Ca+ac$/4P'a))$)"
;
M(*-4 0.a"
;
-3 Table of Memo!' U"age fo! Capaci#' Planning
-
8/17/2019 stardog-manual-4.0.5
66/263
STARDOG_JAVA_ARGS
"-Xms4g -Xmx4g -XX:MaxDirectMemorySize=8g"
-Xms
-Xmx
S4./(M(*-4 a)d JVM M(*-4
MaxDirectMemorySize
D$.&0.a"
.3 Table of T'pical Di"k Space Re$i!emen#"
-
8/17/2019 stardog-manual-4.0.5
67/263
/-$+'.*)'4 $)d3$)"
U.$)" S/a-d*" *)W$)d*2.
.bat
server start
server stop
.bat STARDOG_HOME STARDOG_JAVA_ARGS
-
8/17/2019 stardog-manual-4.0.5
68/263
JAVA_HOME
java
R0))$)"S/a-d*" a.a W$)d*2.S-1$c
I)./a''$)" /#S-1$c
C*)!$"0-$)"/#S-1$c
STARDOG_HOME
STARDOG_MEMORY STARDOG_MEMORY
STARDOG_HOME STARDOG_HOME STARDOG_HOME
STARDOG_SERVICE_DISPLAY_NAME
STARDOG_SERVICE_DISPLAY_NAME
STARDOG_LOG_PATH
STARDOG_LOG_PATH
cd c:\stardog-$VERSION
-
8/17/2019 stardog-manual-4.0.5
69/263
stop-
service.bat -u -p
stardog-admin server stop
I)./a''$)"S/a-d*"a.a S-1$c
install-service.bat
services.msc
S/a-/$)">S/*++$)">7 C#a)"$)"S-1$c C*)!$"0-a/$*)
stardog-serverw.exe
U)$)./a''$)" /#S/a-d*"S-1$c
uninstall-service.bat
Sc0-$/4
A+ac# S#$-*
%BC-4+/
http://shiro.apache.org/http://www.mindrot.org/projects/jBCrypt/http://www.mindrot.org/projects/jBCrypt/http://shiro.apache.org/
-
8/17/2019 stardog-manual-4.0.5
70/263
R.*0-c.
type_prefix:name
/3 Table of S'"#em Re"o$!ce"
user user:admin
role
role:reader
db db:myDB
named-graph
named-
graph:myDb\named-graph-
id
metadata
metadata:myDB
admin
admin:myDB
icv-constraints
icv-
constraints:myDB
-
8/17/2019 stardog-manual-4.0.5
71/263
P-($..$*).
user role
write
INSERT DELETE
create delete
read
write
create
delete
grant
revoke
-
8/17/2019 stardog-manual-4.0.5
72/263
execute
all
W$'dca-d.
*
create
db:*
S0+-0.-.
all *:*
Da/aba.O2)-D!a0'/ P-($..$*).
delete write read grant
revoke
write read grant revoke icv-
constraints:theDatabase execute admin:theDatabase
D!a0'/ Sc0-$/4 C*)!$"0-a/$*)
user:admin user:anonymous
-
8/17/2019 stardog-manual-4.0.5
73/263
role:reader
read
S//$)" Pa..2*-d C*)./-a$)/.
stardog.properties
password.length.min
password.length.max
4
password.length.max
20
password.regex
[\\w@#$%]+
U.$)"a Pa..2*-dF$'
.sdpass
sdpass.conf Application
Data\stardog
stardog.passwd.file
Pa..2*-d F$'F*-(a/
-
8/17/2019 stardog-manual-4.0.5
74/263
#
hostname:port:database:username:password
*
\
Na(dG-a+#Sc0-$/4
E3a(+'
#this is my password file; there are no others like it and this one is mine anyway...
*:*:*:flannery:aNahthu8
*:*:summercamp:jemima:foh9Moaz
$ stardog-admin user grant -a read -o named-graph:myDB\http://example.org/g1 myUser
$ stardog-admin user grant -a write -o named-graph:myDB\http://example.org/g2 myUser
-
8/17/2019 stardog-manual-4.0.5
75/263
security.named.graphs=true stardog.properties
Na(dG-a+#O+-a/$*).
H*2Na(dG-a+#P-($..$*).W*-&
Q0-4$)"
WHERE
-
8/17/2019 stardog-manual-4.0.5
76/263
W-$/$)"
Ra.*)$)"
E)/-+-$.A0/#)/$ca/$*)
cn groupOfNames
member
-
8/17/2019 stardog-manual-4.0.5
77/263
C*)!$"0-$)"S/a-d*"
stardog.properties
security.realms ldap
ldap.provider.url
ldap.security.principal
ldap.security.credentials
ldap.user.dn.template
ldap.group.lookup.string
ldap.users.cn cn
ldap.superusers.cn cn
dn: cn=stardogSuperUsers,ou=group,dc=example,dc=com
cn: stardogSuperUsers
objectclass: groupOfNames
member: uid=superuser,ou=people,dc=example,dc=com
dn: cn=stardogUsers,ou=group,dc=example,dc=com
cn: stardogUsers
objectclass: groupOfNames
member: uid=regularuser,ou=people,dc=example,dc=com
member: uid=anotherregularuser,ou=people,dc=example,dc=com
dn: uid=superuser,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
cn: superuser
sn: superuser
uid: superuser
userPassword: superpassword
-
8/17/2019 stardog-manual-4.0.5
78/263
ldap.cache.invalidate.time
24h
U.-Ma)a"()/
A)LDAPQ0$-&
read:user:$NEW_USER
A0/#)/$ca/dU.-Cac#
0ms
A0/#*-$5a/$*)
security.realms = ldap
ldap.provider.url = ldap://localhost:5860
ldap.security.principal = uid=admin,ou=people,dc=example,dc=com
ldap.security.credentials = secret
ldap.user.dn.template = uid={0},ou=people,dc=example,dc=com
ldap.group.lookup.string = ou=group,dc=example,dc=com
ldap.users.cn = stardogUsers
ldap.superusers.cn = stardogSuperUsers
ldap.cache.invalidate.time = 1h
-
8/17/2019 stardog-manual-4.0.5
79/263
S/a'P-($..$*).R*'.
Q0a-/5 c-*)
3+-..$*) ldap.consistency.scheduler.expression
Ma)a"$)"S/a-d*" Sc0-'4
U.-.
create user:*
delete
read
## Execute the consistency cleanup at 6pm every day
ldap.consistency.scheduler.expression = 0 0 18 * * ?
http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontriggerhttp://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontriggerhttp://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontriggerhttp://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger
-
8/17/2019 stardog-manual-4.0.5
80/263
read
R*'.
create role:*
delete
grant
revoke
Da/aba..
create db:*
delete db:theDatabase
-
8/17/2019 stardog-manual-4.0.5
81/263
write icv-constraints:theDatabase
read icv-constraints:theDatabase
execute admin:theDatabase
execute admin:theDatabase
execute admin:theDatabase
P-($..$*).
grant
revoke
-
8/17/2019 stardog-manual-4.0.5
82/263
D+'*4$)"S/a-d*"Sc0-'4
-
8/17/2019 stardog-manual-4.0.5
83/263
-
8/17/2019 stardog-manual-4.0.5
84/263
my-trusted-server.crt
-
8/17/2019 stardog-manual-4.0.5
85/263
-
8/17/2019 stardog-manual-4.0.5
86/263
-
8/17/2019 stardog-manual-4.0.5
87/263
I)./a''
STARDOG_HOME
stardog.properties
pack.zookeeper.address
pack.cluster.username pack.cluster.password
pack.node.address
InetAddress.getLocalhost().getAddress()
# Flag to enable the cluster, without this flag set, the rest of the properties
have no effectpack.enabled=true
# this node's IP address (or hostname) where other Stardog nodes are going to
connect
pack.node.address=196.69. 68.1
# the connection string for ZooKeeper where cluster state is stored
pack.zookeeper.address=196.69. 68.1:2180,196.69. 68.2:2180,196.69. 68.3:2180
# credentials used for securing ZooKeeper state
pack.cluster.username=pack
pack.cluster.password=admin
-
8/17/2019 stardog-manual-4.0.5
88/263
clientPort zookeeper.properties
pack.cluster.address stardog.properties
tickTime=2000
# Make sure this directory exists and
# ZK can write and read to and from it.
dataDir=/data/zookeeperdata/
clientPort=2180
initLimit=5
syncLimit=2
# This is an enumeration of all nodes in
# the cluster and must be identical in
# each node's config.
server.1=196.69. 68.1:2888:3888
server.2=196.69. 68.2:2888:3888
server.3=196.69. 68.3:2888:3888
tickTime=2000
dataDir=/data/zookeeperdata/
clientPort=2180
initLimit=5
syncLimit=2
server.1=196.69. 68.1:2888:3888
server.2=196.69. 68.2:2888:3888
server.3=196.69. 68.3:2888:3888
tickTime=2000
dataDir=/data/zookeeperdata/
clientPort=2180
initLimit=5
syncLimit=2
server.1=196.69. 68.1:2888:3888
server.2=196.69. 68.2:2888:3888
server.3=196.69. 68.3:2888:3888
-
8/17/2019 stardog-manual-4.0.5
89/263
dataDir
myid dataDir
node1 node2
I)./a''a/$*)
/data/zookeeperdata/myid # on node 1
$ echo 2 > /data/zookeeperdata/myid # on node 2
$ echo 3 > /data/zookeeperdata/myid # on node 3
$ ./stardog-admin cluster zkstart --home ~/stardog # on node 1
$ ./stardog-admin cluster zkstart --home ~/stardog # on node 2
$ ./stardog-admin cluster zkstart --home ~/stardog # on node 3
-
8/17/2019 stardog-manual-4.0.5
90/263
$STARDOG_HOME ~/stardog --home
5821
5820
5820
*7$c$a' .$/
haproxy.cfg
$ ./stardog-admin help cluster zkstart
$ ./stardog-admin server start --home ~/stardog --port 5821 # on node 1
$ ./stardog-admin server start --home ~/stardog --port 5821 # on node 2
$ ./stardog-admin server start --home ~/stardog --port 5821 # on node 3
$ sudo apt-get update
$ sudo apt-get install haproxy
global global
daemon
maxconn 256
http://www.haproxy.org/http://www.haproxy.org/
-
8/17/2019 stardog-manual-4.0.5
91/263
defaults
timeout connect 5s
timeout client 1h
timeout server 1h
# where HAProxy will listen for connections
frontend stardog-in
option tcpka # keep-alive
bind *:5820
default_backend stardogs
# the Stardog servers - we use sticky sessions
backend stardogs
option tcpka # keep-alive
# sticks the client to a given server for the duration of the connection
# using the destination IP address
stick-table type integer size 200k expire 30m
stick on dst
# these three lines perform a health check
# they will check that the node accepts connections and
# that it's operational within the cluster
option tcp-check
tcp-check send-binary 50494e47 # PING
tcp-check expect binary 504F4e47 # PONG
# replace these IP addresses with the corresponding node address
server stardog1 196.69.68.1:5821 maxconn 32 check
server stardog2 196.69.68.2:5821 maxconn 32 check
server stardog3 196.69.68.3:5821 maxconn 32 check
global global
daemon
maxconn 256
defaults
timeout connect 5s
timeout client 1h
timeout server 1h
frontend stardog-in
-
8/17/2019 stardog-manual-4.0.5
92/263
*7$c$a' d*c0()/a/$*)
5820
option tcpka # keep-alive
bind *:5820
default_backend stardogs
backend stardogs
mode http
# this line serves the same purpose as PING/PONG in tcp mode
option httpchk GET /admin/healthcheck
# replace these IP addresses with the corresponding node address
server stardog1 196.69.68.1:5821 maxconn 32 check
server stardog2 196.69.68.2:5821 maxconn 32 check
server stardog3 196.69.68.3:5821 maxconn 32 check
$ haproxy -f haproxy.cfg
$ ./stardog-admin db create -n myDb
$ ./stardog data add myDb /path/to/my/data
$ ./stardog query myDb "select * { ?s ?p ?o } limit 5"
$ ./stardog-admin server stop
http://www.haproxy.org/#docshttp://www.haproxy.org/#docs
-
8/17/2019 stardog-manual-4.0.5
93/263
R0))$)"S/a-d*" C'0./- *)a S$)"'Mac#$)
STARDOG_HOME
5820
5820
watchdog.port
stardog.properties
/data/zookeeperdata
C*)!$"0-a/$*) I..0.
T*+*'*"$.7 S$5
n
-
8/17/2019 stardog-manual-4.0.5
94/263
O+) F$'L$($/.
ulimit -n
-
8/17/2019 stardog-manual-4.0.5
95/263
Ma)a"()/
S/a-d*" R'a.
BOSH
P$1*/a' C'*0d F*0)d-4
S/a-d*" R'a.
BOSH d*c.
L$($/a/$*).
G-a+# Sa-c#
http://github.com/complexible/stardog-releasehttp://bosh.io/http://https//run.pivotal.io/http://github.com/complexible/stardog-releasehttp://bosh.io/docshttp://bosh.io/docshttp://github.com/complexible/stardog-releasehttp://https//run.pivotal.io/http://bosh.io/http://github.com/complexible/stardog-release
-
8/17/2019 stardog-manual-4.0.5
96/263
I)d3$)" S/-a/"4
U.-d!$)d L0c) A)a'45-
Ma$)/a$)$)" Sa-c# I)d3.
C*)!$"0-a/$*) O+/$*).
I)/"-a/$*)2$/#SPARQLtag:stardog:api:property:textMatch
http://jena.hpl.hp.com/ARQ/property#textMatch
textMatch
50 LIMIT
?s ?p ?l
SELECT DISTINCT ?s ?score
WHERE {
?s ?p ?l.
( ?l ?score ) ( 'mac' 0.5 50 ).
}
-
8/17/2019 stardog-manual-4.0.5
97/263
?s rdf:type ex:Book
E.ca+$)"C#a-ac/-. $) Sa-c#
.ca+d
Sa-c#S4)/a3
.a-c# (*d$!$-.
? *
~ ~ foo~0.8
"semantic web"~5
OR AND NOT , and ̀ -
L0c) d*c.
OWL 7 R0' Ra.*)$)"
http://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Escaping_Special_Charactershttp://lucene.apache.org/core/5_3_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_descriptionhttp://lucene.apache.org/core/4_2_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_descriptionhttp://lucene.apache.org/core/4_2_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_descriptionhttp://lucene.apache.org/core/5_3_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#package_descriptionhttp://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Escaping_Special_Characters
-
8/17/2019 stardog-manual-4.0.5
98/263
OWL < D$-c/ S(a)/$c. E)/a$'()/
R"$(
=;
Sa( A. Ra.*)$)"
Ra.*)$)" T4+.
reasoning
-r --reasoning
a c*))c/$*) *+/$*) a ,0-4 *+/$*)
false
true
reasoning.type
reasoning.type
reasoning.type SL
SL
RDFS RDF Sc#(a
QL OWL < QL RL OWL < RL EL OWL
http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#id45013http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#id45013http://docs.stardog.com/java/snarl/com/complexible/stardog/api/ConnectionConfiguration.html#reasoning(boolean)http://docs.stardog.com/java/snarl/com/complexible/stardog/api/Query.html#reasoning(boolean)http://www.w3.org/TR/rdf-schema/http://www.w3.org/TR/owl2-profiles/#OWL_2_QLhttp://www.w3.org/TR/owl2-profiles/#OWL_2_RLhttp://www.w3.org/TR/owl2-profiles/#OWL_2_ELhttp://www.w3.org/TR/owl2-profiles/#OWL_2_ELhttp://www.w3.org/TR/owl2-profiles/#OWL_2_RLhttp://www.w3.org/TR/owl2-profiles/#OWL_2_QLhttp://www.w3.org/TR/rdf-schema/http://docs.stardog.com/java/snarl/com/complexible/stardog/api/Query.html#reasoning(boolean)http://docs.stardog.com/java/snarl/com/complexible/stardog/api/ConnectionConfiguration.html#reasoning(boolean)http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#id45013http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#id45013
-
8/17/2019 stardog-manual-4.0.5
99/263
< EL DL OWL < DL a3$*(. SL
SWRL -0'.
DL
Q0-4 R2-$/$)"
DL
/# OWL < DL -./-$c/$*). DL
DL
DL
reasoning.type NONE
U.$)"Ra.*)$)"
=<
reasoning.schema.graphs
tag:stardog:api:context:default
tag:stardog:api:context:all
http://www.w3.org/TR/owl2-profiles/#OWL_2_ELhttp://www.w3.org/TR/2012/REC-owl2-syntax-20121211/http://www.w3.org/Submission/SWRL/http://www.w3.org/TR/2012/REC-owl2-syntax-20121211/#Global_Restrictions_on_Axioms_in_OWL_2_DLhttp://www.w3.org/TR/2012/REC-owl2-syntax-20121211/#Global_Restrictions_on_Axioms_in_OWL_2_DLhttp://www.w3.org/Submission/SWRL/http://www.w3.org/TR/2012/REC-owl2-syntax-20121211/http://www.w3.org/TR/owl2-profiles/#OWL_2_EL
-
8/17/2019 stardog-manual-4.0.5
100/263
tag:stardog:api:context:all
Q0-4A).2-$)"
C*((a)d L$)
HTTP
Ra.*)$)" C*))c/$*)API
ReasoningConnection Ja1a
P-*"-a(($)"
isConsistent()
$ ./stardog query --reasoning myDB "SELECT ?s { ?s a :C } LIMIT 10"
$ curl -u admin:admin -X GET "http://localhost:5822/myDB/
query?reasoning=true&query=..."
-
8/17/2019 stardog-manual-4.0.5
101/263
isSatisfiable(URI theURIClass)
E3+'a$)$)"Ra.*)$)"R.0'/.
==
S/a-d*". 3/)dd HTTP +-*/*c*' d$.c0..$*) *! SNARL#//+."$/#0bc*(C*(+'3$b'./a-d*"3a(+'.
P-**!T-.
=>
E3a(+'
:Alice rdf:type :Employee
$ stardog reasoning explain myDB inference_to_explain.ttl
https://github.com/Complexible/stardog-examples/https://github.com/Complexible/stardog-examples/
-
8/17/2019 stardog-manual-4.0.5
102/263
INFERRED :Alice rdf:type :Employee
INFERRED :Alice rdf:type :Employee ASSERTED :Manager rdfs:subClassOf :Employee
INFERRED :Alice rdf:type :Manager
INFERRED :Alice rdf:type :Employee
ASSERTED :Manager rdfs:subClassOf :Employee
INFERRED :Alice rdf:type :Manager
ASSERTED :Alice :supervises :Bob
ASSERTED :supervises rdfs:domain :Manager
#schema#schema
:Manager rdfs:subClassOf :Employee
:ProjectManager rdfs:subClassOf :Manager
:ProjectManager owl:equivalentClass (:manages some :Project)
:supervises rdfs:domain :Manager
:ResearchProject rdfs:subClassOf :Project
:projectID rdfs:domain :Project
#instance#instance data
:Alice :supervises :Bob
:Alice :manages :ProjectX
:ProjectX a :ResearchProject
:ProjectX :projectID "123-45-6789"
-
8/17/2019 stardog-manual-4.0.5
103/263
:Alice
rdf:type :Employee
E3+'a)a/$*)8
E3+'a)a/$*)9
E3+'a)a/$*):
:Manager rdfs:subClassOf :Employee
:ProjectManager rdfs:subClassOf :Manager
:supervises rdfs:domain :Manager
:Alice :supervises :Bob
:Manager rdfs:subClassOf :Employee
:ProjectManager rdfs:subClassOf :Manager
:ProjectManager owl:equivalentClass (:manages some :Project)
:ResearchProject rdfs:subClassOf :Project:Alice :manages :ProjectX
:ProjectX a :ResearchProject
:Manager rdfs:subClassOf :Employee
:ProjectManager rdfs:subClassOf :Manager
:ProjectManager owl:equivalentClass (:manages some :Project)
:projectID rdfs:domain :Project
:Alice :manages :ProjectX
:ProjectX :projectID "123-45-6789"
INFERRED :Alice a :Employee
ASSERTED :Manager rdfs:subClassOf :Employee
1.1) INFERRED :Alice a :Manager
ASSERTED :supervises rdfs:domain :Manager
ASSERTED :Alice :supervises :Bob
1.2) INFERRED :Alice a :Manager
-
8/17/2019 stardog-manual-4.0.5
104/263
:Alice a :Manager
1
1.1 1.2 1
:ProjectX a :Project 2.1
2.2
U.-d!$)d R0'Ra.*)$)"
SWRL
ASSERTED :ProjectManager rdfs:subClassOf :Manager
INFERRED :Alice a :ProjectManager
ASSERTED :ProjectManager owl:equivalentClass (:manages some :Project)
ASSERTED :Alice :manages :ProjectX
2.1) INFERRED :ProjectX a :Project
ASSERTED :projectID rdfs:domain :Project
ASSERTED :ProjectX :projectID "123-45-6789"
2.2) INFERRED :ProjectX a :Project
ASSERTED :ResearchProject rdfs:subClassOf :Project
ASSERTED :ProjectX a :ResearchProject
http://www.w3.org/Submission/SWRL/http://www.w3.org/Submission/SWRL/
-
8/17/2019 stardog-manual-4.0.5
105/263
S/a-d*"R0'.S4)/a3
IF-THEN=?
H*2/*U.S/a-d*"R0'.
-
8/17/2019 stardog-manual-4.0.5
106/263
reasoning.schema.graphs
=@
tag:stardog:api:rule: content
SPARQLRule
@prefix rule: .
[] a rule:SPARQLRule;
rule:content """
...la di dah the rule goes here!
""".
@prefix rule: .
[] a rule:SPARQLRule ;
rule:content """
PREFIX :IF {
?r a :Rectangle ;
:width ?w ;
:height ?h
BIND (?w * ?h AS ?area)
}
THEN {
?r :area ?area
}""" .
-
8/17/2019 stardog-manual-4.0.5
107/263
R0' L$($/a/$*).7 G*/c#a.
tag:stardog:api:rule:
@prefix
urn:test:
foo:Example
IF THEN
S/a-d*" R0'.E3a(+'.
PREFIX rule:
PREFIX :
PREFIX gr:
:Product1 gr:hasPriceSpecification [ gr:hasCurrencyValue 100.0 ] .
:Product2 gr:hasPriceSpecification [ gr:hasCurrencyValue 500.0 ] .
:Product3 gr:hasPriceSpecification [ gr:hasCurrencyValue 2000.0 ] .
[] a rule:SPARQLRule ;
rule:content """PREFIX xsd:
PREFIX gr:
PREFIX :
IF {
?offering gr:hasPriceSpecification ?ps .
?ps gr:hasCurrencyValue ?price .
-
8/17/2019 stardog-manual-4.0.5
108/263
:Product…
FILTER
FILTER (?price >= 200.00).
}
THEN {
?offering a :ExpensiveProduct .
}
""".
PREFIX rule:
PREFIX :
:c a :Circle ;
:radius 10 .
:t a :Triangle ;
:base 4 ;
:height 10 .
:r a :Rectangle ;
:width 5 ;
:height 8 .
:s a :Rectangle ;
:width 10 ;
:height 10 .
[] a rule:SPARQLRule ;
rule:content """
PREFIX :
IF {
?r a :Rectangle ;
:width ?w ;
:height ?h
BIND (?w * ?h AS ?area)
}
THEN {
?r :area ?area
}""" .
-
8/17/2019 stardog-manual-4.0.5
109/263
BIND
[] a rule:SPARQLRule ;
rule:content """
PREFIX :
IF {
?t a :Triangle ;
:base ?b ;
:height ?h
BIND (?b * ?h / 2 AS ?area)
}
THEN {
?t :area ?area
}""" .
[] a rule:SPARQLRule ;
rule:content """
PREFIX :
PREFIX math:
IF {
?c a :Circle ;
:radius ?r
BIND (math:pi() * math:pow(?r, 2) AS ?area)
}
THEN {
?c :area ?area
}""" .
[] a rule:SPARQLRule ;
rule:content """
PREFIX :
IF {
?r a :Rectangle ;
:width ?w ;
:height ?h
FILTER (?w = ?h)
}
THEN {
?r a :Square}""" .
-
8/17/2019 stardog-manual-4.0.5
110/263
THEN
PREFIX swrlb:
PREFIX xsd:
IF {
?x a :Person; hasAge ?age.
FILTER (?age >= 13 && ?age
-
8/17/2019 stardog-manual-4.0.5
111/263
S0++*-/d B0$'/I).
#-
S+c$a' P-d$ca/.
IF {
?x a :Male; :isSiblingOf/:isParentOf ?z
}THEN {
?x :isUncleOf ?z.
}
IF {
?x a :SuperUser.
?y a :Resource.?z a .
}
THEN {
?z a :Role.
?x :hasRole ?z; :readPermission ?y.
}
-
8/17/2019 stardog-manual-4.0.5
112/263
D$-c/S/-$c/S0bc'a...> S0b+-*+-/$.> 7 D$-c/T4+.
rdf:type rdfs:subClassOf
rdfs:subPropertyOf
sp:directType
sp:directSubClassOf
sp:strictSubClassOf
sp:directSubPropertyOf
sp:strictSubPropertyOf
sp tag:stardog:api:property:
sesame:directType sesame:directSubClassOf sesame:strictSubClassOf
sesame http://www.openrdf.org/schema/sesame#
#c1 is a subclass of c2 but not equivalent to c2
:c1 sp: strictSubClassOf :c2 => :c1 rdfs: subClassOf :c2 .
FILTER NOT EXISTS {
:c1 owl: equivalentClass :c2 .
}
#c1 is a strict subclass of c2 and there is no c3 between c1 and c2 in
#the strict subclass hierarchy
:c1 sp: directSubClassOf :c2 => :c1 sp: strictSubClassOf :c2 .
FILTER NOT EXISTS {
:c1 sp: strictSubClassOf :c3 .
:c3 sp: strictSubClassOf :c2 .
}
#ind is an instance of c1 but not an instance of any strict subclass of c1
:ind sp: directType :c1 => :ind rdf:type :c1 .
FILTER NOT EXISTS {
http://www.openrdf.org/schema/sesamehttp://www.openrdf.org/schema/sesame
-
8/17/2019 stardog-manual-4.0.5
113/263
sp:directSubPropertyOf sp:strictSubPropertyOf
N2I)d$1$d0a'. 2$/#SWRL
UUID()
:ind rdf:type :c2 .
:c2 sp: strictSubClassOf :c1 .
}
IFIF {
?p a :ParentParent .
BIND (UUID() AS AS ?parentparent) .
}
THEN {
?parentparent a :Person .
}
-
8/17/2019 stardog-manual-4.0.5
114/263
http://www.w3.org/ns/
sparql#UUID
:Parent
:Person
R(a-&.
IFIF {
?person a :Person .
BIND (UUID() AS AS ?parentparent) .
}
THEN {
?parentparent a :ParentParent ;
a :Male .
}
IFIF {
?person a :Person .
BIND (UUID() AS AS ?parentparent) .
}
THEN {
?parentparent a :ParentParent .
}
IFIF {
?person a :Person .
BIND (UUID() AS AS ?parentparent) .
}
http://www.w3.org/ns/sparql#UUIDhttp://www.w3.org/ns/sparql#UUIDhttp://www.w3.org/ns/sparql#UUIDhttp://www.w3.org/ns/sparql#UUID
-
8/17/2019 stardog-manual-4.0.5
115/263
:Male
:Parent
:Father
Q0-4 R2-$/$)"
THEN {
?parentparent a :Male .
}
IFIF {
?person a :Father .
}
THEN {?parentparent a :ParentParent ;
a :Male .
}
IFIF {
?person a :Person .
BIND (UUID() AS AS ?parentparent) .}
THEN {
?parentparent a :Father .
}
-
8/17/2019 stardog-manual-4.0.5
116/263
*3 Fig$!e * Q$e!' An"&e!ing
+3 Fig$!e +3 Q$e!' Re&!i#ing
:SeniorManager rdfs:subClassOf :manages some :Manager
:manages some :Employee rdfs:subClassOf :Manager
:Manager rdfs:subClassOf :Employee
-
8/17/2019 stardog-manual-4.0.5
117/263
W#4Q0-4R2-$/$)"
:Bill rdf:type :SeniorManager
:Robert rdf:type :Manager
:Ana :manages :Lucy
:Lucy rdf:type :Employee
SELECTSELECT ?employee WHERE WHERE { ?employee rdf:type :Employee }
SELECTSELECT ?employee WHERE WHERE { ?employee rdf:type :Employee }
SELECTSELECT ?employee WHERE WHERE { ?employee rdf:type :Manager }
SELECTSELECT ?employee WHERE WHERE { ?employee rdf:type :SeniorManager }
SELECTSELECT ?employee WHERE WHERE { ?employee :manages ?x. ?x rdf:type :Employee }
-
8/17/2019 stardog-manual-4.0.5
118/263
Sa(A.Ra.*)$)"
sameAs sameAs
sameAs
sameAs
sameAs reasoning.sameas
$ ./stardog-admin db create -o reasoning.sameas=FULL -n myDB
-
8/17/2019 stardog-manual-4.0.5
119/263
OFF sameAs sameAs
=
ON sameAs sameAs
sameAs
FULL ON
hasKey sameAs
sameAs
sameAs
sameAs
sameAs ON
dbpedia:Elvis_Presley
dbpedia-owl:birthPlace dbpedia:Mississippi ;
owl:sameAs freebase:en.elvis_presley .
nyt:presley_elvis_pernyt:associated_article_count 35 ;
rdfs:label "Elvis Presley" ;
owl:sameAs dbpedia:Elvis_Presley .
freebase:en.elvis_presley
freebase:common.topic.official_website .
$ ./stardog query --reasoning elvis 'SELECT * { ?s dbpedia-owl:birthPlace ?o;
rdfs:label "Elvis Presley" }'
-
8/17/2019 stardog-manual-4.0.5
120/263
sameAs
sameAs
rdfs:label dbpedia-owl:birthPlace
sameAs
+-----------------------+---------------------+
| s | o |
+-----------------------+---------------------+
| nyt:presley_elvis_per | dbpedia:Mississippi |
+-----------------------+---------------------+
SELECT * {
nyt:presley_elvis_per owl:sameAs ?elvis .
?elvis ?p ?o
}
SELECT * {
nyt:presley_elvis_per ?p ?o
}
-
8/17/2019 stardog-manual-4.0.5
121/263
sameAs
FULL sameAs
sameAs
+----------------------------------------+-----------------------+
| p | o |
+----------------------------------------+-----------------------+
| rdfs:label | "Elvis Presley" |
| dbpedia-owl:birthPlace | dbpedia:Mississippi |
| nyt:associated_article_count | 35 |
| freebase:common.topic.official_website | http://www.elvis.com/ |
| rdf:type | owl:Thing |
+----------------------------------------+-----------------------+
SELECT * {
dbpedia:Elvis_Presley nyt:presley_elvis_per ?p ?o
}
$ ./stardog query -r elvis 'SELECT * { freebase:en.elvis_presley owl:sameAs ?elvis }'
+---------------------------+
| elvis |
+---------------------------+
| dbpedia:Elvis_Presley |
| freebase:en.elvis_presley |
| nyt:presley_elvis_per |
+---------------------------+
#Everyone#Everyone has a unique SSN number
:hasSSN a owl:InverseFunctionalProperty , owl:DatatypeProperty .
-
8/17/2019 stardog-manual-4.0.5
122/263
sameAs FULL
:JohnDoe :hasSSN "123-45-6789" .
:JDoe :hasSSN "123-45-6789" .
#Nobody#Nobody can work for more than one company (for the sake of the example)
:worksFor a owl:FunctionalProperty , owl:ObjectProperty ;
rdfs:domain :Employee ;
rdfs:range :Company .
:JohnDoe :worksFor :Acme .
:JDoe :worksFor :AcmeInc .
#For#For each company, there can only be one employee with the same employee ID
:Employee owl:hasKey (:employeeID :worksFor ).
:JohnDoe :employeeID "1234-ABC" .
:JohnD :employeeID "1234-ABC" ;
:worksFor :AcmeInc .
:JD :employeeID "5678-XYZ" ;
:worksFor :AcmeInc .
:John :employeeID "1234-ABC" ;
:worksFor :Emca .
$ ./stardog query -r acme "SELECT * {?x owl:sameAs ?y}"
+----------+----------+
| x | y |
+----------+----------+
| :JohnDoe | :JohnD |
| :JDoe | :JohnD |
| :Acme | :AcmeInc |
+----------+----------+
-
8/17/2019 stardog-manual-4.0.5
123/263
:JohnDoe owl:sameAs :JohnD
hasSSN
:Acme owl:sameAs :AcmeInc :JohnDoe
:JohnDoe owl:sameAs :JohnD owl:hasKey
sameAs
R(*1$)"U)2a)/d I)!-)c.
reasoning explain
reasoning undo
P-!*-(a)c H$)/.
H$-a-c#$.a)dQ0-$.
$ ./reasoning undo myDB ":AcmeInc a :Person"
-
8/17/2019 stardog-manual-4.0.5
124/263
:Employee
:Ci :Employee
D*(a$).a)dRa)".
:Employee
:Manager rdfs:subClassOf :Employee
:SeniorManager rdfs:subClassOf :Manager
...
:Supervisor rdfs:subClassOf :Employee
:DepartmentSupervisor rdfs:subClassOf :Supervisor
...
:Secretary rdfs:subClassOf :Employee
...
SELECTSELECT ?employee WHERE WHERE { ?employee rdf:type :Ci }
SELECT ?manager ? employee WHERE
{ ?manager :manages ?employee.
?employee rdf:type :Employee. }
-
8/17/2019 stardog-manual-4.0.5
125/263
V-4 La-"Sc#(a.
OWL < EL EL
Ra.*)$)" T4+.
N*/ S$)"E3+c/dR.0'/.
A-1a-$ab'/4+. a(b$"0*0.
:manages rdfs:range :Employee
SELECT ?manager ? employee WHERE { ?manager :manages ?employee }
http://www.w3.org/TR/2012/REC-owl2-profiles-20121211/#OWL_2_ELhttp://www.w3.org/TR/2012/REC-owl2-profiles-20121211/#OWL_2_EL
-
8/17/2019 stardog-manual-4.0.5
126/263
-'1a)/ ./a)da-d
?i ?p "a literal" ?p
?s ?p ?o
=
?var a TYPE TYPE
?var
owl:ObjectProperty owl:DatatypeProperty
owl:NamedIndividual owl:Class
?s
?s ?o
?s
I./#.c#(a2#-4*0/#$)&$/$.
c*)!$"0-a/$*) *+/$*).
SELECT ?o
WHERE {
?s rdf:type ?o.
?s a owl: ObjectProperty.
}.
http://www.w3.org/TR/sparql11-entailment/#OWLDSEnRegimehttp://www.w3.org/TR/sparql11-entailment/#OWLDSEnRegime
-
8/17/2019 stardog-manual-4.0.5
127/263
reasoning schema
A- 4*00.$)" /#-$"#/ -a.*)$)" /4+
SL
A-4*00.$)"DL
A-4*00.$)"SWRL
D*4*0&)*22#a//*3+c/
OWL < +-$(-
K)*2) I..0.
owl:imports
http://docs.stardog.com/man/reasoning-schema.htmlhttp://www.w3.org/TR/owl2-primer/http://www.w3.org/TR/owl2-primer/http://docs.stardog.com/man/reasoning-schema.html
-
8/17/2019 stardog-manual-4.0.5
128/263
T-($)*'*"4
Da/aba..
OWL < P-*!$'.
:complexible :complexible :Stardog
:complexible rdf:type :Company
:complexible :maintains :Stardog
:Company rdfs:subClassOf :Organization
-
8/17/2019 stardog-manual-4.0.5
129/263
Q0-$.
rdf:type
owl:differentFrom
owl:sameAs
rdfs:subClassOf
owl:disjointWith
owl:equivalentClass
rdfs:subPropertyOf
owl:equivalentProperty
owl:inverseOf
owl:propertyDisjointWith
rdfs:domain
rdfs:range
rdf:type
-
8/17/2019 stardog-manual-4.0.5
130/263
Ra.*)$)"
:complexible
:complexible rdf:type :Company
:Company rdfs:subClassOf :Organization
:complexible rdf:type :Organization
SELECTSELECT ?org WHERE WHERE { ?org rdf:type :Organization}
SELECTSELECT ?org WHERE WHERE
{ { ?org rdf:type :Organization } UNIONUNION
{ ?org rdf:type :Company } UNIONUNION
...
}
-
8/17/2019 stardog-manual-4.0.5
131/263
:LLC
:LLC
:complexible
:LLC :LLC
:LLC
:Company :Organization
OWL 9 P-*!$'.
OWL < Wb O)/*'*"4 La)"0a" P-*!$'. S+c$!$ca/$*)
OWL < QL
:Company owl:disjointWith :Organization
:LLC owl:equivalentClass :Company and :Organization
http://www.w3.org/TR/owl2-profiles/http://www.w3.org/TR/owl2-profiles/#OWL_2_QLhttp://www.w3.org/TR/owl2-profiles/#OWL_2_QLhttp://www.w3.org/TR/owl2-profiles/
-
8/17/2019 stardog-manual-4.0.5
132/263
OWL < EL
OWL < RL
Va'$da/$)" C*)./-a$)/.
http://www.w3.org/TR/owl2-profiles/#OWL_2_ELhttp://www.w3.org/TR/owl2-profiles/#OWL_2_RLhttp://www.w3.org/TR/owl2-profiles/#OWL_2_RLhttp://www.w3.org/TR/owl2-profiles/#OWL_2_EL
-
8/17/2019 stardog-manual-4.0.5
133/263
ICV .+c$!$ca/$*)
G//$)" S/a-/d 2$/# ICV
3/)dd ICV /0/*-$a'
ICV7OWL9Ra.*)$)"
OWL 9 R0' Ra.*)$)"
http://docs.stardog.com/icv/icv-specification.htmlhttps://github.com/Complexible/stardog-examples/tree/master/examples/cli/icvhttps://github.com/Complexible/stardog-examples/tree/master/examples/cli/icvhttp://docs.stardog.com/icv/icv-specification.html
-
8/17/2019 stardog-manual-4.0.5
134/263
U.$)"ICV!-*(CLI
$ stardog-admin icv add myDb constraints.rdf
$ stardog-admin icv drop myDb
$ stardog-admin icv remove myDb constraints.rdf
$ stardog icv convert myDb out.rdf
$ stardog explain --contexts http://example.org/context1 http://example.org/context2
$ stardog icv export myDb constraints.rdf
$ stardog validate --contexts http://example.org/context1 http://example.org/context2
-
8/17/2019 stardog-manual-4.0.5
135/263
ICV G0a-d M*d
E3+'a$)$)" ICVV$*'a/$*).
P-**! T-.
Sc0-$/4 N*/
$ ./stardog-admin db offline --timeout 0 myDb #take the database offline
$ ./stardog-admin db metadata set -o icv.enabled=true myDb #enable ICV
$ ./stardog-admin db online myDb #put the database online
$ stardog icv explain --reasoning "myDB"
$ stardog icv explain --reasoning "myDB" constraints.ttl
-
8/17/2019 stardog-manual-4.0.5
136/263
R+a$-$)" ICVV$*'a/$*).
icv fix
--execute
icv fix
icv
fix
ICVE3a(+'.
!*-(a' .(a)/$c.
OWL *)/*'*"4 UML d$a"-a(
http://example.com/company.owl# xsd:
http://www.w3.org/2001/XMLSchema#
R!-)c Ja1a c*d
$ stardog help icv fix
http://docs.stardog.com/icv/icv-specification.htmlhttp://docs.stardog.com/icv/company.owlhttp://docs.stardog.com/icv/ClassDiagram.pnghttp://example.com/company.owlhttp://www.w3.org/2001/XMLSchemahttps://gist.github.com/1333767https://gist.github.com/1333767http://www.w3.org/2001/XMLSchemahttp://example.com/company.owlhttp://docs.stardog.com/icv/ClassDiagram.pnghttp://docs.stardog.com/icv/company.owlhttp://docs.stardog.com/icv/icv-specification.html
-
8/17/2019 stardog-manual-4.0.5
137/263
S0b.0(+/$*)C*)./-a$)/.
Ma)a"-.(0./ b(+'*4.=
C*)./-a$)/
Da/aba.A $)1a'$d
Da/aba.B 1a'$d
Manager
Employee Manager Alice
Employee Alice Manager
Employee
D*(a$)Ra)"C*)./-a$)/.
O)'4 +-*%c/ 'ad-.ca) b -.+*).$b' !*-+-*%c/.=
C*)./-a$)/
:Manager rdfs:subClassOf :Employee
:Alice a :Manager .
:Alice a :Manager , :Employee .
:is_responsible_for rdfs:domain :Project_Leader
-
8/17/2019 stardog-manual-4.0.5
138/263
Da/aba.A $)1a'$d
Da/aba.B $)1a'$d
Da/aba.C 1a'$d
is_responsible_for Project_Leader
Project
is_responsible_for (Alice, MyProject) MyProject
Project Alice Project_Leader
Alice Project_Leader MyProject
Project Alice Project_Leader
MyProject Project
O)'4(+'*4. ca) #a1a)SSN=
C*)./-a$)/
Da/aba.A $)1a'$d
:Alice :is_responsible_for :MyProject .
:MyProject a :Project .
:Alice a :Project_Leader ;
:is_responsible_for :MyProject .
:Alice a :Project_Leader ;
:is_responsible_for :MyProject .
:MyProject a :Project .
:ssn rdfs:domain :Employee
:Bob :ssn "123-45-6789" .
-
8/17/2019 stardog-manual-4.0.5
139/263
Da/aba.B 1a'$d
i SSNi Employee Bob Employee
SSN Bob Employee
Ada/*!b$-/#(0./bada/=
C*)./-a$)/
Da/aba.A $)1a'$d
Da/aba.B 1a'$d
i l DOB
l xsd:date Bob
"1970-01-01" DOB "1970-01-01"
Pa-/$c$+a/$*)C*)./-a$)/.
:Bob a :Employee ;
:ssn "123-45-6789" .
:dob rdfs:range xsd:date
:Bob :dob "1970-01-01" .
:Bob :dob "1970-01-01"^ ̂xsd:date
-
8/17/2019 stardog-manual-4.0.5
140/263
Eac# .0+-1$.*-(0./ .0+-1$.a/ 'a./*)(+'*4=
C*)./-a$)/
Da/aba.A 1a'$d
Da/aba.B $)1a'$d
Da/aba.C $)1a'$d
Da/aba.D 1a'$d
i Supervisor ij supervises j
Employee Supervisor
Supervisor Alice
Alice Bob supervises Bob Employee
#this constraint is very concise in Terp syntax:
#:Supervisor rdfs:subClassOf (:supervises some :Employee)
:Supervisor rdfs: subClassOf
[ a owl:Restriction ;
owl: onProperty :supervises ;
owl: someValuesFrom :Employee
] .
:Alice a owl:Thing .
:Alice a :Supervisor .
:Alice a :Supervisor ;
:supervises :Bob .
:Alice a :Supervisor ;
:supervises :Bob .
:Bob a :Employee
-
8/17/2019 stardog-manual-4.0.5
141/263
Alice Bob supervises Bob
Employee
Eac# +-*%c/ (0./ #a1 a 1a'$d+-*%c/ )0(b-=
C*)./-a$)/
Da/aba.A 1a'$d
Da/aba.B $)1a'$d
Da/aba.C $)1a'$d
Da/aba.D $)1a'$d
#Again, this constraint in Terp syntax rocks the hizzous:
#:Project rdfs:subClassOf (:number some xsd:integer[>= 0, < 5000])
:Project rdfs:subClassOf
[ a owl:Restriction ;
owl:onProperty :number ;
owl:someValuesFrom
[ a rdfs:Datatype ;
owl:onDatatype xsd:integer ;
owl:withRestrictions ([xsd:minInclusive 0] [ xsd:maxExclusive 5000])
]
] .
:MyProject a owl:Thing .
:MyProject a :Project
:MyProject a :Project ;
:number "23" .
:MyProject a :Project ;
:number "6000"^ ̂xsd:integer .
-
8/17/2019 stardog-manual-4.0.5
142/263
Da/aba.E 1a'$d
i Project inumber 0 5000
MyProject
Project MyProject
Project number
MyProject number "23"
MyProject
number MyProject
23 [0,5000]
Ca-d$)a'$/4C*)./-a$)/.
E(+'*4.(0./)*/2*-&*)(*-/#a):+-*%c/.=
C*)./-a$)/
Da/aba.A 1a'$d
:MyProject a :Project ;
:number "23"^ ̂xsd:integer .
#Constraint in Terp syntax:
#:Employee rdfs:subClassOf (:works_on max 3 :Project)
:Employee rdfs: subClassOf
[ a owl:Restriction ;
owl: onProperty :works_on;
owl:maxQualifiedCardinality "3"^ ̂xsd:nonNegativeInteger ;
owl: onClass :Project
] .
:Bob a owl:Thing.
-
8/17/2019 stardog-manual-4.0.5
143/263
Da/aba.B 1a'$d
Da/aba.C $)1a'$d
i Employee i works_on
Project Bob Employee
Bob Employee
MyProject Bob
Project works_on
=
>:
:Bob a :Employee ;
:works_on :MyProject .
:MyProject a :Project .
:Bob a :Employee ;
:works_on :MyProject , :MyProjectFoo , :MyProjectBar , :MyProjectBaz .
:MyProject a :Project .
:MyProjectFoo a :Project .
:MyProjectBar a :Project .
:MyProjectBaz a :Project .
-
8/17/2019 stardog-manual-4.0.5
144/263
D+a-/()/.(0./ #a1 a/ 'a./9 (+'*4.=
C*)./-a$)/
Da/aba.A 1a'$d
Da/aba.B $)1a'$d
Da/aba.C 1a'$d
i Department
j k Employee i works_in
i works_in MyDepartment
Department
#Constraint in Terp syntax:
#:Department rdfs:subClassOf (inverse :works_in min 2 :Employee)
:Department rdfs: subClassOf
[ a owl:Restriction ;
owl: onProperty [ owl:inverseOf :works_in] ;
owl:minQualifiedCardinality "2"^ ̂xsd:nonNegativeInteger ;
owl: onClass :Employee
] .
[source,sparql]
:MyDepartment a owl:NamedIndividual .
:MyDepartment a :Department .
:Bob a :Employee ;
:works_in :MyDepartment .
[source,sparql]
:MyDepartment a :Department .
:Alice a :Employee ;
:works_in :MyDepartment .
:Bob a :Employee ;
:works_in :MyDepartment .
-
8/17/2019 stardog-manual-4.0.5
145/263
MyDepartment Department Employee
Bob MyDepartment
Bob Alice Employee
Ma)a"-.(0./ (a)a" 3ac/'48 d+a-/()/=
C*)./-a$)/
Da/aba.A 1a'$d
Da/aba.B $)1a'$d
Da/aba.C $)1a'$d
Da/aba.D 1a'$d