diff --git a/test-complete-app/build.gradle b/test-complete-app/build.gradle
index 9b3e099a..02823118 100644
--- a/test-complete-app/build.gradle
+++ b/test-complete-app/build.gradle
@@ -18,3 +18,32 @@ ext {
command.setValidFor(365)
mlAppDeployer.commands.add(command)
}
+
+tasks.register("curlPeople", Exec) {
+ commandLine = [
+ 'curl',
+ '--fail',
+ '--anyauth', '--user', 'admin:admin',
+ '-i',
+ '-X', 'POST',
+ '--data-binary', '@./src/main/turtle/people/people.ttl',
+ '-H', 'Content-type: text/turtle',
+ 'http://localhost:8079/v1/graphs?graph=/people'
+ ]
+}
+
+tasks.register("curlCompanies", Exec) {
+ commandLine = [
+ 'curl',
+ '--fail',
+ '--anyauth', '--user', 'admin:admin',
+ '-i',
+ '-X', 'POST',
+ '--data-binary', '@./src/main/turtle/companies/companies_100.ttl',
+ '-H', 'Content-type: text/turtle',
+ 'http://localhost:8079/v1/graphs?graph=/optic/sparql/test/companies.ttl'
+ ]
+}
+
+mlDeploy.finalizedBy curlPeople
+mlDeploy.finalizedBy curlCompanies
\ No newline at end of file
diff --git a/test-complete-app/gradle.properties b/test-complete-app/gradle.properties
index 3d61cb0a..d7a78f54 100644
--- a/test-complete-app/gradle.properties
+++ b/test-complete-app/gradle.properties
@@ -3,3 +3,6 @@ mlUsername=admin
mlPassword=admin
mlNoRestServer=true
+mlModulesDatabaseName=nodeOpticFunctionalTestModules
+mlSchemasDatabaseName=Schemas
+mlRestPort=8079
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/databases/dmsdk-api-rest-server-modules.json b/test-complete-app/src/main/ml-config/databases/dmsdk-api-rest-server-modules.json
new file mode 100644
index 00000000..255145f3
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/databases/dmsdk-api-rest-server-modules.json
@@ -0,0 +1,3 @@
+{
+ "database-name": "dmsdk-api-rest-server-modules"
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/databases/dmsdk-api-rest-server.json b/test-complete-app/src/main/ml-config/databases/dmsdk-api-rest-server.json
new file mode 100644
index 00000000..aa3371d5
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/databases/dmsdk-api-rest-server.json
@@ -0,0 +1,6 @@
+{
+ "database-name": "dmsdk-api-rest-server",
+ "schema-database": "Schemas",
+ "range-element-index": [
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/databases/node-client-api-rest-server-modules.json b/test-complete-app/src/main/ml-config/databases/node-client-api-rest-server-modules.json
new file mode 100644
index 00000000..d7c25fe3
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/databases/node-client-api-rest-server-modules.json
@@ -0,0 +1,3 @@
+{
+ "database-name": "node-client-api-rest-server-modules"
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/databases/node-client-api-rest-server.json b/test-complete-app/src/main/ml-config/databases/node-client-api-rest-server.json
new file mode 100644
index 00000000..09c64be4
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/databases/node-client-api-rest-server.json
@@ -0,0 +1,190 @@
+{
+ "database-name": "node-client-api-rest-server",
+ "schema-database": "Schemas",
+ "range-element-index": [
+ {
+ "scalar-type": "double",
+ "namespace-uri": "",
+ "localname": "score",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "int",
+ "namespace-uri": "",
+ "localname": "popularity",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "int",
+ "namespace-uri": "",
+ "localname": "rate",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "dateTime",
+ "namespace-uri": "",
+ "localname": "datetime",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ }
+ ],
+ "range-path-index": [
+ {
+ "scalar-type": "decimal",
+ "path-expression": "price/amt",
+ "collation": "",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ }
+ ],
+ "geospatial-path-index": [
+ {
+ "path-expression": "gElemChildParent/gElemChildPoint",
+ "coordinate-system": "wgs84",
+ "point-format": "point",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ }
+ ],
+ "geospatial-element-index": [
+ {
+ "namespace-uri": "",
+ "localname": "gElemPoint",
+ "coordinate-system": "wgs84",
+ "point-format": "point",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ },
+ {
+ "namespace-uri": "",
+ "localname": "gElemPointWgs84Double",
+ "coordinate-system": "wgs84/double",
+ "point-format": "point",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ }
+ ],
+ "geospatial-element-child-index": [
+ {
+ "parent-namespace-uri": "",
+ "parent-localname": "gElemChildParent",
+ "namespace-uri": "",
+ "localname": "gElemChildPoint",
+ "coordinate-system": "wgs84",
+ "point-format": "point",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ },
+ {
+ "parent-namespace-uri": "",
+ "parent-localname": "gElemChildParentEtrs89Double",
+ "namespace-uri": "",
+ "localname": "gElemChildPointEtrs89Double",
+ "coordinate-system": "etrs89/double",
+ "point-format": "point",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ }
+ ],
+ "geospatial-element-pair-index": [
+ {
+ "parent-namespace-uri": "",
+ "parent-localname": "gElemPair",
+ "latitude-namespace-uri": "",
+ "latitude-localname": "latitude",
+ "longitude-namespace-uri": "",
+ "longitude-localname": "longitude",
+ "coordinate-system": "wgs84",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ },
+ {
+ "parent-namespace-uri": "",
+ "parent-localname": "gElemPairRawDouble",
+ "latitude-namespace-uri": "",
+ "latitude-localname": "latitudeRawDouble",
+ "longitude-namespace-uri": "",
+ "longitude-localname": "longitudeRawDouble",
+ "coordinate-system": "raw/double",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ }
+ ],
+ "geospatial-element-attribute-pair-index": [
+ {
+ "parent-namespace-uri": "",
+ "parent-localname": "gAttrPair",
+ "latitude-namespace-uri": "",
+ "latitude-localname": "latitude",
+ "longitude-namespace-uri": "",
+ "longitude-localname": "longitude",
+ "coordinate-system": "wgs84",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ }
+ ],
+ "geospatial-region-path-index": [
+ {
+ "path-expression": "/root/item/point",
+ "coordinate-system": "wgs84",
+ "geohash-precision": 1,
+ "invalid-values": "reject"
+ },
+ {
+ "path-expression": "/root/item/linestring",
+ "coordinate-system": "wgs84/double",
+ "geohash-precision": 2,
+ "invalid-values": "ignore"
+ },
+ {
+ "path-expression": "/root/item/circle",
+ "coordinate-system": "wgs84/double",
+ "geohash-precision": 1,
+ "invalid-values": "reject"
+ },
+ {
+ "path-expression": "/root/item/circle",
+ "coordinate-system": "wgs84",
+ "geohash-precision": 1,
+ "invalid-values": "reject"
+ },
+ {
+ "path-expression": "/root/item/box",
+ "coordinate-system": "wgs84/double",
+ "geohash-precision": 2,
+ "invalid-values": "ignore"
+ },
+ {
+ "path-expression": "/root/item/polygon",
+ "coordinate-system": "wgs84",
+ "geohash-precision": 3,
+ "invalid-values": "reject"
+ },
+ {
+ "path-expression": "/root/item/complex-polygon",
+ "coordinate-system": "wgs84",
+ "geohash-precision": 1,
+ "invalid-values": "ignore"
+ }
+ ],
+ "element-word-lexicon": [
+ {
+ "collation": "http://marklogic.com/collation/",
+ "namespace-uri": "",
+ "localname": "defaultWordKey"
+ },
+ {
+ "collation": "http://marklogic.com/collation/",
+ "namespace-uri": "",
+ "localname": "taggedWordKey"
+ },
+ {
+ "collation": "http://marklogic.com/collation/",
+ "namespace-uri": "",
+ "localname": "otherKey"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/databases/nodeOpticFunctionalTest.json b/test-complete-app/src/main/ml-config/databases/nodeOpticFunctionalTest.json
new file mode 100644
index 00000000..b7b695cf
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/databases/nodeOpticFunctionalTest.json
@@ -0,0 +1,72 @@
+{
+ "database-name": "nodeOpticFunctionalTest",
+ "schema-database": "Schemas",
+ "fast-element-trailing-wildcard-searches": true,
+ "two-character-searches": true,
+ "one-character-searches": true,
+ "uri-lexicon": true,
+ "range-element-index": [
+ {
+ "scalar-type": "string",
+ "collation": "http://marklogic.com/collation/",
+ "namespace-uri": "",
+ "localname": "city",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "string",
+ "collation": "http://marklogic.com/collation/",
+ "namespace-uri": "",
+ "localname": "cityName",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "string",
+ "collation": "http://marklogic.com/collation/",
+ "namespace-uri": "",
+ "localname": "cityTeam",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "date",
+ "namespace-uri": "",
+ "localname": "date",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "double",
+ "namespace-uri": "",
+ "localname": "distance",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "decimal",
+ "namespace-uri": "",
+ "localname": "id",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ },
+ {
+ "scalar-type": "int",
+ "namespace-uri": "",
+ "localname": "popularity",
+ "range-value-positions": false,
+ "invalid-values": "ignore"
+ }
+ ],
+ "geospatial-element-index": [
+ {
+ "namespace-uri": "",
+ "localname": "latLonPoint",
+ "coordinate-system": "wgs84",
+ "point-format": "point",
+ "range-value-positions": false,
+ "invalid-values": "reject"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/databases/nodeOpticFunctionalTestModules.json b/test-complete-app/src/main/ml-config/databases/nodeOpticFunctionalTestModules.json
new file mode 100644
index 00000000..985ca1bc
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/databases/nodeOpticFunctionalTestModules.json
@@ -0,0 +1,3 @@
+{
+ "database-name": "nodeOpticFunctionalTestModules"
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/roles/eval.json b/test-complete-app/src/main/ml-config/security/roles/eval.json
new file mode 100644
index 00000000..681dbd5b
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/roles/eval.json
@@ -0,0 +1,37 @@
+{
+ "role-name": "eval",
+ "description": "eval role",
+ "role": [],
+ "privilege": [
+ {
+ "privilege-name": "xdbc-eval",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-eval",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-eval-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-eval-in",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-invoke",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-invoke",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-invoke-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-invoke-in",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-spawn",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-spawn",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-spawn-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-spawn-in",
+ "kind": "execute"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/roles/qbvuser-role.json b/test-complete-app/src/main/ml-config/security/roles/qbvuser-role.json
new file mode 100644
index 00000000..5cab4f0f
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/roles/qbvuser-role.json
@@ -0,0 +1,75 @@
+{
+ "role-name": "qbvuser-role",
+ "description": "qbvuser role for test-complete tests",
+ "role": [
+ "tde-view",
+ "query-view-admin",
+ "app-user",
+ "eval",
+ "harmonized-reader",
+ "rest-extension-user",
+ "rest-reader",
+ "rest-writer",
+ "rest-admin",
+ "tde-admin",
+ "manage-user",
+ "sparql-update-user"
+ ],
+ "privilege": [
+ {
+ "privilege-name": "any-uri",
+ "action": "http://marklogic.com/xdmp/privileges/any-uri",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-eval",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-eval",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-eval-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-eval-in",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "sem-sparql",
+ "action": "http://marklogic.com/xdmp/privileges/sem-sparql",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdbc-eval",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-eval",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdbc-invoke",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-invoke",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-sql",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-sql",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-http-get",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-http-get",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-http-post",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-http-post",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdbc-invoke-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-invoke-in",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdbc-eval-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-eval-in",
+ "kind": "execute"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/roles/rest-evaluator.json b/test-complete-app/src/main/ml-config/security/roles/rest-evaluator.json
new file mode 100644
index 00000000..476c59cb
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/roles/rest-evaluator.json
@@ -0,0 +1,54 @@
+{
+ "role-name": "rest-evaluator",
+ "description": "REST writer who can eval, invoke, or set a dynamic databases",
+ "role": [
+ "rest-writer"
+ ],
+ "privilege": [
+ {
+ "privilege-name": "xdmp-eval",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-eval",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-eval-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-eval-in",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-invoke",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-invoke",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdbc-eval",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-eval",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdbc-eval-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-eval-in",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdbc-invoke",
+ "action": "http://marklogic.com/xdmp/privileges/xdbc-invoke",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "any-uri",
+ "action": "http://marklogic.com/xdmp/privileges/any-uri",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-set-session-field",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-set-session-field",
+ "kind": "execute"
+ },
+ {
+ "privilege-name": "xdmp-get-session-field",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-get-session-field",
+ "kind": "execute"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/roles/tde-User.json b/test-complete-app/src/main/ml-config/security/roles/tde-User.json
new file mode 100644
index 00000000..c9d8fd11
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/roles/tde-User.json
@@ -0,0 +1,16 @@
+{
+ "role-name": "tde-User",
+ "description": "test user to write tde to modules database",
+ "role": [
+ "tde-view",
+ "tde-admin",
+ "rest-writer"
+ ],
+ "privilege": [
+ {
+ "privilege-name": "xdmp-eval-in",
+ "action": "http://marklogic.com/xdmp/privileges/xdmp-eval-in",
+ "kind": "execute"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/users/qbvuser.json b/test-complete-app/src/main/ml-config/security/users/qbvuser.json
new file mode 100644
index 00000000..e90b1b21
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/users/qbvuser.json
@@ -0,0 +1,8 @@
+{
+ "user-name": "qbvuser",
+ "description": "qbvuser for test complete tests.",
+ "password": "qbvuser",
+ "role": [
+ "qbvuser-role"
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/users/rest-admin.json b/test-complete-app/src/main/ml-config/security/users/rest-admin.json
new file mode 100644
index 00000000..1d61dd6f
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/users/rest-admin.json
@@ -0,0 +1,8 @@
+{
+ "user-name": "rest-admin",
+ "description": "rest-admin user",
+ "password": "x",
+ "role": [
+ "rest-admin"
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/users/rest-evaluator.json b/test-complete-app/src/main/ml-config/security/users/rest-evaluator.json
new file mode 100644
index 00000000..fe89e731
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/users/rest-evaluator.json
@@ -0,0 +1,8 @@
+{
+ "user-name": "rest-evaluator",
+ "description": "rest-writer user with evaluate privileges",
+ "password": "x",
+ "role": [
+ "rest-evaluator"
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/users/rest-reader-optic.json b/test-complete-app/src/main/ml-config/security/users/rest-reader-optic.json
new file mode 100644
index 00000000..6db7588e
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/users/rest-reader-optic.json
@@ -0,0 +1,8 @@
+{
+ "user-name": "rest-reader-optic",
+ "password": "x",
+ "description": "rest-reader user",
+ "role": [
+ "rest-reader"
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/users/rest-reader.json b/test-complete-app/src/main/ml-config/security/users/rest-reader.json
new file mode 100644
index 00000000..7cdeed28
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/users/rest-reader.json
@@ -0,0 +1,8 @@
+{
+ "user-name": "rest-reader",
+ "description": "rest-reader user",
+ "password": "x",
+ "role": [
+ "rest-reader"
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/users/rest-writer.json b/test-complete-app/src/main/ml-config/security/users/rest-writer.json
new file mode 100644
index 00000000..340ec3ba
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/users/rest-writer.json
@@ -0,0 +1,9 @@
+{
+ "user-name": "rest-writer",
+ "description": "rest-writer user",
+ "password": "x",
+ "role": [
+ "rest-writer",
+ "rest-evaluator"
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/security/users/tde-user.json b/test-complete-app/src/main/ml-config/security/users/tde-user.json
new file mode 100644
index 00000000..deb28d45
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/security/users/tde-user.json
@@ -0,0 +1,8 @@
+{
+ "user-name": "tde-user",
+ "description": "test user to write tde to modules database",
+ "password": "x",
+ "role": [
+ "tde-User"
+ ]
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/servers/dmsdk-api-rest-server.json b/test-complete-app/src/main/ml-config/servers/dmsdk-api-rest-server.json
new file mode 100644
index 00000000..3c6ad55d
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/servers/dmsdk-api-rest-server.json
@@ -0,0 +1,13 @@
+{
+ "server-name": "dmsdk-api-rest-server",
+ "port": 8025,
+ "server-type": "http",
+ "root": "/",
+ "content-database": "dmsdk-api-rest-server",
+ "modules-database": "dmsdk-api-rest-server-modules",
+ "default-error-format": "json",
+ "error-handler": "/MarkLogic/rest-api/error-handler.xqy",
+ "url-rewriter": "/MarkLogic/rest-api/rewriter.xml",
+ "rewrite-resolves-globally": true,
+ "authentication": "digestbasic"
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/servers/node-client-api-rest-server.json b/test-complete-app/src/main/ml-config/servers/node-client-api-rest-server.json
new file mode 100644
index 00000000..3b6758f6
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/servers/node-client-api-rest-server.json
@@ -0,0 +1,13 @@
+{
+ "server-name": "node-client-api-rest-server",
+ "port": 8024,
+ "server-type": "http",
+ "root": "/",
+ "content-database": "node-client-api-rest-server",
+ "modules-database": "node-client-api-rest-server-modules",
+ "default-error-format": "json",
+ "error-handler": "/MarkLogic/rest-api/error-handler.xqy",
+ "url-rewriter": "/MarkLogic/rest-api/rewriter.xml",
+ "rewrite-resolves-globally": true,
+ "authentication": "digestbasic"
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-config/servers/nodeOpticFunctionalTest.json b/test-complete-app/src/main/ml-config/servers/nodeOpticFunctionalTest.json
new file mode 100644
index 00000000..6baa4b86
--- /dev/null
+++ b/test-complete-app/src/main/ml-config/servers/nodeOpticFunctionalTest.json
@@ -0,0 +1,13 @@
+{
+ "server-name": "nodeOpticFunctionalTest",
+ "port": 8079,
+ "server-type": "http",
+ "root": "/",
+ "content-database": "nodeOpticFunctionalTest",
+ "modules-database": "nodeOpticFunctionalTestModules",
+ "default-error-format": "json",
+ "error-handler": "/MarkLogic/rest-api/error-handler.xqy",
+ "url-rewriter": "/MarkLogic/rest-api/rewriter.xml",
+ "rewrite-resolves-globally": true,
+ "authentication": "digestbasic"
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/city1.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/city1.json
new file mode 100755
index 00000000..8388cedb
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/city1.json
@@ -0,0 +1,6 @@
+
+{
+ "cityName": "london",
+ "cityTeam": "arsenal",
+ "cityPopulation": 2000000
+}
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/city2.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/city2.json
new file mode 100755
index 00000000..c0a37c3d
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/city2.json
@@ -0,0 +1,6 @@
+
+{
+ "cityName": "new york",
+ "cityTeam": "yankee",
+ "cityPopulation": 11000000
+}
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/city3.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/city3.json
new file mode 100755
index 00000000..9f18b122
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/city3.json
@@ -0,0 +1,6 @@
+
+{
+ "cityName": "new jersey",
+ "cityTeam": "nets",
+ "cityPopulation": 3000000
+}
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/city4.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/city4.json
new file mode 100755
index 00000000..5640ea7d
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/city4.json
@@ -0,0 +1,6 @@
+
+{
+ "cityName": "beijing",
+ "cityTeam": "ducks",
+ "cityPopulation": 55000000
+}
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/city5.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/city5.json
new file mode 100755
index 00000000..3814c03c
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/city5.json
@@ -0,0 +1,6 @@
+
+{
+ "cityName": "cape town",
+ "cityTeam": "pirates",
+ "cityPopulation": 650000
+}
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/collections.properties b/test-complete-app/src/main/ml-data/optic/lexicon/test/collections.properties
new file mode 100644
index 00000000..b00d41c8
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/collections.properties
@@ -0,0 +1,4 @@
+city*=/optic/lexicon/test
+doc*=/optic/lexicon/test
+doc1.json=/optic/lexicon/test,/other/coll1,/other/coll2
+masterDetail*=/optic/view/test
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/doc1.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc1.json
new file mode 100755
index 00000000..38fa8e56
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc1.json
@@ -0,0 +1,18 @@
+{
+ "city":"london",
+ "distance":50.4,
+ "date":"2007-01-01",
+ "metro":true,
+ "description":"Two recent discoveries indicate probable very early settlements near the Thames",
+ "popularity":5,
+ "location":{
+ "latLonPoint":"51.50, -0.12",
+ "latLonPair":{
+ "lat":51.5,
+ "long":-0.12
+ },
+ "latLonParent":{
+ "latLonChild":"51.50, -0.12"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/doc2.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc2.json
new file mode 100755
index 00000000..c7345198
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc2.json
@@ -0,0 +1,18 @@
+{
+ "city":"new york",
+ "distance":23.3,
+ "date":"2006-06-23",
+ "metro":true,
+ "description":"Henry Hudsons 1609 voyage marked the beginning of European involvement with the area",
+ "popularity":5,
+ "location":{
+ "latLonPoint":"40.71, -74.01",
+ "latLonPair":{
+ "lat":40.71,
+ "long":-74.01
+ },
+ "latLonParent":{
+ "latLonChild":"40.71, -74.01"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/doc3.json b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc3.json
new file mode 100755
index 00000000..2bd7df87
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc3.json
@@ -0,0 +1,18 @@
+{
+ "city":"new jersey",
+ "distance":12.9,
+ "date":"1971-12-23",
+ "metro":false,
+ "description":"American forces under Washington met the forces under General Henry Clinton",
+ "popularity":2,
+ "location":{
+ "latLonPoint":"40.72, -74.07",
+ "latLonPair":{
+ "lat":40.72,
+ "long":-74.07
+ },
+ "latLonParent":{
+ "latLonChild":"40.72, -74.07"
+ }
+ }
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/doc4.xml b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc4.xml
new file mode 100755
index 00000000..8431dfa5
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc4.xml
@@ -0,0 +1,19 @@
+
+ beijing
+ 134.5
+ 1981-11-09
+ true
+ The Miyun Reservoir, on the upper reaches of the Chaobai River, is the largest reservoir within the municipality
+ 5
+
+ 39.90,116.40
+
+ 39.90,116.40
+
+
+ 39.90
+ 116.40
+
+
+
+
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/lexicon/test/doc5.xml b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc5.xml
new file mode 100755
index 00000000..8576dba9
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/lexicon/test/doc5.xml
@@ -0,0 +1,19 @@
+
+ cape town
+ 377.9
+ 1999-04-22
+ true
+ The earliest known remnants in the region were found at Peers cave in Fish Hoek
+ 3
+
+ -33.91,18.42
+
+ -33.91,18.42
+
+
+ -33.91
+ 18.42
+
+
+
+
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/plan/test/collections.properties b/test-complete-app/src/main/ml-data/optic/plan/test/collections.properties
new file mode 100644
index 00000000..295f8fa8
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/plan/test/collections.properties
@@ -0,0 +1 @@
+*=/optic/plan/test
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/plan/test/planLexicons.json b/test-complete-app/src/main/ml-data/optic/plan/test/planLexicons.json
new file mode 100644
index 00000000..9a916e74
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/plan/test/planLexicons.json
@@ -0,0 +1,161 @@
+{
+ "$optic": {
+ "ns": "op",
+ "fn": "operators",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "from-lexicons",
+ "args": [
+ {
+ "uri1": {
+ "uriReference": { }
+ },
+ "city": {
+ "jsonPropertyReference": {
+ "property": "city",
+ "scalarType": "string",
+ "collation": "http://marklogic.com/collation/",
+ "nullable": false
+ }
+ },
+ "popularity": {
+ "jsonPropertyReference": {
+ "property": "popularity",
+ "scalarType": "int",
+ "nullable": false
+ }
+ },
+ "date": {
+ "jsonPropertyReference": {
+ "property": "date",
+ "scalarType": "date",
+ "nullable": false
+ }
+ },
+ "distance": {
+ "jsonPropertyReference": {
+ "property": "distance",
+ "scalarType": "double",
+ "nullable": false
+ }
+ },
+ "point": {
+ "jsonPropertyReference": {
+ "property": "latLonPoint",
+ "scalarType": "point",
+ "coordinateSystem": "wgs84",
+ "nullable": false
+ }
+ }
+ },
+ "myCity",
+ {
+ "ns": "op",
+ "fn": "fragment-id-col",
+ "args": [
+ "fragId1"
+ ]
+ }
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "join-inner",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "operators",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "from-lexicons",
+ "args": [
+ {
+ "uri2": {
+ "uriReference": { }
+ },
+ "cityName": {
+ "jsonPropertyReference": {
+ "property": "cityName",
+ "scalarType": "string",
+ "collation": "http://marklogic.com/collation/",
+ "nullable": false
+ }
+ },
+ "cityTeam": {
+ "jsonPropertyReference": {
+ "property": "cityTeam",
+ "scalarType": "string",
+ "collation": "http://marklogic.com/collation/",
+ "nullable": false
+ }
+ }
+ },
+ "myTeam",
+ {
+ "ns": "op",
+ "fn": "fragment-id-col",
+ "args": [
+ "fragId2"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ null,
+ null
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "where",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "eq",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "viewCol",
+ "args": [
+ "myCity",
+ "city"
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "col",
+ "args": [
+ "cityName"
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "order-by",
+ "args": [
+ [
+ {
+ "ns": "op",
+ "fn": "asc",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "col",
+ "args": [
+ "date"
+ ]
+ }
+ ]
+ }
+ ]
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/plan/test/planTriples.json b/test-complete-app/src/main/ml-data/optic/plan/test/planTriples.json
new file mode 100644
index 00000000..bb854c69
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/plan/test/planTriples.json
@@ -0,0 +1,73 @@
+{
+ "$optic": {
+ "ns": "op",
+ "fn": "operators",
+ "args": [ {
+ "ns": "op",
+ "fn": "from-triples",
+ "args": [
+ [ {
+ "ns": "op",
+ "fn": "pattern",
+ "args": [
+ [ {
+ "ns": "op",
+ "fn": "col",
+ "args": [ "player_id" ]
+ } ],
+ [ {
+ "ns": "sem",
+ "fn": "iri",
+ "args": [ "http://marklogic.com/other/bball/players#age" ]
+ } ],
+ [ {
+ "ns": "op",
+ "fn": "col",
+ "args": [ "player_age" ]
+ } ], null
+ ]
+ }, {
+ "ns": "op",
+ "fn": "pattern",
+ "args": [
+ [ {
+ "ns": "op",
+ "fn": "col",
+ "args": [ "player_id" ]
+ } ],
+ [ {
+ "ns": "sem",
+ "fn": "iri",
+ "args": [ "http://marklogic.com/other/bball/players#name" ]
+ } ],
+ [ {
+ "ns": "op",
+ "fn": "col",
+ "args": [ "player_name" ]
+ } ], null
+ ]
+ }, {
+ "ns": "op",
+ "fn": "pattern",
+ "args": [
+ [ {
+ "ns": "op",
+ "fn": "col",
+ "args": [ "player_id" ]
+ } ],
+ [ {
+ "ns": "sem",
+ "fn": "iri",
+ "args": [ "http://marklogic.com/other/bball/players#team" ]
+ } ],
+ [ {
+ "ns": "op",
+ "fn": "col",
+ "args": [ "player_team" ]
+ } ], null
+ ]
+ } ], "myPlayer", null, null
+ ]
+ } ]
+ }
+}
diff --git a/test-complete-app/src/main/ml-data/optic/plan/test/planViews.json b/test-complete-app/src/main/ml-data/optic/plan/test/planViews.json
new file mode 100644
index 00000000..0a5f59ff
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/plan/test/planViews.json
@@ -0,0 +1,117 @@
+{
+ "$optic": {
+ "ns": "op",
+ "fn": "operators",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "from-view",
+ "args": [
+ "opticFunctionalTest",
+ "detail",
+ "myDetail",
+ null
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "join-inner",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "operators",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "from-view",
+ "args": [
+ "opticFunctionalTest",
+ "master",
+ "myMaster",
+ null
+ ]
+ }
+ ]
+ },
+ [
+ {
+ "ns": "op",
+ "fn": "on",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "viewCol",
+ "args": [
+ "myDetail",
+ "masterId"
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "viewCol",
+ "args": [
+ "myMaster",
+ "id"
+ ]
+ }
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "on",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "viewCol",
+ "args": [
+ "myMaster",
+ "id"
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "viewCol",
+ "args": [
+ "myDetail",
+ "id"
+ ]
+ }
+ ]
+ }
+ ],
+ null
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "order-by",
+ "args": [
+ [
+ {
+ "ns": "op",
+ "fn": "desc",
+ "args": [
+ {
+ "ns": "op",
+ "fn": "viewCol",
+ "args": [
+ "myDetail",
+ "name"
+ ]
+ }
+ ]
+ }
+ ]
+ ]
+ },
+ {
+ "ns": "op",
+ "fn": "offset-limit",
+ "args": [
+ 1,
+ 100
+ ]
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/sparql/test/collections.properties b/test-complete-app/src/main/ml-data/optic/sparql/test/collections.properties
new file mode 100644
index 00000000..295f8fa8
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/sparql/test/collections.properties
@@ -0,0 +1 @@
+*=/optic/plan/test
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/sparql/test/dedupdoc1.xml b/test-complete-app/src/main/ml-data/optic/sparql/test/dedupdoc1.xml
new file mode 100644
index 00000000..76234f73
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/sparql/test/dedupdoc1.xml
@@ -0,0 +1,15 @@
+
+ world
+
+
+ http://marklogicsparql.com/id#5555
+ http://marklogicsparql.com/addressbook#firstName
+ Jim
+
+
+ http://marklogicsparql.com/id#5555
+ http://marklogicsparql.com/addressbook#firstName
+ Jim
+
+
+
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/triple/test/collections.properties b/test-complete-app/src/main/ml-data/optic/triple/test/collections.properties
new file mode 100644
index 00000000..91f8d0dc
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/triple/test/collections.properties
@@ -0,0 +1,5 @@
+playerTripleSet.xml=/optic/player/triple/test
+duplicatePlayerTripleSet.xml=/optic/player/triple/test
+otherPlayerTripleSet.xml=/optic/other/player/triple/test
+teamTripleSet.xml=/optic/team/triple/test
+duplicateTeamTripleSet.xml=/optic/team/triple/test
diff --git a/test-complete-app/src/main/ml-data/optic/triple/test/duplicatePlayerTripleSet.xml b/test-complete-app/src/main/ml-data/optic/triple/test/duplicatePlayerTripleSet.xml
new file mode 100755
index 00000000..c7345106
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/triple/test/duplicatePlayerTripleSet.xml
@@ -0,0 +1,376 @@
+
+
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/name
+ John Doe
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/description
+ Describing John Doe
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/dob
+ 1981-05-04
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/eff
+ 25.45
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/age
+ 31
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/name
+ Bob Brian
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/description
+ Describing Bob Brian
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/position
+ Outfielder
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/dob
+ 1999-01-15
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/eff
+ 78.45
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/age
+ 23
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/003
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/name
+ Josh Ream
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/description
+ Describing Josh Ream
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/dob
+ 1985-11-30
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/eff
+ 53.10
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/name
+ Pat Crenshaw
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/description
+ Describing Pat Crenshaw
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/position
+ Catcher
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/dob
+ 1998-09-01
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/eff
+ 33.89
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/age
+ 25
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/name
+ Pedro Barrozo
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/description
+ Describing Pedro Barrozo
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/position
+ Midfielder
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/dob
+ 1991-12-09
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/eff
+ 41.65
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/age
+ 19
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/002
+
+
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/name
+ Aoki Yamada
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/description
+ Describing Aoki Yamada
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/position
+ First Base
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/dob
+ 1987-03-15
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/eff
+ 55.2
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/age
+ 34
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/003
+
+
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/name
+ Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/description
+ Describing Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/dob
+ 1984-11-01
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/eff
+ 32.89
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/name
+ Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/description
+ Describing Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/dob
+ 1984-11-01
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/eff
+ 32.89
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/name
+ Juan Leone
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/description
+ Describing Juan Leone
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/position
+ Second Base
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/dob
+ 1993-08-17
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/eff
+ 29.77
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/age
+ 27
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+
+
diff --git a/test-complete-app/src/main/ml-data/optic/triple/test/duplicateTeamTripleSet.xml b/test-complete-app/src/main/ml-data/optic/triple/test/duplicateTeamTripleSet.xml
new file mode 100755
index 00000000..9e18ba09
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/triple/test/duplicateTeamTripleSet.xml
@@ -0,0 +1,56 @@
+
+
+
+
+ http://marklogic.com/mlb/team/id/001
+ http://marklogic.com/mlb/team/name
+ Giants
+
+
+ http://marklogic.com/mlb/team/id/001
+ http://marklogic.com/mlb/team/city
+ San Francisco
+
+
+ http://marklogic.com/mlb/team/id/002
+ http://marklogic.com/mlb/team/name
+ Athletics
+
+
+ http://marklogic.com/mlb/team/id/002
+ http://marklogic.com/mlb/team/city
+ Oakland
+
+
+ http://marklogic.com/mlb/team/id/003
+ http://marklogic.com/mlb/team/name
+ Padres
+
+
+ http://marklogic.com/mlb/team/id/003
+ http://marklogic.com/mlb/team/city
+ San Diego
+
+
+ http://marklogic.com/mlb/team/id/004
+ http://marklogic.com/mlb/team/name
+ Yankees
+
+
+ http://marklogic.com/mlb/team/id/004
+ http://marklogic.com/mlb/team/city
+ New York
+
+
+ http://marklogic.com/mlb/team/id/005
+ http://marklogic.com/mlb/team/name
+ Mariners
+
+
+ http://marklogic.com/mlb/team/id/005
+ http://marklogic.com/mlb/team/city
+ Seattle
+
+
+
+
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/triple/test/otherPlayerTripleSet.xml b/test-complete-app/src/main/ml-data/optic/triple/test/otherPlayerTripleSet.xml
new file mode 100755
index 00000000..c7345106
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/triple/test/otherPlayerTripleSet.xml
@@ -0,0 +1,376 @@
+
+
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/name
+ John Doe
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/description
+ Describing John Doe
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/dob
+ 1981-05-04
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/eff
+ 25.45
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/age
+ 31
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/name
+ Bob Brian
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/description
+ Describing Bob Brian
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/position
+ Outfielder
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/dob
+ 1999-01-15
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/eff
+ 78.45
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/age
+ 23
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/003
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/name
+ Josh Ream
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/description
+ Describing Josh Ream
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/dob
+ 1985-11-30
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/eff
+ 53.10
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/name
+ Pat Crenshaw
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/description
+ Describing Pat Crenshaw
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/position
+ Catcher
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/dob
+ 1998-09-01
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/eff
+ 33.89
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/age
+ 25
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/name
+ Pedro Barrozo
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/description
+ Describing Pedro Barrozo
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/position
+ Midfielder
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/dob
+ 1991-12-09
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/eff
+ 41.65
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/age
+ 19
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/002
+
+
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/name
+ Aoki Yamada
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/description
+ Describing Aoki Yamada
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/position
+ First Base
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/dob
+ 1987-03-15
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/eff
+ 55.2
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/age
+ 34
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/003
+
+
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/name
+ Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/description
+ Describing Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/dob
+ 1984-11-01
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/eff
+ 32.89
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/name
+ Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/description
+ Describing Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/dob
+ 1984-11-01
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/eff
+ 32.89
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/name
+ Juan Leone
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/description
+ Describing Juan Leone
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/position
+ Second Base
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/dob
+ 1993-08-17
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/eff
+ 29.77
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/age
+ 27
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+
+
diff --git a/test-complete-app/src/main/ml-data/optic/triple/test/playerTripleSet.xml b/test-complete-app/src/main/ml-data/optic/triple/test/playerTripleSet.xml
new file mode 100755
index 00000000..c7345106
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/triple/test/playerTripleSet.xml
@@ -0,0 +1,376 @@
+
+
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/name
+ John Doe
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/description
+ Describing John Doe
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/dob
+ 1981-05-04
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/eff
+ 25.45
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/age
+ 31
+
+
+ http://marklogic.com/baseball/id#001
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/name
+ Bob Brian
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/description
+ Describing Bob Brian
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/position
+ Outfielder
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/dob
+ 1999-01-15
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/eff
+ 78.45
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/age
+ 23
+
+
+ http://marklogic.com/baseball/id#002
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/003
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/name
+ Josh Ream
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/description
+ Describing Josh Ream
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/dob
+ 1985-11-30
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/eff
+ 53.10
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#003
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/name
+ Pat Crenshaw
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/description
+ Describing Pat Crenshaw
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/position
+ Catcher
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/dob
+ 1998-09-01
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/eff
+ 33.89
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/age
+ 25
+
+
+ http://marklogic.com/baseball/id#004
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/name
+ Pedro Barrozo
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/description
+ Describing Pedro Barrozo
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/position
+ Midfielder
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/dob
+ 1991-12-09
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/eff
+ 41.65
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/age
+ 19
+
+
+ http://marklogic.com/baseball/id#005
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/002
+
+
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/name
+ Aoki Yamada
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/description
+ Describing Aoki Yamada
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/position
+ First Base
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/dob
+ 1987-03-15
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/eff
+ 55.2
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/age
+ 34
+
+
+ http://marklogic.com/baseball/id#006
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/003
+
+
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/name
+ Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/description
+ Describing Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/dob
+ 1984-11-01
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/eff
+ 32.89
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/name
+ Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/description
+ Describing Matt Rose
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/position
+ Pitcher
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/dob
+ 1984-11-01
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/eff
+ 32.89
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/age
+ 29
+
+
+ http://marklogic.com/baseball/id#007
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/005
+
+
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/name
+ Juan Leone
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/type
+ http://marklogic.com/baseball/players/bbtype/Dataset
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/description
+ Describing Juan Leone
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/position
+ Second Base
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/dob
+ 1993-08-17
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/eff
+ 29.77
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/age
+ 27
+
+
+ http://marklogic.com/baseball/id#008
+ http://marklogic.com/baseball/players/team
+ http://marklogic.com/mlb/team/id/001
+
+
+
+
diff --git a/test-complete-app/src/main/ml-data/optic/triple/test/teamTripleSet.xml b/test-complete-app/src/main/ml-data/optic/triple/test/teamTripleSet.xml
new file mode 100755
index 00000000..9e18ba09
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/triple/test/teamTripleSet.xml
@@ -0,0 +1,56 @@
+
+
+
+
+ http://marklogic.com/mlb/team/id/001
+ http://marklogic.com/mlb/team/name
+ Giants
+
+
+ http://marklogic.com/mlb/team/id/001
+ http://marklogic.com/mlb/team/city
+ San Francisco
+
+
+ http://marklogic.com/mlb/team/id/002
+ http://marklogic.com/mlb/team/name
+ Athletics
+
+
+ http://marklogic.com/mlb/team/id/002
+ http://marklogic.com/mlb/team/city
+ Oakland
+
+
+ http://marklogic.com/mlb/team/id/003
+ http://marklogic.com/mlb/team/name
+ Padres
+
+
+ http://marklogic.com/mlb/team/id/003
+ http://marklogic.com/mlb/team/city
+ San Diego
+
+
+ http://marklogic.com/mlb/team/id/004
+ http://marklogic.com/mlb/team/name
+ Yankees
+
+
+ http://marklogic.com/mlb/team/id/004
+ http://marklogic.com/mlb/team/city
+ New York
+
+
+ http://marklogic.com/mlb/team/id/005
+ http://marklogic.com/mlb/team/name
+ Mariners
+
+
+ http://marklogic.com/mlb/team/id/005
+ http://marklogic.com/mlb/team/city
+ Seattle
+
+
+
+
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/view/test/collections.properties b/test-complete-app/src/main/ml-data/optic/view/test/collections.properties
new file mode 100644
index 00000000..24e46cdc
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/view/test/collections.properties
@@ -0,0 +1 @@
+*=/optic/view/test
\ No newline at end of file
diff --git a/test-complete-app/src/main/ml-data/optic/view/test/masterDetail.xml b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail.xml
new file mode 100755
index 00000000..412f27e8
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail.xml
@@ -0,0 +1,59 @@
+
+
+
+ 1
+ Master 1
+ 2015-12-01
+
+
+ 2
+ Master 2
+ 2015-12-02
+
+
+
+
+ 1
+ Detail 1
+ 1
+ 10.01
+ blue
+
+
+ 2
+ Detail 2
+ 2
+ 20.02
+ blue
+
+
+ 3
+ Detail 3
+ 1
+ 30.03
+ blue
+
+
+ 4
+ Detail 4
+ 2
+ 40.04
+ green
+
+
+ 5
+ Detail 5
+ 1
+ 50.05
+ green
+
+
+ 6
+ Detail 6
+ 2
+ 60.06
+ green
+
+
+
+
diff --git a/test-complete-app/src/main/ml-data/optic/view/test/masterDetail2.json b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail2.json
new file mode 100755
index 00000000..c11cccf2
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail2.json
@@ -0,0 +1,64 @@
+{
+ "sets2": {
+ "masterSet": {
+ "master": [
+ {
+ "id": "3",
+ "name": "Master 3",
+ "date": "2016-03-01"
+ },
+ {
+ "id": "4",
+ "name": "Master 4",
+ "date": "2016-05-25"
+ }
+ ]
+ },
+ "detailSet": {
+ "detail": [
+ {
+ "id": "7",
+ "name": "Detail 7",
+ "masterId": "3",
+ "amount": "64.33",
+ "color": "red"
+ },
+ {
+ "id": "8",
+ "name": "Detail 8",
+ "masterId": "4",
+ "amount": "89.36",
+ "color": "blue"
+ },
+ {
+ "id": "9",
+ "name": "Detail 9",
+ "masterId": "1",
+ "amount": "72.90",
+ "color": "yellow"
+ },
+ {
+ "id": "10",
+ "name": "Detail 10",
+ "masterId": "2",
+ "amount": "30.26",
+ "color": "black"
+ },
+ {
+ "id": "11",
+ "name": "Detail 11",
+ "masterId": "3",
+ "amount": "82.04",
+ "color": "green"
+ },
+ {
+ "id": "12",
+ "name": "Detail 12",
+ "masterId": "1",
+ "amount": "25.86",
+ "color": "red"
+ }
+ ]
+ }
+ }
+}
diff --git a/test-complete-app/src/main/ml-data/optic/view/test/masterDetail3.json b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail3.json
new file mode 100755
index 00000000..cac14f0b
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail3.json
@@ -0,0 +1,64 @@
+{
+ "sets3": {
+ "masterSet3": {
+ "master3": [
+ {
+ "id": "3",
+ "name": "Master 3",
+ "date": "2016-03-01"
+ },
+ {
+ "id": "4",
+ "name": "Master 4",
+ "date": "2016-05-25"
+ }
+ ]
+ },
+ "detailSet3": {
+ "detail3": [
+ {
+ "id": "7",
+ "name": "Detail 7",
+ "masterId": "3",
+ "amount": "64.33",
+ "color": "red"
+ },
+ {
+ "id": "8",
+ "name": "Detail 8",
+ "masterId": "4",
+ "amount": "89.36",
+ "color": "blue"
+ },
+ {
+ "id": "9",
+ "name": "Detail 9",
+ "masterId": "1",
+ "amount": "72.90",
+ "color": "yellow"
+ },
+ {
+ "id": "10",
+ "name": "Detail 10",
+ "masterId": "2",
+ "amount": "30.26",
+ "color": "black"
+ },
+ {
+ "id": "11",
+ "name": "Detail 11",
+ "masterId": "3",
+ "amount": "82.04",
+ "color": "green"
+ },
+ {
+ "id": "12",
+ "name": "Detail 12",
+ "masterId": "1",
+ "amount": "25.86",
+ "color": "red"
+ }
+ ]
+ }
+ }
+}
diff --git a/test-complete-app/src/main/ml-data/optic/view/test/masterDetail4.json b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail4.json
new file mode 100755
index 00000000..3650a387
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail4.json
@@ -0,0 +1,43 @@
+{
+ "sets4": {
+ "masterSet4": {
+ "master4": [
+ {
+ "id": "100",
+ "name": "Master 100",
+ "date": "2016-03-11"
+ },
+ {
+ "id": "200",
+ "name": "Master 200",
+ "date": "2016-04-02"
+ }
+ ]
+ },
+ "detailSet4": {
+ "detail4": [
+ {
+ "id": "100",
+ "name": "Detail 100",
+ "masterId": "100",
+ "amount": "64.33",
+ "color": "red"
+ },
+ {
+ "id": "200",
+ "name": "Detail 200",
+ "masterId": "200",
+ "amount": "89.36",
+ "color": "blue"
+ },
+ {
+ "id": "300",
+ "name": "Detail 300",
+ "masterId": "200",
+ "amount": "72.90",
+ "color": "yellow"
+ }
+ ]
+ }
+ }
+}
diff --git a/test-complete-app/src/main/ml-data/optic/view/test/masterDetail5.json b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail5.json
new file mode 100755
index 00000000..be57f67e
--- /dev/null
+++ b/test-complete-app/src/main/ml-data/optic/view/test/masterDetail5.json
@@ -0,0 +1,29 @@
+{
+ "sets4": {
+ "detailSet4": {
+ "detail4": [
+ {
+ "id": "400",
+ "name": "Detail 400",
+ "masterId": "200",
+ "amount": "164.33",
+ "color": "purple"
+ },
+ {
+ "id": "500",
+ "name": "Detail 500",
+ "masterId": "100",
+ "amount": "189.36",
+ "color": "gold"
+ },
+ {
+ "id": "600",
+ "name": "Detail 600",
+ "masterId": "100",
+ "amount": "172.90",
+ "color": "white"
+ }
+ ]
+ }
+ }
+}
diff --git a/test-complete-app/src/main/ml-modules/root/optic/test/mapperReducer.sjs b/test-complete-app/src/main/ml-modules/root/optic/test/mapperReducer.sjs
new file mode 100644
index 00000000..79978ad1
--- /dev/null
+++ b/test-complete-app/src/main/ml-modules/root/optic/test/mapperReducer.sjs
@@ -0,0 +1,80 @@
+/*
+* Copyright (c) 2015-2025 Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
+*/
+'use strict';
+
+function arrayMapper(row) {
+ const result = row.concat();
+ result.push((typeof result[0] === 'string') ? 'seconds' :
+ fn.floor(fn.secondsFromDateTime(fn.currentDateTime()))
+ );
+ return result;
+}
+
+function colorIdMapper(row) {
+ const result = row;
+ switch(result.myColorId) {
+ case 1:
+ result.myColorId = 'RED';
+ break;
+ case 2:
+ result.myColorId = 'BLUE';
+ break;
+ case 3:
+ result.myColorId = 'YELLOW';
+ break;
+ case 4:
+ result.myColorId = 'BLACK';
+ break;
+ default:
+ result.myColorId = 'NO COLOR';
+ }
+ return result;
+}
+
+function arrayReducer(previous, row) {
+ const val = (previous === void 0) ? 0 : previous + row[0];
+ return val;
+}
+
+function fibReducer(previous, row) {
+ const i = Array.isArray(previous) ? previous.length : 0;
+ const result = row;
+ result.i = i;
+ switch(i) {
+ case 0:
+ result.fib = 0;
+ break;
+ case 1:
+ result.fib = 1;
+ break;
+ default:
+ result.fib = previous[i - 2].fib + previous[i - 1].fib;
+ break;
+ }
+ if (previous === void 0) {
+ previous = [result];
+ } else {
+ previous.push(result);
+ }
+ return previous;
+}
+
+function ageMapper(row) {
+ const result = row;
+ if(result.player_age < 21)
+ result.player_age = 'rookie';
+ else if(result.player_age > 21 && result.player_age < 30)
+ result.player_age = 'premium';
+ else
+ result.player_age = 'veteran';
+ return result;
+}
+
+module.exports = {
+ arrayMapper: arrayMapper,
+ colorIdMapper: colorIdMapper,
+ ageMapper: ageMapper,
+ arrayReducer: arrayReducer,
+ fibReducer: fibReducer
+};
diff --git a/test-complete-app/src/main/ml-schemas/permissions.properties b/test-complete-app/src/main/ml-schemas/permissions.properties
new file mode 100644
index 00000000..86366e36
--- /dev/null
+++ b/test-complete-app/src/main/ml-schemas/permissions.properties
@@ -0,0 +1 @@
+*=app-user,read,app-user,execute,app-builder,read,app-builder,execute,rest-reader,read,rest-reader,execute,rest-reader,update,rest-admin,read,rest-admin,execute,rest-admin,update,rest-writer,read,rest-writer,execute,rest-writer,update
diff --git a/test-complete-app/src/main/ml-schemas/tde/exportingRows.tdex b/test-complete-app/src/main/ml-schemas/tde/exportingRows.tdex
new file mode 100644
index 00000000..f83ff6b0
--- /dev/null
+++ b/test-complete-app/src/main/ml-schemas/tde/exportingRows.tdex
@@ -0,0 +1,35 @@
+
+
+ /match
+
+ source1
+
+
+
+ soccer
+ matches
+
+
+ id
+ long
+ id
+
+
+ document
+ string
+ docUri
+
+
+ date
+ date
+ match-date
+
+
+ league
+ string
+ league
+
+
+
+
+
diff --git a/test-complete-app/src/main/ml-schemas/tde/masterDetail.tdex b/test-complete-app/src/main/ml-schemas/tde/masterDetail.tdex
new file mode 100755
index 00000000..4f479c01
--- /dev/null
+++ b/test-complete-app/src/main/ml-schemas/tde/masterDetail.tdex
@@ -0,0 +1,35 @@
+
+ /sets
+
+
+ masterSet/master
+
+
+ opticFunctionalTest
+ master
+
+ idintid
+ namestringname
+ datedatedate
+
+
+
+
+
+ detailSet/detail
+
+
+ opticFunctionalTest
+ detail
+
+ idintid
+ namestringname
+ masterIdintmasterId
+ amountdoubleamount
+ colorstringcolor
+
+
+
+
+
+
diff --git a/test-complete-app/src/main/ml-schemas/tde/masterDetail2.tdej b/test-complete-app/src/main/ml-schemas/tde/masterDetail2.tdej
new file mode 100755
index 00000000..40463213
--- /dev/null
+++ b/test-complete-app/src/main/ml-schemas/tde/masterDetail2.tdej
@@ -0,0 +1,53 @@
+{
+ "template": {
+ "context": "/sets2",
+ "templates": [{
+ "context": "masterSet/master",
+ "rows": [{
+ "schemaName": "opticFunctionalTest2",
+ "viewName": "master",
+ "columns": [{
+ "name": "id",
+ "scalarType": "int",
+ "val": "id"
+ }, {
+ "name": "name",
+ "scalarType": "string",
+ "val": "name"
+ }, {
+ "name": "date",
+ "scalarType": "date",
+ "val": "date"
+ }]
+ }]
+ }, {
+ "context": "detailSet/detail",
+ "rows": [{
+ "schemaName": "opticFunctionalTest2",
+ "viewName": "detail",
+ "columns": [{
+ "name": "id",
+ "scalarType": "int",
+ "val": "id"
+ }, {
+ "name": "name",
+ "scalarType": "string",
+ "val": "name"
+ }, {
+ "name": "masterId",
+ "scalarType": "int",
+ "val": "masterId"
+ }, {
+ "name": "amount",
+ "scalarType": "double",
+ "val": "amount"
+ }, {
+ "name": "color",
+ "scalarType": "string",
+ "val": "color"
+ }]
+ }]
+ }]
+ }
+}
+
diff --git a/test-complete-app/src/main/ml-schemas/tde/masterDetail3.tdej b/test-complete-app/src/main/ml-schemas/tde/masterDetail3.tdej
new file mode 100755
index 00000000..d702b049
--- /dev/null
+++ b/test-complete-app/src/main/ml-schemas/tde/masterDetail3.tdej
@@ -0,0 +1,53 @@
+{
+ "template": {
+ "context": "/sets3",
+ "templates": [{
+ "context": "masterSet3/master3",
+ "rows": [{
+ "schemaName": "opticFunctionalTest3",
+ "viewName": "master3",
+ "columns": [{
+ "name": "id",
+ "scalarType": "int",
+ "val": "id"
+ }, {
+ "name": "name",
+ "scalarType": "string",
+ "val": "name"
+ }, {
+ "name": "date",
+ "scalarType": "date",
+ "val": "date"
+ }]
+ }]
+ }, {
+ "context": "detailSet3/detail3",
+ "rows": [{
+ "schemaName": "opticFunctionalTest3",
+ "viewName": "detail3",
+ "columns": [{
+ "name": "id",
+ "scalarType": "int",
+ "val": "id"
+ }, {
+ "name": "name",
+ "scalarType": "string",
+ "val": "name"
+ }, {
+ "name": "masterId",
+ "scalarType": "int",
+ "val": "masterId"
+ }, {
+ "name": "amount",
+ "scalarType": "double",
+ "val": "amount"
+ }, {
+ "name": "color",
+ "scalarType": "string",
+ "val": "color"
+ }]
+ }]
+ }]
+ }
+}
+
diff --git a/test-complete-app/src/main/ml-schemas/tde/masterDetail4.tdej b/test-complete-app/src/main/ml-schemas/tde/masterDetail4.tdej
new file mode 100755
index 00000000..7d026ce4
--- /dev/null
+++ b/test-complete-app/src/main/ml-schemas/tde/masterDetail4.tdej
@@ -0,0 +1,53 @@
+{
+ "template": {
+ "context": "/sets4",
+ "templates": [{
+ "context": "masterSet4/master4",
+ "rows": [{
+ "schemaName": "opticFunctionalTest4",
+ "viewName": "master4",
+ "columns": [{
+ "name": "id",
+ "scalarType": "int",
+ "val": "id"
+ }, {
+ "name": "name",
+ "scalarType": "string",
+ "val": "name"
+ }, {
+ "name": "date",
+ "scalarType": "date",
+ "val": "date"
+ }]
+ }]
+ }, {
+ "context": "detailSet4/detail4",
+ "rows": [{
+ "schemaName": "opticFunctionalTest4",
+ "viewName": "detail4",
+ "columns": [{
+ "name": "id",
+ "scalarType": "int",
+ "val": "id"
+ }, {
+ "name": "name",
+ "scalarType": "string",
+ "val": "name"
+ }, {
+ "name": "masterId",
+ "scalarType": "int",
+ "val": "masterId"
+ }, {
+ "name": "amount",
+ "scalarType": "double",
+ "val": "amount"
+ }, {
+ "name": "color",
+ "scalarType": "string",
+ "val": "color"
+ }]
+ }]
+ }]
+ }
+}
+
diff --git a/test-complete-app/src/main/turtle/companies/companies_100.ttl b/test-complete-app/src/main/turtle/companies/companies_100.ttl
new file mode 100755
index 00000000..605112c7
--- /dev/null
+++ b/test-complete-app/src/main/turtle/companies/companies_100.ttl
@@ -0,0 +1,1804 @@
+@prefix demor: .
+@prefix demov: .
+@prefix vcard: .
+
+
+##company 1
+demor:COMPANY001 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 12000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "San Jose";
+ vcard:region "Texas";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 2
+demor:COMPANY002 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "San Jose";
+ vcard:region "New York";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 3
+demor:COMPANY003 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 1000000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 4
+demor:COMPANY004 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 8;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Menlo Park";
+ vcard:region "Arizona";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 5
+demor:COMPANY005 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 347852766;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Menlo Park";
+ vcard:region "Texas";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 6
+demor:COMPANY006 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 2300450;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "San Jose";
+ vcard:region "North Dakota";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 7
+demor:COMPANY007 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 8;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "Menlo Park";
+ vcard:region "Nevada";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 8
+demor:COMPANY008 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 347852766;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "North Carolina";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 9
+demor:COMPANY009 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 300000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Atherton";
+ vcard:region "Texas";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 10
+demor:COMPANY010 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 15000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "Menlo Park";
+ vcard:region "New York";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 11
+demor:COMPANY011 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 1000000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 12
+demor:COMPANY012 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 347852766;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Atherton";
+ vcard:region "North Carolina";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 13
+demor:COMPANY013 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 1000000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Redwood City";
+ vcard:region "North Carolina";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 14
+demor:COMPANY014 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 347852766;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Menlo Park";
+ vcard:region "North Dakota";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 15
+demor:COMPANY015 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 12000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Menlo Park";
+ vcard:region "North Dakota";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 16
+demor:COMPANY016 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 15000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "San Jose";
+ vcard:region "Texas";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 17
+demor:COMPANY017 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 100000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "Redwood City";
+ vcard:region "Texas";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 18
+demor:COMPANY018 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 1000000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "North Dakota";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 19
+demor:COMPANY019 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 12000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 20
+demor:COMPANY020 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 10000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Atherton";
+ vcard:region "Arizona";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 21
+demor:COMPANY021 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 15000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Redwood City";
+ vcard:region "New York";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 22
+demor:COMPANY022 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Atherton";
+ vcard:region "North Dakota";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 23
+demor:COMPANY023 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 15000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Menlo Park";
+ vcard:region "Arizona";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 24
+demor:COMPANY024 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 12000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Menlo Park";
+ vcard:region "North Dakota";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 25
+demor:COMPANY025 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 8;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 26
+demor:COMPANY026 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 10000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "San Jose";
+ vcard:region "North Carolina";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 27
+demor:COMPANY027 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 15000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Atherton";
+ vcard:region "North Carolina";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 28
+demor:COMPANY028 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 2300450;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Atherton";
+ vcard:region "Arizona";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 29
+demor:COMPANY029 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 347852766;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Atherton";
+ vcard:region "Nevada";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 30
+demor:COMPANY030 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 15000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 31
+demor:COMPANY031 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Redwood City";
+ vcard:region "Arizona";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 32
+demor:COMPANY032 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 347852766;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 33
+demor:COMPANY033 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 8;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Redwood City";
+ vcard:region "Arizona";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 34
+demor:COMPANY034 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 15000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Redwood City";
+ vcard:region "Nevada";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 35
+demor:COMPANY035 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 10000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Menlo Park";
+ vcard:region "Nevada";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 36
+demor:COMPANY036 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 300000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 37
+demor:COMPANY037 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 10000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Atherton";
+ vcard:region "Arizona";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 38
+demor:COMPANY038 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 300000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Atherton";
+ vcard:region "Texas";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 39
+demor:COMPANY039 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "Nevada";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 40
+demor:COMPANY040 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 15000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 41
+demor:COMPANY041 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 300000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Menlo Park";
+ vcard:region "New York";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 42
+demor:COMPANY042 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 10000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Atherton";
+ vcard:region "Nevada";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 43
+demor:COMPANY043 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 1000000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "San Jose";
+ vcard:region "California";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 44
+demor:COMPANY044 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 10000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Menlo Park";
+ vcard:region "North Dakota";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 45
+demor:COMPANY045 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 15000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Redwood City";
+ vcard:region "Arizona";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 46
+demor:COMPANY046 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 300000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Atherton";
+ vcard:region "California";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 47
+demor:COMPANY047 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 100000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Redwood City";
+ vcard:region "New York";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 48
+demor:COMPANY048 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 100000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 49
+demor:COMPANY049 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 347852766;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Redwood City";
+ vcard:region "North Carolina";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 50
+demor:COMPANY050 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 347852766;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "San Jose";
+ vcard:region "Texas";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 51
+demor:COMPANY051 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Menlo Park";
+ vcard:region "Texas";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 52
+demor:COMPANY052 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 12000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Menlo Park";
+ vcard:region "Arizona";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 53
+demor:COMPANY053 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 347852766;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Redwood City";
+ vcard:region "North Dakota";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 54
+demor:COMPANY054 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 10000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "North Dakota";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 55
+demor:COMPANY055 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 15000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Menlo Park";
+ vcard:region "North Dakota";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 56
+demor:COMPANY056 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 347852766;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Menlo Park";
+ vcard:region "New York";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 57
+demor:COMPANY057 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 10000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "San Jose";
+ vcard:region "Texas";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 58
+demor:COMPANY058 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 1000000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Redwood City";
+ vcard:region "New York";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 59
+demor:COMPANY059 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 15000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "San Jose";
+ vcard:region "California";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 60
+demor:COMPANY060 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 100000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Redwood City";
+ vcard:region "New York";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 61
+demor:COMPANY061 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 10000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "Texas";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 62
+demor:COMPANY062 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 15000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "Nevada";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 63
+demor:COMPANY063 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 100000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Menlo Park";
+ vcard:region "New York";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 64
+demor:COMPANY064 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 12000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "San Jose";
+ vcard:region "North Dakota";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 65
+demor:COMPANY065 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 2300450;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Atherton";
+ vcard:region "North Carolina";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 66
+demor:COMPANY066 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 10000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Atherton";
+ vcard:region "Nevada";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 67
+demor:COMPANY067 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 8;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "Redwood City";
+ vcard:region "North Dakota";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 68
+demor:COMPANY068 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 300000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Atherton";
+ vcard:region "Texas";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 69
+demor:COMPANY069 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 12000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Redwood City";
+ vcard:region "Arizona";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 70
+demor:COMPANY070 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 2300450;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "Menlo Park";
+ vcard:region "New York";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 71
+demor:COMPANY071 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 8;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Redwood City";
+ vcard:region "North Dakota";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 72
+demor:COMPANY072 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 1000000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 73
+demor:COMPANY073 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 1000000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Redwood City";
+ vcard:region "Texas";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 74
+demor:COMPANY074 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 15000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 75
+demor:COMPANY075 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 10000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Menlo Park";
+ vcard:region "Nevada";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 76
+demor:COMPANY076 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 300000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Atherton";
+ vcard:region "New York";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 77
+demor:COMPANY077 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 12000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Japan";
+ vcard:locality "Redwood City";
+ vcard:region "Nevada";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 78
+demor:COMPANY078 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 8;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 79
+demor:COMPANY079 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 1000000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "San Jose";
+ vcard:region "Texas";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 80
+demor:COMPANY080 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 15000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Redwood City";
+ vcard:region "California";
+ vcard:postal-code "22222";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 81
+demor:COMPANY081 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 347852766;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "China";
+ vcard:locality "Menlo Park";
+ vcard:region "Arizona";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 82
+demor:COMPANY082 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 15000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "San Jose";
+ vcard:region "Texas";
+ vcard:postal-code "66666";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 83
+demor:COMPANY083 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 84
+demor:COMPANY084 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "San Jose";
+ vcard:region "California";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 85
+demor:COMPANY085 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 347852766;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Atherton";
+ vcard:region "Texas";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 86
+demor:COMPANY086 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 1000000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "San Jose";
+ vcard:region "New York";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 87
+demor:COMPANY087 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 10000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Atherton";
+ vcard:region "California";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 88
+demor:COMPANY088 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 100000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 89
+demor:COMPANY089 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 100000000;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Redwood City";
+ vcard:region "New York";
+ vcard:postal-code "33333";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 90
+demor:COMPANY090 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 10000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CTO";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "San Jose";
+ vcard:region "Arizona";
+ vcard:postal-code "88888";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 91
+demor:COMPANY091 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 10000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Italy";
+ vcard:locality "Menlo Park";
+ vcard:region "North Carolina";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 92
+demor:COMPANY092 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 100000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "President";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "New York";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 93
+demor:COMPANY093 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 12000000;
+ demov:employees 10500;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "Germany";
+ vcard:locality "Menlo Park";
+ vcard:region "North Carolina";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 94
+demor:COMPANY094 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Financial Services";
+ demov:sales 8;
+ demov:employees 12;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "Mary Hodges";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "UK";
+ vcard:locality "Menlo Park";
+ vcard:region "California";
+ vcard:postal-code "44444";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 95
+demor:COMPANY095 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Healthcare/Life Sciences";
+ demov:sales 12000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Menlo Park";
+ vcard:region "Nevada";
+ vcard:postal-code "55555";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 96
+demor:COMPANY096 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 100000000;
+ demov:employees 256;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Redwood City";
+ vcard:region "North Dakota";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 97
+demor:COMPANY097 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Industrial Goods";
+ demov:sales 347852766;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "India";
+ vcard:locality "Redwood City";
+ vcard:region "Nevada";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 98
+demor:COMPANY098 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Other";
+ demov:sales 300000000;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CFO";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Menlo Park";
+ vcard:region "Arizona";
+ vcard:postal-code "11111";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 99
+demor:COMPANY099 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Business/Consumer Service";
+ demov:sales 300000000;
+ demov:employees 22647;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "CEO";
+ vcard:hasEmail ;
+ vcard:fn "Joe Brown";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "USA";
+ vcard:locality "Atherton";
+ vcard:region "Arizona";
+ vcard:postal-code "77777";
+ vcard:street-address "1 Infinite Loop" ].
+
+##company 100
+demor:COMPANY100 a vcard:Organization;
+ demov:listed "true";
+ demov:industry "Retail/Wholesale";
+ demov:sales 2300450;
+ demov:employees 9450;
+ demov:hasExecutive [ a vcard:Individual;
+ vcard:hasTitle "Director of IT";
+ vcard:hasEmail ;
+ vcard:fn "John Smith";
+ ];
+ vcard:hasAddress [
+ vcard:country-name "France";
+ vcard:locality "Atherton";
+ vcard:region "New York";
+ vcard:postal-code "99999";
+ vcard:street-address "1 Infinite Loop" ].
diff --git a/test-complete-app/src/main/turtle/people/people.ttl b/test-complete-app/src/main/turtle/people/people.ttl
new file mode 100644
index 00000000..de6cf435
--- /dev/null
+++ b/test-complete-app/src/main/turtle/people/people.ttl
@@ -0,0 +1,70 @@
+@prefix foaf: .
+@prefix ppl: .
+
+ppl:person1 foaf:knows ppl:person2 .
+ppl:person1 foaf:knows ppl:person3 .
+ppl:person1 foaf:knows ppl:person5 .
+ppl:person1 foaf:knows ppl:person7 .
+
+ppl:person2 foaf:knows ppl:person11 .
+ppl:person2 foaf:knows ppl:person3 .
+ppl:person3 foaf:knows ppl:person13 .
+ppl:person13 foaf:knows ppl:person17 .
+ppl:person13 foaf:knows ppl:person19 .
+
+ppl:person4 foaf:knows ppl:person6 .
+ppl:person6 foaf:knows ppl:person8 .
+ppl:person8 foaf:knows ppl:person10 .
+ppl:person10 foaf:knows ppl:person12 .
+ppl:person12 foaf:knows ppl:person14 .
+ppl:person14 foaf:knows ppl:person16 .
+ppl:person16 foaf:knows ppl:person18 .
+ppl:person18 foaf:knows ppl:person20 .
+
+ppl:person20 foaf:knows ppl:person20 .
+
+ppl:person9 foaf:knows ppl:person12 .
+ppl:person12 foaf:knows ppl:person15 .
+ppl:person15 foaf:knows ppl:person18 .
+ppl:person18 foaf:knows ppl:person9 .
+
+ppl:person1 a ppl:Person ;
+ foaf:name "Person 1" .
+ppl:person2 a ppl:Person ;
+ foaf:name "Person 2" .
+ppl:person3 a ppl:Person ;
+ foaf:name "Person 3" .
+ppl:person4 a ppl:Person ;
+ foaf:name "Person 4" .
+ppl:person5 a ppl:Person ;
+ foaf:name "Person 5" .
+ppl:person6 a ppl:Person ;
+ foaf:name "Person 6" .
+ppl:person7 a ppl:Person ;
+ foaf:name "Person 7" .
+ppl:person8 a ppl:Person ;
+ foaf:name "Person 8" .
+ppl:person9 a ppl:Person ;
+ foaf:name "Person 9" .
+ppl:person10 a ppl:Person ;
+ foaf:name "Person 10" .
+ppl:person11 a ppl:Person ;
+ foaf:name "Person 11" .
+ppl:person12 a ppl:Person ;
+ foaf:name "Person 12" .
+ppl:person13 a ppl:Person ;
+ foaf:name "Person 13" .
+ppl:person14 a ppl:Person ;
+ foaf:name "Person 14" .
+ppl:person15 a ppl:Person ;
+ foaf:name "Person 15" .
+ppl:person16 a ppl:Person ;
+ foaf:name "Person 16" .
+ppl:person17 a ppl:Person ;
+ foaf:name "Person 17" .
+ppl:person18 a ppl:Person ;
+ foaf:name "Person 18" .
+ppl:person19 a ppl:Person ;
+ foaf:name "Person 19" .
+ppl:person20 a ppl:Person ;
+ foaf:name "Person 20" .
diff --git a/test-complete/nodejs-optic-generate-views.js b/test-complete/nodejs-optic-generate-views.js
index fd1a3637..b597689b 100644
--- a/test-complete/nodejs-optic-generate-views.js
+++ b/test-complete/nodejs-optic-generate-views.js
@@ -27,8 +27,8 @@ const db = marklogic.createDatabaseClient(
// Client to query schema database to verify view is stored
// Make sure you have qbvuser user created. See XQuery script nodejs-optic-setup.xml of internal repo (SVN).
-var dbModClient = marklogic.createDatabaseClient({
- database: dbName + 'Modules',
+var dbSchemasClient = marklogic.createDatabaseClient({
+ database: 'Schemas',
host: connectdef.host,
port: connectdef.port,
user: 'qbvuser',
@@ -76,14 +76,14 @@ describe('Nodejs Optic generate views test', function () {
dbClient.rows.generateView(plan, 'InnerJoin', 'keymatch')
.then(function (res) {
//console.log(JSON.stringify(res, null, 2));
- dbModClient.documents.write({
+ dbSchemasClient.documents.write({
uri: '/qbv-InnerJoin-keymatch.xml',
collections: 'http://marklogic.com/xdmp/qbv',
contentType: 'application/xml',
content: res
}).
result(function (response) {
- setTimeout(()=> done(), 10120);
+ setTimeout(()=> done(), 10120);
});
}).catch(error=>done(error));
});
@@ -96,9 +96,9 @@ describe('Nodejs Optic generate views test', function () {
.then(function (output) {
//console.log(JSON.stringify(output, null, 2));
expect(output.rows.length).to.equal(6);
- var row0 = output.rows[0];
- var row3 = output.rows[3];
- var row5 = output.rows[5];
+ var row0 = output.rows[0];
+ var row3 = output.rows[3];
+ var row5 = output.rows[5];
expect(row0['InnerJoin.keymatch.amount'].value).to.equal(60.06);
expect(row0['InnerJoin.keymatch.color'].value).to.equal('green');
@@ -130,7 +130,7 @@ describe('Nodejs Optic generate views test', function () {
dbClient.rows.generateView(plan, 'sparql', 'groupmin')
.then(function (res) {
//console.log(JSON.stringify(res, null, 2));
- dbModClient.documents.write({
+ dbSchemasClient.documents.write({
uri: '/qbv-sparql-groupmin.xml',
collections: 'http://marklogic.com/xdmp/qbv',
contentType: 'application/xml',
@@ -187,7 +187,7 @@ describe('Nodejs Optic generate views test', function () {
dbClient.rows.generateView(plan, 'lexicons', 'orderbyselect')
.then(function (res) {
//console.log(JSON.stringify(res, null, 2));
- dbModClient.documents.write({
+ dbSchemasClient.documents.write({
uri: '/qbv-lexicons-orderby-select.xml',
collections: 'http://marklogic.com/xdmp/qbv',
contentType: 'application/xml',