Here is example of the basic Northwind RDF Views deployment. The sequence of operations is very common for adding SPARQL access to existing application.
There exist few important questions to answer. Who should have access to data behind RDF View? Should someone have access to other sorts of RDF data but not to the new View? What are applications that should be interoperable with the new RDF data source? Are there any applications that produce similar data but that data sould be kept apart from data made by view? How to ensure that deployment the view will not cause problems for other applications?
First of all, we decide whether the default web service endpoint should have access to the data in question. If it should then we have to grant SELECT privileges to the account "SPARQL" that is used for the default endpoint; if it should not but some custom edpoint should then grant to the owner account of that account. Granting access is less trivial that it is usual. On one hand, those who can make SQL SELECT statements on application's tables can also make SPARQL queries on RDF View over that tables, because it makes SQL inside. On the other hand, those who do not intend to query that data at all may get unexpected "permission denied" errors on queries that worked fine before adding an RDF View. If SPARQL compiler can not prove that the query can not access data from the view then it will generate SQL code that will access tables behind the view. In some cases permission problems should be resolved by creating RDF View in a separate RDF storage. In this example, data are public:
use DB; GRANT SELECT ON "Demo"."demo"."Products" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Suppliers" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Shippers" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Categories" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Customers" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Employees" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Orders" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Order_Details" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Countries" TO "SPARQL"; GRANT SELECT ON "Demo"."demo"."Provinces" TO "SPARQL";
Interoperability is the next question. The example is not interoperable with anything so in can provide data of any form, a real application will probably use some ontology from external source. Sometimes data should be converted from internal application's representation to something different (such as metric to imperial or ATT country code to two-character country id); sometimes composed IRIs should follow special rules; function-based IRI classes may help in that cases. As this is the first example, only plain format-string-based IRI classes are used.
We should also ensure that data generated by the new view will not be accidentally mixed with other data of the database. For that purpose the example will use a unique graph name that includes both application name and host name. In addition, the script will drop declarations that might remain from a previous run of the same script. The script is executed many times during the development so erasing previous version is worth writing. It will report an error if there's nothing to erase but it's better than unpredictable errors due to writing new declarations over existing ones.
Making graph name unique for every host is not needed if the application is supposed to be "local" and nobody will access more than one installation of the application. If this is the case, use some fixed graph IRI, not necessarily starting with hostname at all; this is much more convenient for querying because you don't have to calculate the graph name in each query. With fixed graph in use, it is still possible to clone the RDF View to map to a unique graph as soon as the application become "public" and requires merging data from many installations.
SPARQL drop quad map graph iri("http://^{URIQADefaultHost}^/Northwind")
;
SPARQL drop quad map virtrdf:NorthwindDemo
;
The ^{URIQADefaultHost}^ macro is replaced with the value of DefaultHost parameter of [URIQA] section of configuration file. The IRI is written as iri("http://^{URIQADefaultHost}^/Northwind"), not as <http://^{URIQADefaultHost}^/Northwind> because macro of this sort works only inside SPARQL string values.
Now it's safe to create IRI classes needed for the view. If these classes are used only in the view we define then it is safe to create all of them in a single statement. If some of them are used across multiple declarations then errors may occur. it is impossible to redefine an IRI class that is in use; the compiler will try to avoid reporting errors by checking whether the new declaration is identical to the existing one and by trying garbage collection in hope that the IRI class is used only in garbage, but errors may occur anyway. Thus it is better to declare "shared" IRI classes by individual statements and group together only "private" IRI classes of a view. If a "class redefinition" error occurs in the middle of a group then "undefined class" errors may occur after because the processing of the group was interrupted before rest of group was not executed. When in trouble, try DB.DBA.RDF_AUDIT_METADATA procedure.
SPARQL
create iri class northwind:Category "http://^{URIQADefaultHost}^/Northwind/Category/%d#this" (in category_id integer not null) .
create iri class northwind:Shipper "http://^{URIQADefaultHost}^/Northwind/Shipper/%d#this" (in shipper_id integer not null) .
create iri class northwind:Supplier "http://^{URIQADefaultHost}^/Northwind/Supplier/%d#this" (in supplier_id integer not null) .
create iri class northwind:Product "http://^{URIQADefaultHost}^/Northwind/Product/%d#this" (in product_id integer not null) .
create iri class northwind:Customer "http://^{URIQADefaultHost}^/Northwind/Customer/%U#this" (in customer_id varchar not null) .
create iri class northwind:Employee "http://^{URIQADefaultHost}^/Northwind/Employee/%U%U%d#this" (in employee_firstname varchar not null, in employee_lastname varchar not null, in employee_id integer not null) .
create iri class northwind:Order "http://^{URIQADefaultHost}^/Northwind/Order/%d#this" (in order_id integer not null) .
create iri class northwind:CustomerContact "http://^{URIQADefaultHost}^/Northwind/CustomerContact/%U#this" (in customer_id varchar not null) .
create iri class northwind:OrderLine "http://^{URIQADefaultHost}^/Northwind/OrderLine/%d/%d#this" (in order_id integer not null, in product_id integer not null) .
create iri class northwind:Province "http://^{URIQADefaultHost}^/Northwind/Province/%U/%U#this" (in country_name varchar not null, in province_name varchar not null) .
create iri class northwind:Country "http://^{URIQADefaultHost}^/Northwind/Country/%U#this" (in country_name varchar not null) .
create iri class northwind:Flag "http://^{URIQADefaultHost}^%U#this" (in flag_path varchar not null) .
create iri class northwind:dbpedia_iri "http://dbpedia.org/resource/%U" (in uname varchar not null) .
create iri class northwind:EmployeePhoto "http://^{URIQADefaultHost}^/DAV/VAD/demo/sql/EMP%d#this" (in emp_id varchar not null) .
create iri class northwind:CategoryPhoto "http://^{URIQADefaultHost}^/DAV/VAD/demo/sql/CAT%d#this" (in category_id varchar not null) .
;
One IRI class per subject type; format strings begin with same host but different directory names so this will let the compiler to guess the type of subject by the text of IRI. Most of declarations are bijections and may get option (bijection) hint but these format strings are so simple that the compiler may understand it by itself. (northwind:Employee is not a bijection because sprintf_inverse will be unable to split the tail of IRI string and find the boundary between first and last name.)
The final operation is extending the default quad storage with new tree of quad map patterns.
SPARQL
prefix northwind: <http://demo.openlinksw.com/schemas/northwind#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
alter quad storage virtrdf:DefaultQuadStorage
from Demo.demo.Products as products
from Demo.demo.Suppliers as suppliers
from Demo.demo.Shippers as shippers
from Demo.demo.Categories as categories
from Demo.demo.Customers as customers
from Demo.demo.Employees as employees
from Demo.demo.Orders as orders
from Demo.demo.Order_Details as order_lines
from Demo.demo.Countries as countries
from Demo.demo.Provinces as provinces
where (^{suppliers.}^.Country = ^{countries.}^.Name)
where (^{customers.}^.Country = ^{countries.}^.Name)
where (^{employees.}^.Country = ^{countries.}^.Name)
where (^{orders.}^.ShipCountry = ^{countries.}^.Name)
{
create virtrdf:NorthwindDemo as graph iri ("http://^{URIQADefaultHost}^/Northwind") option (exclusive)
{
northwind:CustomerContact (customers.CustomerID)
a foaf:Person
as virtrdf:CustomerContact-foaf_Person .
northwind:CustomerContact (customers.CustomerID)
a northwind:CustomerContact
as virtrdf:CustomerContact-CustomerContact;
foaf:name customers.ContactName
as virtrdf:CustomerContact-contact_name ;
foaf:phone customers.Phone
as virtrdf:CustomerContact-foaf_phone ;
northwind:is_contact_at northwind:Customer (customers.CustomerID)
as virtrdf:CustomerContact-is_contact_at ;
northwind:country northwind:Country (customers.Country)
as virtrdf:CustomerContact-country ;
rdfs:isDefinedBy northwind:customercontact_iri (customers.CustomerID) ;
rdfs:isDefinedBy northwind:CustomerContact (customers.CustomerID) .
northwind:Country (customers.Country)
northwind:is_country_of
northwind:CustomerContact (customers.CustomerID) as virtrdf:CustomerContact-is_country_of .
northwind:Product (products.ProductID)
a northwind:Product
as virtrdf:Product-ProductID ;
northwind:has_category northwind:Category (products.CategoryID)
as virtrdf:Product-product_has_category ;
northwind:has_supplier northwind:Supplier (products.SupplierID)
as virtrdf:Product-product_has_supplier ;
northwind:productName products.ProductName
as virtrdf:Product-name_of_product ;
northwind:quantityPerUnit products.QuantityPerUnit
as virtrdf:Product-quantity_per_unit ;
northwind:unitPrice products.UnitPrice
as virtrdf:Product-unit_price ;
northwind:unitsInStock products.UnitsInStock
as virtrdf:Product-units_in_stock ;
northwind:unitsOnOrder products.UnitsOnOrder
as virtrdf:Product-units_on_order ;
northwind:reorderLevel products.ReorderLevel
as virtrdf:Product-reorder_level ;
northwind:discontinued products.Discontinued
as virtrdf:Product-discontinued ;
rdfs:isDefinedBy northwind:product_iri (products.ProductID) ;
rdfs:isDefinedBy northwind:Product (products.ProductID) .
northwind:Category (products.CategoryID)
northwind:category_of northwind:Product (products.ProductID) as virtrdf:Product-category_of .
northwind:Supplier (products.SupplierID)
northwind:supplier_of northwind:Product (products.ProductID) as virtrdf:Product-supplier_of .
northwind:Supplier (suppliers.SupplierID)
a northwind:Supplier
as virtrdf:Supplier-SupplierID ;
northwind:companyName suppliers.CompanyName
as virtrdf:Supplier-company_name ;
northwind:contactName suppliers.ContactName
as virtrdf:Supplier-contact_name ;
northwind:contactTitle suppliers.ContactTitle
as virtrdf:Supplier-contact_title ;
northwind:address suppliers.Address
as virtrdf:Supplier-address ;
northwind:city suppliers.City
as virtrdf:Supplier-city ;
northwind:dbpedia_city northwind:dbpedia_iri(suppliers.City)
as virtrdf:Supplier-dbpediacity ;
northwind:region suppliers.Region
as virtrdf:Supplier-region ;
northwind:postalCode suppliers.PostalCode
as virtrdf:Supplier-postal_code ;
northwind:country northwind:Country(suppliers.Country)
as virtrdf:Supplier-country ;
northwind:phone suppliers.Phone
as virtrdf:Supplier-phone ;
northwind:fax suppliers.Fax
as virtrdf:Supplier-fax ;
northwind:homePage suppliers.HomePage
as virtrdf:Supplier-home_page ;
rdfs:isDefinedBy northwind:supplier_iri (suppliers.SupplierID) ;
rdfs:isDefinedBy northwind:Supplier (suppliers.SupplierID) .
northwind:Country (suppliers.Country)
northwind:is_country_of
northwind:Supplier (suppliers.SupplierID) as virtrdf:Supplier-is_country_of .
northwind:Category (categories.CategoryID)
a northwind:Category
as virtrdf:Category-CategoryID ;
northwind:categoryName categories.CategoryName
as virtrdf:Category-home_page ;
northwind:description categories.Description
as virtrdf:Category-description ;
foaf:img northwind:CategoryPhoto(categories.CategoryID)
as virtrdf:Category-categories.CategoryPhoto ;
rdfs:isDefinedBy northwind:category_iri (categories.CategoryID) ;
rdfs:isDefinedBy northwind:Category (categories.CategoryID) .
northwind:CategoryPhoto(categories.CategoryID)
a northwind:CategoryPhoto
as virtrdf:Category-categories.CategoryPhotoID ;
rdfs:isDefinedBy northwind:categoryphoto_iri (categories.CategoryID) ;
rdfs:isDefinedBy northwind:CategoryPhoto(categories.CategoryID) .
northwind:Shipper (shippers.ShipperID)
a northwind:Shipper
as virtrdf:Shipper-ShipperID ;
northwind:companyName shippers.CompanyName
as virtrdf:Shipper-company_name ;
northwind:phone shippers.Phone
as virtrdf:Shipper-phone ;
rdfs:isDefinedBy northwind:shipper_iri (shippers.ShipperID) ;
rdfs:isDefinedBy northwind:Shipper (shippers.ShipperID) .
northwind:Customer (customers.CustomerID)
a northwind:Customer
as virtrdf:Customer-CustomerID2 ;
a foaf:Organization
as virtrdf:Customer-CustomerID ;
foaf:name customers.CompanyName
as virtrdf:Customer-foaf_name ;
northwind:companyName customers.CompanyName
as virtrdf:Customer-company_name ;
northwind:has_contact northwind:CustomerContact (customers.CustomerID)
as virtrdf:Customer-contact ;
northwind:country northwind:Country (customers.Country)
as virtrdf:Customer-country ;
northwind:contactName customers.ContactName
as virtrdf:Customer-contact_name ;
northwind:contactTitle customers.ContactTitle
as virtrdf:Customer-contact_title ;
northwind:address customers.Address
as virtrdf:Customer-address ;
northwind:city customers.City
as virtrdf:Customer-city ;
northwind:dbpedia_city northwind:dbpedia_iri(customers.City)
as virtrdf:Customer-dbpediacity ;
northwind:region customers.Region
as virtrdf:Customer-region ;
northwind:PostalCode customers.PostalCode
as virtrdf:Customer-postal_code ;
foaf:phone customers.Phone
as virtrdf:Customer-foaf_phone ;
northwind:phone customers.Phone
as virtrdf:Customer-phone ;
northwind:fax customers.Fax
as virtrdf:Customer-fax ;
rdfs:isDefinedBy northwind:customer_iri (customers.CustomerID) ;
rdfs:isDefinedBy northwind:Customer (customers.CustomerID) .
northwind:Country (customers.Country)
northwind:is_country_of
northwind:Customer (customers.CustomerID) as virtrdf:Customer-is_country_of .
northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID)
a northwind:Employee
as virtrdf:Employee-EmployeeID2 ;
a foaf:Person
as virtrdf:Employee-EmployeeID ;
foaf:surname employees.LastName
as virtrdf:Employee-foaf_last_name ;
northwind:lastName employees.LastName
as virtrdf:Employee-last_name ;
foaf:firstName employees.FirstName
as virtrdf:Employee-foaf_first_name ;
northwind:firstName employees.FirstName
as virtrdf:Employee-first_name ;
foaf:title employees.Title
as virtrdf:Employee-title ;
northwind:titleOfCourtesy employees.TitleOfCourtesy
as virtrdf:Employee-title_of_courtesy ;
foaf:birthday employees.BirthDate
as virtrdf:Employee-foaf_birth_date ;
northwind:birthday employees.BirthDate
as virtrdf:Employee-birth_date ;
northwind:hireDate employees.HireDate
as virtrdf:Employee-hire_date ;
northwind:address employees.Address
as virtrdf:Employee-address ;
northwind:city employees.City
as virtrdf:Employee-city ;
northwind:dbpedia_city northwind:dbpedia_iri(employees.City)
as virtrdf:Employee-dbpediacity ;
northwind:region employees.Region
as virtrdf:Employee-region ;
northwind:postalCode employees.PostalCode
as virtrdf:Employee-postal_code ;
northwind:country northwind:Country(employees.Country)
as virtrdf:Employee-country ;
foaf:phone employees.HomePhone
as virtrdf:Employee-home_phone ;
northwind:extension employees.Extension
as virtrdf:Employee-extension ;
northwind:notes employees.Notes
as virtrdf:Employee-notes ;
northwind:reportsTo northwind:Employee(employees.FirstName, employees.LastName, employees.ReportsTo) where (^{employees.}^.ReportsTo = ^{employees.}^.EmployeeID)
as virtrdf:Employee-reports_to ;
foaf:img northwind:EmployeePhoto(employees.EmployeeID)
as virtrdf:Employee-employees.EmployeePhoto ;
rdfs:isDefinedBy northwind:employee_iri (employees.EmployeeID) ;
rdfs:isDefinedBy northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID) .
northwind:EmployeePhoto(employees.EmployeeID)
a northwind:EmployeePhoto
as virtrdf:Employee-employees.EmployeePhotoId ;
rdfs:isDefinedBy northwind:employeephoto_iri (employees.EmployeeID) ;
rdfs:isDefinedBy northwind:EmployeePhoto (employees.EmployeeID) .
northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID)
northwind:is_salesrep_of
northwind:Order (orders.OrderID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID) as virtrdf:Order-is_salesrep_of .
northwind:Country (employees.Country)
northwind:is_country_of
northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID) as virtrdf:Employee-is_country_of .
northwind:Order (orders.OrderID)
a northwind:Order
as virtrdf:Order-Order ;
northwind:has_customer northwind:Customer (orders.CustomerID)
as virtrdf:Order-order_has_customer ;
northwind:has_salesrep northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID)
as virtrdf:Customer-has_salesrep ;
northwind:has_employee northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID)
as virtrdf:Order-order_has_employee ;
northwind:orderDate orders.OrderDate
as virtrdf:Order-order_date ;
northwind:requiredDate orders.RequiredDate
as virtrdf:Order-required_date ;
northwind:shippedDate orders.ShippedDate
as virtrdf:Order-shipped_date ;
northwind:order_ship_via northwind:Shipper (orders.ShipVia)
as virtrdf:Order-order_ship_via ;
northwind:freight orders.Freight
as virtrdf:Order-freight ;
northwind:shipName orders.ShipName
as virtrdf:Order-ship_name ;
northwind:shipAddress orders.ShipAddress
as virtrdf:Order-ship_address ;
northwind:shipCity orders.ShipCity
as virtrdf:Order-ship_city ;
northwind:dbpedia_shipCity northwind:dbpedia_iri(orders.ShipCity)
as virtrdf:Order-dbpediaship_city ;
northwind:shipRegion orders.ShipRegion
as virtrdf:Order-ship_region ;
northwind:shipPostal_code orders.ShipPostalCode
as virtrdf:Order-ship_postal_code ;
northwind:shipCountry northwind:Country(orders.ShipCountry)
as virtrdf:ship_country ;
rdfs:isDefinedBy northwind:order_iri (orders.OrderID) ;
rdfs:isDefinedBy northwind:Order (orders.OrderID) .
northwind:Country (orders.ShipCountry)
northwind:is_ship_country_of
northwind:Order (orders.OrderID) as virtrdf:Order-is_country_of .
northwind:Customer (orders.CustomerID)
northwind:has_order northwind:Order (orders.OrderID) as virtrdf:Order-has_order .
northwind:Shipper (orders.ShipVia)
northwind:ship_order northwind:Order (orders.OrderID) as virtrdf:Order-ship_order .
northwind:OrderLine (order_lines.OrderID, order_lines.ProductID)
a northwind:OrderLine
as virtrdf:OrderLine-OrderLines ;
northwind:has_order_id northwind:Order (order_lines.OrderID)
as virtrdf:order_lines_has_order_id ;
northwind:has_product_id northwind:Product (order_lines.ProductID)
as virtrdf:order_lines_has_product_id ;
northwind:unitPrice order_lines.UnitPrice
as virtrdf:OrderLine-unit_price ;
northwind:quantity order_lines.Quantity
as virtrdf:OrderLine-quantity ;
northwind:discount order_lines.Discount
as virtrdf:OrderLine-discount ;
rdfs:isDefinedBy northwind:orderline_iri (order_lines.OrderID, order_lines.ProductID) ;
rdfs:isDefinedBy northwind:OrderLine (order_lines.OrderID, order_lines.ProductID) .
northwind:Order (orders.OrderID)
northwind:is_order_of
northwind:OrderLine (order_lines.OrderID, order_lines.ProductID) where (^{orders.}^.OrderID = ^{order_lines.}^.OrderID) as virtrdf:Order-is_order_of .
northwind:Product (products.ProductID)
northwind:is_product_of
northwind:OrderLine (order_lines.OrderID, order_lines.ProductID) where (^{products.}^.ProductID = ^{order_lines.}^.ProductID) as virtrdf:Product-is_product_of .
northwind:Country (countries.Name)
a northwind:Country
as virtrdf:Country-Type2 ;
a wgs:SpatialThing
as virtrdf:Country-Type ;
owl:sameAs northwind:dbpedia_iri (countries.Name) ;
northwind:name countries.Name
as virtrdf:Country-Name ;
northwind:code countries.Code
as virtrdf:Country-Code ;
northwind:smallFlagDAVResourceName countries.SmallFlagDAVResourceName
as virtrdf:Country-SmallFlagDAVResourceName ;
northwind:largeFlagDAVResourceName countries.LargeFlagDAVResourceName
as virtrdf:Country-LargeFlagDAVResourceName ;
northwind:smallFlagDAVResourceURI northwind:Flag(countries.SmallFlagDAVResourceURI)
as virtrdf:Country-SmallFlagDAVResourceURI ;
northwind:largeFlagDAVResourceURI northwind:Flag(countries.LargeFlagDAVResourceURI)
as virtrdf:Country-LargeFlagDAVResourceURI ;
wgs:lat countries.Lat
as virtrdf:Country-Lat ;
wgs:long countries.Lng
as virtrdf:Country-Lng ;
rdfs:isDefinedBy northwind:country_iri (countries.Name) ;
rdfs:isDefinedBy northwind:Country (countries.Name) .
northwind:Country (countries.Name)
northwind:has_province
northwind:Province (provinces.CountryCode, provinces.Province) where (^{provinces.}^.CountryCode = ^{countries.}^.Code) as virtrdf:Country-has_province .
northwind:Province (provinces.CountryCode, provinces.Province)
a northwind:Province
as virtrdf:Province-Provinces ;
northwind:has_country_code provinces.CountryCode
as virtrdf:has_country_code ;
northwind:provinceName provinces.Province
as virtrdf:Province-ProvinceName ;
rdfs:isDefinedBy northwind:province_iri (provinces.CountryCode, provinces.Province) ;
rdfs:isDefinedBy northwind:Province (provinces.CountryCode, provinces.Province) .
northwind:Province (provinces.CountryCode, provinces.Province)
northwind:is_province_of
northwind:Country (countries.Name) where (^{countries.}^.Code = ^{provinces.}^.CountryCode) as virtrdf:Province-country_of .
}.
}.
;
The created RDF View is sufficient for querying relational data via SPARQL but not for accessing data by dereferencing IRIs of subjects. Making IRIs dereferenceable requires configuring HTTP server; that is explained in second part of the example.
This section includes example mapping SQL Data to RDF for BSBM.
Each BSBM installation includes a demonstration database that includes a simple management system schema and instance data. This sample database provides an easy route for introducing BSBM users and developers to the virtues of RDF based Linked Data Views built atop existing BSBM relational databases.
use DB;
CREATE TABLE DB.DBA.ProductFeature (
nr integer primary key,
label varchar(100) not null,
comment varchar(1500) not null,
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.ProductFeature to public
;
CREATE TABLE DB.DBA.ProductType (
nr integer primary key,
label varchar(100) not null,
comment varchar(1500) not null,
parent integer,
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.ProductType to public
;
CREATE TABLE DB.DBA.Producer (
nr integer primary key,
label varchar(100) not null,
comment varchar(1500) not null,
homepage varchar(100) not null,
country char(2) not null,
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.Producer to public
;
create index producer_homepage on DB.DBA.Producer (homepage)
;
CREATE TABLE DB.DBA.Product (
nr integer primary key,
label varchar(100) not null,
comment varchar not null,
producer integer not null,
propertyNum1 integer,
propertyNum2 integer,
propertyNum3 integer,
propertyNum4 integer,
propertyNum5 integer,
propertyNum6 integer,
propertyTex1 varchar(200),
propertyTex2 varchar(200),
propertyTex3 varchar(200),
propertyTex4 varchar(200),
propertyTex5 varchar(200),
propertyTex6 varchar(200),
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.Product to public
;
create index product_lbl on DB.DBA.Product (label)
;
create unique index product_producer_nr on DB.DBA.Product (producer, nr)
;
create index product_pn1 on DB.DBA.Product (propertyNum1)
;
create index product_pn2 on DB.DBA.Product (propertyNum2)
;
create index product_pn3 on DB.DBA.Product (propertyNum3)
;
create text index on DB.DBA.Product (label) with key nr
;
CREATE TABLE DB.DBA.ProductTypeProduct (
product integer not null,
productType integer not null,
PRIMARY KEY (product, productType)
)
;
grant SELECT on DB.DBA.ProductTypeProduct to public
;
create index ptype_inv on DB.DBA.ProductTypeProduct (productType, product)
;
CREATE TABLE DB.DBA.ProductFeatureProduct (
product integer not null,
productFeature integer not null,
PRIMARY KEY (product, productFeature)
)
;
grant SELECT on DB.DBA.ProductFeatureProduct to public
;
create index pfeature_inv on DB.DBA.ProductFeatureProduct (productFeature, product)
;
CREATE TABLE DB.DBA.Vendor (
nr integer primary key,
label varchar(100) not null,
comment varchar not null,
homepage varchar(100) not null,
country char(2) not null,
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.Vendor to public
;
create index vendor_country on DB.DBA.Vendor (country)
;
create index vendor_homepage on DB.DBA.Vendor (homepage)
;
CREATE TABLE DB.DBA.Offer (
nr integer primary key,
product integer not null,
producer integer,
vendor integer not null,
price double precision not null,
validFrom date not null,
validTo date not null,
deliveryDays integer not null,
offerWebpage varchar(100) not null,
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.Offer to public
;
create index offer_product on DB.DBA.Offer (product, deliveryDays)
;
create unique index offer_producer_product on DB.DBA.Offer (producer, product, nr)
;
create index offer_validto on DB.DBA.Offer (validTo)
;
create index offer_vendor_product on DB.DBA.Offer (vendor, product)
;
create index offer_webpage on DB.DBA.Offer (offerWebpage)
;
CREATE TABLE DB.DBA.Person (
nr integer primary key,
name varchar(30) not null,
mbox_sha1sum char(40) not null,
country char(2) not null,
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.Person to public
;
CREATE TABLE DB.DBA.Review (
nr integer primary key,
product integer not null,
producer integer,
person integer not null,
reviewDate date not null,
title varchar(200) not null,
text long varchar not null,
textlang char(2) not null,
rating1 integer,
rating2 integer,
rating3 integer,
rating4 integer,
publisher integer not null,
publishDate date not null
)
;
grant SELECT on DB.DBA.Review to public
;
create unique index review_product on DB.DBA.Review (product, producer, nr)
;
create unique index review_producer_product on DB.DBA.Review (producer, product, nr)
;
create bitmap index review_textlang on DB.DBA.Review (textlang)
;
DB.DBA.XML_SET_NS_DECL ('foaf', 'http://xmlns.com/foaf/0.1/', 2)
;
DB.DBA.XML_SET_NS_DECL ('dc', 'http://purl.org/dc/elements/1.1/', 2)
;
DB.DBA.XML_SET_NS_DECL ('xsd', 'http://www.w3.org/2001/XMLSchema-datatypes/', 2)
;
DB.DBA.XML_SET_NS_DECL ('rev', 'http://purl.org/stuff/rev#', 2)
;
DB.DBA.XML_SET_NS_DECL ('bsbm', 'http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/vocabulary/', 2)
;
DB.DBA.XML_SET_NS_DECL ('bsbm-inst', 'http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/', 2)
;
SPARQL drop quad map bsbm:SingleGraphView
;
SPARQL create iri class bsbm:ProductFeature-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/ProductFeature%d" (in nr integer not null)
;
SPARQL create iri class bsbm:ProductType-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/ProductType%d" (in nr integer not null)
;
SPARQL create iri class bsbm:Producer-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/dataFromProducer%d/Producer%d" (in nr_ integer not null, in nr integer not null)
;
SPARQL create iri class bsbm:Product-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/dataFromProducer%d/Product%d" (in producer integer not null, in nr integer not null)
;
SPARQL create iri class bsbm:Vendor-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/dataFromVendor%d/Vendor%d" (in nr_ integer not null, in nr integer not null)
;
SPARQL create iri class bsbm:Offer-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/dataFromVendor%d/Offer%d" (in vendor integer not null, in nr integer not null)
;
SPARQL create iri class bsbm:StdInst-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/StandardizationInstitution%d" (in publisher integer not null)
;
SPARQL create iri class bsbm:Person-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/dataFromRatingSite%d/Person%d" (in publisher integer not null, in nr integer not null)
;
SPARQL create iri class bsbm:Review-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/dataFromRatingSite%d/Review%d" (in site integer, in nr integer not null)
;
SPARQL create iri class bsbm:ISO3166-country-iri "http://downlode.org/rdf/iso-3166/countries#%s" (in code varchar not null)
;
SPARQL create iri class bsbm:homepage-iri "%s" (in homepage varchar not null) option (returns "http://%s")
;
SPARQL create iri class bsbm:RatingSite-iri "http://www4.wiwiss.fu-berlin.de/bizer/bsbm/v01/instances/dataFromRatingSite%d/RatingSite%d" (in nr_ integer not null, in nr integer not null)
;
SPARQL
alter quad storage virtrdf:DefaultQuadStorage
FROM DB.DBA.ProductFeature as pfeature
FROM DB.DBA.ProductType as ptype
FROM DB.DBA.Producer as producer
FROM DB.DBA.Product as product text literal product.label
FROM DB.DBA.ProductTypeProduct as ptypeproduct
FROM DB.DBA.ProductFeatureProduct as pfeatureproduct
FROM DB.DBA.Vendor as vendor
FROM DB.DBA.Offer as offer
FROM DB.DBA.Person as person
FROM DB.DBA.Review as review
where (^{product.}^.nr = ^{ptypeproduct.}^.product)
where (^{product.}^.nr = ^{pfeatureproduct.}^.product)
{
create bsbm:SingleGraphView as graph <BSBM> option (exclusive)
{
bsbm:Product-iri (product.producer, product.nr)
a bsbm:Product ;
rdfs:label product.label ;
rdfs:comment product.comment ;
bsbm:producer bsbm:Producer-iri (product.producer, product.producer) ;
bsbm:productPropertyTextual1 product.propertyTex1 ;
bsbm:productPropertyTextual2 product.propertyTex2 ;
bsbm:productPropertyTextual3 product.propertyTex3 ;
bsbm:productPropertyTextual4 product.propertyTex4 ;
bsbm:productPropertyTextual5 product.propertyTex5 ;
bsbm:productPropertyTextual6 product.propertyTex6 ;
bsbm:productPropertyNumeric1 product.propertyNum1 ;
bsbm:productPropertyNumeric2 product.propertyNum2 ;
bsbm:productPropertyNumeric3 product.propertyNum3 ;
bsbm:productPropertyNumeric4 product.propertyNum4 ;
bsbm:productPropertyNumeric5 product.propertyNum5 ;
bsbm:productPropertyNumeric6 product.propertyNum6 ;
rdf:type bsbm:ProductType-iri (ptypeproduct.productType) ;
bsbm:productFeature bsbm:ProductFeature-iri (pfeatureproduct.productFeature) ;
dc:publisher bsbm:Producer-iri (product.publisher, product.publisher) ;
dc:date product.publishDate .
bsbm:ProductType-iri (ptype.nr)
a bsbm:ProductType ;
rdfs:label ptype.label ;
rdfs:comment ptype.comment ;
rdfs:subClassOf bsbm:ProductType-iri (ptype.parent) ;
dc:publisher bsbm:StdInst-iri (ptype.publisher) ;
dc:date ptype.publishDate .
bsbm:ProductFeature-iri (pfeature.nr)
a bsbm:ProductFeature ;
rdfs:label pfeature.label ;
rdfs:comment pfeature.comment ;
dc:publisher bsbm:StdInst-iri (pfeature.publisher) ;
dc:date pfeature.publishDate .
bsbm:Producer-iri (producer.nr, producer.nr)
a bsbm:Producer ;
rdfs:label producer.label ;
rdfs:comment producer.comment ;
foaf:homepage bsbm:homepage-iri (producer.homepage) ;
bsbm:country bsbm:ISO3166-country-iri (producer.country) ;
dc:publisher bsbm:Producer-iri (producer.nr, producer.nr) ;
dc:date producer.publishDate .
bsbm:Vendor-iri (vendor.nr, vendor.nr)
a bsbm:Vendor ;
rdfs:label vendor.label ;
rdfs:comment vendor.comment ;
foaf:homepage bsbm:homepage-iri (vendor.homepage) ;
bsbm:country bsbm:ISO3166-country-iri (vendor.country) ;
dc:publisher bsbm:Vendor-iri (vendor.publisher, vendor.publisher) ;
dc:date vendor.publishDate .
bsbm:Offer-iri (offer.vendor, offer.nr)
a bsbm:Offer ;
bsbm:product bsbm:Product-iri (offer.producer, offer.product) ;
bsbm:vendor bsbm:Vendor-iri (offer.vendor, offer.vendor) ;
bsbm:vendor bsbm:Vendor-iri (offer.vendor, offer.vendor) ;
bsbm:price offer.price ;
bsbm:validFrom offer.validFrom ;
bsbm:validTo offer.validTo ;
bsbm:deliveryDays offer.deliveryDays ;
bsbm:offerWebpage bsbm:homepage-iri (offer.offerWebpage) ;
dc:publisher bsbm:Vendor-iri (offer.publisher, offer.publisher) ;
dc:date offer.publishDate .
bsbm:Person-iri (person.publisher, person.nr)
a foaf:Person ;
foaf:name person.name ;
foaf:mbox_sha1sum person.mbox_sha1sum ;
bsbm:country bsbm:ISO3166-country-iri (person.country) ;
dc:publisher bsbm:RatingSite-iri (person.publisher, person.publisher) ;
dc:date person.publishDate .
bsbm:Review-iri (review.publisher, review.nr)
a rev:Review ;
bsbm:reviewFor bsbm:Product-iri (review.producer, review.product) ;
bsbm:producer bsbm:Producer-iri (review.producer, review.producer) ;
rev:reviewer bsbm:Person-iri (review.publisher, review.person) ;
bsbm:reviewDate review.reviewDate ;
dc:title review.title ;
rev:text review.text lang review.textlang ;
bsbm:rating1 review.rating1 ;
bsbm:rating2 review.rating2 ;
bsbm:rating3 review.rating3 ;
bsbm:rating4 review.rating4 ;
dc:publisher bsbm:RatingSite-iri (review.publisher, review.publisher) ;
dc:date review.publishDate .
}
}
;
use DB;
GRANT SELECT ON TPCH.DBA.PARTSUPP TO "SPARQL";
GRANT SELECT ON TPCH.DBA.SUPPLIER TO "SPARQL";
GRANT SELECT ON TPCH.DBA.CUSTOMER TO "SPARQL";
GRANT SELECT ON TPCH.DBA.HISTORY TO "SPARQL";
GRANT SELECT ON TPCH.DBA.PART TO "SPARQL";
GRANT SELECT ON TPCH.DBA.LINEITEM TO "SPARQL";
GRANT SELECT ON TPCH.DBA.ORDERS TO "SPARQL";
GRANT SELECT ON TPCH.DBA.NATION TO "SPARQL";
GRANT SELECT ON TPCH.DBA.REGION TO "SPARQL";
SPARQL
drop quad map virtrdf:TPCH
;
SPARQL
prefix tpch: <http://www.openlinksw.com/schemas/tpch#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
create iri class tpch:customer "http://^{URIQADefaultHost}^/tpch/customer/%U%d#this" (in custname varchar, in c_custkey integer not null) option (bijection, deref) .
create iri class tpch:lineitem "http://^{URIQADefaultHost}^/tpch/lineitem/%d/%d#this" (in l_orderkey integer not null, in l_linenumber integer not null) option (bijection, deref) .
create iri class tpch:nation "http://^{URIQADefaultHost}^/tpch/nation/%U%d#this" (in name varchar, in l_nationkey integer not null) option (bijection, deref) .
create iri class tpch:order "http://^{URIQADefaultHost}^/tpch/order/%d#this" (in o_orderkey integer not null) option (bijection, deref) .
create iri class tpch:part "http://^{URIQADefaultHost}^/tpch/part/%U%d#this" (in p_partname varchar, in p_partkey integer not null) option (bijection, deref) .
create iri class tpch:partsupp "http://^{URIQADefaultHost}^/tpch/partsupp/%d/%d#this" (in ps_partkey integer not null, in ps_suppkey integer not null) option (bijection, deref) .
create iri class tpch:region "http://^{URIQADefaultHost}^/tpch/region/%U%d#this" (in name varchar, in r_regionkey integer not null) option (bijection, deref) .
create iri class tpch:supplier "http://^{URIQADefaultHost}^/tpch/supplier/%U%d#this" (in name varchar, in s_supplierkey integer not null) option (bijection, deref) .
;
SPARQL
prefix tpch: <http://www.openlinksw.com/schemas/tpch#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
alter quad storage virtrdf:DefaultQuadStorage
FROM TPCH.DBA.LINEITEM as lineitems
FROM TPCH.DBA.CUSTOMER as customers
FROM TPCH.DBA.NATION as nations
FROM TPCH.DBA.ORDERS as orders
FROM TPCH.DBA.PART as parts
FROM TPCH.DBA.PARTSUPP as partsupps
FROM TPCH.DBA.REGION as regions
FROM TPCH.DBA.SUPPLIER as suppliers
where (^{suppliers.}^.S_NATIONKEY = ^{nations.}^.N_NATIONKEY)
where (^{customers.}^.C_NATIONKEY = ^{nations.}^.N_NATIONKEY)
{
create virtrdf:TPCH as graph iri ("http://^{URIQADefaultHost}^/tpch") option (exclusive)
{
# Customers
tpch:customer (customers.C_NAME, customers.C_CUSTKEY)
a tpch:customer
as virtrdf:customer-tpch-type ;
a foaf:Organization
as virtrdf:customer-foaf-type ;
tpch:custkey customers.C_CUSTKEY
as virtrdf:customer-c_custkey ;
foaf:name customers.C_NAME
as virtrdf:customer-foaf_name ;
tpch:companyName customers.C_NAME
as virtrdf:customer-c_name ;
tpch:has_nation tpch:nation (nations.N_NAME, customers.C_NATIONKEY)
as virtrdf:customer-c_nationkey ;
tpch:address customers.C_ADDRESS
as virtrdf:customer-c_address ;
foaf:phone customers.C_PHONE
as virtrdf:customer-foaf_phone ;
tpch:phone customers.C_PHONE
as virtrdf:customer-phone ;
tpch:acctbal customers.C_ACCTBAL
as virtrdf:customer-acctbal ;
tpch:mktsegment customers.C_MKTSEGMENT
as virtrdf:customer-c_mktsegment ;
tpch:comment customers.C_COMMENT
as virtrdf:customer-c_comment .
# Nations
tpch:nation (nations.N_NAME, customers.C_NATIONKEY)
tpch:nation_of tpch:customer (customers.C_NAME, customers.C_CUSTKEY)
as virtrdf:customer-nation_of .
tpch:lineitem (lineitems.L_ORDERKEY, lineitems.L_LINENUMBER)
a tpch:lineitem
as virtrdf:lineitem-lineitems ;
tpch:has_order tpch:order (lineitems.L_ORDERKEY)
as virtrdf:lineitem-l_orderkey ;
tpch:has_part tpch:part (parts.P_NAME, lineitems.L_PARTKEY)
where (^{parts.}^.P_PARTKEY = ^{lineitems.}^.L_PARTKEY)
as virtrdf:lineitem-l_partkey ;
tpch:has_supplier tpch:supplier (suppliers.S_NAME, lineitems.L_SUPPKEY)
where (^{suppliers.}^.S_SUPPKEY = ^{lineitems.}^.L_SUPPKEY)
as virtrdf:lineitem-l_suppkey ;
tpch:linenumber lineitems.L_LINENUMBER
as virtrdf:lineitem-l_linenumber ;
tpch:linequantity lineitems.L_QUANTITY
as virtrdf:lineitem-l_linequantity ;
tpch:lineextendedprice lineitems.L_EXTENDEDPRICE
as virtrdf:lineitem-l_lineextendedprice ;
tpch:linediscount lineitems.L_DISCOUNT
as virtrdf:lineitem-l_linediscount ;
tpch:linetax lineitems.L_TAX
as virtrdf:lineitem-l_linetax ;
tpch:returnflag lineitems.L_RETURNFLAG
as virtrdf:lineitem-l_returnflag ;
tpch:linestatus lineitems.L_LINESTATUS
as virtrdf:lineitem-l_linestatus ;
tpch:shipdate lineitems.L_SHIPDATE
as virtrdf:lineitem-l_shipdate ;
tpch:commitdate lineitems.L_COMMITDATE
as virtrdf:lineitem-l_commitdate ;
tpch:receiptdate lineitems.L_RECEIPTDATE
as virtrdf:lineitem-l_receiptdate ;
tpch:shipinstruct lineitems.L_SHIPINSTRUCT
as virtrdf:lineitem-l_shipinstruct ;
tpch:shipmode lineitems.L_SHIPMODE
as virtrdf:lineitem-l_shipmode ;
tpch:comment lineitems.L_COMMENT
as virtrdf:lineitem-l_comment .
tpch:part (parts.P_NAME, lineitems.L_PARTKEY)
tpch:part_of tpch:lineitem (lineitems.L_ORDERKEY, lineitems.L_LINENUMBER)
where (^{parts.}^.P_PARTKEY = ^{lineitems.}^.L_PARTKEY)
as virtrdf:lineitem-part_of .
tpch:order (lineitems.L_ORDERKEY)
tpch:order_of tpch:lineitem (lineitems.L_ORDERKEY, lineitems.L_LINENUMBER) as virtrdf:lineitem-order_of .
tpch:supplier (suppliers.S_NAME, lineitems.L_SUPPKEY)
tpch:supplier_of tpch:lineitem (lineitems.L_ORDERKEY, lineitems.L_LINENUMBER)
where (^{suppliers.}^.S_SUPPKEY = ^{lineitems.}^.L_SUPPKEY)
as virtrdf:lineitem-supplier_of .
# Nation
tpch:nation (nations.N_NAME, nations.N_NATIONKEY)
a tpch:nation
as virtrdf:nation-nations ;
tpch:name nations.N_NAME
as virtrdf:nation-n_name ;
tpch:has_region tpch:region (regions.R_NAME, nations.N_REGIONKEY)
where (^{regions.}^.R_REGIONKEY = ^{nations.}^.N_REGIONKEY)
as virtrdf:nation-n_regionkey ;
tpch:comment nations.N_COMMENT
as virtrdf:nation-n_comment .
tpch:region (regions.R_NAME, nations.N_REGIONKEY)
tpch:region_of tpch:nation (nations.N_NAME, nations.N_NATIONKEY)
where (^{regions.}^.R_REGIONKEY = ^{nations.}^.N_REGIONKEY)
as virtrdf:nation-region_of .
# Order
tpch:order (orders.O_ORDERKEY)
a tpch:order
as virtrdf:order-orders ;
tpch:orderkey orders.O_ORDERKEY
as virtrdf:order-o_orderkey ;
tpch:has_customer tpch:customer (customers.C_NAME, orders.O_CUSTKEY)
where (^{orders.}^.O_CUSTKEY = ^{customers.}^.C_CUSTKEY)
as virtrdf:order-o_custkey ;
tpch:orderstatus orders.O_ORDERSTATUS
as virtrdf:order-o_orderstatus ;
tpch:ordertotalprice orders.O_TOTALPRICE
as virtrdf:order-o_totalprice ;
tpch:orderdate orders.O_ORDERDATE
as virtrdf:order-o_orderdate ;
tpch:orderpriority orders.O_ORDERPRIORITY
as virtrdf:order-o_orderpriority ;
tpch:clerk orders.O_CLERK
as virtrdf:order-o_clerk ;
tpch:shippriority orders.O_SHIPPRIORITY
as virtrdf:order-o_shippriority ;
tpch:comment orders.O_COMMENT
as virtrdf:order-o_comment .
tpch:customer (customers.C_CUSTKEY, orders.O_CUSTKEY)
tpch:customer_of tpch:order (orders.O_ORDERKEY)
where (^{orders.}^.O_CUSTKEY = ^{customers.}^.C_CUSTKEY)
as virtrdf:order-customer_of .
# Part
tpch:part (parts.P_NAME, parts.P_PARTKEY)
a tpch:part
as virtrdf:part-parts ;
tpch:partkey parts.P_PARTKEY
as virtrdf:part-p_partkey ;
tpch:name parts.P_NAME
as virtrdf:part-p_name ;
tpch:mfgr parts.P_MFGR
as virtrdf:part-p_mfgr ;
tpch:brand parts.P_BRAND
as virtrdf:part-p_brand ;
tpch:type parts.P_TYPE
as virtrdf:part-p_type ;
tpch:size parts.P_SIZE
as virtrdf:part-p_size ;
tpch:container parts.P_CONTAINER
as virtrdf:part-p_container ;
tpch:comment parts.P_COMMENT
as virtrdf:part-p_comment .
# Partsupp
tpch:partsupp (partsupps.PS_PARTKEY, partsupps.PS_SUPPKEY)
a tpch:partsupp
as virtrdf:partsupp-partsupps ;
tpch:has_part tpch:part (parts.P_NAME, partsupps.PS_PARTKEY)
where (^{parts.}^.P_PARTKEY = ^{partsupps.}^.PS_PARTKEY)
as virtrdf:partsupp-ps_partkey ;
tpch:has_supplier tpch:supplier (suppliers.S_NAME, partsupps.PS_SUPPKEY)
where (^{suppliers.}^.S_SUPPKEY = ^{partsupps.}^.PS_SUPPKEY)
as virtrdf:partsupp-ps_suppkey ;
tpch:availqty partsupps.PS_AVAILQTY
as virtrdf:partsupp-ps_availqty ;
tpch:supplycost partsupps.PS_SUPPLYCOST
as virtrdf:partsupp-ps_supplycost ;
tpch:comment partsupps.PS_COMMENT
as virtrdf:partsupp-ps_comment .
tpch:part (parts.P_NAME, partsupps.PS_PARTKEY)
tpch:part_of tpch:partsupp (partsupps.PS_PARTKEY, partsupps.PS_SUPPKEY)
where (^{parts.}^.P_PARTKEY = ^{partsupps.}^.PS_PARTKEY)
as virtrdf:partsupp-part_of .
tpch:supplier (suppliers.S_NAME, partsupps.PS_SUPPKEY)
tpch:supplier_of tpch:partsupp (partsupps.PS_PARTKEY, partsupps.PS_SUPPKEY)
where (^{suppliers.}^.S_SUPPKEY = ^{partsupps.}^.PS_SUPPKEY)
as virtrdf:partsupp-supplier_of .
# Region
tpch:region (regions.R_NAME, regions.R_REGIONKEY)
a tpch:region
as virtrdf:region-regions ;
tpch:name regions.R_NAME
as virtrdf:region-r_name ;
tpch:comment regions.R_COMMENT
as virtrdf:region-r_comment .
# Supplier
tpch:supplier (suppliers.S_NAME, suppliers.S_SUPPKEY)
a tpch:supplier
as virtrdf:supplier-suppliers ;
tpch:name suppliers.S_NAME
as virtrdf:supplier-s_name ;
tpch:address suppliers.S_ADDRESS
as virtrdf:supplier-s_address ;
tpch:has_nation tpch:nation (nations.N_NAME, suppliers.S_NATIONKEY)
where (^{nations.}^.N_NATIONKEY = ^{suppliers.}^.S_NATIONKEY)
as virtrdf:supplier-s_nationkey ;
foaf:phone suppliers.S_PHONE
as virtrdf:supplier-foaf_phone ;
tpch:phone suppliers.S_PHONE
as virtrdf:supplier-s_phone ;
tpch:acctbal suppliers.S_ACCTBAL
as virtrdf:supplier-s_acctbal ;
tpch:comment suppliers.S_COMMENT
as virtrdf:supplier-s_comment .
tpch:nation (nations.N_NAME, suppliers.S_NATIONKEY)
tpch:nation_of tpch:supplier (suppliers.S_NAME, suppliers.S_SUPPKEY)
where (^{nations.}^.N_NATIONKEY = ^{suppliers.}^.S_NATIONKEY)
as virtrdf:supplier-nation_of .
} .
} .
;
DELETE FROM db.dba.url_rewrite_rule_list WHERE urrl_list like 'tpch_rule%';
DELETE FROM db.dba.url_rewrite_rule WHERE urr_rule like 'tpch_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tpch_rule2',
1,
'([^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/tpch%%3E+WHERE+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tpch_rule1',
1,
'([^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s%%23this',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tpch_rule3',
1,
'(/[^#]*)/\x24',
vector('path'),
1,
'%s',
vector('path'),
null,
null,
0,
null
);
create procedure DB.DBA.REMOVE_TPCH_RDF_DET()
{
declare colid int;
colid := DAV_SEARCH_ID('/DAV/home/demo/tpch', 'C');
if (colid < 0)
return;
update WS.WS.SYS_DAV_COL set COL_DET=null where COL_ID = colid;
}
;
DB.DBA.REMOVE_TPCH_RDF_DET();
drop procedure DB.DBA.REMOVE_TPCH_RDF_DET;
create procedure DB.DBA.TPCH_MAKE_RDF_DET()
{
declare uriqa_str varchar;
uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
uriqa_str := 'http://' || uriqa_str || '/tpch';
DB.DBA."RDFData_MAKE_DET_COL" ('/DAV/home/demo/tpch/RDFData/', uriqa_str, NULL);
VHOST_REMOVE (lpath=>'/tpch/data/rdf');
DB.DBA.VHOST_DEFINE (lpath=>'/tpch/data/rdf', ppath=>'/DAV/home/demo/tpch/RDFData/All/', is_dav=>1, vsp_user=>'dba');
}
;
DB.DBA.TPCH_MAKE_RDF_DET();
drop procedure DB.DBA.TPCH_MAKE_RDF_DET;
create procedure DB.DBA.TPCH_DET_REF (in par varchar, in fmt varchar, in val varchar)
{
declare res, iri any;
declare uriqa_str varchar;
uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
uriqa_str := 'http://' || uriqa_str || '/tpch';
iri := uriqa_str || val;
res := sprintf ('iid (%d).rdf', iri_id_num (iri_to_id (iri)));
return sprintf (fmt, res);
}
;
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('tpch_rdf', 1,
'/tpch/(.*)', vector('path'), 1,
'/tpch/data/rdf/%U', vector('path'),
'DB.DBA.TPCH_DET_REF',
'application/rdf.xml',
2,
303);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'tpch_rule_list1',
1,
vector (
'tpch_rule1',
'tpch_rule2',
'tpch_rule3',
'tpch_rdf'
));
DB.DBA.VHOST_REMOVE (lpath=>'/tpch');
DB.DBA.VHOST_DEFINE (lpath=>'/tpch', ppath=>'/DAV/home/demo/tpch/', vsp_user=>'dba', is_dav=>1,
is_brws=>0, opts=>vector ('url_rewrite', 'tpch_rule_list1'));
DB.DBA.VHOST_REMOVE (lpath=>'/tpch/linkeddata');
DB.DBA.VHOST_DEFINE (lpath=>'/tpch/linkeddata', ppath=>'/DAV/home/demo/tpch/', vsp_user=>'dba', is_dav=>1,
is_brws=>1);
Please load ~\binsrc\dav\DET_RDFData.sql before loadding this script (tpc-d has no vad to do this automatic)
use DB;
create procedure DB.DBA.exec_no_error (in expr varchar) {
declare state, message, meta, result any;
exec(expr, state, message, vector(), 0, meta, result);
}
;
DB.DBA.exec_no_error('GRANT \"SPARQL_UPDATE\" TO \"SPARQL\"')
;
GRANT SELECT ON tpcd.DBA.partsupp TO "SPARQL";
GRANT SELECT ON tpcd.DBA.supplier TO "SPARQL";
GRANT SELECT ON tpcd.DBA.customer TO "SPARQL";
GRANT SELECT ON tpcd.DBA.history TO "SPARQL";
GRANT SELECT ON tpcd.DBA.part TO "SPARQL";
GRANT SELECT ON tpcd.DBA.lineitem TO "SPARQL";
GRANT SELECT ON tpcd.DBA.orders TO "SPARQL";
GRANT SELECT ON tpcd.DBA.nation TO "SPARQL";
GRANT SELECT ON tpcd.DBA.region TO "SPARQL";
--SPARQL
--prefix tpcd: <http://demo.openlinksw.com/schemas/tpcd#>
--prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
--prefix sioc: <http://rdfs.org/sioc/ns#>
--prefix foaf: <http://xmlns.com/foaf/0.1/>
--prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
--drop quad map graph iri("http://^{URIQADefaultHost}^/tpcd") .
--;
SPARQL
prefix tpcd: <http://demo.openlinksw.com/schemas/tpcd#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
drop silent quad map virtrdf:TpcdDemo .
;
SPARQL
prefix tpcd: <http://demo.openlinksw.com/schemas/tpcd#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
create iri class tpcd:customer "http://^{URIQADefaultHost}^/tpcd/customer/%d#this" (in c_custkey integer not null) .
create iri class tpcd:lineitem "http://^{URIQADefaultHost}^/tpcd/lineitem/%d/%d#this" (in l_orderkey integer not null, in l_linenumber integer not null) .
create iri class tpcd:nation "http://^{URIQADefaultHost}^/tpcd/nation/%d#this" (in l_nationkey integer not null) .
create iri class tpcd:order "http://^{URIQADefaultHost}^/tpcd/order/%d#this" (in o_orderkey integer not null) .
create iri class tpcd:part "http://^{URIQADefaultHost}^/tpcd/part/%d#this" (in p_partkey integer not null) .
create iri class tpcd:partsupp "http://^{URIQADefaultHost}^/tpcd/partsupp/%d/%d#this" (in ps_partkey integer not null, in ps_suppkey integer not null) .
create iri class tpcd:region "http://^{URIQADefaultHost}^/tpcd/region/%d#this" (in r_regionkey integer not null) .
create iri class tpcd:supplier "http://^{URIQADefaultHost}^/tpcd/supplier/%d#this" (in s_supplierkey integer not null) .
;
SPARQL
prefix tpcd: <http://demo.openlinksw.com/schemas/tpcd#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
alter quad storage virtrdf:DefaultQuadStorage
from tpcd.DBA.lineitem as lineitems
from tpcd.DBA.customer as customers
from tpcd.DBA.nation as nations
from tpcd.DBA.orders as orders
from tpcd.DBA.part as parts
from tpcd.DBA.partsupp as partsupps
from tpcd.DBA.region as regions
from tpcd.DBA.supplier as suppliers
where (^{suppliers.}^.s_nationkey = ^{nations.}^.n_nationkey)
where (^{customers.}^.c_nationkey = ^{nations.}^.n_nationkey)
{
create virtrdf:TpcdDemo as graph iri ("http://^{URIQADefaultHost}^/tpcd") option (exclusive)
{
# Customers
tpcd:customer (customers.c_custkey)
a tpcd:customer
as virtrdf:tpcdcustomer-type ;
a foaf:Organization
as virtrdf:tpcdcustomer-foaf-type ;
tpcd:custkey customers.c_custkey
as virtrdf:tpcdcustomer-c_custkey ;
foaf:name customers.c_name
as virtrdf:tpcdcustomer-foaf_name ;
tpcd:companyName customers.c_name
as virtrdf:tpcdcustomer-c_name ;
tpcd:has_nation tpcd:nation (customers.c_nationkey)
as virtrdf:tpcdcustomer-c_nationkey ;
tpcd:address customers.c_address
as virtrdf:tpcdcustomer-c_address ;
foaf:phone customers.c_phone
as virtrdf:tpcdcustomer-foaf_phone ;
tpcd:phone customers.c_phone
as virtrdf:tpcdcustomer-phone ;
tpcd:acctbal customers.c_acctbal
as virtrdf:tpcdcustomer-acctbal ;
tpcd:mktsegment customers.c_mktsegment
as virtrdf:tpcdcustomer-c_mktsegment ;
tpcd:comment customers.c_comment
as virtrdf:tpcdcustomer-c_comment .
# Nations
tpcd:nation (customers.c_nationkey)
tpcd:nation_of tpcd:customer (customers.c_custkey) as virtrdf:tpcdcustomer-nation_of .
# Lineitems
tpcd:lineitem (lineitems.l_orderkey, lineitems.l_linenumber)
a tpcd:lineitem
as virtrdf:tpcdlineitem-lineitems ;
tpcd:has_order tpcd:order (lineitems.l_orderkey)
as virtrdf:tpcdlineitem-l_orderkey ;
tpcd:has_part tpcd:part (lineitems.l_partkey)
as virtrdf:tpcdlineitem-l_partkey ;
tpcd:has_supplier tpcd:supplier (lineitems.l_suppkey)
as virtrdf:tpcdlineitem-l_suppkey ;
tpcd:linenumber lineitems.l_linenumber
as virtrdf:tpcdlineitem-l_linenumber ;
tpcd:linequantity lineitems.l_quantity
as virtrdf:tpcdlineitem-l_linequantity ;
tpcd:lineextendedprice lineitems.l_extendedprice
as virtrdf:tpcdlineitem-l_lineextendedprice ;
tpcd:linediscount lineitems.l_discount
as virtrdf:tpcdlineitem-l_linediscount ;
tpcd:linetax lineitems.l_tax
as virtrdf:tpcdlineitem-l_linetax ;
tpcd:returnflag lineitems.l_returnflag
as virtrdf:tpcdlineitem-l_returnflag ;
tpcd:linestatus lineitems.l_linestatus
as virtrdf:tpcdlineitem-l_linestatus ;
tpcd:shipdate lineitems.l_shipdate
as virtrdf:tpcdlineitem-l_shipdate ;
tpcd:commitdate lineitems.l_commitdate
as virtrdf:tpcdlineitem-l_commitdate ;
tpcd:receiptdate lineitems.l_receiptdate
as virtrdf:tpcdlineitem-l_receiptdate ;
tpcd:shipinstruct lineitems.l_shipinstruct
as virtrdf:tpcdlineitem-l_shipinstruct ;
tpcd:shipmode lineitems.l_shipmode
as virtrdf:tpcdlineitem-l_shipmode ;
tpcd:comment lineitems.l_comment
as virtrdf:tpcdlineitem-l_comment .
tpcd:part (lineitems.l_partkey)
tpcd:part_of tpcd:lineitem (lineitems.l_orderkey, lineitems.l_linenumber) as virtrdf:tpcdlineitem-part_of .
tpcd:order (lineitems.l_orderkey)
tpcd:order_of tpcd:lineitem (lineitems.l_orderkey, lineitems.l_linenumber) as virtrdf:tpcdlineitem-order_of .
tpcd:supplier (lineitems.l_suppkey)
tpcd:supplier_of tpcd:lineitem (lineitems.l_orderkey, lineitems.l_linenumber) as virtrdf:tpcdlineitem-supplier_of .
# Nation
tpcd:nation (nations.n_nationkey)
a tpcd:nation
as virtrdf:tpcdnation-nations ;
tpcd:name nations.n_name
as virtrdf:tpcdnation-n_name ;
tpcd:has_region tpcd:region (nations.n_regionkey)
as virtrdf:tpcdnation-n_regionkey ;
tpcd:comment nations.n_comment
as virtrdf:tpcdnation-n_comment .
tpcd:region (nations.n_regionkey)
tpcd:region_of tpcd:nation (nations.n_nationkey) as virtrdf:tpcdnation-region_of .
# Order
tpcd:order (orders.o_orderkey)
a tpcd:order
as virtrdf:tpcdorder-orders ;
tpcd:orderkey orders.o_orderkey
as virtrdf:tpcdorder-o_orderkey ;
tpcd:has_customer tpcd:customer (orders.o_custkey)
as virtrdf:tpcdorder-o_custkey ;
tpcd:orderstatus orders.o_orderstatus
as virtrdf:tpcdorder-o_orderstatus ;
tpcd:ordertotalprice orders.o_totalprice
as virtrdf:tpcdorder-o_totalprice ;
tpcd:orderdate orders.o_orderdate
as virtrdf:tpcdorder-o_orderdate ;
tpcd:orderpriority orders.o_orderpriority
as virtrdf:tpcdorder-o_orderpriority ;
tpcd:clerk orders.o_clerk
as virtrdf:tpcdorder-o_clerk ;
tpcd:shippriority orders.o_shippriority
as virtrdf:tpcdorder-o_shippriority ;
tpcd:comment orders.o_comment
as virtrdf:tpcdorder-o_comment .
tpcd:customer (orders.o_custkey)
tpcd:customer_of tpcd:order (orders.o_orderkey) as virtrdf:tpcdorder-customer_of .
# Part
tpcd:part (parts.p_partkey)
a tpcd:part
as virtrdf:tpcdpart-parts ;
tpcd:partkey parts.p_partkey
as virtrdf:tpcdpart-p_partkey ;
tpcd:name parts.p_name
as virtrdf:tpcdpart-p_name ;
tpcd:mfgr parts.p_mfgr
as virtrdf:tpcdpart-p_mfgr ;
tpcd:brand parts.p_brand
as virtrdf:tpcdpart-p_brand ;
tpcd:type parts.p_type
as virtrdf:tpcdpart-p_type ;
tpcd:size parts.p_size
as virtrdf:tpcdpart-p_size ;
tpcd:container parts.p_container
as virtrdf:tpcdpart-p_container ;
tpcd:comment parts.p_comment
as virtrdf:tpcdpart-p_comment .
# Partsupp
tpcd:partsupp (partsupps.ps_partkey, partsupps.ps_suppkey)
a tpcd:partsupp
as virtrdf:tpcdpartsupp-partsupps ;
tpcd:has_part tpcd:part (partsupps.ps_partkey)
as virtrdf:tpcdpartsupp-ps_partkey ;
tpcd:has_supplier tpcd:supplier (partsupps.ps_suppkey)
as virtrdf:tpcdpartsupp-ps_suppkey ;
tpcd:availqty partsupps.ps_availqty
as virtrdf:tpcdpartsupp-ps_availqty ;
tpcd:supplycost partsupps.ps_supplycost
as virtrdf:tpcdpartsupp-ps_supplycost ;
tpcd:comment partsupps.ps_comment
as virtrdf:tpcdpartsupp-ps_comment .
tpcd:part (partsupps.ps_partkey)
tpcd:part_of tpcd:partsupp (partsupps.ps_partkey, partsupps.ps_suppkey) as virtrdf:tpcdpartsupp-part_of .
tpcd:supplier (partsupps.ps_suppkey)
tpcd:supplier_of tpcd:partsupp (partsupps.ps_partkey, partsupps.ps_suppkey) as virtrdf:tpcdpartsupp-supplier_of .
# Region
tpcd:region (regions.r_regionkey)
a tpcd:region
as virtrdf:tpcdregion-regions ;
tpcd:name regions.r_name
as virtrdf:tpcdregion-r_name ;
tpcd:comment regions.r_comment
as virtrdf:tpcdregion-r_comment .
# Supplier
tpcd:supplier (suppliers.s_suppkey)
a tpcd:supplier
as virtrdf:tpcdsupplier-suppliers ;
tpcd:name suppliers.s_name
as virtrdf:tpcdsupplier-s_name ;
tpcd:address suppliers.s_address
as virtrdf:tpcdsupplier-s_address ;
tpcd:has_nation tpcd:nation (suppliers.s_nationkey)
as virtrdf:tpcdsupplier-s_nationkey ;
foaf:phone suppliers.s_phone
as virtrdf:tpcdsupplier-foaf_phone ;
tpcd:phone suppliers.s_phone
as virtrdf:tpcdsupplier-s_phone ;
tpcd:acctbal suppliers.s_acctbal
as virtrdf:tpcdsupplier-s_acctbal ;
tpcd:comment suppliers.s_comment
as virtrdf:tpcdsupplier-s_comment .
tpcd:nation (suppliers.s_nationkey)
tpcd:nation_of tpcd:supplier (suppliers.s_suppkey) as virtrdf:tpcdsupplier-nation_of .
}
}
;
create procedure tcpd_rdf_doc (in path varchar)
{
declare r any;
r := regexp_match ('[^/]*\x24', path);
return r||'#this';
};
create procedure tcpd_html_doc (in path varchar)
{
declare r any;
r := regexp_match ('[^/]*#', path);
return subseq (r, 0, length (r)-1);
};
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tcpd_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/tpcd%%3E+WHERE+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tcpd_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/rdfbrowser/index.html?uri=http%%3A//^{URIQADefaultHost}^%U%%23this',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tcpd_rule3',
1,
'(/[^#]*)/\x24',
vector('path'),
1,
'%s',
vector('path'),
null,
null,
0,
null
);
DB.DBA."RDFData_MAKE_DET_COL" ('/DAV/home/tpcd/RDFData/', 'http://^{URIQADefaultHost}^/tpcd', NULL);
VHOST_REMOVE (lpath=>'/tpcd/data/rdf');
DB.DBA.VHOST_DEFINE (lpath=>'/tpcd/data/rdf', ppath=>'/DAV/home/tpcd/RDFData/All/', is_dav=>1, vsp_user=>'dba');
-- procedure to convert path to DET resource name
create procedure DB.DBA.TPCD_DET_REF (in par varchar, in fmt varchar, in val varchar)
{
declare res, iri any;
iri := 'http://^{URIQADefaultHost}^/tpcd' || val;
res := sprintf ('iid (%d).rdf', iri_id_num (iri_to_id (iri)));
return sprintf (fmt, res);
}
;
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('tpcd_rdf', 1,
'/tpcd/(.*)', vector('path'), 1,
'/tpcd/data/rdf/%U', vector('path'),
'DB.DBA.TPCD_DET_REF',
'application/rdf.xml',
2,
303);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'tpcd_rule_list1',
1,
vector (
'tcpd_rule1',
'tcpd_rule2',
'tcpd_rule3',
'tpcd_rdf'
));
VHOST_REMOVE (lpath=>'/tpcd');
DB.DBA.VHOST_DEFINE (lpath=>'/tpcd', ppath=>'/DAV/home/', vsp_user=>'dba', is_dav=>1, def_page=>'sfront.vspx',
is_brws=>0, opts=>vector ('url_rewrite', 'tpcd_rule_list1'));
create procedure DB.DBA.LOAD_TPCD_ONTOLOGY_FROM_DAV()
{
declare content, urihost varchar;
select cast (RES_CONTENT as varchar) into content from WS.WS.SYS_DAV_RES where RES_FULL_PATH = '/DAV/VAD/tpcd/tpcd.owl';
DB.DBA.RDF_LOAD_RDFXML (content, 'http://demo.openlinksw.com/schemas/tpcd#', 'http://demo.openlinksw.com/schemas/TPCDOntology/1.0/');
urihost := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
if (urihost = 'demo.openlinksw.com')
{
DB.DBA.VHOST_REMOVE (lpath=>'/schemas/tpcd');
DB.DBA.VHOST_DEFINE (lpath=>'/schemas/tpcd', ppath=>'/DAV/VAD/tpcd/tpcd.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
}
}
;
DB.DBA.LOAD_TPCD_ONTOLOGY_FROM_DAV()
;
drop procedure DB.DBA.LOAD_TPCD_ONTOLOGY_FROM_DAV
;
XML_SET_NS_DECL ('virt-tpcd', 'http://demo.openlinksw.com/schemas/tpcd#', 2)
;
use DB
;
SPARQL drop quad map virtrdf:ThaliaDemo
;
create procedure DB.DBA.SPARQL_THALIA_RUN (in txt varchar)
{
declare REPORT, stat, msg, sqltext varchar;
declare metas, rowset any;
result_names (REPORT);
sqltext := string_output_string (sparql_to_sql_text (txt));
stat := '00000';
msg := '';
rowset := null;
exec (sqltext, stat, msg, vector (), 1000, metas, rowset);
}
;
create procedure DB.DBA.exec_no_error(in expr varchar)
{
declare state, message, meta, result any;
exec(expr, state, message, vector(), 0, meta, result);
}
;
DB.DBA.exec_no_error('drop View thalia.Demo.asu_v');
DB.DBA.exec_no_error('create View thalia.Demo.asu_v as select left(Title,3) code,* from thalia.Demo.asu');
DB.DBA.exec_no_error('drop View thalia.Demo.gatech_v');
DB.DBA.exec_no_error('create View thalia.Demo.gatech_v as select *, Room||\' \'||Building Place from thalia.Demo.gatech');
DB.DBA.SPARQL_THALIA_RUN('drop quad map graph iri("http://^{URIQADefaultHost}^/Thalia") .
')
;
GRANT SELECT ON thalia.Demo.asu TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.asu_v TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.brown TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.cmu TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.gatech TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.gatech_v TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.toronto TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.ucsd TO "SPARQL"
;
GRANT SELECT ON thalia.Demo.umd TO "SPARQL"
;
DB.DBA.SPARQL_THALIA_RUN('drop quad map graph iri("http://^{URIQADefaultHost}^/thalia") .
');
DB.DBA.SPARQL_THALIA_RUN('drop quad map virtrdf:ThaliaDemo .
');
DB.DBA.SPARQL_THALIA_RUN('
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix dc: <http://purl.org/dc/elements/1.1/>
prefix time: <http://www.w3.org/2006/time#>
prefix event: <http://purl.org/NET/c4dm/event.owl#>
prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix th: <http://demo.openlinksw.com/schemas/thalia#>
create iri class th:Asu "http://^{URIQADefaultHost}^/thalia/asu/course/%U#this" (in code varchar not null) .
create iri class th:Brown "http://^{URIQADefaultHost}^/thalia/brown/course/%U#this" (in Code varchar not null) .
create iri class th:BrownInstructor "http://^{URIQADefaultHost}^/thalia/brown/instructor/%U#this" (in Code varchar not null) .
create iri class th:BrownLecture "http://^{URIQADefaultHost}^/thalia/brown/lecture/%U#this" (in Code varchar not null) .
create iri class th:BrownPlace "http://^{URIQADefaultHost}^/thalia/brown/place/%U#this" (in Code varchar not null) .
create iri class th:Cmu "http://^{URIQADefaultHost}^/thalia/cmu/course/%U/%U#this" (in Code varchar not null, in Sec varchar) .
create iri class th:CmuInstructor "http://^{URIQADefaultHost}^/thalia/cmu/instructor/%U/%U#this" (in Code varchar not null, in Sec varchar) .
create iri class th:CmuLecture "http://^{URIQADefaultHost}^/thalia/cmu/lecture/%U/%U#this" (in Code varchar not null, in Sec varchar) .
create iri class th:CmuPlace "http://^{URIQADefaultHost}^/thalia/cmu/place/%U/%U#this" (in Code varchar not null, in Sec varchar) .
create iri class th:CmuEventTime "http://^{URIQADefaultHost}^/thalia/cmu/eventtime/%U/%U#this" (in Code varchar not null, in Sec varchar) .
create iri class th:CmuDatetime "http://^{URIQADefaultHost}^/thalia/cmu/datetime/%U/%U#this" (in Code varchar not null, in Sec varchar) .
create iri class th:Gatech "http://^{URIQADefaultHost}^/thalia/gatech/course/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) .
create iri class th:GatechInstructor "http://^{URIQADefaultHost}^/thalia/gatech/instructor/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) .
create iri class th:GatechLecture "http://^{URIQADefaultHost}^/thalia/gatech/lecture/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) .
create iri class th:GatechEventTime "http://^{URIQADefaultHost}^/thalia/gatech/eventtime/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) .
create iri class th:GatechDatetime "http://^{URIQADefaultHost}^/thalia/gatech/datetime/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) .
create iri class th:GatechPlace "http://^{URIQADefaultHost}^/thalia/gatech/place/%U/%d/%U#this" (in Department varchar, in Code integer, in Section varchar) .
create iri class th:Toronto "http://^{URIQADefaultHost}^/thalia/toronto/course/%U#this" (in No_ varchar) .
create iri class th:TorontoInstructor "http://^{URIQADefaultHost}^/thalia/toronto/instructor/%U#this" (in No_ varchar) .
create iri class th:TorontoLecture "http://^{URIQADefaultHost}^/thalia/toronto/lecture/%U#this" (in No_ varchar) .
create iri class th:TorontoPlace "http://^{URIQADefaultHost}^/thalia/toronto/place/%U#this" (in No_ varchar) .
create iri class th:Ucsd "http://^{URIQADefaultHost}^/thalia/ucsd/course/%U#this" (in Number varchar) .
create iri class th:UcsdInstructor1 "http://^{URIQADefaultHost}^/thalia/ucsd/instructor1/%U#this" (in Number varchar) .
create iri class th:UcsdInstructor2 "http://^{URIQADefaultHost}^/thalia/ucsd/instructor2/%U#this" (in Number varchar) .
create iri class th:UcsdInstructor3 "http://^{URIQADefaultHost}^/thalia/ucsd/instructor3/%U#this" (in Number varchar) .
create iri class th:Umd "http://^{URIQADefaultHost}^/thalia/umd/course/%U#this" (in Code varchar) .
create iri class th:UmdLecture "http://^{URIQADefaultHost}^/thalia/umd/lecture/%U#this" (in Code varchar) .
create iri class th:UmdEventTime "http://^{URIQADefaultHost}^/thalia/umd/eventtime/%U#this" (in Code varchar) .
create iri class th:UmdDatetime "http://^{URIQADefaultHost}^/thalia/umd/datetime/%U#this" (in Code varchar) .
')
;
DB.DBA.SPARQL_THALIA_RUN('prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix xsd: <http://www.w3.org/2001/XMLSchema#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix dc: <http://purl.org/dc/elements/1.1/>
prefix time: <http://www.w3.org/2006/time#>
prefix event: <http://purl.org/NET/c4dm/event.owl#>
prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix th: <http://demo.openlinksw.com/schemas/thalia#>
alter quad storage virtrdf:DefaultQuadStorage
from thalia.demo.asu_v as asus
from thalia.demo.brown as browns
from thalia.demo.cmu as cmus
from thalia.demo.gatech_v as gatechs
from thalia.demo.toronto as torontos
from thalia.demo.ucsd as ucsds
from thalia.demo.umd as umds
{
create virtrdf:ThaliaDemo as graph iri ("http://^{URIQADefaultHost}^/thalia") option (exclusive)
{
th:Asu (asus.code)
a th:Course
as virtrdf:Asu-Course ;
dc:title asus.Title
as virtrdf:Asu-Title ;
dc:description asus.Description
as virtrdf:Asu-Description ;
rdfs:seeAlso asus.MoreInfoURL
as virtrdf:Asu-MoreInfoURL ;
th:forUniversity "http://purl.org/thalia/university/asu/university/asu"
as virtrdf:Asu-University ;
skos:subject "http://purl.org/subject/thalia/ComputerScience"
as virtrdf:Asu-Subject
.
th:Brown (browns.Code)
a th:Course
as virtrdf:Brown-Course ;
dc:title browns.Title
as virtrdf:Brown-Title ;
th:hasInstructor th:BrownInstructor (browns.Code)
as virtrdf:Brown-hasInstructor ;
th:hasLecture th:BrownLecture(browns.Code)
as virtrdf:Brown-hasLecture ;
th:forUniversity "http://purl.org/thalia/university/brown"
as virtrdf:Brown-University ;
skos:subject "http://purl.org/subject/thalia/ComputerScience"
as virtrdf:Brown-Subject
.
th:BrownInstructor (browns.Code)
a th:Instructor
as virtrdf:Brown-Instructor ;
dc:homepage browns.Instructor
as virtrdf:Brown-Instructor-Homepage
.
th:BrownLecture (browns.Code)
a event:Event
as virtrdf:Brown-Lecture ;
event:place th:BrownPlace(browns.Code)
as virtrdf:Brown-hasPlace
.
th:BrownPlace (browns.Code)
a geo:Point
as virtrdf:Brown-Place;
dc:title browns.Room
as virtrdf:Brown-Room
.
th:Cmu (cmus.Code, cmus.Sec)
a th:Course
as virtrdf:Cmu-Course ;
dc:title cmus.CourseTitle
as virtrdf:Cmu-CourseTitle ;
th:hasInstructor th:CmuInstructor (cmus.Code, cmus.Sec)
as virtrdf:Cmu-hasInstructor ;
th:hasLecture th:CmuLecture(cmus.Code, cmus.Sec)
as virtrdf:Cmu-hasLecture ;
th:hasUnits cmus.Units
as virtrdf:Cmu-hasUnits ;
th:forUniversity "http://purl.org/thalia/university/cmu"
as virtrdf:Cmu-University ;
skos:subject "http://purl.org/subject/thalia/ComputerScience"
as virtrdf:Cmu-Subject
.
th:CmuInstructor (cmus.Code, cmus.Sec)
a th:Instructor
as virtrdf:Cmu-Instructor ;
foaf:name cmus.Lecturer
as virtrdf:Cmu-Lecturer
.
th:CmuLecture (cmus.Code, cmus.Sec)
a event:Event
as virtrdf:Cmu-Lecture ;
event:time th:CmuEventTime(cmus.Code, cmus.Sec)
as virtrdf:Cmu-hasEventTime ;
event:place th:CmuPlace(cmus.Code, cmus.Sec)
as virtrdf:Cmu-hasPlace
.
th:CmuPlace (cmus.Code, cmus.Sec)
a geo:Point
as virtrdf:Cmu-Place;
dc:title cmus.Room
as virtrdf:Cmu-Room
.
th:CmuEventTime (cmus.Code, cmus.Sec)
a time:Interval
as virtrdf:Cmu-EventTime;
time:inDateTime th:CmuDatetime(cmus.Code, cmus.Sec)
as virtrdf:Cmu-inDateTime
.
th:CmuDatetime (cmus.Code, cmus.Sec)
a time:DateTimeDescription
as virtrdf:Cmu-Datetime;
time:dayOfWeek cmus.Day_
as virtrdf:Cmu-Day ;
time:hour cmus.Time_
as virtrdf:Cmu-Time
.
th:Gatech (gatechs.Department, gatechs.Code, gatechs.Section)
a th:Course
as virtrdf:Gatech-Course ;
dc:title gatechs.Title
as virtrdf:Gatech-Title ;
th:hasInstructor th:GatechInstructor(gatechs.Department, gatechs.Code, gatechs.Section)
as virtrdf:Gatech-hasInstructor ;
dc:description gatechs.Description
as virtrdf:Gatech-Description ;
th:hasLecture th:GatechLecture(gatechs.Department, gatechs.Code, gatechs.Section)
as virtrdf:Gatech-hasLecture ;
th:forUniversity "http://purl.org/thalia/university/gatech"
as virtrdf:Gatech-University ;
skos:subject "http://purl.org/subject/thalia/ComputerScience"
as virtrdf:Gatech-Subject
.
th:GatechInstructor (gatechs.Department, gatechs.Code, gatechs.Section)
a th:Instructor
as virtrdf:Gatech-Instructor ;
foaf:name gatechs.Instructor
as virtrdf:Gatech-InstructorName
.
th:GatechLecture (gatechs.Department, gatechs.Code, gatechs.Section)
a event:Event
as virtrdf:Gatech-Lecture ;
event:time th:GatechEventTime(gatechs.Department, gatechs.Code, gatechs.Section)
as virtrdf:Gatech-hasEventTime ;
event:place th:GatechPlace(gatechs.Department, gatechs.Code, gatechs.Section)
as virtrdf:Gatech-hasPlace
.
th:GatechEventTime (gatechs.Department, gatechs.Code, gatechs.Section)
a time:Interval
as virtrdf:Gatech-EventTime ;
time:inDateTime th:GatechDatetime(gatechs.Department, gatechs.Code, gatechs.Section)
as virtrdf:Gatech-inDateTime
.
th:GatechDatetime (gatechs.Department, gatechs.Code, gatechs.Section)
a time:DateTimeDescription
as virtrdf:Gatech-Datetime ;
time:dayOfWeek gatechs.Days
as virtrdf:Gatech-Days ;
time:hour gatechs.Time_
as virtrdf:Gatech-Time_
.
th:GatechPlace (gatechs.Department, gatechs.Code, gatechs.Section)
a geo:Point
as virtrdf:Gatech-Place ;
dc:title gatechs.Place
as virtrdf:Gatech-RoomBuilding
.
th:Toronto (torontos.No_)
a th:Course
as virtrdf:Toronto-Course ;
dc:title torontos.title
as virtrdf:Toronto-Title ;
dc:description torontos.text_
as virtrdf:Toronto-Description ;
th:hasInstructor th:TorontoInstructor(torontos.No_)
as virtrdf:Toronto-hasInstructor ;
th:hasLecture th:TorontoLecture(torontos.No_)
as virtrdf:Toronto-hasLecture ;
rdfs:seeAlso torontos.coursewebsite
as virtrdf:Toronto-CourseWebSite ;
th:hasPrerequisite torontos.prereq
as virtrdf:Toronto-prereq ;
th:text torontos.text_
as virtrdf:Toronto-text;
th:forUniversity "http://purl.org/thalia/university/toronto"
as virtrdf:Toronto-University ;
skos:subject "http://purl.org/subject/thalia/ComputerScience"
as virtrdf:Toronto-Subject
.
th:TorontoInstructor (torontos.No_)
a th:Instructor
as virtrdf:Toronto-Instructor ;
foaf:name torontos.instructorName
as virtrdf:Toronto-InstructorName ;
foaf:mbox torontos.instructorEmail
as virtrdf:Toronto-InstructorEmail
.
th:TorontoLecture (torontos.No_)
a event:Event
as virtrdf:Toronto-Lecture ;
event:place th:TorontoPlace(torontos.No_)
as virtrdf:Toronto-hasPlace
.
th:TorontoPlace (torontos.No_)
a geo:Point
as virtrdf:Toronto-Place ;
dc:title torontos.location
as virtrdf:Toronto-Location
.
th:Ucsd (ucsds.Number)
a th:Course
as virtrdf:Ucsd-Course ;
dc:title ucsds.Title
as virtrdf:Ucsd-Title ;
th:hasInstructor1 th:UcsdInstructor1 (ucsds.Number)
as virtrdf:Ucsd-hasInstructor1 ;
th:hasInstructor2 th:UcsdInstructor2 (ucsds.Number)
as virtrdf:Ucsd-hasInstructor2 ;
th:hasInstructor3 th:UcsdInstructor3 (ucsds.Number)
as virtrdf:Ucsd-hasInstructor3 ;
th:forUniversity "http://purl.org/thalia/university/ucsd"
as virtrdf:Ucsd-University ;
skos:subject "http://purl.org/subject/thalia/ComputerScience"
as virtrdf:Ucsd-Subject
.
th:UcsdInstructor1 (ucsds.Number)
a th:Instructor
as virtrdf:Ucsd-Instructor1 ;
foaf:name ucsds.Fall2003
as virtrdf:Ucsd-Instructor-Fall2003
.
th:UcsdInstructor2 (ucsds.Number)
a th:Instructor
as virtrdf:Ucsd-Instructor2 ;
foaf:name ucsds.Winter2004
as virtrdf:Ucsd-Instructor-Winter2004
.
th:UcsdInstructor3 (ucsds.Number)
a th:Instructor
as virtrdf:Ucsd-Instructor3 ;
foaf:name ucsds.Spring2004
as virtrdf:Ucsd-Instructor-Spring2004
.
th:Umd (umds.Code)
a th:Course
as virtrdf:Umd-Course ;
dc:title umds.CourseName
as virtrdf:Umd-Title ;
th:hasSection th:SectionTitle
as virtrdf:Umd-hasSection ;
th:hasLecture th:UmdLecture(umds.Code)
as virtrdf:Umd-hasLecture ;
th:forUniversity "http://purl.org/thalia/university/umd"
as virtrdf:Umd-University ;
skos:subject "http://purl.org/subject/thalia/ComputerScience"
as virtrdf:Umd-Subject
.
th:UmdLecture (umds.Code)
a event:Event
as virtrdf:Umd-Lecture ;
event:time th:UmdEventTime(umds.Code)
as virtrdf:Umd-hasEventTime
.
th:UmdEventTime (umds.Code)
a time:Interval
as virtrdf:Umd-EventTime ;
time:inDateTime th:UmdDatetime(umds.Code)
as virtrdf:Umd-inDateTime
.
th:UmdDatetime (umds.Code)
a time:DateTimeDescription
as virtrdf:Umd-Datetime ;
time:hour umds.SectionTime
as virtrdf:Umd-SectionTime
.
}
}
')
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'tut_th_%';
delete from db.dba.url_rewrite_rule where urr_rule like 'tut_th_%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tut_th_rule1',
1,
'([^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s%%01this',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tut_th_rule2',
1,
'([^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/thalia%%3E+WHERE+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tut_th_rule3',
1,
'(/[^#]*)/\x24',
vector('path'),
1,
'%U',
vector('path'),
null,
null,
0,
null
);
create procedure DB.DBA.REMOVE_THALIA_RDF_DET()
{
declare colid int;
colid := DAV_SEARCH_ID('/DAV/Thalia', 'C');
if (colid < 0)
return;
update WS.WS.SYS_DAV_COL set COL_DET=null where COL_ID = colid;
}
;
DB.DBA.REMOVE_THALIA_RDF_DET();
drop procedure DB.DBA.REMOVE_THALIA_RDF_DET;
create procedure DB.DBA.THALIA_MAKE_RDF_DET()
{
declare uriqa_str varchar;
uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
uriqa_str := 'http://' || uriqa_str || '/thalia';
DB.DBA."RDFData_MAKE_DET_COL" ('/DAV/Thalia/RDFData/', uriqa_str, NULL);
VHOST_REMOVE (lpath=>'/thalia/data/rdf');
DB.DBA.VHOST_DEFINE (lpath=>'/thalia/data/rdf', ppath=>'/DAV/Thalia/RDFData/All/', is_dav=>1, vsp_user=>'dba');
}
;
DB.DBA.THALIA_MAKE_RDF_DET();
drop procedure DB.DBA.THALIA_MAKE_RDF_DET;
-- procedure to convert path to DET resource name
create procedure DB.DBA.THALIA_DET_REF (in par varchar, in fmt varchar, in val varchar)
{
declare res, iri any;
declare uriqa_str varchar;
uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
uriqa_str := 'http://' || uriqa_str || '/thalia';
iri := uriqa_str || replace(val, '/', '_');
res := sprintf ('iid (%d).rdf', iri_id_num (iri_to_id (iri)));
return sprintf (fmt, res);
}
;
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('tut_th_rdf', 1,
'/thalia/(.*)', vector('path'), 1,
'/thalia/data/rdf/%U', vector('path'),
'DB.DBA.THALIA_DET_REF',
'application/rdf.xml',
2,
303);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'tut_th_rule_list1',
1,
vector (
'tut_th_rule1',
'tut_th_rule2',
'tut_th_rule3',
'tut_th_rdf'
));
DB.DBA.VHOST_REMOVE (lpath=>'/thalia');
DB.DBA.VHOST_DEFINE (lpath=>'/thalia', ppath=>'/DAV/Thalia/', vsp_user=>'dba', is_dav=>1,
is_brws=>0, opts=>vector ('url_rewrite', 'tut_th_rule_list1'));
create procedure DB.DBA.LOAD_THALIA_ONTOLOGY_FROM_DAV()
{
declare content, urihost varchar;
select cast (RES_CONTENT as varchar) into content from WS.WS.SYS_DAV_RES where RES_FULL_PATH = '/DAV/Thalia/thalia.owl';
DB.DBA.RDF_LOAD_RDFXML (content, 'http://demo.openlinksw.com/schemas/thalia#', 'http://demo.openlinksw.com/schemas/ThaliaOntology/1.0/');
urihost := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
if (urihost = 'demo.openlinksw.com')
{
DB.DBA.VHOST_REMOVE (lpath=>'/schemas/thalia');
DB.DBA.VHOST_DEFINE (lpath=>'/schemas/thalia', ppath=>'/DAV/Thalia/thalia.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
}
}
;
DB.DBA.LOAD_THALIA_ONTOLOGY_FROM_DAV()
;
drop procedure DB.DBA.LOAD_THALIA_ONTOLOGY_FROM_DAV
;
DB.DBA.XML_SET_NS_DECL ('thalia', 'http://demo.openlinksw.com/schemas/thalia#', 2)
;
* Demo : Thalia test queries
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?room
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?title;
th:hasLecture ?lecture.
?lecture event:place [dc:title ?room].
FILTER regex(?title, "Software Engineering")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT ?day, ?hour ?course
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
th:hasLecture [event:time ?time];
dc:title ?title.
?time time:inDateTime [time:dayOfWeek ?day];
time:inDateTime [time:hour ?hour].
FILTER regex(?title, "Computer Networks")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?course
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?Title;
th:hasLecture ?lecture.
?lecture event:time [time:inDateTime ?dateTime].
?dateTime time:hour ?hour.
FILTER regex(?Title, "Database System")
FILTER regex(?hour, "1:30 - 2:50")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?course ?instructor ?name
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
th:hasInstructor ?instructor.
?instructor foaf:name ?name.
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?instructor
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
th:hasInstructor ?instructor;
dc:title ?title.
FILTER regex(?title, "Database")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?instructor
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?title;
th:hasInstructor ?instructor.
FILTER regex(?title, "Software")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT DISTINCT ?course
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?title;
th:forUniversity 'http://purl.org/thalia/university/umd'.
FILTER regex(?title, "Data Structures")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?course
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?Title;
th:hasUnits ?credits.
FILTER (xsd:integer(?credits) > 10)
FILTER regex(?Title, "Database")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?course
FORM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?title;
th:forUniversity 'http://purl.org/thalia/university/umd'.
FILTER regex(?title, "Database")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?course
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?Title;
th:hasUnits ?credits.
FILTER (xsd:integer(?credits) > 10)
FILTER regex(?Title, "Database")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX th: <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?text_
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:title ?title;
th:text ?text_.
FILTER regex(?title, "Verification")
}
#service:/sparql
#should-sponge:soft
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX time: <http://www.w3.org/2006/time#>
PREFIX event: <http://purl.org/NET/c4dm/event.owl#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX : <http://purl.org/ontology/thalia/1.0/>
SELECT distinct ?course
FROM <http://demo.openlinksw.com/thalia>
WHERE
{
?course a th:Course;
dc:description ?description;
th:forUniversity 'http://purl.org/thalia/university/gatech'.
FILTER regex(?description, "JR")
}
The following code creates the Musicbrainz RDF Views Deployment and Demo Scripts:
create text index on ZITGIST.MO.artist ("name") with key id;
create text index on ZITGIST.MO.artistalias ("name") with key id;
create text index on ZITGIST.MO.album ("name") with key id;
create text index on ZITGIST.MO.track ("name") with key id;
vt_batch_update (fix_identifier_case ('ZITGIST.MO.artist'), 'ON', NULL);
vt_batch_update (fix_identifier_case ('ZITGIST.MO.artistalias'), 'ON', NULL);
vt_batch_update (fix_identifier_case ('ZITGIST.MO.album'), 'ON', NULL);
vt_batch_update (fix_identifier_case ('ZITGIST.MO.track'), 'ON', NULL);
VT_INC_INDEX_DB_MO_artist ();
VT_INC_INDEX_DB_MO_artistalias ();
VT_INC_INDEX_DB_MO_album ();
VT_INC_INDEX_DB_MO_track ();
Note: Making sure that the graphs and views are deleting to clean Virtuoso from the old definitions
SPARQL drop quad storage virtrdf:MBZROOT. ; SPARQL prefix mbz: <http://musibrainz.org/schemas/mbz#> drop literal class mbz:duration ; SPARQL prefix mbz: <http://musibrainz.org/schemas/mbz#> drop literal class mbz:created. drop literal class mbz:official_iri. drop literal class mbz:bootleg_iri. drop literal class mbz:promotion_iri. drop literal class mbz:album_iri. drop literal class mbz:single_iri. drop literal class mbz:ep_iri. drop literal class mbz:compilation_iri. drop literal class mbz:soundtrack_iri. drop literal class mbz:spokenword_iri. drop literal class mbz:interview_iri. drop literal class mbz:audiobook_iri. drop literal class mbz:live_iri. drop literal class mbz:remix_iri. ;
The following SPARQL query will fix an issue Virtuoso has with its JSO system. Perform this query for now, the issue should be fixed in a future release
SPARQL define input:storage ""
DELETE FROM GRAPH (iri(bif:JSO_SYS_GRAPH NIL)) { ?s virtrdf:version ?o }
WHERE { graph `iri(bif:JSO_SYS_GRAPH NIL)` {?s virtrdf:version ?o}};
SPARQL_RELOAD_QM_GRAPH();
Creation of IRIs classes.
SPARQL
prefix mbz: <http://musibrainz.org/schemas/mbz#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix dc: <http://purl.org/dc/elements/1.1/>
prefix bio: <http://vocab.org/bio/0.1/#>
prefix rel: <http://vocab.org/relationship/#>
prefix mo: <http://purl.org/ontology/mo/>
prefix timeline: <http://purl.org/NET/c4dm/timeline.owl#>
prefix event: <http://purl.org/NET/c4dm/event.owl#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix sim: <http://purl.org/ontology/sim/>
create iri class mbz:artist_iri "http://zitgist.com/music/artist/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:artist_birth_event_iri "http://zitgist.com/music/artist/birth/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:artist_death_event_iri "http://zitgist.com/music/artist/death/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:sim_link_iri "http://zitgist.com/music/artist/simlink/%U" (in gid varchar not null) option (bijection) .
#create iri class mbz:band_iri "http://zitgist.com/music/band/%U" (in gid varchar not null) option (bijection) .
#create iri class mbz:band_birth_event_iri "http://zitgist.com/music/band/birth/%U" (in gid varchar not null) option (bijection) .
#create iri class mbz:band_death_event_iri "http://zitgist.com/music/band/death/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:record_iri "http://zitgist.com/music/record/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:performance_iri "http://zitgist.com/music/performance/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:composition_iri "http://zitgist.com/music/composition/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:musicalwork_iri "http://zitgist.com/music/musicalwork/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:sound_iri "http://zitgist.com/music/sound/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:recording_iri "http://zitgist.com/music/recording/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:signal_iri "http://zitgist.com/music/signal/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:track_iri "http://zitgist.com/music/track/%U" (in gid varchar not null) option (bijection) .
create iri class mbz:image_iri "http://ec1.images-amazon.com/images/P/%U.01.MZZZZZZZ.jpg" (in image varchar not null) option (bijection) .
create iri class mbz:amazon_asin_iri "http://amazon.com/exec/obidos/ASIN/%U/searchcom07-20" (in gid varchar not null) option (bijection) .
create literal class mbz:created using
function ZITGIST.MO.RECORD_CREATION_DATE (in datestring varchar) returns varchar,
function ZITGIST.MO.RECORD_CREATION_DATE_INVERSE (in datestring varchar) returns varchar .
create iri class mbz:official_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_OFFICIAL (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/official') .
create iri class mbz:promotion_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_PROMOTION (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/promotion') .
create iri class mbz:bootleg_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_BOOTLEG (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/bootleg') .
create iri class mbz:album_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_ALBUM (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/album') .
create iri class mbz:single_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_SINGLE (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/single') .
create iri class mbz:ep_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_EP (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/ep') .
create iri class mbz:compilation_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_COMPILATION (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/compilation') .
create iri class mbz:soundtrack_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_SOUNDTRACK (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/soundtrack') .
create iri class mbz:spokenword_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_SPOKENWORD (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/spokenword') .
create iri class mbz:interview_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_INTERVIEW (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/interview') .
create iri class mbz:audiobook_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_AUDIOBOOK (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/audiobook') .
create iri class mbz:live_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_LIVE (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/live') .
create iri class mbz:remix_iri using
function ZITGIST.MO.RECORD_ATTRIBUTE_REMIX (in attributes varchar) returns varchar
option (returns 'http://purl.org/ontology/mo/remix') .
create iri class mbz:duration_iri "http://zitgist.com/music/track/duration/%U" (in gid varchar not null) .
create literal class mbz:duration using
function ZITGIST.MO.TRACK_DURATION (in duration integer) returns varchar ,
function ZITGIST.MO.TRACK_DURATION_INVERSE (in durationXSD varchar) returns integer .
create iri class mbz:geoname_country_iri "http://www.geonames.org/countries/#%U" (in country varchar not null) .
create iri class mbz:url_iri "%s" (in url varchar not null) .
create iri class mbz:mbz_release_url_iri "http://musicbrainz.org/release/%s.html" (in mbz_gid varchar not null) .
create iri class mbz:mbz_track_url_iri "http://musicbrainz.org/track/%s.html" (in mbz_gid varchar not null) .
create iri class mbz:mbz_artist_url_iri "http://musicbrainz.org/artist/%s.html" (in mbz_gid varchar not null) .
;
List of functions used to compute some IRI classes:
Note:These functions have been developed to handle some weird user cases of the Musicbrainz data model (like the Attribute column of the album table, etc).
create function ZITGIST.MO.TRACK_DURATION_INVERSE(in durationXSD varchar)
{
return null;
};
create function ZITGIST.MO.TRACK_DURATION(in duration integer)
{
declare minutes, seconds, milliseconds integer;
minutes := ((duration / 1000) / 60);
if(minutes >= 1)
{
minutes := cast(minutes as integer);
}
else
{
minutes := 0;
}
seconds := (duration / 1000) - (minutes * 60);
if(seconds >= 1)
{
seconds := cast(seconds as integer);
}
milliseconds := duration - (seconds * 1000) - (minutes * 60000);
return sprintf('PT%dM%dS', minutes, seconds);
}
;
create function ZITGIST.MO.RECORD_CREATION_DATE(in datestring varchar)
{
return sprintf('%sT00:00:00Z', datestring);
};
create function ZITGIST.MO.RECORD_CREATION_DATE_INVERSE(in datestring varchar)
{
declare pos integer;
pos := locate('T00:00:00Z', datestring) - 1;
return substring(datestring, 1, pos);
};
create function ZITGIST.MO.RECORD_ATTRIBUTE(in attribute integer, in attributes varchar)
{
declare attributes_array any;
attributes_array := split_and_decode(ltrim(rtrim(attributes, '}'), '{'), 0, '\0\0,');
foreach(int attr in attributes_array) do
{
attr := cast(attr as integer);
if(attr = attribute)
{
if(attr = 100) return 'http://purl.org/ontology/mo/official';
if(attr = 101) return 'http://purl.org/ontology/mo/promotion';
if(attr = 102) return 'http://purl.org/ontology/mo/bootleg';
if(attr = 1) return 'http://purl.org/ontology/mo/album';
if(attr = 2) return 'http://purl.org/ontology/mo/single';
if(attr = 3) return 'http://purl.org/ontology/mo/ep';
if(attr = 4) return 'http://purl.org/ontology/mo/compilation';
if(attr = 5) return 'http://purl.org/ontology/mo/soundtrack';
if(attr = 6) return 'http://purl.org/ontology/mo/spokenword';
if(attr = 7) return 'http://purl.org/ontology/mo/interview';
if(attr = 8) return 'http://purl.org/ontology/mo/audiobook';
if(attr = 9) return 'http://purl.org/ontology/mo/live';
if(attr = 10) return 'http://purl.org/ontology/mo/remix';
}
}
return null;
}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_OFFICIAL(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(100, attributes); }
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_PROMOTION(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(101, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_BOOTLEG(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(102, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_ALBUM(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(1, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_SINGLE(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(2, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_EP(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(3, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_COMPILATION(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(4, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_SOUNDTRACK(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(5, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_SPOKENWORD(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(6, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_INTERVIEW(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(7, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_AUDIOBOOK(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(8, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_LIVE(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(9, attributes);}
;
create function ZITGIST.MO.RECORD_ATTRIBUTE_REMIX(in attributes varchar)
{ return ZITGIST.MO.RECORD_ATTRIBUTE(10, attributes);}
;
Definition of the quad map patterns
This what creates the RDF triples from the musicbrainz relational database schema.
SPARQL
prefix mbz: <http://musibrainz.org/schemas/mbz#>
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
prefix dc: <http://purl.org/dc/elements/1.1/>
prefix dcterms: <http://purl.org/dc/terms/>
prefix bio: <http://vocab.org/bio/0.1/#>
prefix rel: <http://vocab.org/relationship/#>
prefix mo: <http://purl.org/ontology/mo/>
prefix timeline: <http://purl.org/NET/c4dm/timeline.owl#>
prefix event: <http://purl.org/NET/c4dm/event.owl#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix sim: <http://purl.org/ontology/sim/>
create quad storage virtrdf:MBZROOT
#
# Definition of the source tables from the mbz relational database and their joints.
#########
FROM ZITGIST.MO.track as track text literal name
FROM ZITGIST.MO.artist as track_artist
FROM ZITGIST.MO.puid as track_puid
FROM ZITGIST.MO.track as track_track
FROM ZITGIST.MO.url as track_url
FROM ZITGIST.MO.artist as track_artist_creator where (^{track.}^.artist = ^{track_artist_creator.}^.id)
FROM ZITGIST.MO.albumjoin as track_albumjoin where (^{track.}^.id = ^{track_albumjoin.}^.track)
FROM ZITGIST.MO.l_artist_track as l_artist_track2 where (^{track.}^.id = ^{l_artist_track2.}^.link1)
where (^{track_artist.}^.id = ^{l_artist_track2.}^.link0)
FROM ZITGIST.MO.puidjoin as puidjoin where (^{track.}^.id = ^{puidjoin.}^.track)
where (^{puidjoin.}^.puid = ^{track_puid.}^.id)
FROM ZITGIST.MO.l_track_track as l_track_track where (^{track.}^.id = ^{l_track_track.}^.link0)
where (^{track_track.}^.id = ^{l_track_track.}^.link1)
FROM ZITGIST.MO.l_track_url as l_track_url where (^{track.}^.id = ^{l_track_url.}^.link0)
where (^{track_url.}^.id = ^{l_track_url.}^.link1)
FROM ZITGIST.MO.album as album text literal name
FROM ZITGIST.MO.artist as album_artist
FROM ZITGIST.MO.album as album_album
FROM ZITGIST.MO.url as album_url
FROM ZITGIST.MO.country as album_release_country
FROM ZITGIST.MO.track as album_albumjoin_track
FROM ZITGIST.MO.artist as album_artist_creator where (^{album.}^.artist = ^{album_artist_creator.}^.id)
FROM ZITGIST.MO.album_amazon_asin as album_amazon_asin where (^{album.}^.id = ^{album_amazon_asin.}^.album)
FROM ZITGIST.MO.albumjoin as album_albumjoin where (^{album.}^.id = ^{album_albumjoin.}^.album)
where (^{album_albumjoin.}^.track = ^{album_albumjoin_track.}^.id)
FROM ZITGIST.MO.l_album_artist as l_album_artist2 where (^{album.}^.id = ^{l_album_artist2.}^.link0)
where (^{album_artist.}^.id = ^{l_album_artist2.}^.link1)
FROM ZITGIST.MO.l_album_album as l_album_album where (^{album.}^.id = ^{l_album_album.}^.link0)
where (^{album_album.}^.id = ^{l_album_album.}^.link1)
FROM ZITGIST.MO.l_album_url as l_album_url where (^{album.}^.id = ^{l_album_url.}^.link0)
where (^{album_url.}^.id = ^{l_album_url.}^.link1)
FROM ZITGIST.MO.release as album_release where (^{album.}^.id = ^{album_release.}^.album)
where (^{album_release.}^.country = ^{album_release_country.}^.id)
FROM ZITGIST.MO.artist as sim_band
FROM ZITGIST.MO.artist as sim_artist
FROM ZITGIST.MO.url as band_url
FROM ZITGIST.MO.artist as band_member
FROM ZITGIST.MO.album as band_album
FROM ZITGIST.MO.track as band_track
FROM ZITGIST.MO.artist as band text literal name where (^{band.}^.type = 2)
#FROM ZITGIST.MO.artist as artist text literal name where (^{artist.}^.type <> 2)
FROM ZITGIST.MO.artist as artist text literal name where (__or (neq(^{artist.}^.type, 2), isnull (^{artist.}^.type)))
FROM ZITGIST.MO.artist as artist_untyped text literal name where (^{artist_untyped.}^.type <> 2)
where (^{artist.}^.gid = ^{artist_untyped.}^.gid)
FROM ZITGIST.MO.album as band_album_creatorOf where (^{band_album_creatorOf.}^.artist = ^{band.}^.id)
FROM ZITGIST.MO.track as band_track_creatorOf where (^{band_track_creatorOf.}^.artist = ^{band.}^.id)
FROM ZITGIST.MO.artistalias as bandalias text literal name where (^{band.}^.id = ^{bandalias.}^."ref")
FROM ZITGIST.MO.l_artist_artist as band_l_artist_artist where (^{band_member.}^.id = ^{band_l_artist_artist.}^.link0)
where (^{band.}^.id = ^{band_l_artist_artist.}^.link1)
where (^{band_l_artist_artist.}^.link_type = 2)
FROM ZITGIST.MO.artist_relation as band_relation
where (^{artist.}^.id = ^{band_relation.}^.artist)
where (^{band.}^.id = ^{band_relation.}^.artist)
where (^{sim_band.}^.id = ^{band_relation.}^."ref")
FROM ZITGIST.MO.artist_relation as artist_relation
where (^{artist.}^.id = ^{artist_relation.}^.artist)
where (^{band.}^.id = ^{artist_relation.}^.artist)
where (^{sim_artist.}^.id = ^{artist_relation.}^."ref")
FROM ZITGIST.MO.l_artist_url as l_artist_url3 where (^{band.}^.id = ^{l_artist_url3.}^.link0)
where (^{band_url.}^.id = ^{l_artist_url3.}^.link1)
FROM ZITGIST.MO.l_album_artist as l_album_artist3 where (^{band.}^.id = ^{l_album_artist3.}^.link1)
where (^{band_album.}^.id = ^{l_album_artist3.}^.link0)
FROM ZITGIST.MO.l_artist_track as l_artist_track3 where (^{band.}^.id = ^{l_artist_track3.}^.link0)
where (^{band_track.}^.id = ^{l_artist_track3.}^.link1)
FROM ZITGIST.MO.url as artist_url
FROM ZITGIST.MO.artist as artist_artist
FROM ZITGIST.MO.track as artist_track
FROM ZITGIST.MO.album as artist_album
FROM ZITGIST.MO.album as artist_album_creatorOf where (^{artist_album_creatorOf.}^.artist = ^{artist.}^.id)
FROM ZITGIST.MO.track as artist_track_creatorOf where (^{artist_track_creatorOf.}^.artist = ^{artist.}^.id)
FROM ZITGIST.MO.artistalias as artistalias text literal name where (^{artist.}^.id = ^{artistalias.}^."ref")
FROM ZITGIST.MO.l_artist_url as l_artist_url where (^{artist.}^.id = ^{l_artist_url.}^.link0)
where (^{artist_url.}^.id = ^{l_artist_url.}^.link1)
FROM ZITGIST.MO.l_artist_artist as l_artist_artist where (^{artist.}^.id = ^{l_artist_artist.}^.link0)
where (^{artist_artist.}^.id = ^{l_artist_artist.}^.link1)
FROM ZITGIST.MO.l_artist_track as l_artist_track where (^{artist.}^.id = ^{l_artist_track.}^.link0)
where (^{artist_track.}^.id = ^{l_artist_track.}^.link1)
FROM ZITGIST.MO.l_album_artist as l_album_artist where (^{artist.}^.id = ^{l_album_artist.}^.link1)
where (^{artist_album.}^.id = ^{l_album_artist.}^.link0)
{
create virtrdf:MBZ as graph iri ("http://musicbrainz.org/") option (exclusive)
{
# Track Composition Event
mbz:composition_iri (track.gid)
a mo:Composition as mbz:track_is_composition;
dc:title track.name as mbz:title_of_track;
mo:composer mbz:artist_iri (track_artist_creator.gid) as mbz:creator_composer_of_track;
mo:composer mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 14) option (using l_artist_track2) as mbz:composer14_of_track;
mo:producesWork mbz:musicalwork_iri (track.gid) as mbz:track_producesWork.
# Track Musical Work
mbz:musicalwork_iri (track.gid)
a mo:MusicalWork as mbz:track_is_mw;
dc:title track.name as mbz:name_of_mw;
mo:productOfComposition mbz:composition_iri(track.gid) as mbz:mw_is_productOfComposition_of;
mo:usedInPerformance mbz:performance_iri(track.gid) as mbz:mw_usedInPerformance.
# Track Performance Event
mbz:performance_iri (track.gid)
a mo:Performance;
dc:title track.name;
mo:performer mbz:artist_iri (track_artist_creator.gid);
mo:performer mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 2) option (using l_artist_track2);
mo:conductor mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 9) option (using l_artist_track2);
mo:usesWork mbz:musicalwork_iri (track.gid);
mo:producesSound mbz:sound_iri (track.gid);
mo:recordedAs mbz:signal_iri(track.gid).
# Track Sound
mbz:sound_iri (track.gid)
a mo:Sound;
dc:title track.name;
mo:productOfPerformance mbz:performance_iri (track.gid);
mo:usedInRecording mbz:recording_iri (track.gid).
# Track Recording Event
mbz:recording_iri (track.gid)
a mo:Recording;
dc:title track.name;
mo:recordsSound mbz:sound_iri (track.gid);
mo:producesSignal mbz:signal_iri (track.gid).
# Track Signal (Musical Expression)
mbz:signal_iri (track.gid)
a mo:Signal;
dc:title track.name;
mo:remixer mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 11) option (using l_artist_track2);
mo:sampler mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 12) option (using l_artist_track2);
mo:djmixed mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 40) option (using l_artist_track2);
mo:djmix_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 13) option (using l_track_track);
mo:remix_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 6) option (using l_track_track);
mo:remix_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 11) option (using l_track_track);
mo:mashup_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 8) option (using l_track_track);
mo:mashup_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 4) option (using l_track_track);
mo:remaster_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 3) option (using l_track_track);
mo:compilation_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 10) option (using l_track_track);
mo:compilation_of mbz:track_iri (track_track.gid) where (^{l_track_track.}^.link_type = 12) option (using l_track_track);
mo:medley_of mbz:record_iri (track_track.gid) where (^{l_track_track.}^.link_type = 14) option (using l_track_track);
mo:published_as mbz:track_iri (track.gid);
mo:signalTime mbz:duration_iri(track.gid);
mo:puid track_puid.puid option (using puidjoin).
# Track duration
mbz:duration_iri(track.gid)
a timeline:Interval;
timeline:durationXSD mbz:duration(track.length).
mbz:track_iri(track.gid)
a mo:Track;
dc:title track.name;
mo:trackNum track_albumjoin.sequence;
dc:creator mbz:artist_iri (track_artist_creator.gid);
dc:creator mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 14) option (using l_artist_track2);
mo:compiler mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 39) option (using l_artist_track2);
mo:producer mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 18) option (using l_artist_track2);
mo:publisher mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 35) option (using l_artist_track2);
mo:engineer mbz:artist_iri (track_artist.gid) where (^{l_artist_track2.}^.link_type = 19) option (using l_artist_track2);
mo:licence mbz:url_iri(track_url.url) where (^{l_track_url.}^.link_type = 21) option (using l_track_url);
mo:paiddownload mbz:url_iri(track_url.url) where (^{l_track_url.}^.link_type = 16) option (using l_track_url);
mo:freedownload mbz:url_iri(track_url.url) where (^{l_track_url.}^.link_type = 17) option (using l_track_url);
mo:olga mbz:url_iri(track_url.url) where (^{l_track_url.}^.link_type = 19) option (using l_track_url);
mo:musicbrainz mbz:mbz_track_url_iri(track.gid);
mo:duration track.length.
# Record Composition Event
mbz:composition_iri (album.gid)
a mo:Composition;
dc:title album.name;
mo:composer mbz:artist_iri (album_artist_creator.gid);
mo:composer mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 14) option (using l_album_artist2);
mo:producesWork mbz:musicalwork_iri (album.gid).
# Record Musical Work
mbz:musicalwork_iri (album.gid)
a mo:MusicalWork;
dc:title album.name;
mo:productOfComposition mbz:composition_iri(album.gid);
mo:usedInPerformance mbz:performance_iri(album.gid).
# Record Performance Event
mbz:performance_iri (album.gid)
a mo:Performance;
dc:title album.name;
mo:performer mbz:artist_iri (album_artist_creator.gid);
mo:performer mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 2) option (using l_album_artist2);
mo:conductor mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 9) option (using l_album_artist2);
mo:usesWork mbz:musicalwork_iri (album.gid);
mo:producesSound mbz:sound_iri (album.gid);
mo:recordedAs mbz:record_iri(album.gid).
# Record Sound
mbz:sound_iri (album.gid)
a mo:Sound;
dc:title album.name;
mo:productOfPerformance mbz:performance_iri (album.gid);
mo:usedInRecording mbz:recording_iri (album.gid).
# Record Recording Event
mbz:recording_iri (album.gid)
a mo:Recording;
dc:title album.name;
mo:recordsSound mbz:sound_iri (album.gid);
mo:producesSignal mbz:signal_iri (album.gid).
# Record Signal (Musical Expression)
mbz:signal_iri (album.gid)
a mo:Signal;
dc:title album.name;
mo:djmix_of mbz:record_iri (album_album.gid) where (^{l_album_album.}^.link_type = 9) option (using l_album_album);
mo:remix_of mbz:record_iri (album_album.gid) where (^{l_album_album.}^.link_type = 7) option (using l_album_album);
mo:remix_of mbz:record_iri (album_album.gid) where (^{l_album_album.}^.link_type = 4) option (using l_album_album);
mo:mashup_of mbz:record_iri (album_album.gid) where (^{l_album_album.}^.link_type = 5) option (using l_album_album);
mo:remaster_of mbz:record_iri (album_album.gid) where (^{l_album_album.}^.link_type = 3) option (using l_album_album);
mo:tribute_to mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 44) option (using l_album_artist2);
mo:remixer mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 11) option (using l_album_artist2);
mo:djmixed mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 38) option (using l_album_artist2);
mo:sampler mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 12) option (using l_album_artist2);
mo:published_as mbz:record_iri (album.gid).
# Record (Musical Manifestation)
mbz:record_iri (album.gid)
a mo:Record;
dc:title album.name;
dc:date mbz:created(album_release.releasedate);
mo:image mbz:image_iri(album_amazon_asin.asin);
#Empty for now.
mo:compilation_of mbz:record_iri (album_album.gid) where (^{l_album_album.}^.link_type = 8) option (using l_album_album);
mo:releaseStatus mbz:official_iri(album.attributes);
mo:releaseStatus mbz:promotion_iri(album.attributes);
mo:releaseStatus mbz:bootleg_iri(album.attributes);
mo:releaseType mbz:album_iri(album.attributes);
mo:releaseType mbz:single_iri(album.attributes);
mo:releaseType mbz:ep_iri(album.attributes);
mo:releaseType mbz:compilation_iri(album.attributes);
mo:releaseType mbz:soundtrack_iri(album.attributes);
mo:releaseType mbz:spokenword_iri(album.attributes);
mo:releaseType mbz:interview_iri(album.attributes);
mo:releaseType mbz:audiobook_iri(album.attributes);
mo:releaseType mbz:live_iri(album.attributes);
mo:releaseType mbz:remix_iri(album.attributes);
dc:creator mbz:artist_iri (album_artist_creator.gid);
dc:creator mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 14) option (using l_album_artist2);
mo:compiler mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 41) option (using l_album_artist2);
mo:producer mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 18) option (using l_album_artist2);
mo:publisher mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 35) option (using l_album_artist2);
mo:engineer mbz:artist_iri (album_artist.gid) where (^{l_album_artist2.}^.link_type = 19) option (using l_album_artist2);
mo:musicbrainz mbz:mbz_release_url_iri(album.gid);
mo:musicmoz mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 25) option (using l_album_url);
mo:discogs mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 24) option (using l_album_url);
mo:wikipedia mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 23) option (using l_album_url);
mo:discography mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 1) option (using l_album_url);
mo:freedownload mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 21) option (using l_album_url);
mo:discography mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 16) option (using l_album_url);
mo:mailorder mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 19) option (using l_album_url);
mo:imdb mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 27) option (using l_album_url);
mo:paiddownload mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 20) option (using l_album_url);
mo:licence mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 32) option (using l_album_url);
mo:review mbz:url_iri(album_url.url) where (^{l_album_url.}^.link_type = 17) option (using l_album_url);
mo:amazon_asin mbz:amazon_asin_iri(album_amazon_asin.asin);
mo:has_track mbz:track_iri (album_albumjoin_track.gid) option (using album_albumjoin).
# Music Group (Band)
# mbz:band_iri(band.gid)
mbz:artist_iri(band.gid)
a mo:MusicArtist;
a mo:MusicGroup;
a foaf:Group;
foaf:name band.name;
foaf:nick bandalias.name;
# bio:event mbz:band_birth_event_iri(band.gid);
# bio:event mbz:band_death_event_iri(band.gid);
bio:event mbz:artist_birth_event_iri(band.gid);
bio:event mbz:artist_death_event_iri(band.gid);
# mo:similar_to mbz:band_iri(sim_band.gid) option (using band_relation);
mo:similar_to mbz:artist_iri(sim_band.gid) option (using band_relation);
mo:similar_to mbz:artist_iri(sim_artist.gid) option (using artist_relation);
# sim:link mbz:sim_link_iri(sim_band.gid) option (using band_relation);
# sim:link mbz:sim_link_iri(sim_artist.gid) option (using artist_relation);
foaf:member mbz:artist_iri(band_member.gid) option (using band_l_artist_artist);
# l_artist_url
mo:myspace mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 19) option (using l_artist_url3);
mo:musicmoz mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 12) option (using l_artist_url3);
mo:discogs mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 11) option (using l_artist_url3);
mo:wikipedia mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 10) option (using l_artist_url3);
mo:discography mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 1) option (using l_artist_url3);
mo:freedownload mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 8) option (using l_artist_url3);
mo:fanpage mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 3) option (using l_artist_url3);
mo:biography mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 4) option (using l_artist_url3);
mo:discography mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 5) option (using l_artist_url3);
mo:mailorder mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 15) option (using l_artist_url3);
mo:imdb mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 17) option (using l_artist_url3);
mo:paiddownload mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 7) option (using l_artist_url3);
foaf:depiction mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 14) option (using l_artist_url3);
foaf:homepage mbz:url_iri(band_url.url) where (^{l_artist_url3.}^.link_type = 2) option (using l_artist_url3);
mo:musicbrainz mbz:mbz_artist_url_iri(band.gid);
# l_album_artist
mo:composed mbz:composition_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 14) option (using l_album_artist3);
mo:performed mbz:performance_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 14) option (using l_album_artist3);
mo:performed mbz:performance_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 2) option (using l_album_artist3);
mo:conducted mbz:performance_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 9) option (using l_album_artist3);
mo:compiled mbz:record_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 41) option (using l_album_artist3);
mo:djmixed mbz:record_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 38) option (using l_album_artist3);
mo:remixed mbz:record_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 11) option (using l_album_artist3);
mo:sampled mbz:record_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 12) option (using l_album_artist3);
mo:produced mbz:record_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 18) option (using l_album_artist3);
mo:published mbz:record_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 35) option (using l_album_artist3);
mo:engineered mbz:record_iri (band_album.gid) where (^{l_album_artist3.}^.link_type = 19) option (using l_album_artist3);
# # mo:creatorOfRecord mbz:record_iri(band_album_creatorOf.gid);
foaf:made mbz:record_iri(band_album_creatorOf.gid);
# l_artist_track
mo:composed mbz:composition_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 14) option (using l_artist_track3);
mo:performed mbz:performance_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 14) option (using l_artist_track3);
mo:performed mbz:performance_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 2) option (using l_artist_track3);
mo:conducted mbz:performance_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 9) option (using l_artist_track3);
mo:compiled mbz:record_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 39) option (using l_artist_track3);
mo:djmixed mbz:track_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 40) option (using l_artist_track3);
mo:remixed mbz:track_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 11) option (using l_artist_track3);
mo:sampled mbz:track_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 12) option (using l_artist_track3);
mo:produced mbz:track_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 18) option (using l_artist_track3);
mo:published mbz:track_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 35) option (using l_artist_track3);
mo:engineered mbz:track_iri (band_track.gid) where (^{l_artist_track3.}^.link_type = 19) option (using l_artist_track3).
# # mo:creatorOfTrack mbz:track_iri(band_track_creatorOf.gid).
# Music Group (Band)'s Birth Event
# mbz:band_birth_event_iri(band.gid)
mbz:artist_birth_event_iri(band.gid)
a bio:Birth;
bio:date band.begindate.
# Music Group (Band)'s Death Event
# mbz:band_death_event_iri(band.gid)
mbz:artist_death_event_iri(band.gid)
a bio:Death;
bio:date band.enddate.
# Similarity link
#mbz:sim_link_iri(sim_band.gid)
# sim:relation mo:similar_to;
# sim:level band_relation.weight;
# sim:to sim_band.gid.
# Music Artist
mbz:artist_iri (artist.gid)
# artist
a mo:MusicArtist;
a mo:SoloMusicArtist where (^{artist_untyped.}^.gid is not null) option (using artist_untyped);
a foaf:Person where (^{artist_untyped.}^.gid is not null) option (using artist_untyped);
foaf:name artist.name;
foaf:nick artistalias.name;
bio:event mbz:artist_birth_event_iri(artist.gid);
bio:event mbz:artist_death_event_iri(artist.gid);
mo:member_of mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 2) option (using l_artist_artist);
# l_artist_artist
rel:siblingOf mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 7) option (using l_artist_artist);
rel:friendOf mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 5) option (using l_artist_artist);
rel:parentOf mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 6) option (using l_artist_artist);
rel:collaborated_with mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 11) option (using l_artist_artist);
rel:engagedTo mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 9) option (using l_artist_artist);
rel:spouseOf mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 8) option (using l_artist_artist);
mo:supporting_musician mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 13) option (using l_artist_artist);
mo:supporting_musician mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 14) option (using l_artist_artist);
mo:supporting_musician mbz:artist_iri(artist_artist.gid) where (^{l_artist_artist.}^.link_type = 15) option (using l_artist_artist);
mo:similar_to mbz:artist_iri(sim_artist.gid) option (using artist_relation);
# mo:similar_to mbz:band_iri(sim_band.gid) option (using band_relation);
mo:similar_to mbz:artist_iri(sim_band.gid) option (using band_relation);
# sim:link mbz:sim_link_iri(sim_band.gid) option (using band_relation);
# sim:link mbz:sim_link_iri(sim_artist.gid) option (using artist_relation);
# l_artist_url
mo:myspace mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 19) option (using l_artist_url);
mo:musicmoz mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 12) option (using l_artist_url);
mo:discogs mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 11) option (using l_artist_url);
mo:wikipedia mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 10) option (using l_artist_url);
mo:discography mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 1) option (using l_artist_url);
mo:freedownload mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 8) option (using l_artist_url);
mo:fanpage mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 3) option (using l_artist_url);
mo:biography mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 4) option (using l_artist_url);
mo:discography mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 5) option (using l_artist_url);
mo:mailorder mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 15) option (using l_artist_url);
mo:imdb mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 17) option (using l_artist_url);
mo:paiddownload mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 7) option (using l_artist_url);
foaf:depiction mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 14) option (using l_artist_url);
foaf:homepage mbz:url_iri(artist_url.url) where (^{l_artist_url.}^.link_type = 2) option (using l_artist_url);
mo:musicbrainz mbz:mbz_artist_url_iri(artist.gid);
# l_album_artist
mo:composed mbz:composition_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 14) option (using l_album_artist);
mo:performed mbz:performance_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 14) option (using l_album_artist);
mo:performed mbz:performance_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 2) option (using l_album_artist);
mo:conducted mbz:performance_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 9) option (using l_album_artist);
mo:compiled mbz:record_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 41) option (using l_album_artist);
mo:djmixed mbz:record_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 38) option (using l_album_artist);
mo:remixed mbz:record_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 11) option (using l_album_artist);
mo:sampled mbz:record_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 12) option (using l_album_artist);
mo:produced mbz:record_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 18) option (using l_album_artist);
mo:published mbz:record_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 35) option (using l_album_artist);
mo:engineered mbz:record_iri (artist_album.gid) where (^{l_album_artist.}^.link_type = 19) option (using l_album_artist);
# mo:creatorOfRecord mbz:record_iri(artist_album_creatorOf.gid);
foaf:made mbz:record_iri(artist_album_creatorOf.gid);
# l_artist_track
mo:composed mbz:composition_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 14) option (using l_artist_track);
mo:performed mbz:performance_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 14) option (using l_artist_track);
mo:performed mbz:performance_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 2) option (using l_artist_track);
mo:conducted mbz:performance_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 9) option (using l_artist_track);
mo:compiled mbz:track_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 39) option (using l_artist_track);
mo:djmixed mbz:track_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 40) option (using l_artist_track);
mo:remixed mbz:track_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 11) option (using l_artist_track);
mo:sampled mbz:track_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 12) option (using l_artist_track);
mo:produced mbz:track_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 18) option (using l_artist_track);
mo:published mbz:track_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 35) option (using l_artist_track);
mo:engineered mbz:track_iri (artist_track.gid) where (^{l_artist_track.}^.link_type = 19) option (using l_artist_track).
# mo:creatorOfTrack mbz:track_iri(artist_track_creatorOf.gid).
# Music Artist''s Birth Event
mbz:artist_birth_event_iri(artist.gid)
a bio:Birth;
bio:date artist.begindate.
# Music Artist''s Death Event
mbz:artist_death_event_iri(artist.gid)
a bio:Death;
bio:date artist.enddate.
# Similarity link
#mbz:sim_link_iri(sim_artist.gid)
# sim:relation mo:similar_to;
# sim:level artist_relation.weight;
# sim:to sim_artist.gid.
}
}
;
grant execute on ZITGIST.MO.RECORD_CREATION_DATE to "SPARQL";
grant execute on ZITGIST.MO.RECORD_CREATION_DATE_INVERSE to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_OFFICIAL to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_PROMOTION to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_BOOTLEG to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_ALBUM to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_SINGLE to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_EP to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_COMPILATION to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_SOUNDTRACK to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_SPOKENWORD to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_INTERVIEW to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_AUDIOBOOK to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_LIVE to "SPARQL";
grant execute on ZITGIST.MO.RECORD_ATTRIBUTE_REMIX to "SPARQL";
grant execute on ZITGIST.MO.TRACK_DURATION to "SPARQL";
grant execute on ZITGIST.MO.TRACK_DURATION_INVERSE to "SPARQL";
grant execute on ZITGIST.MO.album_amazon_asin to "SPARQL";
grant execute on ZITGIST.MO.album_name_WORDS to "SPARQL";
grant execute on ZITGIST.MO.albumjoin to "SPARQL";
grant execute on ZITGIST.MO.albummeta to "SPARQL";
grant execute on ZITGIST.MO.artist to "SPARQL";
grant execute on ZITGIST.MO.artist_name_WORDS to "SPARQL";
grant execute on ZITGIST.MO.artist_relation to "SPARQL";
grant execute on ZITGIST.MO.artistalias to "SPARQL";
grant execute on ZITGIST.MO.artistalias_name_WORDS to "SPARQL";
grant execute on ZITGIST.MO.country to "SPARQL";
grant execute on ZITGIST.MO.l_album_album to "SPARQL";
grant execute on ZITGIST.MO.l_album_artist to "SPARQL";
grant execute on ZITGIST.MO.l_album_url to "SPARQL";
grant execute on ZITGIST.MO.l_artist_artist to "SPARQL";
grant execute on ZITGIST.MO.l_artist_track to "SPARQL";
grant execute on ZITGIST.MO.l_artist_url to "SPARQL";
grant execute on ZITGIST.MO.l_track_track to "SPARQL";
grant execute on ZITGIST.MO.l_track_url to "SPARQL";
grant execute on ZITGIST.MO."language" to "SPARQL";
grant execute on ZITGIST.MO.puid to "SPARQL";
grant execute on ZITGIST.MO.puidjoin to "SPARQL";
grant execute on ZITGIST.MO.release to "SPARQL";
grant execute on ZITGIST.MO.track to "SPARQL";
grant execute on ZITGIST.MO.track_name_WORDS to "SPARQL";
grant execute on ZITGIST.MO.url to "SPARQL";
DB.DBA.XML_SET_NS_DECL ('mbz', 'http://musibrainz.org/schemas/mbz#', 2);
RDF View for ODS (the consolidated Graph)
SPARQL drop quad map virtrdf:ODS_DS . ;
SPARQL prefix ods: <http://www.openlinksw.com/virtuoso/ods/>
create iri class ods:graph "http://^{URIQADefaultHost}^/dataspace/%U" (in uname varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U") .
create iri class ods:user "http://^{URIQADefaultHost}^/dataspace/%U#user" (in uname varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U#user") .
create iri class ods:user_group "http://^{URIQADefaultHost}^/dataspace/%U#group" (in uname varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U#group") .
create iri class ods:person "http://^{URIQADefaultHost}^/dataspace/%U#this" (in uname varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U#this") .
create iri class ods:mbox "mailto:%s" (in email varchar not null)
option (returns "mailto:%s") .
create iri class ods:phone "tel:%s" (in tel varchar not null)
option (returns "tel:%s") .
create iri class ods:geo_point "http://^{URIQADefaultHost}^/dataspace/%U#geo" (in uname varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U#geo") .
create iri class ods:forum "http://^{URIQADefaultHost}^/dataspace/%U/%U/%U"
( in uname varchar not null, in forum_type varchar not null, in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/%U/%U") .
create iri class ods:proxy "http://^{URIQADefaultHost}^/proxy/%U" (in url varchar not null)
option (returns "http://^{URIQADefaultHost}^/proxy/%U") .
create iri class ods:site "http://^{URIQADefaultHost}^/dataspace/%U#site" (in uname varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U#site") .
create iri class ods:role "http://^{URIQADefaultHost}^/dataspace/%U/%U/%U#%U"
(in uname varchar not null, in tp varchar not null, in inst varchar not null, in role_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/%U/%U#%U" ) .
# Blog
create iri class ods:blog_forum "http://^{URIQADefaultHost}^/dataspace/%U/weblog/%U"
(in uname varchar not null, in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/weblog/%U") .
create iri class ods:blog_post "http://^{URIQADefaultHost}^/dataspace/%U/weblog/%U/%U"
(in uname varchar not null, in forum_name varchar not null, in postid varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/weblog/%U/%U" ) .
create iri class ods:blog_comment "http://^{URIQADefaultHost}^/dataspace/%U/weblog/%U/%U/%d"
(in uname varchar not null, in forum_name varchar not null, in postid varchar not null, in comment_id int not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/weblog/%U/%U/%d" ) .
create iri class ods:tag "http://^{URIQADefaultHost}^/dataspace/%U/concept#%U"
(in uname varchar not null, in tag varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/concept#%U") .
create iri class ods:blog_post_text "http://^{URIQADefaultHost}^/dataspace/%U/weblog-text/%U/%U"
(in uname varchar not null, in forum_name varchar not null, in postid varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/weblog-text/%U/%U" ) .
#Feeds
create iri class ods:feed "http://^{URIQADefaultHost}^/dataspace/feed/%d" (in feed_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/feed/%d" ) .
create iri class ods:feed_item "http://^{URIQADefaultHost}^/dataspace/feed/%d/%d" (in feed_id integer not null, in item_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/feed/%d/%d" ) .
create iri class ods:feed_item_text "http://^{URIQADefaultHost}^/dataspace/feed/%d/%d/text" (in feed_id integer not null, in item_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/feed/%d/%d/text" ) .
create iri class ods:feed_mgr "http://^{URIQADefaultHost}^/dataspace/%U/feeds/%U" (in uname varchar not null, in inst_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/feeds/%U" ) .
create iri class ods:feed_comment "http://^{URIQADefaultHost}^/dataspace/%U/feeds/%U/%d/%d"
(in uname varchar not null, in inst_name varchar not null, in item_id integer not null, in comment_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/feeds/%U/%d/%d" ) .
#Bookmark
create iri class ods:bmk_post "http://^{URIQADefaultHost}^/dataspace/%U/bookmark/%U/%d"
(in uname varchar not null, in inst_name varchar not null, in bmk_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/bookmark/%U/%d") .
create iri class ods:bmk_post_text "http://^{URIQADefaultHost}^/dataspace/%U/bookmark/%U/%d/text"
(in uname varchar not null, in inst_name varchar not null, in bmk_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/bookmark/%U/%d/text" ) .
create iri class ods:bmk_forum "http://^{URIQADefaultHost}^/dataspace/%U/bookmark/%U"
( in uname varchar not null, in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/bookmark/%U") .
#Photo
create iri class ods:photo_forum "http://^{URIQADefaultHost}^/dataspace/%U/photos/%U"
(in uname varchar not null, in inst_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/photos/%U") .
create iri class ods:photo_post "http://^{URIQADefaultHost}^%s"
(in path varchar not null) option (returns "http://^{URIQADefaultHost}^/DAV/%s") .
create iri class ods:photo_post_text "http://^{URIQADefaultHost}^%s/text"
(in path varchar not null) option (returns "http://^{URIQADefaultHost}^/DAV/%s/text") .
create iri class ods:photo_comment "http://^{URIQADefaultHost}^%s:comment_%d"
(in path varchar not null, in comment_id int not null)
option (returns "http://^{URIQADefaultHost}^/DAV/%s:comment_%d") .
# Community
create iri class ods:community_forum "http://^{URIQADefaultHost}^/dataspace/%U/community/%U"
(in uname varchar not null, in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/community/%U") .
# Briefcase
create iri class ods:odrive_forum "http://^{URIQADefaultHost}^/dataspace/%U/briefcase/%U"
(in uname varchar not null, in inst_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/briefcase/%U" ) .
create iri class ods:odrive_post "http://^{URIQADefaultHost}^%s"
(in path varchar not null) option (returns "http://^{URIQADefaultHost}^/DAV/%s") .
create iri class ods:odrive_post_text "http://^{URIQADefaultHost}^%s/text"
(in path varchar not null) option (returns "http://^{URIQADefaultHost}^/DAV/%s/text") .
# Wiki
create iri class ods:wiki_post "http://^{URIQADefaultHost}^/dataspace/%U/wiki/%U/%U"
(in uname varchar not null, in inst_name varchar not null, in topic_id varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/wiki/%U/%U") .
create iri class ods:wiki_post_text "http://^{URIQADefaultHost}^/dataspace/%U/wiki/%U/%U/text"
(in uname varchar not null, in inst_name varchar not null, in topic_id varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/wiki/%U/%U/text" ) .
create iri class ods:wiki_forum "http://^{URIQADefaultHost}^/dataspace/%U/wiki/%U"
( in uname varchar not null, in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/wiki/%U" ) .
#Calendar
create iri class ods:calendar_event "http://^{URIQADefaultHost}^/dataspace/%U/calendar/%U/%d"
(in uname varchar not null, in inst_name varchar not null, in calendar_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/calendar/%U/%d" ) .
create iri class ods:calendar_event_text "http://^{URIQADefaultHost}^/dataspace/%U/calendar/%U/%d/text"
(in uname varchar not null, in inst_name varchar not null, in calendar_id integer not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/calendar/%U/%d/text" ) .
create iri class ods:calendar_forum "http://^{URIQADefaultHost}^/dataspace/%U/calendar/%U"
( in uname varchar not null, in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/%U/calendar/%U") .
# NNTPF
create iri class ods:nntp_forum "http://^{URIQADefaultHost}^/dataspace/discussion/%U"
( in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/discussion/%U").
create iri class ods:nntp_post "http://^{URIQADefaultHost}^/dataspace/discussion/%U/%U"
( in group_name varchar not null, in message_id varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/discussion/%U/%U" ) .
create iri class ods:nntp_post_text "http://^{URIQADefaultHost}^/dataspace/discussion/%U/%U/text"
( in group_name varchar not null, in message_id varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/discussion/%U/%U/text") .
create iri class ods:nntp_role "http://^{URIQADefaultHost}^/dataspace/discussion/%U#reader"
(in forum_name varchar not null)
option (returns "http://^{URIQADefaultHost}^/dataspace/discussion/%U#reader") .
;
SPARQL
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix sioct: <http://rdfs.org/sioc/types#>
prefix atom: <http://atomowl.org/ontologies/atomrdf#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix dc: <http://purl.org/dc/elements/1.1/>
prefix dct: <http://purl.org/dc/terms/>
prefix skos: <http://www.w3.org/2004/02/skos/core#>
prefix geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix bm: <http://www.w3.org/2002/01/bookmark#>
prefix exif: <http://www.w3.org/2003/12/exif/ns/>
prefix ann: <http://www.w3.org/2000/10/annotation-ns#>
prefix wikiont: <http://sw.deri.org/2005/04/wikipedia/wikiont.owl#>
prefix calendar: <http://www.w3.org/2002/12/cal#>
prefix ods: <http://www.openlinksw.com/virtuoso/ods/>
alter quad storage virtrdf:DefaultQuadStorage
FROM DB.DBA.SIOC_USERS as users
FROM DB.DBA.SIOC_ODS_FORUMS as forums
FROM DB.DBA.SIOC_ROLES as roles
FROM DB.DBA.SIOC_ROLE_GRANTS as grants
FROM DB.DBA.SIOC_KNOWS as knows
FROM DB.DBA.ODS_FOAF_PERSON as person
where (^{person.}^.U_NAME = ^{users.}^.U_NAME)
where (^{forums.}^.U_NAME = ^{users.}^.U_NAME)
where (^{knows.}^.TO_NAME = ^{users.}^.U_NAME)
where (^{knows.}^.FROM_NAME = ^{users.}^.U_NAME)
where (^{grants.}^.U_NAME = ^{users.}^.U_NAME)
where (^{roles.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_BLOG_POSTS as blog_posts
where (^{blog_posts.}^.B_OWNER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_BLOG_POST_LINKS as blog_links
where (^{blog_links.}^.B_OWNER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_BLOG_POST_ATTS as blog_atts
where (^{blog_atts.}^.B_OWNER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_BLOG_POST_TAGS as blog_tags
where (^{blog_tags.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_BLOG_COMMENTS as blog_comms
where (^{blog_comms.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_BMK_POSTS as bmk_posts
where (^{bmk_posts.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_BMK_TAGS as bmk_tags
where (^{bmk_tags.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_ODRIVE_POSTS as odrv_posts
where (^{odrv_posts.}^.U_MEMBER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_ODRIVE_TAGS as odrv_tags
where (^{odrv_tags.}^.U_OWNER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_FEED_FEED_DOMAIN as feed_domain
where (^{feed_domain.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_FEED_POSTS as feed_posts
where (^{feed_posts.}^.EFI_FEED_ID = ^{feed_domain.}^.EF_ID)
FROM DB.DBA.ODS_FEED_COMMENTS as feed_comments
where (^{feed_comments.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_FEED_TAGS as feed_tags
where (^{feed_tags.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_FEED_LINKS as feed_links
where (^{feed_links.}^.EFI_FEED_ID = ^{feed_domain.}^.EF_ID)
FROM DB.DBA.ODS_FEED_ATTS as feed_atts
where (^{feed_atts.}^.EFI_FEED_ID = ^{feed_domain.}^.EF_ID)
FROM DB.DBA.ODS_PHOTO_POSTS as photo_posts
where (^{photo_posts.}^.U_MEMBER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_PHOTO_COMMENTS as photo_comments
where (^{photo_comments.}^.U_MEMBER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_PHOTO_TAGS as photo_tags
where (^{photo_tags.}^.U_MEMBER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_WIKI_POSTS as wiki_posts
where (^{wiki_posts.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_COMMUNITIES as community
where (^{community.}^.C_OWNER = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_NNTP_GROUPS as nntp_groups
FROM DB.DBA.ODS_NNTP_POSTS as nntp_posts
FROM DB.DBA.ODS_NNTP_USERS as nntp_users
where (^{nntp_users.}^.U_NAME = ^{users.}^.U_NAME)
FROM DB.DBA.ODS_NNTP_LINKS as nntp_links
{
create virtrdf:ODS_DS as graph ods:graph (users.U_NAME) option (exclusive)
{
ods:user (users.U_NAME) a sioc:User ;
sioc:id users.U_NAME ;
sioc:name users.U_FULL_NAME ;
sioc:email ods:mbox (users.E_MAIL) ;
sioc:email_sha1 users.E_MAIL_SHA1 ;
sioc:account_of ods:person (users.U_NAME) .
ods:person (person.U_NAME) a foaf:Person ;
foaf:nick person.U_NAME ;
foaf:name person.U_FULL_NAME ;
foaf:mbox ods:mbox (person.E_MAIL) ;
foaf:mbox_sha1sum person.E_MAIL_SHA1 ;
foaf:holdsAccount ods:user (person.U_NAME) ;
foaf:firstName person.FIRST_NAME ;
foaf:family_name person.LAST_NAME ;
foaf:gender person.GENDER ;
foaf:icqChatID person.ICQ ;
foaf:msnChatID person.MSN ;
foaf:aimChatID person.AIM ;
foaf:yahooChatID person.YAHOO ;
foaf:birthday person.BIRTHDAY ;
foaf:organization person.ORG ;
foaf:phone ods:phone (person.PHONE) ;
foaf:based_near ods:geo_point (person.U_NAME)
.
ods:geo_point (person.U_NAME) a geo:Point ;
geo:lat person.LAT ;
geo:lng person.LNG .
ods:person (knows.FROM_NAME) foaf:knows ods:person (knows.TO_NAME) .
ods:person (knows.TO_NAME) foaf:knows ods:person (knows.FROM_NAME) .
ods:user_group (grants.G_NAME) a sioc:Usergroup ;
sioc:id grants.G_NAME ;
sioc:has_member ods:user (grants.U_NAME) .
ods:user (grants.U_NAME) sioc:member_of ods:user_group (grants.G_NAME) .
ods:role (roles.U_NAME, roles.APP_TYPE, roles.WAM_INST, roles.WMT_NAME)
sioc:has_scope ods:forum (roles.U_NAME, roles.APP_TYPE, roles.WAM_INST) ;
sioc:function_of ods:user (roles.U_NAME) .
ods:forum (roles.U_NAME, roles.APP_TYPE, roles.WAM_INST)
sioc:scope_of ods:role (roles.U_NAME, roles.APP_TYPE, roles.WAM_INST, roles.WMT_NAME) .
ods:user (roles.U_NAME)
sioc:has_function ods:role (roles.U_NAME, roles.APP_TYPE, roles.WAM_INST, roles.WMT_NAME) .
ods:forum (forums.U_NAME, forums.APP_TYPE, forums.WAM_INST) a sioc:Container ;
sioc:id forums.WAM_INST ;
sioc:type forums.APP_TYPE ;
sioc:description forums.WAI_DESCRIPTION ;
sioc:link ods:proxy (forums.LINK) ;
sioc:has_space ods:site (forums.U_NAME) .
# Weblog
ods:blog_post (blog_posts.B_OWNER, blog_posts.B_INST, blog_posts.B_POST_ID) a sioct:BlogPost ;
sioc:link ods:proxy (blog_posts.B_LINK) ;
sioc:has_creator ods:user (blog_posts.B_CREATOR) ;
foaf:maker ods:person (blog_posts.B_CREATOR) ;
sioc:has_container ods:blog_forum (blog_posts.B_OWNER, blog_posts.B_INST) ;
dc:title blog_posts.B_TITLE ;
dct:created blog_posts.B_CREATED ;
dct:modified blog_posts.B_MODIFIED ;
sioc:content blog_posts.B_CONTENT .
ods:blog_forum (blog_posts.B_OWNER, blog_posts.B_INST)
sioc:container_of
ods:blog_post (blog_posts.B_OWNER, blog_posts.B_INST, blog_posts.B_POST_ID) .
ods:user (blog_posts.B_CREATOR)
sioc:creator_of
ods:blog_post (blog_posts.B_OWNER, blog_posts.B_INST, blog_posts.B_POST_ID) .
ods:blog_post (blog_links.B_OWNER, blog_links.B_INST, blog_links.B_POST_ID)
sioc:links_to
ods:proxy (blog_links.PL_LINK) .
# end Weblog
# Bookmark
ods:bmk_post (bmk_posts.U_NAME, bmk_posts.WAI_NAME, bmk_posts.BD_BOOKMARK_ID)
a bm:Bookmark ;
dc:title bmk_posts.BD_NAME;
dct:created bmk_posts.BD_CREATED ;
dct:modified bmk_posts.BD_LAST_UPDATE ;
dc:date bmk_posts.BD_LAST_UPDATE ;
ann:created bmk_posts.BD_CREATED ;
dc:creator bmk_posts.U_NAME ;
bm:recalls ods:proxy (bmk_posts.B_URI) ;
sioc:link ods:proxy (bmk_posts.B_URI) ;
sioc:content bmk_posts.BD_DESCRIPTION ;
sioc:has_creator ods:user (bmk_posts.U_NAME) ;
foaf:maker ods:person (bmk_posts.U_NAME) ;
sioc:has_container ods:bmk_forum (bmk_posts.U_NAME, bmk_posts.WAI_NAME) .
ods:bmk_forum (bmk_posts.U_NAME, bmk_posts.WAI_NAME)
sioc:container_of
ods:bmk_post (bmk_posts.U_NAME, bmk_posts.WAI_NAME, bmk_posts.BD_BOOKMARK_ID) .
ods:user (bmk_posts.U_NAME)
sioc:creator_of
ods:bmk_post (bmk_posts.U_NAME, bmk_posts.WAI_NAME, bmk_posts.BD_BOOKMARK_ID) .
ods:bmk_post (bmk_tags.U_NAME, bmk_tags.WAM_INST, bmk_tags.ITEM_ID)
sioc:topic
ods:tag (bmk_tags.U_NAME, bmk_tags.BD_TAG) .
ods:tag (bmk_tags.U_NAME, bmk_tags.BD_TAG) a skos:Concept ;
skos:prefLabel bmk_tags.BD_TAG ;
skos:isSubjectOf ods:bmk_post (bmk_tags.U_NAME, bmk_tags.WAM_INST, bmk_tags.ITEM_ID) .
# end Bookmark
# Briefcase
ods:odrive_post (odrv_posts.RES_FULL_PATH) a foaf:Document ;
dc:title odrv_posts.RES_NAME ;
dct:created odrv_posts.RES_CREATED ;
dct:modified odrv_posts.RES_MODIFIED ;
sioc:content odrv_posts.RES_DESCRIPTION ;
sioc:has_creator ods:user (odrv_posts.U_OWNER) ;
foaf:maker ods:person (odrv_posts.U_OWNER) ;
sioc:has_container ods:odrive_forum (odrv_posts.U_MEMBER, odrv_posts.WAI_NAME) .
ods:odrive_forum (odrv_posts.U_MEMBER, odrv_posts.WAI_NAME)
sioc:container_of
ods:odrive_post (odrv_posts.RES_FULL_PATH) .
ods:user (odrv_posts.U_OWNER)
sioc:creator_of
ods:odrive_post (odrv_posts.RES_FULL_PATH) .
ods:odrive_post (odrv_tags.RES_FULL_PATH)
sioc:topic
ods:tag (odrv_tags.U_OWNER, odrv_tags.TAG) .
ods:tag (odrv_tags.U_OWNER, odrv_tags.TAG) a skos:Concept ;
skos:prefLabel odrv_tags.TAG ;
skos:isSubjectOf ods:odrive_post (odrv_tags.RES_FULL_PATH) .
# end Briefcase
# Feeds
ods:feed (feed_domain.EF_ID) a atom:Feed ;
sioc:link ods:proxy (feed_domain.EF_URI) ;
atom:link ods:proxy (feed_domain.EF_URI) ;
atom:title feed_domain.EF_TITLE ;
sioc:has_parent ods:feed_mgr (feed_domain.U_NAME, feed_domain.WAI_NAME) .
ods:feed_mgr (feed_domain.U_NAME, feed_domain.WAI_NAME)
sioc:parent_of ods:feed (feed_domain.EF_ID) .
ods:feed_item (feed_tags.EFI_FEED_ID, feed_tags.EFID_ITEM_ID)
sioc:topic
ods:tag (feed_tags.U_NAME, feed_tags.EFID_TAG) .
ods:tag (feed_tags.U_NAME, feed_tags.EFID_TAG) a skos:Concept ;
skos:prefLabel feed_tags.EFID_TAG ;
skos:isSubjectOf ods:feed_item (feed_tags.EFI_FEED_ID, feed_tags.EFID_ITEM_ID) .
ods:feed_comment (feed_comments.U_NAME, feed_comments.WAI_NAME, feed_comments.EFIC_ITEM_ID, feed_comments.EFIC_ID)
a sioct:Comment ;
dc:title feed_comments.EFIC_TITLE ;
sioc:content feed_comments.EFIC_COMMENT ;
dct:modified feed_comments.LAST_UPDATE ;
dct:created feed_comments.LAST_UPDATE ;
sioc:link ods:proxy (feed_comments.LINK) ;
sioc:has_container ods:feed (feed_comments.EFI_FEED_ID) ;
sioc:reply_of ods:feed_item (feed_comments.EFI_FEED_ID, feed_comments.EFIC_ITEM_ID) ;
foaf:maker ods:proxy (feed_comments.EFIC_U_URL) .
ods:proxy (feed_comments.EFIC_U_URL) a foaf:Person ;
foaf:name feed_comments.EFIC_U_NAME;
foaf:mbox ods:mbox (feed_comments.EFIC_U_MAIL) .
ods:feed (feed_comments.EFI_FEED_ID)
sioc:container_of
ods:feed_comment (feed_comments.U_NAME, feed_comments.WAI_NAME, feed_comments.EFIC_ITEM_ID, feed_comments.EFIC_ID) .
ods:feed_item (feed_comments.EFI_FEED_ID, feed_comments.EFIC_ITEM_ID)
sioc:has_reply
ods:feed_comment (feed_comments.U_NAME, feed_comments.WAI_NAME, feed_comments.EFIC_ITEM_ID, feed_comments.EFIC_ID) .
ods:feed_item (feed_links.EFI_FEED_ID, feed_links.EFI_ID)
sioc:links_to
ods:proxy (feed_links.EFIL_LINK) .
ods:feed_item (feed_atts.EFI_FEED_ID, feed_atts.EFI_ID)
sioc:attachment
ods:proxy (feed_atts.EFIE_URL) .
ods:feed_item (feed_posts.EFI_FEED_ID, feed_posts.EFI_ID) a atom:Entry ;
sioc:has_container ods:feed (feed_posts.EFI_FEED_ID) ;
dc:title feed_posts.EFI_TITLE ;
dct:created feed_posts.PUBLISH_DATE ;
dct:modified feed_posts.PUBLISH_DATE ;
sioc:link ods:proxy (feed_posts.EFI_LINK) ;
sioc:content feed_posts.EFI_DESCRIPTION ;
atom:title feed_posts.EFI_TITLE ;
atom:source ods:feed (feed_posts.EFI_FEED_ID) ;
atom:published feed_posts.PUBLISH_DATE ;
atom:updated feed_posts.PUBLISH_DATE ;
atom:content ods:feed_item_text (feed_posts.EFI_FEED_ID, feed_posts.EFI_ID) .
ods:feed (feed_posts.EFI_FEED_ID) sioc:container_of ods:feed_item (feed_posts.EFI_FEED_ID, feed_posts.EFI_ID) .
ods:feed_item_text (feed_posts.EFI_FEED_ID, feed_posts.EFI_ID) a atom:Content ;
atom:type "text/xhtml" ;
atom:lang "en-US" ;
atom:body feed_posts.EFI_DESCRIPTION .
ods:feed (feed_posts.EFI_FEED_ID)
atom:contains
ods:feed_item (feed_posts.EFI_FEED_ID, feed_posts.EFI_ID) .
# end Feeds
# Photo
ods:photo_post (photo_posts.RES_FULL_PATH) a exif:IFD ;
dc:title photo_posts.RES_NAME ;
dct:created photo_posts.RES_CREATED ;
dct:modified photo_posts.RES_MODIFIED ;
sioc:content photo_posts.RES_DESCRIPTION ;
sioc:has_creator ods:user (photo_posts.U_OWNER) ;
foaf:maker ods:person (photo_posts.U_OWNER) ;
sioc:link ods:proxy (photo_posts.RES_LINK) ;
sioc:has_container ods:photo_forum (photo_posts.U_MEMBER, photo_posts.WAI_NAME) .
ods:photo_forum (photo_posts.U_MEMBER, photo_posts.WAI_NAME)
sioc:container_of
ods:photo_post (photo_posts.RES_FULL_PATH) .
ods:user (photo_posts.U_OWNER)
sioc:creator_of
ods:photo_post (photo_posts.RES_FULL_PATH) .
ods:photo_post (photo_tags.RES_FULL_PATH)
sioc:topic
ods:tag (photo_tags.U_MEMBER, photo_tags.RES_TAG) .
ods:tag (photo_tags.U_MEMBER, photo_tags.RES_TAG) a skos:Concept ;
skos:prefLabel photo_tags.RES_TAG ;
skos:isSubjectOf ods:photo_post (photo_tags.RES_FULL_PATH) .
ods:photo_comment (photo_comments.RES_FULL_PATH, photo_comments.COMMENT_ID) a sioct:Comment ;
sioc:reply_of ods:photo_post (photo_comments.RES_FULL_PATH) ;
sioc:has_container ods:photo_forum (photo_comments.U_MEMBER, photo_comments.WAI_NAME) ;
dc:title photo_comments.RES_NAME ;
dct:created photo_comments.CREATE_DATE ;
dct:modified photo_comments.MODIFY_DATE ;
sioc:content photo_comments.TEXT ;
foaf:maker ods:person (photo_comments.U_MAKER) .
ods:photo_post (photo_comments.RES_FULL_PATH)
sioc:has_reply
ods:photo_comment (photo_comments.RES_FULL_PATH, photo_comments.COMMENT_ID) .
# end Photo
# Polls
# end Polls
# Mail
# end Mail
# Wiki
ods:wiki_post (wiki_posts.U_NAME, wiki_posts.CLUSTERNAME, wiki_posts.LOCALNAME) a wikiont:Article ;
dc:title wiki_posts.LOCALNAME ;
dct:created wiki_posts.RES_CREATED ;
dct:modified wiki_posts.RES_MODIFIED ;
sioc:content wiki_posts.RES_CONTENT ;
sioc:has_creator ods:user (wiki_posts.U_NAME) ;
foaf:maker ods:person (wiki_posts.U_NAME) ;
sioc:has_container ods:wiki_forum (wiki_posts.U_NAME, wiki_posts.CLUSTERNAME) .
ods:wiki_forum (wiki_posts.U_NAME, wiki_posts.CLUSTERNAME)
sioc:container_of
ods:wiki_post (wiki_posts.U_NAME, wiki_posts.CLUSTERNAME, wiki_posts.LOCALNAME) .
ods:user (wiki_posts.U_NAME)
sioc:creator_of
ods:wiki_post (wiki_posts.U_NAME, wiki_posts.CLUSTERNAME, wiki_posts.LOCALNAME) .
# end Wiki
# Community
ods:community_forum (community.C_OWNER, community.CM_COMMUNITY_ID) a sioc:Community ;
sioc:has_part ods:forum (community.A_OWNER, community.A_TYPE, community.CM_MEMBER_APP) .
ods:forum (community.A_OWNER, community.A_TYPE, community.CM_MEMBER_APP)
sioc:part_of
ods:community_forum (community.C_OWNER, community.CM_COMMUNITY_ID) .
# end Community
# NNTP
ods:nntp_forum (nntp_groups.NG_NAME) a sioct:MessageBoard ;
sioc:id nntp_groups.NG_NAME ;
sioc:description nntp_groups.NG_DESC .
ods:nntp_post (nntp_posts.NG_NAME, nntp_posts.NM_ID) a sioct:BoardPost ;
sioc:content nntp_posts.NM_BODY ;
dc:title nntp_posts.FTHR_SUBJ ;
dct:created nntp_posts.REC_DATE ;
dct:modified nntp_posts.REC_DATE ;
foaf:maker ods:proxy (nntp_posts.MAKER) ;
sioc:reply_of ods:nntp_post (nntp_posts.NG_NAME, nntp_posts.FTHR_REFER) ;
sioc:has_container ods:nntp_forum (nntp_posts.NG_NAME) .
ods:nntp_post (nntp_posts.NG_NAME, nntp_posts.FTHR_REFER)
sioc:has_reply
ods:nntp_post (nntp_posts.NG_NAME, nntp_posts.NM_ID) .
ods:nntp_forum (nntp_posts.NG_NAME)
sioc:container_of
ods:nntp_post (nntp_posts.NG_NAME, nntp_posts.NM_ID) .
ods:nntp_role (nntp_groups.NG_NAME)
sioc:has_scope
ods:nntp_forum (nntp_groups.NG_NAME) .
ods:nntp_forum (nntp_groups.NG_NAME)
sioc:scope_of
ods:nntp_role (nntp_groups.NG_NAME) .
ods:user (nntp_users.U_NAME)
sioc:has_function
ods:nntp_role (nntp_users.NG_NAME) .
ods:nntp_role (nntp_users.NG_NAME)
sioc:function_of
ods:user (nntp_users.U_NAME) .
ods:nntp_post (nntp_links.NG_NAME, nntp_links.NML_MSG_ID)
sioc:links_to
ods:proxy (nntp_links.NML_URL) .
# end NNTP
} .
} .
;
URL Rewrite Rules for ODS
create procedure DB.DBA.URL_REW_ODS_ACCEPT ()
{
declare accept, ret any;
accept := http_request_header (http_request_header (), 'Accept');
if (not isstring (accept))
return null;
ret := null;
if (regexp_match ('(application|text)/rdf.(xml|n3|turtle|ttl)', accept) is not null)
{
if (regexp_match ('application/rdf.xml', accept) is not null)
{
ret := 'rdf';
}
else if (regexp_match ('text/rdf.n3', accept) is not null)
{
ret := 'n3';
}
else if (regexp_match ('application/rdf.turtle', accept) is not null or
regexp_match ('application/rdf.ttl', accept) is not null)
{
ret := 'n3';
}
}
return ret;
};
create procedure DB.DBA.URL_REW_ODS_SPQ (in graph varchar, in iri varchar, in acc varchar)
{
declare q, ret any;
iri := replace (iri, '''', '%27');
iri := replace (iri, '<', '%3C');
iri := replace (iri, '>', '%3E');
q := sprintf ('define input:inference <%s> DESCRIBE <%s> FROM <%s>', graph, iri, graph);
ret := sprintf ('/sparql?query=%U&format=%U', q, acc);
return ret;
};
create procedure DB.DBA.URL_REW_ODS_USER (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (current_proc_name ());
declare acc, ret any;
declare q, iri, graph any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
graph := sioc..get_graph ();
iri := sprintf ('%s/%U', graph, val);
if (val like 'person/%')
{
val := substring (val, 8, length (val));
ret := sprintf ('/ods/foaf.vsp?uname=%U&fmt=%U', val, acc);
}
else
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
}
else
{
http_header (http_header_get ()||sprintf ('X-XRDS-Location: %s\r\n',
DB.DBA.wa_link (1, '/dataspace/'||val||'/yadis.xrds')));
if (val like 'person/%')
val := substring (val, 8, length (val));
ret := sprintf ('/ods/uhome.vspx?page=1&ufname=%s', val);
}
return ret;
};
create procedure DB.DBA.URL_REW_ODS_USER_GEM (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (current_proc_name ());
declare acc, ret any;
declare q, iri, graph, path, is_person any;
path := http_path ();
if (path like '%.rdf')
acc := 'rdf';
else if (path like '%.n3')
acc := 'n3';
else if (path like '%.ttl')
acc := 'n3';
else if (path like '%/yadis.xrds')
acc := 'yadis';
else
acc := 'rdf';
if (acc <> 'yadis')
{
is_person := matches_like (path, '%/about.%');
graph := sioc..get_graph ();
if (is_person)
{
--iri := sprintf ('%s/person/%U', graph, val);
ret := sprintf ('/ods/foaf.vsp?uname=%U&fmt=%U', val, acc);
}
else
{
iri := sprintf ('%s/%U', graph, val);
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
}
}
else
{
ret := sprintf ('/ods/yadis.vsp?uname=%U', val);
}
return ret;
};
create procedure DB.DBA.URL_REW_ODS_GEM (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (current_proc_name ());
declare acc, ret any;
declare q, iri, graph, path, pos any;
path := http_path ();
if (path like '%.rdf')
acc := 'rdf';
else if (path like '%.n3')
acc := 'n3';
else if (path like '%.ttl')
acc := 'n3';
else
acc := 'rdf';
graph := sioc..get_graph ();
pos := strrchr (path, '/');
path := subseq (path, 0, pos);
if (val = 'person')
{
pos := strrchr (path, '/');
val := subseq (path, pos+1, length (path));
ret := sprintf ('/ods/foaf.vsp?uname=%U&fmt=%U', val, acc);
}
else
{
iri := sprintf ('http://%s%s', sioc..get_cname (), path);
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
}
return ret;
};
create procedure DB.DBA.URL_REW_ODS_APP (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (current_proc_name (), val);
if (par = 'app')
return sprintf (fmt, wa_app_to_type (val));
return sprintf (fmt, val);
};
create procedure DB.DBA.URL_REW_ODS_BLOG (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (par, fmt, val);
-- dbg_obj_print (current_proc_name (), val);
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
if (par = 'inst')
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else
return '';
}
else if (par = 'inst')
{
declare url any;
val := split_and_decode (val)[0];
url := (SELECT WAM_HOME_PAGE FROM WA_MEMBER WHERE WAM_INST = val AND WAM_MEMBER_TYPE = 1);
if (url is not null)
val := url;
return sprintf (fmt, val);
}
else if (par = 'id' and val <> '')
{
if (atoi (val) = 0 and val <> '0')
fmt := '%s';
else
fmt := '?id=%s';
return sprintf (fmt, val);
}
};
create procedure DB.DBA.URL_REW_ODS_NNTP (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (par, fmt, val);
-- dbg_obj_print (current_proc_name (), val);
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
-- dbg_obj_print (iri);
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else if (par = 'grp')
{
declare gid int;
val := split_and_decode (val)[0];
gid := (SELECT NG_GROUP FROM DB.DBA.NEWS_GROUPS WHERE NG_NAME = val);
ret := sprintf ('/nntpf/nntpf_nthread_view.vspx?group=%d', gid);
return ret;
}
else if (par = 'post')
{
ret := sprintf ('/nntpf/nntpf_disp_article.vspx?id=%U', encode_base64 (val));
return ret;
}
}
;
create procedure DB.DBA.URL_REW_ODS_XD (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (par, fmt, val);
-- dbg_obj_print (current_proc_name (), val);
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
-- dbg_obj_print (iri);
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else if (par = 'inst')
{
val := split_and_decode (val)[0];
ret := (SELECT WAM_HOME_PAGE FROM WA_MEMBER WHERE WAM_INST = val and WAM_MEMBER_TYPE = 1);
return ret;
}
}
;
create procedure DB.DBA.URL_REW_ODS_WIKI (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (par, fmt, val);
-- dbg_obj_print (current_proc_name (), val);
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
-- dbg_obj_print (iri);
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else if (par = 'inst')
{
declare _inst DB.DBA.web_app;
_inst := (SELECT WAI_INST FROM WA_INSTANCE WHERE WAI_NAME = val);
ret := _inst.wa_post_url (null, null, val, val);
-- dbg_obj_print ('ret', ret);
return ret;
}
else if (par = 'post')
{
return '/'||val;
}
}
;
create procedure DB.DBA.URL_REW_ODS_PHOTO (in par varchar, in fmt varchar, in val varchar)
{
-- dbg_obj_print (par, fmt, val);
-- dbg_obj_print (current_proc_name (), val);
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
-- dbg_obj_print (iri);
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else if (par = 'inst')
{
val := split_and_decode (val)[0];
ret := (SELECT WAM_HOME_PAGE FROM WA_MEMBER WHERE WAM_INST = val AND WAM_MEMBER_TYPE = 1);
return ret;
}
else if (par = 'post')
{
declare id int;
declare col, nam varchar;
declare exit handler for not found
{
signal ('22023', sprintf ('The resource %d doesn''t exists', id));
};
id := atoi(ltrim(val, '/'));
SELECT RES_FULL_PATH INTO nam FROM WS.WS.SYS_DAV_RES WHERE RES_ID = id;
return nam;
}
}
;
create procedure DB.DBA.URL_REW_ODS_ADDRESSBOOK (in par varchar, in fmt varchar, in val varchar)
{
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
if (par = 'instance')
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else
return '';
}
else if (par = 'instance')
{
declare id, url any;
val := split_and_decode (val)[0];
id := AB.WA.domain_id (val);
if (id is not null) {
url := AB.WA.ab_url (id);
if (url is not null)
val := url;
}
return sprintf (fmt, val);
}
else if (par = 'params')
{
if (atoi (val) = 0 and val <> '0')
fmt := '%s';
else
fmt := '?id=%s';
return sprintf (fmt, val);
}
}
;
create procedure DB.DBA.URL_REW_ODS_BOOKMARK (in par varchar, in fmt varchar, in val varchar)
{
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
if (par = 'instance')
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else
return '';
}
else if (par = 'instance')
{
declare id, url any;
val := split_and_decode (val)[0];
id := BMK.WA.domain_id (val);
if (id is not null) {
url := BMK.WA.bookmark_url (id);
if (url is not null)
val := url;
}
return sprintf (fmt, val);
}
else if (par = 'params')
{
if (atoi (val) = 0 and val <> '0')
fmt := '%s';
else
fmt := '?id=%s';
return sprintf (fmt, val);
}
}
;
create procedure DB.DBA.URL_REW_ODS_BRIEFCASE (in par varchar, in fmt varchar, in val varchar)
{
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
if (par = 'instance')
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else
return '';
}
else if (par = 'instance')
{
declare id, url any;
val := split_and_decode (val)[0];
id := ODRIVE.WA.domain_id (val);
if (id is not null) {
url := ODRIVE.WA.odrive_url (id);
if (url is not null)
val := url;
}
return sprintf (fmt, val);
}
else if (par = 'params')
{
if (atoi (val) = 0 and val <> '0')
fmt := '%s';
else
fmt := '?id=%s';
return sprintf (fmt, val);
}
}
;
create procedure DB.DBA.URL_REW_ODS_CALENDAR (in par varchar, in fmt varchar, in val varchar)
{
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
if (par = 'instance')
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else
return '';
}
else if (par = 'instance')
{
declare id, url any;
val := split_and_decode (val)[0];
id := CAL.WA.domain_id (val);
if (id is not null) {
url := CAL.WA.calendar_url (id);
if (url is not null)
val := url;
}
return sprintf (fmt, val);
}
else if (par = 'params')
{
if (atoi (val) = 0 and val <> '0')
fmt := '%s';
else
fmt := '?id=%s';
return sprintf (fmt, val);
}
}
;
create procedure DB.DBA.URL_REW_ODS_FEEDS (in par varchar, in fmt varchar, in val varchar)
{
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
if (par = 'instance')
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else
return '';
}
else if (par = 'instance')
{
declare id, url any;
val := split_and_decode (val)[0];
id := ENEWS.WA.domain_id (val);
if (id is not null) {
url := ENEWS.WA.enews_url (id) || 'news.vspx';
if (url is not null)
val := url;
}
return sprintf (fmt, val);
}
else if (par = 'params')
{
if (atoi (val) = 0 and val <> '0')
fmt := '%s';
else
fmt := '?id=%s';
return sprintf (fmt, val);
}
}
;
create procedure DB.DBA.URL_REW_ODS_POLLS (in par varchar, in fmt varchar, in val varchar)
{
declare acc, ret any;
acc := DB.DBA.URL_REW_ODS_ACCEPT ();
if (acc is not null)
{
if (par = 'instance')
{
declare q, iri, graph any;
graph := sioc..get_graph ();
iri := 'http://' || sioc..get_cname () || http_path ();
ret := DB.DBA.URL_REW_ODS_SPQ (graph, iri, acc);
return ret;
}
else
return '';
}
else if (par = 'instance')
{
declare id, url any;
val := split_and_decode (val)[0];
id := POLLS.WA.domain_id (val);
if (id is not null) {
url := POLLS.WA.polls_url (id);
if (url is not null)
val := url;
}
return sprintf (fmt, val);
}
else if (par = 'params')
{
if (atoi (val) = 0 and val <> '0')
fmt := '%s';
else
fmt := '?id=%s';
return sprintf (fmt, val);
}
}
;
create procedure DB.DBA.URL_REW_ODS_FOAF_EXT (in par varchar, in fmt varchar, in val varchar)
{
if (par = '*accept*')
{
declare ext any;
ext := 'rdf';
if (val = 'text/rdf+n3')
ext := 'n3';
return sprintf (fmt, ext);
}
else
return sprintf (fmt, val);
}
;
create procedure ur_ods_rdf_doc (in path varchar)
{
declare r any;
r := regexp_match ('[^/]*\x24', path);
return r||'#this';
};
create procedure ur_ods_html_doc (in path varchar)
{
declare pos, r any;
if (path like '%/foaf.%')
{
pos := strrchr (path, '/');
}
else if (path like '%#%')
{
pos := strrchr (path, '#');
}
if (pos > 0)
r := subseq (path, 0, pos);
else
r := '/';
return r;
};
-- ODS Rules
-- http://cname/dataspace/uname
-- http://cname/dataspace/person/uname
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_rule1', 1,
'/dataspace/((person/)?[^/#]*)', vector('ufname'), 1,
'%s', vector('ufname'),
'DB.DBA.URL_REW_ODS_USER');
-- http://cname/dataspace/uname with Accept will do 303 to the /sparql
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_rule2', 1,
'/dataspace/([^/]*)', vector('ufname'), 1,
'/sparql?query=define+input%%3Ainference+%%3Chttp%%3A//^{URIQADefaultHost}^/dataspace%%3E+DESCRIBE+%%3Chttp%%3A//^{URIQADefaultHost}^/dataspace/%U%%3E+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/dataspace%%3E&format=%U', vector('ufname', '*accept*'),
null,
'(application|text)/rdf.(xml|n3|turtle|ttl)',
0,
303);
-- http://cname/dataspace/uname/app_type
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_rule3', 1,
'/dataspace/((?!person)[^/]*)/([^\\./]*)', vector('ufname', 'app'), 2,
'/ods/app_inst.vspx?app=%s&ufname=%s&l=1', vector('app', 'ufname'),
'DB.DBA.URL_REW_ODS_APP');
-- http://cname/dataspace/uname/file.ext
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_rule4', 1,
'/dataspace/([^/]*)/(sioc|about|yadis)\\.(rdf|n3|ttl|xrds)', vector('ufname', 'file', 'fmt'), 3,
'%s', vector('ufname'),
'DB.DBA.URL_REW_ODS_USER_GEM');
-- Rules for FOAF profile
-- http://cname/dataspace/person/uname with Accept, do 303 to http://cname/dataspace/person/uname/foaf.ext
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_rule5', 1,
'/dataspace/person/([^/#]*)/?', vector('ufname'), 1,
'/dataspace/person/%U/foaf.%s', vector('ufname', '*accept*'),
'DB.DBA.URL_REW_ODS_FOAF_EXT',
'(application|text)/rdf.(xml|n3|turtle|ttl)',
2,
303);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_rule6', 1,
'/dataspace/person/([^/]*)/page/([^/]*)/?', vector('ufname', 'page'), 1,
'/dataspace/person/%U/foaf.%s?page=%s', vector('ufname', '*accept*', 'page'),
'DB.DBA.URL_REW_ODS_FOAF_EXT',
'(application|text)/rdf.(xml|n3|turtle|ttl)',
2,
303);
-- http://cname/dataspace/person/uname/foaf.ext
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_rule7', 1,
'/dataspace/person/([^/]*)/foaf.(rdf|n3|ttl)', vector('ufname', 'fmt'), 1,
'/ods/foaf.vsp?uname=%U&fmt=%U', vector('ufname', 'fmt'),
null,
null,
2,
null);
-- App Instance Gem
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_post_gem_rule', 1,
'/dataspace/([^/]*)/([^/]*)/([^/]*/)?([^/]*/)?(sioc|about)\\.(rdf|n3|ttl)', vector('ufname', 'app', 'inst'), 4,
'%s', vector('ufname'),
'DB.DBA.URL_REW_ODS_GEM');
-- Weblog Rules
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_blog_rule1', 1,
'/dataspace/([^/]*)/weblog/([^/]*)', vector('ufname', 'inst'), 2,
'%s', vector('inst'),
'DB.DBA.URL_REW_ODS_BLOG');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_blog_rule2', 1,
'/dataspace/([^/]*)/weblog/([^/]*)/([^/]*)', vector('ufname', 'inst', 'id'), 3,
'%s%s', vector('inst', 'id'),
'DB.DBA.URL_REW_ODS_BLOG');
-- Discussion rules
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_nntp_rule1', 1,
'/dataspace/discussion/([^/]*)', vector('grp'), 1,
'%s', vector('grp'),
'DB.DBA.URL_REW_ODS_NNTP');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_nntp_rule2', 1,
'/dataspace/discussion/([^/]*)/((?!sioc)(?!about)[^/]*)', vector('grp', 'post'), 2,
'%s', vector('post'),
'DB.DBA.URL_REW_ODS_NNTP');
-- Community
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_xd_rule1', 1,
'/dataspace/([^/]*)/community/([^/]*)', vector('ufname', 'inst'), 2,
'%s', vector('inst'),
'DB.DBA.URL_REW_ODS_XD');
-- Wiki
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_wiki_rule1', 1,
'/dataspace/([^/]*)/wiki/([^/]*)', vector('ufname', 'inst'), 2,
'%s', vector('inst'),
'DB.DBA.URL_REW_ODS_WIKI');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_wiki_rule2', 1,
'/dataspace/([^/]*)/wiki/([^/]*)/([^/]*)', vector('ufname', 'inst', 'post'), 2,
'%s%s', vector('inst', 'post'),
'DB.DBA.URL_REW_ODS_WIKI');
-- Gallery
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_photo_rule1', 1,
'/dataspace/([^/]*)/photos/([^/]*)', vector('ufname', 'inst'), 2,
'%s', vector('inst'),
'DB.DBA.URL_REW_ODS_PHOTO');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('ods_photo_rule2', 1,
'/dataspace/([^/]*)/photos/([^/]*)/([^/]*)', vector('ufname', 'inst', 'post'), 2,
'%s', vector('post'),
'DB.DBA.URL_REW_ODS_PHOTO');
-- AddressBook
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_addressbook_rule1',
1,
'/dataspace/([^/]*)/addressbook/([^/]*)',
vector('uname', 'instance'),
2,
'%s', vector('instance'),
'DB.DBA.URL_REW_ODS_ADDRESSBOOK');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_addressbook_rule2',
1,
'/dataspace/([^/]*)/addressbook/([^/]*)/(.*)',
vector('uname', 'instance', 'params'),
3,
'%s%s',
vector('instance', 'params'),
'DB.DBA.URL_REW_ODS_ADDRESSBOOK');
-- Bookmark
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_bookmark_rule1',
1,
'/dataspace/([^/]*)/bookmark/([^/]*)',
vector('uname', 'instance'),
2,
'%s', vector('instance'),
'DB.DBA.URL_REW_ODS_BOOKMARK');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_bookmark_rule2',
1,
'/dataspace/([^/]*)/bookmark/([^/]*)/(.*)',
vector('uname', 'instance', 'params'),
3,
'%s%s',
vector('instance', 'params'),
'DB.DBA.URL_REW_ODS_BOOKMARK');
-- Briefcase
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_briefcase_rule1',
1,
'/dataspace/([^/]*)/briefcase/([^/]*)',
vector('uname', 'instance'),
2,
'%s', vector('instance'),
'DB.DBA.URL_REW_ODS_BRIEFCASE');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_briefcase_rule2',
1,
'/dataspace/([^/]*)/briefcase/([^/]*)/(.*)',
vector('uname', 'instance', 'params'),
3,
'%s%s',
vector('instance', 'params'),
'DB.DBA.URL_REW_ODS_BRIEFCASE');
-- Calendar
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_calendar_rule1',
1,
'/dataspace/([^/]*)/calendar/([^/]*)',
vector('uname', 'instance'),
2,
'%s', vector('instance'),
'DB.DBA.URL_REW_ODS_CALENDAR');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_calendar_rule2',
1,
'/dataspace/([^/]*)/calendar/([^/]*)/(.*)',
vector('uname', 'instance', 'params'),
3,
'%s%s',
vector('instance', 'params'),
'DB.DBA.URL_REW_ODS_CALENDAR');
-- Feeds
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_feeds_rule1',
1,
'/dataspace/([^/]*)/feeds/([^/]*)',
vector('uname', 'instance'),
2,
'%s', vector('instance'),
'DB.DBA.URL_REW_ODS_FEEDS');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_feeds_rule2',
1,
'/dataspace/([^/]*)/feeds/([^/]*)/(.*)',
vector('uname', 'instance', 'params'),
3,
'%s%s',
vector('instance', 'params'),
'DB.DBA.URL_REW_ODS_FEEDS');
-- Polls
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_polls_rule1',
1,
'/dataspace/([^/]*)/polls/([^/]*)',
vector('uname', 'instance'),
2,
'%s', vector('instance'),
'DB.DBA.URL_REW_ODS_POLLS');
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ods_polls_rule2',
1,
'/dataspace/([^/]*)/polls/([^/]*)/(.*)',
vector('uname', 'instance', 'params'),
3,
'%s%s',
vector('instance', 'params'),
'DB.DBA.URL_REW_ODS_POLLS');
-- ODS Base rules
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_base_rule_list1', 1,
vector(
'ods_rule1', 'ods_rule2', 'ods_rule3', 'ods_rule4'
));
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_foaf_rule_list1', 1,
vector(
'ods_rule5', 'ods_rule6', 'ods_rule7'
));
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_gems_rule_list1', 1,
vector(
'ods_post_gem_rule'
));
-- ODS Blog rules
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_blog_rule_list1', 1,
vector(
'ods_blog_rule1', 'ods_blog_rule2'
));
-- ODS Discussion rules
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_nntp_rule_list1', 1,
vector(
'ods_nntp_rule1', 'ods_nntp_rule2'
));
-- ODS Community rules
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_xd_rule_list1', 1,
vector(
'ods_xd_rule1'
));
-- ODS Wiki rules
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_wiki_rule_list1', 1,
vector(
'ods_wiki_rule1', 'ods_wiki_rule2'
));
-- ODS Gallery rules
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_photo_rule_list1', 1,
vector(
'ods_photo_rule1', 'ods_photo_rule2'
));
-- ODS AddressBook rules
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ods_addressbook_rule_list1',
1,
vector (
'ods_addressbook_rule1',
'ods_addressbook_rule2'
));
-- ODS Bookmark rules
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ods_bookmark_rule_list1',
1,
vector (
'ods_bookmark_rule1',
'ods_bookmark_rule2'
));
-- ODS Briefcase rules
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ods_briefcase_rule_list1',
1,
vector (
'ods_briefcase_rule1',
'ods_briefcase_rule2'
));
-- ODS Calendar rules
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ods_calendar_rule_list1',
1,
vector (
'ods_calendar_rule1',
'ods_calendar_rule2'
));
-- ODS Feeds rules
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ods_feeds_rule_list1',
1,
vector (
'ods_feeds_rule1',
'ods_feeds_rule2'
));
-- ODS Polls rules
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ods_polls_rule_list1',
1,
vector (
'ods_polls_rule1',
'ods_polls_rule2'
));
-- All ODS Rules
DB.DBA.URLREWRITE_CREATE_RULELIST ('ods_rule_list1', 1,
vector(
'ods_base_rule_list1',
'ods_foaf_rule_list1',
'ods_blog_rule_list1',
'ods_nntp_rule_list1',
'ods_xd_rule_list1',
'ods_wiki_rule_list1',
'ods_photo_rule_list1',
'ods_addressbook_rule_list1',
'ods_bookmark_rule_list1',
'ods_briefcase_rule_list1',
'ods_calendar_rule_list1',
'ods_feeds_rule_list1',
'ods_polls_rule_list1',
'ods_gems_rule_list1'
));
DB.DBA.XML_SET_NS_DECL ('ods', 'http://www.openlinksw.com/virtuoso/ods/', 2);
-- Setup script for RDF view of OpenLink Product Portfolio version 2
--
/*
* This view is currently designed to SPECIFICALLY load on data.openlinksw.com. We recommend you
* search for `openlinksw.com' (as `http://' is sometimes encoded) and replace with either the default
* URIQA macro or your own hostname as appropriate.
*/
-- views to get the codes out instead of the id's
---- in hindsight these should ALL have been handled with
---- proper IRI functions like the rest, oh well, no harm AFAIK
---- will know for next time or might even replace this later.
DROP VIEW oplweb2.oplweb.product_formats_categories;
CREATE VIEW oplweb2.oplweb.product_formats_categories (
product_cat_code, product_cat_id, product_format_code, product_format_id, product_family_id
) as
SELECT distinct
pc.product_cat_code,
pc.product_cat_id,
pf.product_format_code,
pf.product_format_id,
pc.product_family_id
FROM
oplweb2.oplweb.product_category pc,
oplweb2.oplweb.product_format pf,
oplweb2.oplweb.product p
WHERE
p.product_cat_id = pc.product_cat_id and
p.product_format_id = pf.product_format_id
AND EXISTS (
SELECT 1 FROM oplweb2.oplweb.component_archive ca
WHERE ca.product_id = p.product_id
)
;
DROP VIEW oplweb2.oplweb.product_with_code;
CREATE VIEW oplweb2.oplweb.product_with_code as
SELECT p.*, pc.product_cat_code, pf.product_format_code
FROM
oplweb2.oplweb.product_category pc,
oplweb2.oplweb.product_format pf,
oplweb2.oplweb.product p
WHERE
p.product_cat_id = pc.product_cat_id and
p.product_format_id = pf.product_format_id ;
DROP VIEW oplweb2.oplweb.product_category_with_code;
CREATE VIEW oplweb2.oplweb.product_category_with_code as
SELECT pc.*, pf.product_family_code
from
oplweb2.oplweb.product_category pc,
oplweb2.oplweb.product_family pf
where
pc.product_family_id = pf.product_family_id ;
DROP VIEW oplweb2.oplweb.product_family_features_with_code;
CREATE VIEW oplweb2.oplweb.product_family_features_with_code as
SELECT a.*, b.product_family_code
from
oplweb2.oplweb.product_family_features a,
oplweb2.oplweb.product_family b
where
a.product_family_id = b.product_family_id
;
DROP VIEW oplweb2.oplweb.product_format_features_with_code;
CREATE VIEW oplweb2.oplweb.product_format_features_with_code as
SELECT a.*, b.product_format_code
from
oplweb2.oplweb.product_format_features a,
oplweb2.oplweb.product_format b
where
a.product_format_id = b.product_format_id
;
DROP VIEW oplweb2.oplweb.product_category_features_with_code;
CREATE VIEW oplweb2.oplweb.product_category_features_with_code as
SELECT a.*, b.product_cat_code
from
oplweb2.oplweb.product_category_features a,
oplweb2.oplweb.product_category b
where
a.product_cat_id = b.product_cat_id
;
DROP VIEW oplweb2.oplweb.components_for_rdfs;
CREATE VIEW oplweb2.oplweb.components_for_rdfs as
SELECT *, cast(filesize as varchar) as str_filesize
from
oplweb2.oplweb.components
;
DROP VIEW oplweb2.oplweb.product_release_with_family;
CREATE VIEW oplweb2.oplweb.product_release_with_family as
SELECT a.*, b.opsys_family_id, c.dbms_family_id
from
oplweb2.oplweb.product_release a,
oplweb2.oplweb.opsys b,
oplweb2.oplweb.dbms_engine c
where
a.opsys_name = b.opsys_name and
a.dbms_name = c.dbms_name
;
drop view oplweb2.oplweb.archive_coverage_osdb;
create view oplweb2.oplweb.archive_coverage_osdb as
SELECT distinct
pfam.product_family_id, pfam.product_family_code,
p.product_format_id, pf.product_format_code,
p.product_cat_id, pc.product_cat_code,
p.product_id,
ca.opsys_name,
os.opsys_family_id,
ca.dbms_name,
db.dbms_family_id,
pr.processor_name,
pr.processor_mode_id,
pr.processor_family_id
from
oplweb2.oplweb.product p
join oplweb2.oplweb.product_category pc on (p.product_cat_id = pc.product_cat_id)
join oplweb2.oplweb.product_format pf on (p.product_format_id = pf.product_format_id)
join oplweb2.oplweb.product_family pfam on (pc.product_family_id = pfam.product_family_id)
join oplweb2.oplweb.component_archive ca on (ca.product_id = p.product_id)
join oplweb2.oplweb.opsys os on (os.opsys_name = ca.opsys_name)
join oplweb2.oplweb.dbms_engine db on (db.dbms_name = ca.dbms_name)
join oplweb2.oplweb.processors pr on (pr.processor_name = os.processor_name and pr.processor_mode_id = os.processor_mode_id)
;
GRANT SELECT ON oplweb2.oplweb.component_archive TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.component_archive_type TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.component_category TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.component_mode TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.component_type TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.components TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.components_for_rdfs TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.dbms_engine TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.dbms_family TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.download_location TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.download_protocol TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.download_partner TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.opsys TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.opsys_family TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.opsys_type TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.processor_family TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.processor_mode TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.processors TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_benefits TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_benefits_category TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_category TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_category_with_code TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_category_features TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_family TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_family_features TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_features TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_format TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_format_features TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_feature_category TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_release TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_release_features TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.vendor_category TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.vendor_category_family TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.vendors TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_formats_categories TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_with_code TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_family_features_with_code TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_format_features_with_code TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_category_features_with_code TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.product_release_with_family TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON oplweb2.oplweb.archive_coverage_osdb TO "SPARQL", "SPARQL_UPDATE";
drop index oplweb2_product_price_format_cat;
create index oplweb2_product_price_format_cat on oplweb2.oplweb.product_price(product_cat_id, product_format_id, product_price_type_id);
drop index oplweb2_product_discount_format_cat;
create index oplweb2_product_discount_format_cat on oplweb2.oplweb.product_general_discount(product_cat_id, product_format_id, product_price_type_id);
drop view oplweb2.DBA.license_model_type;
create view oplweb2.DBA.license_model_type (
product_release_id, product_cat_id, product_format_id, product_id, product_price_type_id
)
as
SELECT distinct
product_release_id,
pp.product_cat_id, pp.product_format_id, product_id,
product_price_type_id
FROM
oplweb2.oplweb.product_price pp,
oplweb2.oplweb.product p
WHERE p.product_cat_id = pp.product_cat_id AND
p.product_format_id = pp.product_format_id
;
grant SELECT on oplweb2.DBA.license_model_type to "SPARQL", "SPARQL_UPDATE";--, rdf;
drop view oplweb2.DBA.license_model;
create view oplweb2.DBA.license_model as
SELECT distinct
product_release_id,
pc.product_cat_id,
pc.product_format_id,
pc.product_cat_code,
pc.product_format_code,
pc.product_id,
pp.opsys_family_id, pp.dbms_family_id,
replace(oo.opsys_family_name, ' ', '') as opsys_family_name,
replace(dd.dbms_family_name, ' ', '') as dbms_family_name,
pp.opsys_type_id,
pp.product_price_type_id,
pp.product_price_unit_type_id
from
oplweb2.oplweb.product_price pp,
oplweb2.oplweb.product_with_code pc, --category pc,
--oplweb2.oplweb.product_format pf,
oplweb2.oplweb.opsys os,
oplweb2.oplweb.dbms_engine dbe,
oplweb2.oplweb.dbms_family dd,
oplweb2.oplweb.opsys_family oo
--oplweb2.oplweb.product p
where
pp.product_format_id = pc.product_format_id and
pp.product_cat_id = pc.product_cat_id and
pp.opsys_family_id = oo.opsys_family_id and
pp.dbms_family_id = dd.dbms_family_id
--p.product_cat_id = pc.product_cat_id and
--p.product_format_id = pf.product_format_id and
;
grant SELECT on oplweb2.DBA.license_model to "SPARQL", "SPARQL_UPDATE";--, rdf;
drop view oplweb2.DBA.license_model_units;
create view oplweb2.DBA.license_model_units as
SELECT distinct
lm1.product_release_id,
lm1.product_id,
lm1.opsys_family_
pp.opsys_family_id, pp.dbms_family_id,
replace(oo.opsys_family_name, ' ', '') as opsys_family_name,
replace(dd.dbms_family_name, ' ', '') as dbms_family_name,
pp.opsys_type_id, ot.short_description as opsys_type_code
from
oplweb2.oplweb.product_price pp,
oplweb2.oplweb.opsys_type ot,
oplweb2.oplweb.dbms_family dd,
oplweb2.oplweb.opsys_family oo
where
pp.opsys_type_id = ot.opsys_type_id and
pp.opsys_family_id = oo.opsys_family_id and
pp.dbms_family_id = dd.dbms_family_id
and
pp.product_release_id = '6.1'
;
grant SELECT on oplweb2.DBA.license_model_units to "SPARQL", "SPARQL_UPDATE";--, rdf;
drop view oplweb2.DBA.product_general_discount_vc;
create view oplweb2.DBA.product_general_discount_vc as
SELECT distinct
product_release_id,
pgd.product_cat_id, pc.product_cat_code,
pgd.product_format_id, pc.product_format_code,
pc.product_id,
pgd.opsys_family_id, pgd.dbms_family_id,
pgd.opsys_type_id,
product_discount_description,
product_price_type_id,
cast(unit_discount as varchar) as unit_discount,
discount_start,
discount_end,
discount_token
from
oplweb2.oplweb.product_general_discount pgd,
oplweb2.oplweb.product_with_code pc
where
pgd.product_format_id = pc.product_format_id and
pgd.product_cat_id = pc.product_cat_id
;
drop view oplweb2.DBA.product_price_varchar;
create view oplweb2.DBA.product_price_varchar as
select
pp.product_price_id,
pp.product_release_id,
pp.product_cat_id, pc.product_cat_code,
pp.product_format_id, pf.product_format_code,
pp.opsys_family_id, pp.dbms_family_id,
replace(oo.opsys_family_name, ' ', '') as opsys_family_name,
replace(dd.dbms_family_name, ' ', '') as dbms_family_name,
pp.opsys_type_id, ot.short_description as opsys_type_code,
pp.product_price_type_id,
pp.product_price_unit_type_id, cast(pp.unit_price as varchar) as unit_price,
pp.component_archive_available
from
oplweb2.oplweb.product_price pp,
oplweb2.oplweb.product_category pc,
oplweb2.oplweb.product_format pf,
oplweb2.oplweb.opsys_type ot,
oplweb2.oplweb.dbms_family dd,
oplweb2.oplweb.opsys_family oo
where
pp.product_format_id = pf.product_format_id and
pp.product_cat_id = pc.product_cat_id and
pp.opsys_type_id = ot.opsys_type_id and
pp.opsys_family_id = oo.opsys_family_id and
pp.dbms_family_id = dd.dbms_family_id
--and
--pp.product_release_id = '6.1'
;
grant SELECT on oplweb2.oplweb.product_price to "SPARQL", "SPARQL_UPDATE";--, rdf;
grant SELECT on oplweb2.oplweb.product_price_type to "SPARQL", "SPARQL_UPDATE";--, rdf;
grant SELECT on oplweb2.oplweb.product_price_unit_type to "SPARQL", "SPARQL_UPDATE";--, rdf;
grant SELECT on oplweb2.DBA.product_general_discount_vc to "SPARQL", "SPARQL_UPDATE";--, rdf;
grant SELECT on oplweb2.DBA.product_price_varchar to "SPARQL", "SPARQL_UPDATE";--, rdf;
grant SELECT on oplweb2.DBA.license_model_type to "SPARQL", "SPARQL_UPDATE";--, rdf;
DB.DBA.RDF_AUDIT_METADATA (1, '*');
--DB.DBA.RDF_AUDIT_METADATA (2, '*');
--sparql drop graph <http://www.openlinksw.com/dataspace/organization/openlink/ProductPortfolioOntology/1.0/>;
--possible previous graph now merging with this oplweb graph
sparql drop graph <http://data.openlinksw.com/shop_pricing/>;
--others that have a dependency on this graph that may need kicking first
--sparql drop graph <http://data.openlinksw.com/customer/>;
--sparql drop graph <http://data.openlinksw.com/support/>;
--sparql drop graph <http://data.openlinksw.com/shop_pricing/>;
SPARQL drop graph <http://www.openlinksw.com/schemas/oplweb#> ;
SPARQL drop graph <http://www.openlinksw.com/dataspace/organization/openlink/oplweb#> ;
SPARQL drop graph <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/> ;
-- should now use <http://www.openlinksw.com/dataspace/organization/openlink#this>
SPARQL drop quad map virtrdf:product_portfolio ;
--only use this if you really really mean it, it will totally nuke your RDF data, useful on
--test boxes in a bit of jam (hasn't happened to me for a while now)
--rdf_global_reset();
--utility for stripping url killing stuff from friendly strings used as ids
create function oplweb2.oplweb.FIXUP4URI (in _string varchar)
returns varchar
{
declare _s varchar;
_s := replace (_string, ' ', '');
_s := replace (_s, '&', '_');
_s := replace (_s, '/', '');
return _s;
}
;
--URI-IRI mapping functions
create function oplweb2.oplweb.DOWNLOAD_LOCATION_URI (in uri varchar)
returns varchar
{
return sprintf('http://data.openlinksw.com/oplweb/download_location/%s#this',
replace(uri, 'http://', ''));
};
create function oplweb2.oplweb.DOWNLOAD_LOCATION_URI_INVERSE (in dl_iri varchar)
returns varchar
{
declare parts any;
parts := sprintf_inverse(dl_iri,
'http://data.openlinksw.com/oplweb/download_location/%s#this', 1);
if (parts is not null)
{
return sprintf('http://%s', parts[0]);
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.DOWNLOAD_LOCATION_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.DOWNLOAD_LOCATION_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.DBMS_FAMILY_URI (in _family_id integer)
returns varchar
{
declare _family_string varchar;
SELECT dbms_family_name into _family_string
FROM oplweb2.oplweb.dbms_family
WHERE dbms_family_id = _family_id ;
return sprintf('http://data.openlinksw.com/oplweb/dbms_family/%s#this',
oplweb2.oplweb.FIXUP4URI(_family_string));
};
create function oplweb2.oplweb.DBMS_FAMILY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _family_id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/dbms_family/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 dbms_family_id into _family_id FROM oplweb2.oplweb.dbms_family
WHERE lower(oplweb2.oplweb.FIXUP4URI(dbms_family_name)) = lower(parts[0]);
return _family_id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.DBMS_FAMILY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.DBMS_FAMILY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.COMPONENT_CATEGORY_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.component_category
WHERE component_category_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/component_category/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.COMPONENT_CATEGORY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/component_category/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 component_category_id into _id FROM oplweb2.oplweb.component_category
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_CATEGORY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_CATEGORY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.COMPONENT_MODE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.component_mode
WHERE component_mode_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/component_mode/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.COMPONENT_MODE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/component_mode/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 component_mode_id into _id FROM oplweb2.oplweb.component_mode
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_MODE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_MODE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.COMPONENT_TYPE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.component_type
WHERE component_type_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/component_type/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.COMPONENT_TYPE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/component_type/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 component_type_id into _id FROM oplweb2.oplweb.component_type
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_TYPE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_TYPE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.COMPONENT_ARCHIVE_TYPE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT component_archive_short_name into _string
FROM oplweb2.oplweb.component_archive_type
WHERE component_archive_type_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/component_archive_type/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.COMPONENT_ARCHIVE_TYPE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/component_archive_type/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 component_archive_type_id into _id FROM oplweb2.oplweb.component_archive_type
WHERE lower(oplweb2.oplweb.FIXUP4URI(component_archive_short_name)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_ARCHIVE_TYPE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.COMPONENT_ARCHIVE_TYPE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.FEATURE_BENEFIT_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT product_benefit_desc into _string
FROM oplweb2.oplweb.product_benefits
WHERE product_benefit_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/feature_benefit/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.FEATURE_BENEFIT_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/feature_benefit/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_benefit_id into _id FROM oplweb2.oplweb.product_benefits
WHERE lower(oplweb2.oplweb.FIXUP4URI(product_benefit_desc)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.FEATURE_BENEFIT_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.FEATURE_BENEFIT_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.OPSYS_FAMILY_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT opsys_family_name into _string
FROM oplweb2.oplweb.opsys_family
WHERE opsys_family_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/opsys_family/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.OPSYS_FAMILY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/opsys_family/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 opsys_family_id into _id FROM oplweb2.oplweb.opsys_family
WHERE lower(oplweb2.oplweb.FIXUP4URI(opsys_family_name)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.OPSYS_FAMILY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.OPSYS_FAMILY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.OPSYS_TYPE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.opsys_type
WHERE opsys_type_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/opsys_type/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.OPSYS_TYPE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/opsys_type/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT TOP 1 opsys_type_id into _id FROM oplweb2.oplweb.opsys_type
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.OPSYS_TYPE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.OPSYS_TYPE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PROCESSOR_FAMILY_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT processor_family_name into _string
FROM oplweb2.oplweb.processor_family
WHERE processor_family_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/processor_family/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PROCESSOR_FAMILY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/processor_family/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 processor_family_id into _id FROM oplweb2.oplweb.processor_family
WHERE lower(oplweb2.oplweb.FIXUP4URI(processor_family_name)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PROCESSOR_FAMILY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PROCESSOR_FAMILY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
--FIXME might have to do something with possible & symbols
create function oplweb2.oplweb.PROCESSOR_MODE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT processor_mode_name into _string
FROM oplweb2.oplweb.processor_mode
where processor_mode_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/processor_mode/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PROCESSOR_MODE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/processor_mode/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 processor_mode_id into _id FROM oplweb2.oplweb.processor_mode
WHERE lower(oplweb2.oplweb.FIXUP4URI(processor_mode_name)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PROCESSOR_MODE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PROCESSOR_MODE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_CATEGORY_FEATURE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.product_category_features
WHERE product_category_feature_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_category_feature/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_CATEGORY_FEATURE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_category_feature/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_category_feature_id into _id FROM oplweb2.oplweb.product_category_features
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_CATEGORY_FEATURE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_CATEGORY_FEATURE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_FAMILY_FEATURE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.product_family_features
WHERE product_family_feature_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_family_feature/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_FAMILY_FEATURE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_family_feature/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_family_feature_id into _id FROM oplweb2.oplweb.product_family_features
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FAMILY_FEATURE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FAMILY_FEATURE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_FEATURE_CATEGORY_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_desc into _string
FROM oplweb2.oplweb.product_feature_category
WHERE product_feature_category_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_feature_category/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_FEATURE_CATEGORY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_feature_category/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_feature_category_id into _id FROM oplweb2.oplweb.product_feature_category
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_desc)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FEATURE_CATEGORY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FEATURE_CATEGORY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_FEATURE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.product_features
WHERE product_feature_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_feature/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_FEATURE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_feature/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_feature_id into _id FROM oplweb2.oplweb.product_features
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FEATURE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FEATURE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_FORMAT_FEATURE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.product_format_features
WHERE product_format_feature_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_format_feature/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_FORMAT_FEATURE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_format_feature/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_format_feature_id into _id FROM oplweb2.oplweb.product_format_features
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FORMAT_FEATURE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_FORMAT_FEATURE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_RELEASE_FEATURE_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT short_description into _string
FROM oplweb2.oplweb.product_release_features
WHERE product_release_feature_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_release_feature/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_RELEASE_FEATURE_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_release_feature/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_release_feature_id into _id FROM oplweb2.oplweb.product_release_features
WHERE lower(oplweb2.oplweb.FIXUP4URI(short_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_RELEASE_FEATURE_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_RELEASE_FEATURE_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_BENEFIT_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT product_benefit_desc into _string
FROM oplweb2.oplweb.product_benefits
WHERE product_benefit_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_benefit/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_BENEFIT_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_benefit/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_benefit_id into _id FROM oplweb2.oplweb.product_benefits
WHERE lower(oplweb2.oplweb.FIXUP4URI(product_benefit_desc)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_BENEFIT_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_BENEFIT_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.PRODUCT_BENEFIT_CATEGORY_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT description into _string
FROM oplweb2.oplweb.product_benefits_category
WHERE product_benefit_category_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/product_benefit_category/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.PRODUCT_BENEFIT_CATEGORY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/product_benefit_category/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 product_benefit_category_id into _id FROM oplweb2.oplweb.product_benefits_category
WHERE lower(oplweb2.oplweb.FIXUP4URI(description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_BENEFIT_CATEGORY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.PRODUCT_BENEFIT_CATEGORY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.VENDOR_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT vendor_name into _string
FROM oplweb2.oplweb.vendors
where vendor_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/vendor/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.VENDOR_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/vendor/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 vendor_id into _id FROM oplweb2.oplweb.vendors
WHERE lower(oplweb2.oplweb.FIXUP4URI(vendor_name)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.VENDOR_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.VENDOR_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.VENDOR_CATEGORY_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT vendor_category_description into _string
FROM oplweb2.oplweb.vendor_category
where vendor_category_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/vendor_category/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.VENDOR_CATEGORY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/vendor_category/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 vendor_category_id into _id FROM oplweb2.oplweb.vendor_category
WHERE lower(oplweb2.oplweb.FIXUP4URI(vendor_category_description)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.VENDOR_CATEGORY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.VENDOR_CATEGORY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.VENDOR_CATEGORY_FAMILY_URI (in _id integer)
returns varchar
{
declare _string varchar;
SELECT vendor_category_family_desc into _string
FROM oplweb2.oplweb.vendor_category_family
where vendor_category_family_id = _id ;
return sprintf('http://data.openlinksw.com/oplweb/vendor_category_family/%s#this',
oplweb2.oplweb.FIXUP4URI(_string));
};
create function oplweb2.oplweb.VENDOR_CATEGORY_FAMILY_URI_INVERSE (in _iri varchar)
returns integer
{
declare parts any;
declare _id integer;
parts := sprintf_inverse(_iri,
'http://data.openlinksw.com/oplweb/vendor_category_family/%s#this', 1);
if (parts is not null)
{
declare exit handler for not found return null;
SELECT top 1 vendor_category_family_id into _id FROM oplweb2.oplweb.vendor_category_family
WHERE lower(oplweb2.oplweb.FIXUP4URI(vendor_category_family_desc)) = lower(parts[0]);
return _id;
}
return NULL;
};
GRANT EXECUTE ON oplweb2.oplweb.VENDOR_CATEGORY_FAMILY_URI TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON oplweb2.oplweb.VENDOR_CATEGORY_FAMILY_URI_INVERSE TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LIT_PRODUCT_RELEASE_LABEL (
in _product_id varchar, in _id integer, in _opsys_name varchar, in _dbms_name varchar
)
returns varchar
{
declare _string varchar;
SELECT 'OpenLink ' || poduct_description || ' (Release ' || product_release_id || ') on ' || commercial_name into _string
FROM oplweb2.oplweb.product_release pr,
oplweb2.oplweb.product p,
oplweb2.oplweb.opsys o
where
p.product_id = pr.product_id and
o.opsys_name = pr.opsys_name and
pr.product_release_id = _id and
pr.product_id = _product_id and
pr.opsys_name = _opsys_name and
pr.dbms_name = _dbms_name ;
return _string;
};
GRANT EXECUTE ON oplweb2.oplweb.LIT_PRODUCT_RELEASE_LABEL TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LIT_FORMAT_CAT_LABEL (
in _format integer, in _cat integer
)
returns varchar
{
declare _string varchar;
SELECT top 1 'OpenLink ' || cast(product_format_description as varchar) || ' ' || cast(product_category_description as varchar) into _string
from
oplweb2.oplweb.product_formats_categories fc,
oplweb2.oplweb.product_format f,
oplweb2.oplweb.product_category c
where
fc.product_format_id = f.product_format_id and
fc.product_cat_id = c.product_cat_id and
fc.product_format_id = _format and
fc.product_cat_id = _cat;
return _string;
};
GRANT EXECUTE ON oplweb2.oplweb.LIT_FORMAT_CAT_LABEL TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LITRDF_openlink_logo (in _code varchar)
returns varchar
{
declare _string varchar;
SELECT top 1 product_family_logo_url into _string
FROM oplweb2.oplweb.product_family
WHERE product_family_code = _code;
return _string;
};
GRANT EXECUTE ON oplweb2.oplweb.LITRDF_openlink_logo TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LITRDF_homepage (in _code varchar)
returns varchar
{
declare _string varchar;
SELECT top 1 product_family_homepage into _string
FROM oplweb2.oplweb.product_family
WHERE product_family_code = _code;
return _string;
};
GRANT EXECUTE ON oplweb2.oplweb.LITRDF_homepage TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LITRDF_opsys_icon (in _id integer)
returns varchar
{
declare _string varchar; _string := '';
SELECT top 1 opsys_icon_name into _string
FROM oplweb2.oplweb.opsys_family
where opsys_family_id = _id;
_string := 'http://download.openlinksw.com/download/images/'||_string;
return _string;
};
GRANT EXECUTE ON oplweb2.oplweb.LITRDF_opsys_icon TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LITRDF_to_shop (
in release_id varchar,
in product_id varchar,
in opsys varchar,
in dbms varchar
)
returns varchar
{
declare _string varchar; _string := '';
declare _cat, _format, _prod varchar;
_prod := product_id;
SELECT top 1 cast(product_cat_id as varchar), cast(product_format_id as varchar)
into _cat, _format
FROM oplweb2.oplweb.product p
WHERE p.product_id = _prod;
_string := sprintf(
'https://shop.openlinksw.com/?product_release_id=%s&product=%s&product_cat=%V&product_format=%V&os=%s&db=%s&buyme=yes',
release_id, product_id, _cat, _format, opsys, dbms
);
return _string;
};
GRANT EXECUTE ON oplweb2.oplweb.LITRDF_to_shop TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LITRDF_license_model_type (
in _product_price_type_id integer
)
returns varchar
{
declare _string varchar; _string := '';
SELECT top 1 product_price_type_description into _string FROM oplweb2.oplweb.product_price_type
WHERE product_price_type_id = _product_price_type_id;
return _string || ' License';
};
GRANT EXECUTE ON oplweb2.oplweb.LITRDF_license_model_type TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LITRDF_license_model_explain (
in _product_price_type_id integer
)
returns varchar
{
declare _string varchar; _string := '';
SELECT top 1 product_price_type_long_description into _string FROM oplweb2.oplweb.product_price_type
WHERE product_price_type_id = _product_price_type_id;
return _string;
};
GRANT EXECUTE ON oplweb2.oplweb.LITRDF_license_model_explain TO "SPARQL", "SPARQL_UPDATE";
create function oplweb2.oplweb.LITRDF_shop_sample (
in release_id varchar,
in product_id varchar,
in opsys varchar,
in dbms varchar
)
returns varchar
{
declare _string varchar; _string := '';
declare _cat, _format, _prod, _pricetype varchar;
_prod := product_id;
SELECT top 1 cast(product_cat_id as varchar), cast(product_format_id as varchar), cast(product_price_type_id as varchar)
into _cat, _format, _pricetype
FROM oplweb2.DBA.license_model p, oplweb2.oplweb.opsys o, oplweb2.oplweb.dbms_engine e
WHERE p.product_id = _prod and product_release_id = release_id and o.opsys_name = opsys and e.dbms_name = dbms
and p.dbms_family_id = e.dbms_family_id and o.opsys_family_id = p.opsys_family_id;
_string := sprintf(
'https://shop.openlinksw.com/price_calc.vsp?release=%s&cat=%V&format=%V&os=%s&db=%s&lictype=%V',
release_id, _cat, _format, opsys, dbms, _pricetype
);
return http_client(_string);
};
GRANT EXECUTE ON oplweb2.oplweb.LITRDF_shop_sample TO "SPARQL", "SPARQL_UPDATE";
-- $Id: rdfviewssamples.xml,v 1.1.2.1 2010/10/07 12:45:00 source Exp $
-- Setup script for RDF view of OpenLink Product Portfolio version 2
--
--
-- This view is currently designed to SPECIFICALLY load on data.openlinksw.com. The default URI macro has NOT
-- been used here because it makes no sense on the target box which is actually my.usnet.private:8891 or
-- something similar. If you want to use this view on another box, a simple search-replace should do the trick,
-- but search-replace just`data.openlinksw.com' because http:// is sometimes encoded and you would miss it.
--
--
SPARQL drop quad map virtrdf:product_portfolio2 ;
SPARQL drop quad map virtrdf:product_portfolio ;
SPARQL
prefix opl: <http://www.openlinksw.com/schemas/oplweb#>
drop iri class opl:DownloadLocation .
drop iri class opl:ComponentCategory .
drop iri class opl:Component .
drop iri class opl:ComponentArchive .
drop iri class opl:ComponentArchiveType .
drop iri class opl:ComponentCategory .
drop iri class opl:ComponentMode .
drop iri class opl:ComponentType .
drop iri class opl:DbmsEngine .
drop iri class opl:DbmsFamily .
drop iri class opl:DownloadProtocol .
drop iri class opl:DownloadPartner .
drop iri class opl:FeatureBenefit .
drop iri class opl:Opsys .
drop iri class opl:OpsysFamily .
drop iri class opl:OpsysType .
drop iri class opl:Processor .
drop iri class opl:ProcessorFamily .
drop iri class opl:ProcessorMode .
drop iri class opl:ProductRelease .
drop iri class opl:Product .
drop iri class opl:ProductCategory .
drop iri class opl:ProductCategoryFeature .
drop iri class opl:ProductPortfolio .
drop iri class opl:ProductFamily .
drop iri class opl:ProductFamilyFeature .
drop iri class opl:ProductFeatureCategory .
drop iri class opl:ProductFeature .
drop iri class opl:ProductFormat .
drop iri class opl:ProductFormatCategory .
drop iri class opl:ProductFormatFeature .
drop iri class opl:ProductReleaseFeature .
drop iri class opl:ProductBenefit .
drop iri class opl:ProductBenefitCategory .
drop iri class opl:Vendor .
drop iri class opl:VendorCategory .
drop iri class opl:VendorCategoryFamily .
drop iri class opl:PriceType .
drop iri class opl:PriceUnitType .
drop iri class opl:PriceUnitIncrementalDiscount .
drop iri class opl:ProductPrice .
drop iri class opl:LicenseType .
drop iri class opl:LicenseModel .
drop iri class opl:LicenseClass .
drop iri class opl:Discount .
drop literal class opl:lit_product_release_label .
drop literal class opl:lit_format_cat_label .
drop literal class opl:lit_openlink_logo .
drop iri class opl:lit_openlink_logo .
drop literal class opl:lit_homepage .
drop iri class opl:lit_homepage .
drop literal class opl:lit_opsys_icon .
drop iri class opl:lit_opsys_icon .
drop literal class opl:lit_to_shop .
drop iri class opl:lit_to_shop .
drop literal class opl:lit_license_model_type .
drop literal class opl:lit_license_model_explain .
drop literal class opl:lit_shop_sample .
drop literal class opl:lit_wikipedia_to_dbpedia .
drop iri class opl:lit_wikipedia_to_dbpedia .
drop literal class opl:lit_to_string .
drop iri class opl:wwwsitefamily .
drop iri class opl:wwwsiteformat .
drop iri class opl:wwwsitecategory .
drop iri class opl:wwwsiteproduct .
;
DB.DBA.RDF_AUDIT_METADATA (1, '*');
SPARQL
prefix opl: <http://www.openlinksw.com/schemas/oplweb#>
create iri class opl:Component "http://data.openlinksw.com/oplweb/component/%s#this"
(in component_name varchar not null) .
create iri class opl:ComponentArchive "http://data.openlinksw.com/oplweb/component_archive/%s#this"
(in component_archive_name varchar not null) .
create iri class opl:ComponentArchiveType using
function oplweb2.oplweb.COMPONENT_CATEGORY_URI (in _id integer not null)
returns varchar,
function oplweb2.oplweb.COMPONENT_CATEGORY_URI_INVERSE (in _iri varchar)
returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/component_archive_type/%s#this' ).
create iri class opl:ComponentCategory using
function oplweb2.oplweb.COMPONENT_CATEGORY_URI (in _id integer not null)
returns varchar,
function oplweb2.oplweb.COMPONENT_CATEGORY_URI_INVERSE (in _iri varchar)
returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/component_category/%s#this' ).
create iri class opl:ComponentMode using
function oplweb2.oplweb.COMPONENT_MODE_URI (in _id integer not null)
returns varchar,
function oplweb2.oplweb.COMPONENT_MODE_URI_INVERSE (in _iri varchar)
returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/component_mode/%s#this' ).
create iri class opl:ComponentType using
function oplweb2.oplweb.COMPONENT_TYPE_URI (in _id integer not null)
returns varchar,
function oplweb2.oplweb.COMPONENT_TYPE_URI_INVERSE (in _iri varchar)
returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/component_type/%s#this' ).
create iri class opl:DbmsFamily using
function oplweb2.oplweb.DBMS_FAMILY_URI (in _family_id integer not null)
returns varchar,
function oplweb2.oplweb.DBMS_FAMILY_URI_INVERSE (in _iri varchar)
returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/dbms_family/%s#this' ).
create iri class opl:DbmsEngine "http://data.openlinksw.com/oplweb/dbms_engine/%s#this"
(in dbms_name varchar not null) .
create iri class opl:DownloadLocation using
function oplweb2.oplweb.DOWNLOAD_LOCATION_URI (in uri varchar not null)
returns varchar,
function oplweb2.oplweb.DOWNLOAD_LOCATION_URI_INVERSE (in dl_iri varchar)
returns varchar
option (bijection, returns 'http://data.openlinksw.com/oplweb/download_location/%s#this' ).
create iri class opl:DownloadProtocol "http://data.openlinksw.com/oplweb/download_protocol/%s#this"
(in protocol_name varchar not null) .
create iri class opl:DownloadPartner "http://data.openlinksw.com/oplweb/download_partner/%s/%s#this"
(
in host_name varchar not null,
in domain_name varchar not null
) .
create iri class opl:FeatureBenefit using
function oplweb2.oplweb.FEATURE_BENEFIT_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.FEATURE_BENEFIT_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/feature_benefit/%s#this' ).
create iri class opl:Opsys "http://data.openlinksw.com/oplweb/opsys/%s#this"
(in opsys_name varchar not null) .
create iri class opl:OpsysFamily using
function oplweb2.oplweb.OPSYS_FAMILY_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.OPSYS_FAMILY_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/opsys_family/%s#this' ).
create iri class opl:OpsysType using
function oplweb2.oplweb.OPSYS_TYPE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.OPSYS_TYPE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/opsys_type/%s#this' ).
create iri class opl:Processor "http://data.openlinksw.com/oplweb/processor/%s/%d#this"
(in processor_name varchar not null, in processor_mode_id integer not null) .
create iri class opl:ProcessorFamily using
function oplweb2.oplweb.PROCESSOR_FAMILY_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PROCESSOR_FAMILY_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/processor_family/%s#this' ).
create iri class opl:ProcessorMode using
function oplweb2.oplweb.PROCESSOR_MODE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PROCESSOR_MODE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/processor_mode/%s#this' ).
create iri class opl:Product "http://data.openlinksw.com/oplweb/product/%s#this"
(in product_id varchar not null) .
create iri class opl:ProductCategory "http://data.openlinksw.com/oplweb/product_category/%s#this"
(in product_cat_code varchar not null) .
create iri class opl:ProductCategoryFeature using
function oplweb2.oplweb.PRODUCT_CATEGORY_FEATURE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_CATEGORY_FEATURE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_category_feature/%s#this' ).
create iri class opl:ProductPortfolio "http://data.openlinksw.com/oplweb/portfolio/%s#this"
(in x varchar not null) .
create iri class opl:ProductFamily "http://data.openlinksw.com/oplweb/product_family/%s#this"
(in product_family_code varchar not null) .
create iri class opl:ProductFamilyFeature using
function oplweb2.oplweb.PRODUCT_FAMILY_FEATURE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_FAMILY_FEATURE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_family_feature/%s#this' ).
create iri class opl:ProductFeatureCategory using
function oplweb2.oplweb.PRODUCT_FEATURE_CATEGORY_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_FEATURE_CATEGORY_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_feature_category/%s#this' ).
create iri class opl:ProductFeature using
function oplweb2.oplweb.PRODUCT_FEATURE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_FEATURE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_feature/%s#this' ).
create iri class opl:ProductFormat "http://data.openlinksw.com/oplweb/product_format/%s#this"
(in product_format_code varchar not null) .
create iri class opl:ProductFormatCategory "http://data.openlinksw.com/oplweb/product_format_category/%s/%s#this"
(in product_format_code varchar not null, in product_cat_code varchar not null) .
create iri class opl:ProductFormatFeature using
function oplweb2.oplweb.PRODUCT_FORMAT_FEATURE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_FORMAT_FEATURE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_format_feature/%s#this' ).
create iri class opl:ProductReleaseFeature using
function oplweb2.oplweb.PRODUCT_RELEASE_FEATURE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_RELEASE_FEATURE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_release_feature/%s#this' ).
create iri class opl:ProductBenefit using
function oplweb2.oplweb.PRODUCT_BENEFIT_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_BENEFIT_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_benefit/%s#this' ).
create iri class opl:ProductBenefitCategory using
function oplweb2.oplweb.PRODUCT_BENEFIT_CATEGORY_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.PRODUCT_BENEFIT_CATEGORY_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/product_benefit_category/%s#this' ).
create iri class opl:ProductRelease "http://data.openlinksw.com/oplweb/product_release/%s/%s/%s/%s#this"
(
in product_id varchar not null,
in product_release_id varchar not null,
in opsys_name varchar not null,
in dbms_name varchar not null
) .
create iri class opl:Vendor using
function oplweb2.oplweb.VENDOR_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.VENDOR_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/vendor/%s#this' ).
create iri class opl:VendorCategory using
function oplweb2.oplweb.VENDOR_CATEGORY_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.VENDOR_CATEGORY_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/vendor_category/%s#this' ).
create iri class opl:VendorCategoryFamily using
function oplweb2.oplweb.VENDOR_CATEGORY_FAMILY_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.VENDOR_CATEGORY_FAMILY_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/vendor_category_family/%s#this' ).
create iri class opl:PriceType "http://data.openlinksw.com/oplweb/price_type/%d#this"
(in product_price_type_id integer not null) .
create iri class opl:LicenseType using
function oplweb2.oplweb.LICENSE_MODEL_TYPE_URI (in _id integer not null) returns varchar,
function oplweb2.oplweb.LICENSE_MODEL_TYPE_URI_INVERSE (in _iri varchar) returns integer
option (bijection, returns 'http://data.openlinksw.com/oplweb/license_type/%s#this' ).
create iri class opl:PriceUnitType "http://data.openlinksw.com/oplweb/price_unit_type/%s_%s_%d_%d_%d_%s#this"
(
in product_release_id varchar not null,
in product_id varchar not null,
in opsys_family_id integer not null,
in dbms_family_id integer not null,
in product_price_type_id integer not null,
in product_price_unit_type_id varchar not null) .
create iri class opl:PriceUnitIncrementalDiscount "http://data.openlinksw.com/oplweb/price_unit_discount/%s_%s_%d_%d_%d_%s#this"
(
in product_release_id varchar not null,
in product_id varchar not null,
in opsys_family_id integer not null,
in dbms_family_id integer not null,
in product_price_type_id integer not null,
in product_price_unit_type_id varchar not null) .
create iri class opl:ProductPrice "http://data.openlinksw.com/oplweb/product_price/%d#this"
(in product_price_id integer not null) .
create iri class opl:LicenseModel "http://data.openlinksw.com/oplweb/license_model/%s_%s_%d_%d_%d#this"
(
in product_release_id varchar not null,
in product_id varchar not null,
in opsys_family_id integer not null,
in dbms_family_id integer not null,
in product_price_type_id integer not null
) .
create iri class opl:Discount "http://data.openlinksw.com/oplweb/discount/%s/%d/%s/%d/%d/%d#this"
(
in product_release_id varchar not null,
in opsys_type_id integer not null,
in product_id varchar not null,
in opsys_family_id integer not null,
in dbms_family_id integer not null,
in product_price_type_id integer not null
) .
create iri class opl:wwwsitefamily "http://%s.openlinksw.com/"
(
in product_family_code varchar not null
) .
create iri class opl:wwwsitecategory "http://%s.openlinksw.com/%s/"
(
in product_family_code varchar not null,
in product_category_code varchar not null
) .
create iri class opl:wwwsiteformat "http://%s.openlinksw.com/%s/%s/"
(
in product_family_code varchar not null,
in product_category_code varchar not null,
in product_format_code varchar not null
) .
create iri class opl:Uri "%s"
( in uri varchar not null
) .
create literal class opl:lit_product_release_label using
function oplweb2.oplweb.LIT_PRODUCT_RELEASE_LABEL(
in _product_id varchar, in _id integer, in _opsys_name varchar, in _dbms_name varchar
)
returns varchar .
create literal class opl:lit_format_cat_label using
function oplweb2.oplweb.LIT_FORMAT_CAT_LABEL(
in _format integer, in _cat integer
)
returns varchar .
create iri class opl:lit_openlink_logo using
function oplweb2.oplweb.LITRDF_openlink_logo(
in _code varchar
)
returns varchar .
create iri class opl:lit_homepage using
function oplweb2.oplweb.LITRDF_homepage(
in _code varchar
)
returns varchar .
create iri class opl:lit_opsys_icon using
function oplweb2.oplweb.LITRDF_opsys_icon(
in _id integer
)
returns varchar .
create iri class opl:lit_to_shop using
function oplweb2.oplweb.LITRDF_to_shop(
in release_id varchar,
in product_id varchar,
in opsys varchar,
in dbms varchar
)
returns varchar .
create literal class opl:lit_license_model_type using
function oplweb2.oplweb.LITRDF_license_model_type (
in _product_price_type_id integer
)
returns varchar .
create literal class opl:lit_license_model_explain using
function oplweb2.oplweb.LITRDF_license_model_explain (
in _product_price_type_id integer
)
returns varchar .
create literal class opl:lit_shop_sample using
function oplweb2.oplweb.LITRDF_shop_sample (
in release_id varchar,
in product_id varchar,
in opsys varchar,
in dbms varchar
)
returns varchar .
create iri class opl:lit_wikipedia_to_dbpedia using
function oplweb2.oplweb.LITRDF_wikipedia_to_dbpedia (
in wikipedia_url varchar
)
returns varchar .
create literal class opl:lit_to_string using
function oplweb2.oplweb.LITRDF_to_string (
in _s varchar
)
returns varchar .
create iri class opl:wwwsiteproduct using
function oplweb2.oplweb.wwwsiteproduct_URI (in _id varchar not null) returns varchar,
function oplweb2.oplweb.wwwsiteproduct_URI_INVERSE (in _iri varchar) returns varchar
.
make opl:ProductCategory subclass of opl:ProductFamily .
make opl:Product subclass of opl:ProductCategory .
make opl:Product subclass of opl:ProductFormat .
make opl:ProductRelease subclass of opl:Product .
make opl:Opsys subclass of opl:OpsysFamily .
make opl:DbmsEngine subclass of opl:DbmsFamily .
;
DB.DBA.RDF_AUDIT_METADATA (1, '*');
SPARQL
prefix opl: <http://www.openlinksw.com/schemas/oplweb#>
prefix dc: <http://purl.org/dc/terms#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix oplds: <http://www.openlinksw.com/dataspace/organization/openlink#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix umbel: <http://umbel.org/umbel/sc/>
prefix gr: <http://purl.org/goodrelations/v1#>
alter quad storage virtrdf:DefaultQuadStorage
FROM oplweb2.oplweb.component_archive as component_archive_tbl
FROM oplweb2.oplweb.component_archive_type as component_archive_type_tbl
FROM oplweb2.oplweb.component_category as component_category_tbl text literal component_category_long_description
FROM oplweb2.oplweb.component_mode as component_mode_tbl
FROM oplweb2.oplweb.component_type as component_type_tbl
FROM oplweb2.oplweb.components_for_rdfs as components_tbl
FROM oplweb2.oplweb.dbms_engine as dbms_engine_tbl
FROM oplweb2.oplweb.dbms_family as dbms_family_tbl
FROM oplweb2.oplweb.download_location as download_location_tbl
FROM oplweb2.oplweb.download_protocol as download_protocol_tbl
FROM oplweb2.oplweb.download_partner as download_partner_tbl
FROM oplweb2.oplweb.opsys as opsys_tbl
FROM oplweb2.oplweb.opsys_family as opsys_family_tbl
FROM oplweb2.oplweb.opsys_type as opsys_type_tbl
FROM oplweb2.oplweb.processor_family as processor_family_tbl
FROM oplweb2.oplweb.processor_mode as processor_mode_tbl
FROM oplweb2.oplweb.processors as processors_tbl
FROM oplweb2.oplweb.product as product_tbl text literal long_description
FROM oplweb2.oplweb.product_benefits as product_benefits_tbl text literal product_benefit_explanation
FROM oplweb2.oplweb.product_benefits_category as product_benefits_category_tbl
FROM oplweb2.oplweb.product_category as product_category_tbl
FROM oplweb2.oplweb.product_category_features_with_code as product_category_features_tbl text literal long_description
FROM oplweb2.oplweb.product_family as product_family_tbl
FROM oplweb2.oplweb.product_family as product_family_tbl_2
FROM oplweb2.oplweb.product_family_features_with_code as product_family_features_tbl text literal long_description
FROM oplweb2.oplweb.product_features as product_features_tbl text literal long_description
FROM oplweb2.oplweb.product_feature_category as product_feature_category_tbl text literal description
FROM oplweb2.oplweb.product_format_features_with_code as product_format_features_tbl text literal long_description
FROM oplweb2.oplweb.product_release_features as product_release_features_tbl text literal long_description
FROM oplweb2.oplweb.product_release_with_family as product_release_tbl
FROM oplweb2.oplweb.vendor_category as vendor_category_tbl
FROM oplweb2.oplweb.vendor_category_family as vendor_category_family_tbl
FROM oplweb2.oplweb.vendors as vendors_tbl
FROM oplweb2.oplweb.product_formats_categories as product_formats_categories
FROM oplweb2.oplweb.product_with_code as product_with_code
FROM oplweb2.oplweb.product_category_with_code as product_category_with_code
FROM oplweb2.oplweb.product_format as product_format_with_code
FROM oplweb2.oplweb.product_price as pp
FROM oplweb2.oplweb.product_price_type as pt
FROM oplweb2.DBA.license_model_unit_type as put
FROM oplweb2.DBA.license_model_unit_type as put2
FROM oplweb2.DBA.license_model as lm
FROM oplweb2.DBA.license_model as lm2
FROM oplweb2.DBA.license_model_type as license_model_type_tbl
FROM oplweb2.DBA.product_price_varchar as ppv
FROM oplweb2.DBA.product_general_discount_vc as gd
FROM oplweb2.oplweb.archive_coverage_osdb as ac1
{
create virtrdf:product_portfolio as
graph <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
{
opl:ProductPortfolio(product_family_tbl.product_family_code)
a opl:ProductPortfolio
as virtrdf:OplProductPortfolio .
opl:ProductPortfolio(product_family_tbl.product_family_code) opl:hasProductFamilies
opl:ProductFamily(product_family_tbl.product_family_code)
as virtrdf:OplProductPortfolioProductFamily .
opl:ProductFamily(product_family_tbl.product_family_code)
a opl:ProductFamily
as virtrdf:OplProductFamily ;
rdfs:label product_family_tbl.product_family_description
as virtrdf:rdfsOplProductFamilyDescription ;
foaf:name product_family_tbl.product_family_description
as virtrdf:nameOplProductFamilyDescription ;
foaf:logo opl:lit_openlink_logo(product_family_tbl.product_family_code)
as virtrdf:logoOpenLinkSoftware ;
foaf:homepage opl:lit_homepage(product_family_tbl.product_family_code)
as virtrdf:homepageProductFamily ;
foaf:homepage opl:wwwsitefamily(product_family_tbl.product_family_code)
# where (
# ^{product_family_tbl.}^.product_family_code = 'uda'
# )
as virtrdf:homepageProductFamilyUda ;
foaf:maker oplds:this
as virtrdf:OplDataspaceOpenLinkUri ;
owl:sameAs product_family_tbl.dbpedia_uri
as virtrdf:OplFamilyOwlSameAsDBPediaUri ;
opl:ProductFamilyCode product_family_tbl.product_family_code
as virtrdf:OplProductFamilyCode ;
opl:ProductFamilyDescription product_family_tbl.product_family_description
as virtrdf:OplProductFamilyDescription ;
dc:description opl:lit_to_string(product_family_tbl.long_description)
as virtrdf:OplProductFamilyLongDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy owl: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductCategory(product_category_with_code.product_cat_code)
a opl:ProductCategory
as virtrdf:OplProductCategory ;
a opl:ProductFamily
as virtrdf:OplProductCategorySubClassOfProductFamily ;
rdfs:label product_category_with_code.product_category_description
as virtrdf:rdfsOplProductCategoryDescription ;
foaf:homepage opl:wwwsitecategory(product_category_with_code.product_family_code, product_category_with_code.product_cat_code)
# where (
# ^{product_category_with_code.}^.product_family_code = 'uda'
# )
as virtrdf:homepageProductFamilyCategoryUda ;
opl:ProductCategoryCode product_category_with_code.product_cat_code
as virtrdf:OplProductCategoryCode ;
owl:sameAs product_category_with_code.dbpedia_uri
as virtrdf:OplCategoryOwlSameAsDBPediaUri ;
opl:hasFamily opl:ProductFamily(product_category_with_code.product_family_code)
as virtrdf:OplProductCategoryIsOfFamily ;
opl:ProductCategoryDescription product_category_with_code.product_category_description
as virtrdf:OplProductCategoryDescription ;
dc:description opl:lit_to_string(product_category_with_code.long_description)
as virtrdf:OplProductCategoryLongDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy owl:
.
opl:ProductFormat(product_format_with_code.product_format_code)
a opl:ProductFormat
as virtrdf:OplProductFormat ;
opl:ProductFormatCode product_format_with_code.product_format_code
as virtrdf:OplProductFormatCode ;
rdfs:label product_format_with_code.product_format_description
as virtrdf:rdfsOplProductFormatDescription ;
dc:description product_format_with_code.product_format_description
as virtrdf:OplProductFormatDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs: ;
rdfs:isDefinedBy dc:
.
opl:ProductFormatCategory(product_formats_categories.product_format_code, product_formats_categories.product_cat_code)
a opl:ProductFormatCategory
as virtrdf:OplProductFormatCategory ;
a opl:ProductFormat
as virtrdf:OplProductFormatCategoryProductFormat ;
a opl:ProductCategory
as virtrdf:OplProductFormatCategoryProductCategory ;
foaf:homepage opl:wwwsiteformat(product_category_with_code.product_family_code, product_formats_categories.product_cat_code, product_formats_categories.product_format_code)
where (
^{product_category_with_code.}^.product_cat_code = ^{product_formats_categories.}^.product_cat_code
# and
# ^{product_category_with_code.}^.product_family_code = 'uda'
)
as virtrdf:homepageProductFamilyCategoryFormatUda ;
opl:ProductFormatCode product_formats_categories.product_format_code
as virtrdf:OplProductFormatCategoryFormatCode ;
opl:ProductCategoryCode product_formats_categories.product_cat_code
as virtrdf:OplProductFormatCategoryCategoryCode ;
opl:isProductCategory opl:ProductCategory(product_formats_categories.product_cat_code)
as virtrdf:OplProductFormatCategoryisCategory ;
opl:isProductFormat opl:ProductFormat(product_formats_categories.product_format_code)
as virtrdf:OplProductFormatCategoryisFormat ;
rdfs:label opl:lit_format_cat_label(product_formats_categories.product_format_id, product_formats_categories.product_cat_id)
as virtrdf:rdfsOplProductFormatCategoryDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductCategory(product_category_with_code.product_cat_code) opl:hasProduct
opl:Product(product_with_code.product_id)
where (^{product_with_code.}^.product_cat_id = ^{product_category_with_code.}^.product_cat_id)
as virtrdf:OplProductCategoryIsCategoryOfProduct .
opl:ProductFormat(product_format_with_code.product_format_code) opl:hasProduct
opl:Product(product_with_code.product_id)
where (^{product_with_code.}^.product_format_id = ^{product_format_with_code.}^.product_format_id)
as virtrdf:OplProductFormatIsFormatOfProduct .
opl:ProductFamily(product_family_tbl.product_family_code) opl:hasCategory
opl:ProductCategory(product_category_with_code.product_cat_code)
where (^{product_family_tbl.}^.product_family_id = ^{product_category_with_code.}^.product_family_id)
as virtrdf:OplProductFamilyIsFamilyOfProductCategory .
opl:ProductFamily(product_family_tbl.product_family_code) opl:hasFormat
opl:ProductFormat(product_formats_categories.product_format_code)
where (
^{product_family_tbl.}^.product_family_id = ^{product_formats_categories.}^.product_family_id
)
as virtrdf:OplProductFamilyIsFamilyOfProductFormats .
opl:ProductFamily(product_family_tbl.product_family_code) opl:otherProductFamilies
opl:ProductFamily(product_family_tbl_2.product_family_code)
where (
^{product_family_tbl.}^.product_family_id <> ^{product_family_tbl_2.}^.product_family_id
)
as virtrdf:OplProductFamilyHasOtherProductFamilies .
opl:ProductFormat(product_format_with_code.product_format_code) opl:hasCategory
opl:ProductFormatCategory(product_formats_categories.product_format_code, product_formats_categories.product_cat_code)
where (^{product_formats_categories.}^.product_format_id = ^{product_format_with_code.}^.product_format_id)
as virtrdf:OplProductFormatIsFormatOfProductFormatCategories .
opl:ProductFormatCategory(product_formats_categories.product_format_code, product_formats_categories.product_cat_code)
opl:hasProduct
opl:Product(product_with_code.product_id)
where (
^{product_with_code.}^.product_cat_id = ^{product_formats_categories.}^.product_cat_id
and
^{product_with_code.}^.product_format_id = ^{product_formats_categories.}^.product_format_id
)
as virtrdf:OplProductFormatCategoryIsFormatCategoryOfProduct .
opl:VendorCategoryFamily(vendor_category_family_tbl.vendor_category_family_id)
a opl:VendorCategoryFamily
as virtrdf:OplVendorCategoryFamily ;
opl:VendorCategoryFamilyDescription vendor_category_family_tbl.vendor_category_family_desc
as virtrdf:OplVendorCategoryFamilyDesc .
opl:VendorCategory(vendor_category_tbl.vendor_category_id)
a opl:VendorCategory
as virtrdf:OplVendorCategory ;
a opl:VendorCategoryFamily
as virtrdf:OplVendorCategorySubClassOfVendorCategoryFamily ;
rdfs:label vendor_category_tbl.vendor_category_description
as virtrdf:rdfsOplVendorCategoryDescription ;
opl:VendorCategoryDescription vendor_category_tbl.vendor_category_description
as virtrdf:OplVendorCategoryDescription ;
opl:isVendorCategoryOf opl:VendorCategoryFamily(vendor_category_tbl.vendor_category_family_id)
as virtrdf:OplVendorCategoryIsOfCategoryFamily ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:Vendor(vendors_tbl.vendor_id)
a opl:Vendor
as virtrdf:OplVendor ;
a opl:VendorCategory
as virtrdf:OplVendorSubClassOfVendorCategory ;
rdfs:label vendors_tbl.vendor_name
as virtrdf:rdfsOplVendorsName ;
opl:VendorName vendors_tbl.vendor_name
as virtrdf:OplVendorsName ;
opl:WikipediaPage opl:Uri(vendors_tbl.wikipedia_url)
as virtrdf:OplVendorsWikipediaUrl ;
owl:sameAs opl:lit_wikipedia_to_dbpedia(vendors_tbl.wikipedia_url)
as virtrdf:OplVendorsWikipediaUrlOwlSameAs ;
foaf:homepage opl:Uri(vendors_tbl.vendor_homepage)
as virtrdf:OplFoafVendorHomepage ;
opl:isOfVendorCategory opl:VendorCategory(vendors_tbl.vendor_category_id)
as virtrdf:OplVendorIsOfVendorCategory ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy owl:
.
opl:VendorCategoryFamily(vendor_category_family_tbl.vendor_category_family_id)
opl:hasVendorCategory
opl:VendorCategory(vendor_category_tbl.vendor_category_id)
where (
^{vendor_category_family_tbl.}^.vendor_category_family_id = ^{vendor_category_tbl.}^.vendor_category_family_id
)
as virtrdf:OplVendorCategoryFamilyHasVendorCategory .
opl:VendorCategory(vendor_category_tbl.vendor_category_id)
opl:hasVendorCategory
opl:Vendor(vendors_tbl.vendor_id)
where (
^{vendor_category_tbl.}^.vendor_category_id = ^{vendors_tbl.}^.vendor_category_id
)
as virtrdf:OplVendorCategoryHasVendors .
opl:OpsysFamily(opsys_family_tbl.opsys_family_id)
a opl:OpsysFamily
as virtrdf:OplOpsysFamily ;
rdfs:label opsys_family_tbl.opsys_family_name
as virtrdf:rdfsOplOpsysFamilyName ;
opl:OpsysFamilyName opsys_family_tbl.opsys_family_name
as virtrdf:OplOpsysFamilyName ;
opl:OpsysFamilyLicenseCode opsys_family_tbl.opsys_license_code
as virtrdf:OplOpsysFamilyLicenseCode ;
opl:OpsysFamilyVendor opl:Vendor(opsys_family_tbl.vendor_id)
as virtrdf:OplOpsysFamilyVendor ;
opl:OpsysFamilyRating opsys_family_tbl.rating
as virtrdf:OplOpsysFamilyRating ;
foaf:logo opl:lit_opsys_icon(opsys_family_tbl.opsys_family_id)
as virtrdf:OplLogoOpsysFamily ;
foaf:homepage opl:Uri(opsys_family_tbl.wikipedia_url)
as virtrdf:FoafHomepageOpsysFamilyWikipediaUrl ;
owl:sameAs opl:lit_wikipedia_to_dbpedia(opsys_family_tbl.wikipedia_url)
as virtrdf:FoafHomepageOpsysFamilyPediaUrlOwlSameAs ;
opl:WikipediaPage opl:Uri(opsys_family_tbl.wikipedia_url)
as virtrdf:OplOpsysFamilyWikipediaUrl ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy owl:
.
opl:OpsysFamily(opsys_family_tbl.opsys_family_id) opl:hasOpsys
opl:Opsys(opsys_tbl.opsys_name)
where (^{opsys_tbl.}^.opsys_family_id = ^{opsys_family_tbl.}^.opsys_family_id)
as virtrdf:OplOpsysFamilyIsOpsysFamilyOfOpsys .
opl:DbmsFamily(dbms_family_tbl.dbms_family_id)
a opl:DbmsFamily
as virtrdf:OplDbmsFamily ;
rdfs:label dbms_family_tbl.dbms_family_name
as virtrdf:rdfsOplDbmsFamilyName ;
opl:DbmsFamilyName dbms_family_tbl.dbms_family_name
as virtrdf:OplDbmsFamilyName ;
opl:DbmsFamilyVendor opl:Vendor(dbms_family_tbl.vendor_id)
as virtrdf:OplDbmsFamilyVendor ;
foaf:homepage opl:Uri(dbms_family_tbl.wikipedia_url)
as virtrdf:FoafHomepageDbmsFamilyWikipediaUrl ;
owl:sameAs opl:lit_wikipedia_to_dbpedia(dbms_family_tbl.wikipedia_url)
as virtrdf:OwnSameAsDbmsFamilyPediaUrl ;
opl:WikipediaPage opl:Uri(dbms_family_tbl.wikipedia_url)
as virtrdf:OplDbmsFamilyWikipediaUrl ;
opl:DbmsFamilyRating dbms_family_tbl.rating
as virtrdf:OplDbmsFamilyRating ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy owl:
.
opl:DbmsEngine(dbms_engine_tbl.dbms_name)
a opl:DbmsEngine
as virtrdf:OplDbmsEngine ;
a opl:DbmsFamily
as virtrdf:DbmsEngineSubClassOfDbmsFamily ;
a umbel:RelationalDatabaseServerProgram
as virtrdf:DbmEngineSubClassOfUmbel ;
opl:isOfDbmsFamily opl:DbmsFamily(dbms_engine_tbl.dbms_family_id)
as virtrdf:OplDbmsEngineisOfDbmsFamily ;
rdfs:label dbms_engine_tbl.dbms_name
as virtrdf:rdfsOplLabelDbmsName ;
opl:DbmsEngineVersion dbms_engine_tbl.dbms_version
as virtrdf:OplDbmsEngineVersion ;
opl:DbmsEngineUpwardCompatible dbms_engine_tbl.upward_compatible
as virtrdf:OplDbmsEngineUpwardCompatible ;
opl:DbmsEngineDownwardCompatible dbms_engine_tbl.downward_compatible
as virtrdf:OplDbmsEngineDownwardCompatible ;
opl:DbmsEngineRating dbms_engine_tbl.rating
as virtrdf:OplDbmsEngineRating ;
opl:DbmsEngineOldArchiveCode dbms_engine_tbl.old_archive_code
as virtrdf:OplDbmsEngineOldArchiveCode ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:DbmsFamily(dbms_family_tbl.dbms_family_id)
opl:hasDatabaseVersions
opl:DbmsEngine(dbms_engine_tbl.dbms_name)
where (
^{dbms_family_tbl.}^.dbms_family_id = ^{dbms_engine_tbl.}^.dbms_family_id
)
as virtrdf:OplDbmsFamilyToDbms .
opl:OpsysType(opsys_type_tbl.opsys_type_id)
a opl:OpsysType
as virtrdf:OplOpsysType ;
rdfs:label opsys_type_tbl.opsys_type_description
as virtrdf:rdfsOplOpsysTypeDescription ;
opl:OpsysTypeDescription opsys_type_tbl.opsys_type_description
as virtrdf:OplOpsysTypeDescription ;
opl:OpsysTypeShortDescription opsys_type_tbl.short_description
as virtrdf:OplOpsysTypeShortDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:OpsysType(opsys_type_tbl.opsys_type_id) opl:hasOpsys
opl:Opsys(opsys_tbl.opsys_name)
where (^{opsys_tbl.}^.opsys_type_id = ^{opsys_type_tbl.}^.opsys_type_id)
as virtrdf:OplOpsysTypeIsOpsysTypeOfOpsys .
opl:ProcessorMode(processor_mode_tbl.processor_mode_id)
a opl:ProcessorMode
as virtrdf:OplProcessorMode ;
opl:ProcessorModeName processor_mode_tbl.processor_mode_name
as virtrdf:OplProcessorModeName .
opl:Processor(processors_tbl.processor_name, processors_tbl.processor_mode_id)
a opl:Processor
as virtrdf:OplProcessor ;
opl:ProcessorName processors_tbl.processor_name
as virtrdf:OplProcessorName ;
opl:ProcessorVersion processors_tbl.processor_version
as virtrdf:OplProcessorVersion ;
rdfs:label processors_tbl.processor_description
as virtrdf:rdfsOplProcessorDescription ;
opl:ProcessorDescription processors_tbl.processor_description
as virtrdf:OplProcessorDescription ;
opl:ProcessorMode opl:ProcessorMode(processors_tbl.processor_mode_id)
as virtrdf:OplProcessorProcessorMode ;
opl:isOfProcessorFamily opl:ProcessorFamily(processors_tbl.processor_family_id)
as virtrdf:OplProcessorIsOfProcessorFamily ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ProcessorFamily(processor_family_tbl.processor_family_id)
a opl:ProcessorFamily
as virtrdf:OplProcessorFamily ;
opl:ProcessorFamilyName processor_family_tbl.processor_family_name
as virtrdf:OplProcessorFamilyName ;
opl:ProcessorFamilyVendor opl:Vendor(processor_family_tbl.vendor_id)
as virtrdf:OplProcessorFamilyVendor ;
foaf:homepage opl:Uri(processor_family_tbl.wikipedia_url)
as virtrdf:FoafHomepageProcessorFamilyWikipediaUrl ;
owl:sameAs opl:lit_wikipedia_to_dbpedia(processor_family_tbl.wikipedia_url)
as virtrdf:OwlSameAsProcessorFamilyPediaUrl ;
opl:WikipediaPage opl:Uri(processor_family_tbl.wikipedia_url)
as virtrdf:OplProcessorFamilyWikipediaUrl ;
rdfs:label processor_family_tbl.processor_family_description
as virtrdf:rdfsOplProcessorFamilyDescription ;
opl:ProcessorFamilyDescription processor_family_tbl.processor_family_description
as virtrdf:OplProcessorFamilyDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy owl: ;
rdfs:isDefinedBy rdfs:
.
opl:Opsys(opsys_tbl.opsys_name)
a opl:Opsys
as virtrdf:OplOpsys ;
a opl:OpsysFamily
as virtrdf:OpsysSubClassOfOplOpsysFamily ;
a umbel:OperatingSystem
as virtrdf:OpsysSubClassOfUmbelOpsys ;
opl:OpsysVersion opsys_tbl.opsys_version
as virtrdf:OplOpsysVersion ;
opl:OpsysUpwardCompatible opsys_tbl.upward_compatible
as virtrdf:OplOpsysUpwardCompatible ;
opl:OpsysDownwardCompatible opsys_tbl.downward_compatible
as virtrdf:OplOpsysDownwardCompatible ;
opl:OpsysSupported opsys_tbl.supported
as virtrdf:OplOpsysSupported ;
opl:OpsysLicenseCode opsys_tbl.opsys_license_code
as virtrdf:OplOpsysLicenseCode ;
rdfs:label opsys_tbl.commercial_name
as virtrdf:rdfsOplOpsysCommercialName ;
opl:OpsysCommercialName opsys_tbl.commercial_name
as virtrdf:OplOpsysCommercialName ;
opl:OpsysEmulationMode opl:ProcessorMode(opsys_tbl.emulation_mode_id)
as virtrdf:OplOpsysEmulationMode ;
opl:OpsysProcessor opl:Processor(opsys_tbl.processor_name, opsys_tbl.processor_mode_id)
as virtrdf:OplOpsysProcessor ;
opl:isOfOpsysFamily opl:OpsysFamily(opsys_tbl.opsys_family_id)
as virtrdf:OplOpsysIsOfOpsysFamily ;
opl:isOfOpsysType opl:OpsysType(opsys_tbl.opsys_type_id)
as virtrdf:OplOpsysIsOfOpsysType ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:Product(product_with_code.product_id)
a opl:Product
as virtrdf:OplProduct ;
a opl:ProductFormat
as virtrdf:ProductSubClassOfProductFormat ;
a opl:ProductCategory
as virtrdf:ProductSubClassOfProductCategory ;
a opl:ProductFormatCategory
as virtrdf:OplProductProductFormatCategory ;
rdfs:label product_with_code.poduct_description
as virtrdf:rdfsOplProductDescription ;
foaf:homepage opl:wwwsiteproduct(product_with_code.product_id)
as virtrdf:homepageProductFamilyCategoryFormatProductUda ;
opl:ProductDescription product_with_code.poduct_description
as virtrdf:OplProductDescription ;
dc:description opl:lit_to_string(product_with_code.long_description)
as virtrdf:OplProductLongDescription ;
opl:isOfCategory opl:ProductCategory(product_with_code.product_cat_code)
as virtrdf:OplProductIsOfCategory ;
opl:isOfFormat opl:ProductFormat(product_with_code.product_format_code)
as virtrdf:OplProductIsOfFormat ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy foaf: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy rdfs:
.
opl:Product(product_with_code.product_id) opl:hasProductRelease
opl:ProductRelease(
product_release_tbl.product_id,
product_release_tbl.product_release_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
)
where (^{product_with_code.}^.product_id = ^{product_release_tbl.}^.product_id)
as virtrdf:OplProductIsProductOfProductRelease .
opl:ProductRelease(
product_release_tbl.product_id,
product_release_tbl.product_release_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
)
a opl:ProductRelease
as virtrdf:OplProductRelease ;
a opl:Product
as virtrdf:OplProductReleaseSubClassProduct ;
a gr:ProductOrService
as virtrdf:OplProductReleaseAgrProductOrService ;
rdfs:label opl:lit_product_release_label(
product_release_tbl.product_id,
product_release_tbl.product_release_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
)
as virtrdf:rdfsOplProductReleaseProductReleaseId ;
opl:ProductReleaseProductReleaseId product_release_tbl.product_release_id
as virtrdf:OplProductReleaseProductReleaseId ;
opl:isOfProduct opl:Product(product_release_tbl.product_id)
as virtrdf:OplProductReleaseIsOfProduct ;
opl:isForOpsys opl:Opsys(product_release_tbl.opsys_name)
as virtrdf:OplProductReleaseIsForOpsys ;
opl:isForDbmsEngine opl:DbmsEngine(product_release_tbl.dbms_name)
as virtrdf:OplProductReleaseIsForDbmsEngine ;
opl:UpwardCompatible product_release_tbl.upward_compatible
as virtrdf:OplProductReleaseUpwardCompatible ;
opl:DownwardCompatible product_release_tbl.downward_compatible
as virtrdf:OplProductReleaseDownwardCompatible ;
opl:PurchaseInShop opl:lit_to_shop (
product_release_tbl.product_release_id,
product_release_tbl.product_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
)
as virtrdf:OplProductReleaseToShop ;
gr:hasBusinessFunction gr:Sell as virtrdf:grbusinessfunctionsell;
opl:Supported product_release_tbl.supported
as virtrdf:OplProductReleaseSupported ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy gr:
.
opl:ProductRelease(
product_release_tbl.product_id,
product_release_tbl.product_release_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
) opl:hasComponentArchive
opl:ComponentArchive(component_archive_tbl.component_archive_name)
where (
^{product_release_tbl.}^.product_id = ^{component_archive_tbl.}^.product_id and
^{product_release_tbl.}^.product_release_id = ^{component_archive_tbl.}^.product_release_id and
^{product_release_tbl.}^.opsys_name = ^{component_archive_tbl.}^.opsys_name and
^{product_release_tbl.}^.dbms_name = ^{component_archive_tbl.}^.dbms_name
)
as virtrdf:OplProductReleaseIsProductReleaseOfComponentArchive .
opl:Component(components_tbl.component_name)
a opl:Component
as virtrdf:OplComponent ;
opl:isOfComponentCategory opl:ComponentCategory(components_tbl.component_category_id)
as virtrdf:OplComponentIsOfComponentCategory ;
opl:isOfComponentType opl:ComponentType(components_tbl.component_type_id)
as virtrdf:OplComponentIsOfComponentType ;
opl:isOfComponentMode opl:ComponentMode(components_tbl.component_mode_id)
as virtrdf:OplComponentIsOfComponentMode ;
opl:isForOpsys opl:Opsys(components_tbl.opsys_name)
as virtrdf:OplComponentIsForOpsys ;
opl:isForDbmsEngine opl:DbmsEngine(components_tbl.dbms_name)
as virtrdf:OplComponentIsForDbmsEngine ;
opl:ComponentCvsid components_tbl.component_cvsid
as virtrdf:OplComponentComponentCvsId ;
opl:ComponentBuildDate components_tbl.component_build_date
as virtrdf:OplComponentComponentBuildDate ;
opl:Notes components_tbl.notes
as virtrdf:OplComponentNotes ;
opl:BuildComments components_tbl.build_comments
as virtrdf:OplComponentBuildComments ;
opl:Filesize components_tbl.str_filesize
as virtrdf:OplComponentFilesize ;
rdfs:isDefinedBy opl:
.
opl:DbmsEngine (dbms_engine_tbl.dbms_name) opl:hasComponents
opl:Component(components_tbl.component_name)
where (^{components_tbl.}^.dbms_name = ^{dbms_engine_tbl.}^.dbms_name)
as virtrdf:OplDbmsEngineForComponents .
opl:Opsys (opsys_tbl.opsys_name) opl:hasComponents
opl:Component(components_tbl.component_name)
where (^{components_tbl.}^.opsys_name = ^{opsys_tbl.}^.opsys_name)
as virtrdf:OplOpsysForComponents .
opl:ComponentMode(component_mode_tbl.component_mode_id)
a opl:ComponentMode
as virtrdf:OplComponentMode ;
rdfs:label component_mode_tbl.component_mode_description
as virtrdf:rdfsOplComponentModeDescription ;
opl:ComponentModeDescription component_mode_tbl.component_mode_description
as virtrdf:OplComponentModeDescription ;
opl:ComponentModeShortDescription component_mode_tbl.short_description
as virtrdf:OplComponentModeShortDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ComponentType(component_type_tbl.component_type_id)
a opl:ComponentType
as virtrdf:OplComponentType ;
rdfs:label component_type_tbl.component_type_description
as virtrdf:rdfsOplComponentTypeDescription ;
opl:ComponentTypeDescription component_type_tbl.component_type_description
as virtrdf:OplComponentTypeDescription ;
opl:ComponentTypeShortDescription component_type_tbl.short_description
as virtrdf:OplComponentTypeShortDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ComponentCategory(component_category_tbl.component_category_id)
a opl:ComponentCategory
as virtrdf:OplComponentCategory ;
rdfs:label component_category_tbl.component_category_description
as virtrdf:rdfsOplComponentCategoryDescription ;
opl:ComponentCategoryDescription component_category_tbl.component_category_description
as virtrdf:OplComponentCategoryDescription ;
opl:ComponentCategoryShortDescription component_category_tbl.short_description
as virtrdf:OplComponentCategoryShortDescription ;
dc:description opl:lit_to_string(component_category_tbl.component_category_long_description)
as virtrdf:OplComponentCategoryLongDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ComponentArchive(component_archive_tbl.component_archive_name)
a opl:ComponentArchive
as virtrdf:OplComponentArchive ;
a opl:Component
as virtrdf:ComponentArchiveSubClassOfComponent ;
opl:ComponentArchiveName component_archive_tbl.component_archive_name
as virtrdf:OplComponentArchiveComponentArchiveName ;
rdfs:label component_archive_tbl.component_archive_name
as virtrdf:rdfsComponentArchiveComponentArchiveName ;
opl:ComponentArchiveType opl:ComponentArchiveType(component_archive_tbl.component_archive_type_id)
as virtrdf:ComponentArchiveComponentArchiveType ;
opl:isOfComponent opl:Component(component_archive_tbl.component_name)
as virtrdf:OplComponentArchiveIsOfComponent ;
opl:isOfProductRelease opl:ProductRelease(
component_archive_tbl.product_id,
component_archive_tbl.product_release_id,
component_archive_tbl.opsys_name,
component_archive_tbl.dbms_name
)
as virtrdf:OplComponentArchiveIsOfProductRelease ;
opl:AssemblyDate component_archive_tbl.assembly_date
as virtrdf:OplComponentArchiveAssemblyDate ;
opl:FileUri component_archive_tbl.file_uri
as virtrdf:OplComponentArchiveFileUri ;
opl:LicenseCode component_archive_tbl.license_code
as virtrdf:OplComponentArchiveLicenseCode ;
opl:ResFullPath component_archive_tbl.res_full_path
as virtrdf:OplComponentArchiveResFullPath ;
opl:ResName component_archive_tbl.res_name
as virtrdf:OplComponentArchiveResName ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ComponentArchiveType(component_archive_type_tbl.component_archive_type_id)
a opl:ComponentArchiveType
as virtrdf:OplComponentArchiveType ;
opl:ComponentArchiveShortName component_archive_type_tbl.component_archive_short_name
as virtrdf:OplComponentArchiveTypeComponentArchiveShortName ;
rdfs:label component_archive_type_tbl.component_archive_type_name
as virtrdf:rdfsOplComponentArchiveTypeComponentArchiveTypeName ;
opl:ComponentArchiveTypeName component_archive_type_tbl.component_archive_type_name
as virtrdf:OplComponentArchiveTypeComponentArchiveTypeName ;
opl:Extension component_archive_type_tbl.extension
as virtrdf:OplComponentArchiveTypeExtension ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:DownloadLocation(download_location_tbl.uri)
a opl:DownloadLocation
as virtrdf:OplDownloadLocation ;
opl:isOfComponentArchive opl:ComponentArchive(download_location_tbl.component_archive_name)
as virtrdf:OplDownloadLocationIsOfComponentArchive ;
opl:hasDownloadProtocol opl:DownloadProtocol(download_location_tbl.protocol_name)
as virtrdf:DownloadLocationHasProtocolName ;
rdfs:label download_location_tbl.uri_old
as virtrdf:rdfsOplDownloadLocationLabel ;
opl:isOfProductRelease opl:ProductRelease(
download_location_tbl.product_id,
download_location_tbl.product_release_id,
download_location_tbl.opsys_name,
download_location_tbl.dbms_name
)
as virtrdf:OplDownloadLocationIsOfProductRelease ;
opl:Uri download_location_tbl.uri
as virtrdf:OplDownloadLocationUri ;
opl:UriOld download_location_tbl.uri_old
as virtrdf:OplDownloadLocationUriOld ;
opl:hasDownloadPartner opl:DownloadPartner(
download_location_tbl.host_name,
download_location_tbl.domain_name
)
as virtrdf:OplDownloadLocationHasDownloadPartner ;
opl:DomainName download_location_tbl.domain_name
as virtrdf:OplDownloadLocationDomainName ;
opl:HostName download_location_tbl.host_name
as virtrdf:OplDownloadLocationHostName ;
opl:ResName download_location_tbl.res_name
as virtrdf:OplDownloadLocationResName ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:DownloadProtocol(download_protocol_tbl.protocol_name)
a opl:DownloadProtocol
as virtrdf:OplDownloadProtocolProtocolName ;
opl:ProtocolDescription download_protocol_tbl.protocol_description
as virtrdf:OplDownloadProtocolProtocolDescription .
opl:DownloadPartner(
download_partner_tbl.host_name,
download_partner_tbl.domain_name
)
a opl:DownloadPartner
as virtrdf:OplDownloadPartner;
rdfs:label download_partner_tbl.partner_name
as virtrdf:rdfsOplDownloadPartnerPartnerNamelabel ;
opl:DownloadPartner download_partner_tbl.partner_name
as virtrdf:OplDownloadPartnerPartnerName ;
opl:PortNumber download_partner_tbl.port_number
as virtrdf:OplDownloadPartnerPortNumber ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ComponentArchive(component_archive_tbl.component_archive_name)
opl:hasDownloadLocation
opl:DownloadLocation(download_location_tbl.uri)
where (
^{component_archive_tbl.}^.component_archive_name = ^{download_location_tbl.}^.component_archive_name
)
as virtrdf:OplComponentArchiveIsComponentArchiveOfDownloadLocation .
opl:DownloadLocation(download_location_tbl.uri)
opl:isDownloadLocationOf
opl:ComponentArchive(component_archive_tbl.component_archive_name)
where (
^{download_location_tbl.}^.component_archive_name = ^{component_archive_tbl.}^.component_archive_name
)
as virtrdf:OplDownloadLocationIsDownloadLocationOfComponentArchive .
#
# Extra Peripheral family/cat/format/etc... to/from... dbfamily/opsysfamily/....
# ==================================================================================
# ---------------------> product_family
# opl:ProductFamily(product_family_tbl.product_family_code)
# opl:OperatingSystems
# opl:Opsys(ac1.opsys_name)
# where (
# ^{product_family_tbl.}^.product_family_code = ^{ac1.}^.product_family_code
# )
# as virtrdf:OplProductFamilyToOpsys .
opl:ProductFamily(product_family_tbl.product_family_code)
opl:OperatingSystemsFamilies
opl:OpsysFamily(ac1.opsys_family_id)
where (
^{product_family_tbl.}^.product_family_code = ^{ac1.}^.product_family_code
)
as virtrdf:OplProductFamilyToOpsysFamily .
# opl:ProductFamily(product_family_tbl.product_family_code)
# opl:Databases
# opl:DbmsEngine(ac1.dbms_name)
# where (
# ^{product_family_tbl.}^.product_family_code = ^{ac1.}^.product_family_code
# )
# as virtrdf:OplProductFamilyToDbms .
opl:ProductFamily(product_family_tbl.product_family_code)
opl:DatabaseFamilies
opl:DbmsFamily(ac1.dbms_family_id)
where (
^{product_family_tbl.}^.product_family_code = ^{ac1.}^.product_family_code
)
as virtrdf:OplProductFamilyToDbmsFamily .
# opl:ProductFamily(product_family_tbl.product_family_code)
# opl:Processors
# opl:Processor(ac1.processor_name, ac1.processor_mode_id)
# where (
# ^{product_family_tbl.}^.product_family_code = ^{ac1.}^.product_family_code
# )
# as virtrdf:OplProductFamilyToProcessor .
opl:ProductFamily(product_family_tbl.product_family_code)
opl:ProcessorFamilies
opl:ProcessorFamily(ac1.processor_family_id)
where (
^{product_family_tbl.}^.product_family_code = ^{ac1.}^.product_family_code
)
as virtrdf:OplProductFamilyToProcessorFamily .
# ---------------------> product_format
# opl:ProductFormat(product_format_with_code.product_format_code)
# opl:OperatingSystems
# opl:Opsys(ac1.opsys_name)
# where (
# ^{product_format_with_code.}^.product_format_code = ^{ac1.}^.product_format_code
# )
# as virtrdf:OplProductFormatToOpsys .
opl:ProductFormat(product_format_with_code.product_format_code)
opl:OperatingSystemsFamilies
opl:OpsysFamily(ac1.opsys_family_id)
where (
^{product_format_with_code.}^.product_format_code = ^{ac1.}^.product_format_code
)
as virtrdf:OplProductFormatToOpsysFamily .
# opl:ProductFormat(product_format_with_code.product_format_code)
# opl:Databases
# opl:DbmsEngine(ac1.dbms_name)
# where (
# ^{product_format_with_code.}^.product_format_code = ^{ac1.}^.product_format_code
# )
# as virtrdf:OplProductFormatToDbms .
opl:ProductFormat(product_format_with_code.product_format_code)
opl:DatabaseFamilies
opl:DbmsFamily(ac1.dbms_family_id)
where (
^{product_format_with_code.}^.product_format_code = ^{ac1.}^.product_format_code
)
as virtrdf:OplProductFormatToDbmsFamily .
opl:ProductFormat(product_format_with_code.product_format_code)
opl:Processors
opl:Processor(ac1.processor_name, ac1.processor_mode_id)
where (
^{product_format_with_code.}^.product_format_code = ^{ac1.}^.product_format_code
)
as virtrdf:OplProductFormatToProcessor .
opl:ProductFormat(product_format_with_code.product_format_code)
opl:ProcessorFamilies
opl:ProcessorFamily(ac1.processor_family_id)
where (
^{product_format_with_code.}^.product_format_code = ^{ac1.}^.product_format_code
)
as virtrdf:OplProductFormatToProcessorFamily .
# ---------------------> product_category
# opl:ProductCategory(product_category_with_code.product_cat_code)
# opl:OperatingSystems
# opl:Opsys(ac1.opsys_name)
# where (
# ^{product_category_with_code.}^.product_cat_code = ^{ac1.}^.product_cat_code
# )
# as virtrdf:OplProductCatToOpsys .
opl:ProductCategory(product_category_with_code.product_cat_code)
opl:OperatingSystemsFamilies
opl:OpsysFamily(ac1.opsys_family_id)
where (
^{product_category_with_code.}^.product_cat_code = ^{ac1.}^.product_cat_code
)
as virtrdf:OplProductCatToOpsysFamily .
# opl:ProductCategory(product_category_with_code.product_cat_code)
# opl:Databases
# opl:DbmsEngine(ac1.dbms_name)
# where (
# ^{product_category_with_code.}^.product_cat_code = ^{ac1.}^.product_cat_code
# )
# as virtrdf:OplProductCatToDbms .
opl:ProductCategory(product_category_with_code.product_cat_code)
opl:DatabaseFamilies
opl:DbmsFamily(ac1.dbms_family_id)
where (
^{product_category_with_code.}^.product_cat_code = ^{ac1.}^.product_cat_code
)
as virtrdf:OplProductCatToDbmsFamily .
# opl:ProductCategory(product_category_with_code.product_cat_code)
# opl:Processors
# opl:Processor(ac1.processor_name, ac1.processor_mode_id)
# where (
# ^{product_category_with_code.}^.product_cat_code = ^{ac1.}^.product_cat_code
# )
# as virtrdf:OplProductCatToProcessor .
opl:ProductCategory(product_category_with_code.product_cat_code)
opl:ProcessorFamilies
opl:ProcessorFamily(ac1.processor_family_id)
where (
^{product_category_with_code.}^.product_cat_code = ^{ac1.}^.product_cat_code
)
as virtrdf:OplProductCatToProcessorFamily .
# ---------------------> product
opl:Product(product_with_code.product_id)
opl:OperatingSystems
opl:Opsys(ac1.opsys_name)
where (
^{product_with_code.}^.product_id = ^{ac1.}^.product_id
)
as virtrdf:OplProductToOpsys .
opl:Product(product_with_code.product_id)
opl:OperatingSystemsFamilies
opl:OpsysFamily(ac1.opsys_family_id)
where (
^{product_with_code.}^.product_id = ^{ac1.}^.product_id
)
as virtrdf:OplProductToOpsysFamily .
opl:Product(product_with_code.product_id)
opl:Databases
opl:DbmsEngine(ac1.dbms_name)
where (
^{product_with_code.}^.product_id = ^{ac1.}^.product_id
)
as virtrdf:OplProductToDbms .
opl:Product(product_with_code.product_id)
opl:DatabaseFamilies
opl:DbmsFamily(ac1.dbms_family_id)
where (
^{product_with_code.}^.product_id = ^{ac1.}^.product_id
)
as virtrdf:OplProductToDbmsFamily .
opl:Product(product_with_code.product_id)
opl:Processors
opl:Processor(ac1.processor_name, ac1.processor_mode_id)
where (
^{product_with_code.}^.product_id = ^{ac1.}^.product_id
)
as virtrdf:OplProductToProcessor .
opl:Product(product_with_code.product_id)
opl:ProcessorFamilies
opl:ProcessorFamily(ac1.processor_family_id)
where (
^{product_with_code.}^.product_id = ^{ac1.}^.product_id
)
as virtrdf:OplProductToProcessorFamily .
# ---------------------> to product
opl:Opsys(opsys_tbl.opsys_name)
opl:hasProducts
opl:Product(ac1.product_id)
where (
^{opsys_tbl.}^.opsys_name = ^{ac1.}^.opsys_name
)
as virtrdf:OplOpsysToProduct .
opl:OpsysFamily(opsys_family_tbl.opsys_family_id)
opl:hasProducts
opl:Product(ac1.product_id)
where (
^{opsys_family_tbl.}^.opsys_family_id = ^{ac1.}^.opsys_family_id
)
as virtrdf:OplOpsysFamilyToProduct .
opl:DbmsEngine(dbms_engine_tbl.dbms_name)
opl:hasProducts
opl:Product(ac1.product_id)
where (
^{dbms_engine_tbl.}^.dbms_name = ^{ac1.}^.dbms_name
)
as virtrdf:OplDbmsToProduct .
opl:DbmsFamily(dbms_family_tbl.dbms_family_id)
opl:hasProducts
opl:Product(ac1.product_id)
where (
^{dbms_family_tbl.}^.dbms_family_id = ^{ac1.}^.dbms_family_id
)
as virtrdf:OplDbmsFamilyToProduct .
opl:Processor(processors_tbl.processor_name, processors_tbl.processor_mode_id)
opl:hasProducts
opl:Product(ac1.product_id)
where (
^{processors_tbl.}^.processor_name = ^{ac1.}^.processor_name
and
^{processors_tbl.}^.processor_mode_id = ^{ac1.}^.processor_mode_id
)
as virtrdf:OplProcessorToProduct .
opl:ProcessorFamily(processor_family_tbl.processor_family_id)
opl:hasProducts
opl:Product(ac1.product_id)
where (
^{processor_family_tbl.}^.processor_family_id = ^{ac1.}^.processor_family_id
)
as virtrdf:OplProcessorFamilyProduct .
# ---------------------> to product_cat
# opl:Opsys(opsys_tbl.opsys_name)
# opl:hasProductCategory
# opl:ProductCategory(ac1.product_cat_code)
# where (
# ^{opsys_tbl.}^.opsys_name = ^{ac1.}^.opsys_name
# )
# as virtrdf:OplOpsysToProductCategory .
opl:OpsysFamily(opsys_family_tbl.opsys_family_id)
opl:hasProductCategory
opl:ProductCategory(ac1.product_cat_code)
where (
^{opsys_family_tbl.}^.opsys_family_id = ^{ac1.}^.opsys_family_id
)
as virtrdf:OplOpsysFamilyToProductCategory .
# opl:DbmsEngine(dbms_engine_tbl.dbms_name)
# opl:hasProductCategory
# opl:ProductCategory(ac1.product_cat_code)
# where (
# ^{dbms_engine_tbl.}^.dbms_name = ^{ac1.}^.dbms_name
# )
# as virtrdf:OplDbmsToProductCategory .
opl:DbmsFamily(dbms_family_tbl.dbms_family_id)
opl:hasProductCategory
opl:ProductCategory(ac1.product_cat_code)
where (
^{dbms_family_tbl.}^.dbms_family_id = ^{ac1.}^.dbms_family_id
)
as virtrdf:OplDbmsFamilyToProductCategory .
# opl:Processor(processors_tbl.processor_name, processors_tbl.processor_mode_id)
# opl:hasProductCategory
# opl:ProductCategory(ac1.product_cat_code)
# where (
# ^{processors_tbl.}^.processor_name = ^{ac1.}^.processor_name
# and
# ^{processors_tbl.}^.processor_mode_id = ^{ac1.}^.processor_mode_id
# )
# as virtrdf:OplProcessorToProductCategory .
opl:ProcessorFamily(processor_family_tbl.processor_family_id)
opl:hasProductCategory
opl:ProductCategory(ac1.product_cat_code)
where (
^{processor_family_tbl.}^.processor_family_id = ^{ac1.}^.processor_family_id
)
as virtrdf:OplProcessorFamilyProductCategory .
# ---------------------> to product_format
# opl:Opsys(opsys_tbl.opsys_name)
# opl:hasProductFormat
# opl:ProductFormat(ac1.product_format_code)
# where (
# ^{opsys_tbl.}^.opsys_name = ^{ac1.}^.opsys_name
# )
# as virtrdf:OplOpsysToProductFormat .
opl:OpsysFamily(opsys_family_tbl.opsys_family_id)
opl:hasProductFormat
opl:ProductFormat(ac1.product_format_code)
where (
^{opsys_family_tbl.}^.opsys_family_id = ^{ac1.}^.opsys_family_id
)
as virtrdf:OplOpsysFamilyToProductFormat .
# opl:DbmsEngine(dbms_engine_tbl.dbms_name)
# opl:hasProductFormat
# opl:ProductFormat(ac1.product_format_code)
# where (
# ^{dbms_engine_tbl.}^.dbms_name = ^{ac1.}^.dbms_name
# )
# as virtrdf:OplDbmsToProductFormat .
opl:DbmsFamily(dbms_family_tbl.dbms_family_id)
opl:hasProductFormat
opl:ProductFormat(ac1.product_format_code)
where (
^{dbms_family_tbl.}^.dbms_family_id = ^{ac1.}^.dbms_family_id
)
as virtrdf:OplDbmsFamilyToProductFormat .
# opl:Processor(processors_tbl.processor_name, processors_tbl.processor_mode_id)
# opl:hasProductFormat
# opl:ProductFormat(ac1.product_format_code)
# where (
# ^{processors_tbl.}^.processor_name = ^{ac1.}^.processor_name
# and
# ^{processors_tbl.}^.processor_mode_id = ^{ac1.}^.processor_mode_id
# )
# as virtrdf:OplProcessorToProductFormat .
opl:ProcessorFamily(processor_family_tbl.processor_family_id)
opl:hasProductFormat
opl:ProductFormat(ac1.product_format_code)
where (
^{processor_family_tbl.}^.processor_family_id = ^{ac1.}^.processor_family_id
)
as virtrdf:OplProcessorFamilyProductFormat .
# ---------------------> to product_family
# opl:Opsys(opsys_tbl.opsys_name)
# opl:hasProductFamily
# opl:ProductFamily(ac1.product_family_code)
# where (
# ^{opsys_tbl.}^.opsys_name = ^{ac1.}^.opsys_name
# )
# as virtrdf:OplOpsysToProductFamily .
opl:OpsysFamily(opsys_family_tbl.opsys_family_id)
opl:hasProductFamily
opl:ProductFamily(ac1.product_family_code)
where (
^{opsys_family_tbl.}^.opsys_family_id = ^{ac1.}^.opsys_family_id
)
as virtrdf:OplOpsysFamilyToProductFamily .
# opl:DbmsEngine(dbms_engine_tbl.dbms_name)
# opl:hasProductFamily
# opl:ProductFamily(ac1.product_family_code)
# where (
# ^{dbms_engine_tbl.}^.dbms_name = ^{ac1.}^.dbms_name
# )
# as virtrdf:OplDbmsToProductFamily .
opl:DbmsFamily(dbms_family_tbl.dbms_family_id)
opl:hasProductFamily
opl:ProductFamily(ac1.product_family_code)
where (
^{dbms_family_tbl.}^.dbms_family_id = ^{ac1.}^.dbms_family_id
)
as virtrdf:OplDbmsFamilyToProductFamily .
# opl:Processor(processors_tbl.processor_name, processors_tbl.processor_mode_id)
# opl:hasProductFamily
# opl:ProductFamily(ac1.product_family_code)
# where (
# ^{processors_tbl.}^.processor_name = ^{ac1.}^.processor_name
# and
# ^{processors_tbl.}^.processor_mode_id = ^{ac1.}^.processor_mode_id
# )
# as virtrdf:OplProcessorToProductFamily .
opl:ProcessorFamily(processor_family_tbl.processor_family_id)
opl:hasProductFamily
opl:ProductFamily(ac1.product_family_code)
where (
^{processor_family_tbl.}^.processor_family_id = ^{ac1.}^.processor_family_id
)
as virtrdf:OplProcessorFamilyProductFamily .
#
# Product Benefits and things
# =========================================
opl:ProductBenefit(product_benefits_tbl.product_benefit_id)
a opl:ProductBenefit
as virtrdf:OplProductBenefit ;
rdfs:label product_benefits_tbl.product_benefit_desc
as virtrdf:rdfsLabelProductBenefitDescription ;
opl:isOfProductBenefitCategory opl:ProductBenefitCategory(product_benefits_tbl.product_benefit_category_id)
as virtrdf:OplProductBenefitIsOfProductBenefitCategory ;
opl:Description product_benefits_tbl.product_benefit_desc
as virtrdf:OplProductBenefitDescription ;
opl:Acronym product_benefits_tbl.product_benefit_acronym
as virtrdf:OplProductBenefitAcronym ;
opl:Explanation product_benefits_tbl.product_benefit_explanation
as virtrdf:OplProductBenefitExplanation ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductBenefitCategory(product_benefits_category_tbl.product_benefit_category_id)
a opl:ProductBenefitCategory
as virtrdf:OplProductBenefitCategory ;
rdfs:label product_benefits_category_tbl.description
as virtrdf:rdfsLabelProductBenefitCategoryDescription ;
opl:Description product_benefits_category_tbl.description
as virtrdf:OplProductBenefitCategoryDescription ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductFeatureCategory(product_feature_category_tbl.product_feature_category_id)
a opl:ProductFeatureCategory
as virtrdf:OplProductFeatureCategory ;
rdfs:label product_feature_category_tbl.short_desc
as virtrdf:rdfsLabelProductFeatureCategoryShortDescription ;
opl:ShortDescription product_feature_category_tbl.short_desc
as virtrdf:OplProductFeatureCategoryShortDescription ;
opl:Description product_feature_category_tbl.description
as virtrdf:OplProductFeatureCategoryDescription ;
opl:StandardsId product_feature_category_tbl.standards_id
as virtrdf:OplProductFeatureCategoryStandardsId ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductFeature(product_features_tbl.product_feature_id)
a opl:ProductFeature
as virtrdf:OplProductFeature ;
rdfs:label product_features_tbl.short_description
as virtrdf:rdfsLabelProductFeaturesShortDescription ;
opl:Description product_features_tbl.short_description
as virtrdf:OplProductFeaturesShortDescription ;
dc:description opl:lit_to_string(product_features_tbl.long_description)
as virtrdf:OplProductFeaturesLongDescription ;
opl:isOfProductBenefit opl:ProductBenefit(product_features_tbl.product_feature_benefit_id)
as virtrdf:ProductFeaturesIsOfProductBenefit ;
opl:isOfProductFeatureCategory opl:ProductFeatureCategory(product_features_tbl.product_feature_category_id)
as virtrdf:ProductFeaturesIsOfProductFeatureCategory ;
opl:isOfProduct opl:Product(product_features_tbl.product_id)
as virtrdf:ProductFeaturesIsOfProduct ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy rdfs:
.
opl:Product(product_with_code.product_id)
opl:hasFeature
opl:ProductFeature(product_features_tbl.product_feature_id)
where (
^{product_with_code.}^.product_id = ^{product_features_tbl.}^.product_id
)
as virtrdf:OplProductHasProductFeaturesProductFeatures .
opl:ProductFeature(product_features_tbl.product_feature_id)
opl:isFeatureOf
opl:Product(product_with_code.product_id)
where (
^{product_with_code.}^.product_id = ^{product_features_tbl.}^.product_id
)
as virtrdf:OplProductFeaturesAreProductFeaturesProduct .
opl:ProductFamilyFeature(product_family_features_tbl.product_family_feature_id)
a opl:ProductFamilyFeature
as virtrdf:OplProductFamilyFeature ;
rdfs:label product_family_features_tbl.short_description
as virtrdf:rdfsLabelProductFamilyFeaturesShortDescription ;
opl:Description product_family_features_tbl.short_description
as virtrdf:OplProductFamilyFeaturesShortDescription ;
dc:description opl:lit_to_string(product_family_features_tbl.long_description)
as virtrdf:OplProductFamilyFeaturesLongDescription ;
opl:isOfProductBenefit opl:ProductBenefit(product_family_features_tbl.product_family_feature_benefit_id)
as virtrdf:ProductFamilyFeaturesIsOfProductBenefit ;
opl:isOfProductFeatureCategory opl:ProductFeatureCategory(product_family_features_tbl.product_family_feature_cat_id)
as virtrdf:ProductFamilyFeaturesIsOfProductFeatureCategory ;
opl:isOfProductFamily opl:ProductFamily(product_family_features_tbl.product_family_code)
as virtrdf:ProductFamilyFeaturesIsOfProductFamily ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductFamily(product_family_tbl.product_family_code)
opl:hasFeature
opl:ProductFamilyFeature(product_family_features_tbl.product_family_feature_id)
where (
^{product_family_tbl.}^.product_family_id = ^{product_family_features_tbl.}^.product_family_id
)
as virtrdf:OplProductFamilyHasProductFamilyFeaturesProductFamilyFeatures .
opl:ProductFamilyFeature(product_family_features_tbl.product_family_feature_id)
opl:isFeatureOf
opl:Product(product_family_tbl.product_family_code)
where (
^{product_family_tbl.}^.product_family_id = ^{product_family_features_tbl.}^.product_family_id
)
as virtrdf:OplProductFamilyFeaturesAreProductFamilyFeaturesProductFamily .
opl:ProductFormatFeature(product_format_features_tbl.product_format_feature_id)
a opl:ProductFormatFeature
as virtrdf:OplProductFormatFeature ;
rdfs:label product_format_features_tbl.short_description
as virtrdf:rdfsLabelProductFormatFeaturesShortDescription ;
opl:Description product_format_features_tbl.short_description
as virtrdf:OplProductFormatFeaturesShortDescription ;
dc:description opl:lit_to_string(product_format_features_tbl.long_description)
as virtrdf:OplProductFormatFeaturesLongDescription ;
opl:isOfProductBenefit opl:ProductBenefit(product_format_features_tbl.product_format_feature_benefit_id)
as virtrdf:ProductFormatFeaturesIsOfProductBenefit ;
opl:isOfProductFeatureCategory opl:ProductFeatureCategory(product_format_features_tbl.product_format_feature_cat_id)
as virtrdf:ProductFormatFeaturesIsOfProductFeatureCategory ;
opl:isOfProductFormat opl:ProductFormat(product_format_features_tbl.product_format_code)
as virtrdf:ProductFormatFeaturesIsOfProductFormat ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductFormat(product_format_with_code.product_format_code)
opl:hasFeature
opl:ProductFormatFeature(product_format_features_tbl.product_format_feature_id)
where (
^{product_format_with_code.}^.product_format_id = ^{product_format_features_tbl.}^.product_format_id
)
as virtrdf:OplProductFormatHasProductFormatFeaturesProductFormatFeatures .
opl:ProductFormatFeature(product_format_features_tbl.product_format_feature_id)
opl:isFeatureOf
opl:ProductFormat(product_format_with_code.product_format_code)
where (
^{product_format_with_code.}^.product_format_id = ^{product_format_features_tbl.}^.product_format_id
)
as virtrdf:OplProductFormatFeaturesAreProductFormatFeaturesProductFormat .
opl:ProductCategoryFeature(product_category_features_tbl.product_category_feature_id)
a opl:ProductCategoryFeature
as virtrdf:OplProductCategoryFeature ;
rdfs:label product_category_features_tbl.short_description
as virtrdf:rdfsLabelProductCategoryFeaturesShortDescription ;
opl:Description product_category_features_tbl.short_description
as virtrdf:OplProductCategoryFeaturesShortDescription ;
dc:description opl:lit_to_string(product_category_features_tbl.long_description)
as virtrdf:OplProductCategoryFeaturesLongDescription ;
opl:isOfProductBenefit opl:ProductBenefit(product_category_features_tbl.product_category_feature_benefit_id)
as virtrdf:ProductCategoryFeaturesIsOfProductBenefit ;
opl:isOfProductFeatureCategory opl:ProductFeatureCategory(product_category_features_tbl.product_category_feature_category_id)
as virtrdf:ProductCategoryFeaturesIsOfProductFeatureCategory ;
opl:isOfProductCategory opl:ProductCategory(product_category_features_tbl.product_cat_code)
as virtrdf:ProductCategoryFeaturesIsOfProductCategory ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy rdfs:
.
opl:ProductCategory(product_category_with_code.product_cat_code)
opl:hasFeature
opl:ProductCategoryFeature(product_category_features_tbl.product_category_feature_id)
where (
^{product_category_with_code.}^.product_cat_id = ^{product_category_features_tbl.}^.product_cat_id
)
as virtrdf:OplProductCategoryHasProductCategoryFeaturesProductCategoryFeatures .
opl:ProductCategoryFeature(product_category_features_tbl.product_category_feature_id)
opl:isFeatureOf
opl:ProductCategory(product_category_with_code.product_cat_code)
where (
^{product_category_with_code.}^.product_cat_id = ^{product_category_features_tbl.}^.product_cat_id
)
as virtrdf:OplProductCategoryFeaturesAreProductCategoryFeaturesProductCategory .
opl:ProductReleaseFeature(product_release_features_tbl.product_release_feature_id)
a opl:ProductReleaseFeature
as virtrdf:OplProductReleaseFeature ;
rdfs:label product_release_features_tbl.short_description
as virtrdf:rdfsLabelProductReleaseFeaturesShortDescription ;
opl:Description product_release_features_tbl.short_description
as virtrdf:OplProductReleaseFeaturesShortDescription ;
dc:description opl:lit_to_string(product_release_features_tbl.long_description)
as virtrdf:OplProductReleaseFeaturesLongDescription ;
opl:isOfProductBenefit opl:ProductBenefit(product_release_features_tbl.product_release_feature_benefit_id)
as virtrdf:ProductReleaseFeaturesIsOfProductBenefit ;
opl:isOfProductFeatureCategory opl:ProductFeatureCategory(product_release_features_tbl.product_release_feature_cat_id)
as virtrdf:ProductReleaseFeaturesIsOfProductFeatureCategory ;
opl:isOfProduct opl:Product(product_release_features_tbl.product_id)
as virtrdf:ProductReleaseFeaturesIsOfProduct ;
opl:ProductReleaseId product_release_features_tbl.product_release_id
as virtrdf:ProductReleaseFeaturesProductRelease ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy rdfs:
.
} .
} .
;
DB.DBA.RDF_AUDIT_METADATA (1, '*');
SPARQL
prefix opl: <http://www.openlinksw.com/schemas/oplweb#>
prefix dc: <http://purl.org/dc/terms#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix oplds: <http://www.openlinksw.com/dataspace/organization/openlink#>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix umbel: <http://umbel.org/umbel/sc/>
prefix gr: <http://purl.org/goodrelations/v1#>
alter quad storage virtrdf:DefaultQuadStorage
FROM oplweb2.oplweb.component_archive as component_archive_tbl
FROM oplweb2.oplweb.component_archive_type as component_archive_type_tbl
FROM oplweb2.oplweb.component_category as component_category_tbl text literal component_category_long_description
FROM oplweb2.oplweb.component_mode as component_mode_tbl
FROM oplweb2.oplweb.component_type as component_type_tbl
FROM oplweb2.oplweb.components_for_rdfs as components_tbl
FROM oplweb2.oplweb.dbms_engine as dbms_engine_tbl
FROM oplweb2.oplweb.dbms_family as dbms_family_tbl
FROM oplweb2.oplweb.download_location as download_location_tbl
FROM oplweb2.oplweb.download_protocol as download_protocol_tbl
FROM oplweb2.oplweb.download_partner as download_partner_tbl
FROM oplweb2.oplweb.opsys as opsys_tbl
FROM oplweb2.oplweb.opsys_family as opsys_family_tbl
FROM oplweb2.oplweb.opsys_type as opsys_type_tbl
FROM oplweb2.oplweb.processor_family as processor_family_tbl
FROM oplweb2.oplweb.processor_mode as processor_mode_tbl
FROM oplweb2.oplweb.processors as processors_tbl
FROM oplweb2.oplweb.product as product_tbl text literal long_description
FROM oplweb2.oplweb.product_benefits as product_benefits_tbl text literal product_benefit_explanation
FROM oplweb2.oplweb.product_benefits_category as product_benefits_category_tbl
FROM oplweb2.oplweb.product_category as product_category_tbl
FROM oplweb2.oplweb.product_category_features_with_code as product_category_features_tbl text literal long_description
FROM oplweb2.oplweb.product_family as product_family_tbl
FROM oplweb2.oplweb.product_family as product_family_tbl_2
FROM oplweb2.oplweb.product_family_features_with_code as product_family_features_tbl text literal long_description
FROM oplweb2.oplweb.product_features as product_features_tbl text literal long_description
FROM oplweb2.oplweb.product_feature_category as product_feature_category_tbl text literal description
FROM oplweb2.oplweb.product_format_features_with_code as product_format_features_tbl text literal long_description
FROM oplweb2.oplweb.product_release_features as product_release_features_tbl text literal long_description
FROM oplweb2.oplweb.product_release_with_family as product_release_tbl
FROM oplweb2.oplweb.vendor_category as vendor_category_tbl
FROM oplweb2.oplweb.vendor_category_family as vendor_category_family_tbl
FROM oplweb2.oplweb.vendors as vendors_tbl
FROM oplweb2.oplweb.product_formats_categories as product_formats_categories
FROM oplweb2.oplweb.product_with_code as product_with_code
FROM oplweb2.oplweb.product_category_with_code as product_category_with_code
FROM oplweb2.oplweb.product_format as product_format_with_code
FROM oplweb2.oplweb.product_price as pp
FROM oplweb2.oplweb.product_price_type as pt
FROM oplweb2.DBA.license_model_unit_type as put
FROM oplweb2.DBA.license_model_unit_type as put2
FROM oplweb2.DBA.license_model as lm
FROM oplweb2.DBA.license_model as lm2
FROM oplweb2.DBA.license_model_type as license_model_type_tbl
FROM oplweb2.DBA.product_price_varchar as ppv
FROM oplweb2.DBA.product_general_discount_vc as gd
FROM oplweb2.oplweb.archive_coverage_osdb as ac1
{
create virtrdf:product_portfolio2 as
graph <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
option (exclusive)
{
opl:ProcessorFamily(processor_family_tbl.processor_family_id)
opl:hasProcessors
opl:Processor(processors_tbl.processor_name, processors_tbl.processor_mode_id)
where (
^{processor_family_tbl.}^.processor_family_id = ^{processors_tbl.}^.processor_family_id
)
as virtrdf:OplProcessorFamilyHasProcessors .
opl:Processor(processors_tbl.processor_name, processors_tbl.processor_mode_id)
opl:hasProductFamily
opl:ProductFamily(ac1.product_family_code)
where (
^{processors_tbl.}^.processor_name = ^{ac1.}^.processor_name
and
^{processors_tbl.}^.processor_mode_id = ^{ac1.}^.processor_mode_id
)
as virtrdf:OplProcessorToProductFamily .
#
# Product Licensing and Shop stuff
# =========================================
opl:ProductRelease(
product_release_tbl.product_id,
product_release_tbl.product_release_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
)
opl:hasLicenseModel
opl:LicenseModel(
lm.product_release_id,
lm.product_id,
lm.opsys_family_id,
lm.dbms_family_id,
lm.product_price_type_id
)
where (
^{lm.}^.product_id = ^{product_release_tbl.}^.product_id and
^{lm.}^.product_release_id = ^{product_release_tbl.}^.product_release_id and
^{lm.}^.opsys_family_id = ^{product_release_tbl.}^.opsys_family_id and
^{lm.}^.dbms_family_id = ^{product_release_tbl.}^.dbms_family_id
)
as virtrdf:OplProductReleaseHasLicenseModel .
opl:ProductRelease(
product_release_tbl.product_id,
product_release_tbl.product_release_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
)
opl:hasPriceSample
opl:lit_shop_sample (
product_release_tbl.product_release_id,
product_release_tbl.product_id,
product_release_tbl.opsys_name,
product_release_tbl.dbms_name
)
as virtrdf:OplPriceSamples .
opl:LicenseModel(
lm.product_release_id,
lm.product_id,
lm.opsys_family_id,
lm.dbms_family_id,
lm.product_price_type_id)
a opl:LicenseModel
as virtrdf:OplLicenseModel;
a gr:Sell
as virtrdf:OplLicenseModelAgrSell ;
a gr:ActualProductOrServiceInstance
as virtrdf:OplLicenseModelAgrProductOrServiceInstance ;
rdfs:label opl:lit_license_model_type(
lm.product_price_type_id
) as virtrdf:OplLabelLicenseModel ;
rdfs:description opl:lit_license_model_explain (
lm.product_price_type_id
) as virtrdf:OplLicenseModelExplain ;
opl:ProductReleaseId
lm.product_release_id
as virtrdf:lm_shop_price_product_release;
opl:isOfFormat
opl:ProductFormat(lm.product_format_code)
as virtrdf:lm_shop_price_product_format;
opl:isOfCategory
opl:ProductCategory(lm.product_cat_code)
as virtrdf:lm_shop_price_product_cat;
opl:OpsysFamily
opl:OpsysFamily(lm.opsys_family_id)
as virtrdf:lm_shop_price_opsys_family_oplweb;
opl:OpsysType
opl:OpsysType(lm.opsys_type_id)
as virtrdf:lm_shop_price_opsys_type;
opl:DbmsFamily
opl:DbmsFamily(lm.dbms_family_id)
as virtrdf:lm_shop_price_dbms_family ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs: ;
rdfs:isDefinedBy gr:
.
opl:LicenseModel(
lm.product_release_id,
lm.product_id,
lm.opsys_family_id,
lm.dbms_family_id,
lm.product_price_type_id)
opl:hasPriceUnitType
opl:PriceUnitType(
lm2.product_release_id,
lm2.product_id,
lm2.opsys_family_id,
lm2.dbms_family_id,
lm2.product_price_type_id,
lm2.product_price_unit_type_id)
where (
^{lm.}^.product_release_id = ^{lm2.}^.product_release_id AND
^{lm.}^.product_id = ^{lm2.}^.product_id AND
^{lm.}^.opsys_family_id = ^{lm2.}^.opsys_family_id AND
^{lm.}^.opsys_type_id = ^{lm2.}^.opsys_type_id AND
^{lm.}^.product_price_type_id = ^{lm2.}^.product_price_type_id AND
^{lm2.}^.product_price_unit_type_id <> 'db_sessions'
and
(
^{lm.}^.dbms_family_id = ^{lm2.}^.dbms_family_id
OR
^{lm2.}^.dbms_family_id = 15
)
)
as virtrdf:OplLicenseModelPriceUnitTypes .
opl:LicenseModel(
lm.product_release_id,
lm.product_id,
lm.opsys_family_id,
lm.dbms_family_id,
lm.product_price_type_id)
gr:hasPriceSpecification
opl:PriceUnitType(
lm2.product_release_id,
lm2.product_id,
lm2.opsys_family_id,
lm2.dbms_family_id,
lm2.product_price_type_id,
lm2.product_price_unit_type_id)
where (
^{lm.}^.product_release_id = ^{lm2.}^.product_release_id AND
^{lm.}^.product_id = ^{lm2.}^.product_id AND
^{lm.}^.opsys_family_id = ^{lm2.}^.opsys_family_id AND
^{lm.}^.opsys_type_id = ^{lm2.}^.opsys_type_id AND
^{lm.}^.product_price_type_id = ^{lm2.}^.product_price_type_id AND
^{lm2.}^.product_price_unit_type_id = 'db_sessions'
and
(
^{lm.}^.dbms_family_id = ^{lm2.}^.dbms_family_id
OR
^{lm2.}^.dbms_family_id = 15
)
)
as virtrdf:OplLicenseModelBasePriceUnitTypes .
opl:Discount(
gd.product_release_id,
gd.opsys_type_id,
gd.product_id,
gd.opsys_family_id,
gd.dbms_family_id,
gd.product_price_type_id)
a opl:Discount
as virtrdf:product_discount;
rdfs:label gd.product_discount_description as virtrdf:OplLabelDiscount ;
rdfs:description gd.product_discount_description as virtrdf:OplDiscountExplain ;
opl:discount_description
gd.product_discount_description
as virtrdf:gd_discount_description;
opl:discount_start
gd.discount_start
as virtrdf:gd_discount_start;
opl:discount_end
gd.discount_end
as virtrdf:gd_discount_end;
opl:ProductPriceType
opl:PriceType(gd.product_price_type_id)
as virtrdf:gd_shop_price_type;
gr:hasUnitOfMeasurement
opl:PriceType(gd.product_price_type_id)
as virtrdf:gd_shop_price_type_grUnitOfMeasurement;
opl:ProductReleaseId
gd.product_release_id
as virtrdf:gd_shop_price_product_release;
opl:ProductFormat
opl:ProductFormat(gd.product_format_code)
as virtrdf:gd_shop_price_product_format;
opl:ProductCategory
opl:ProductCategory(gd.product_cat_code)
as virtrdf:gd_shop_price_product_cat;
opl:OpsysFamily
opl:OpsysFamily(gd.opsys_family_id)
as virtrdf:gd_shop_price_opsys_family_oplweb;
opl:OpsysType
opl:OpsysType(gd.opsys_type_id)
as virtrdf:gd_shop_price_opsys_type;
opl:DbmsFamily
opl:DbmsFamily(gd.dbms_family_id)
as virtrdf:gd_shop_price_dbms_family;
opl:discount_token
gd.discount_token
as virtrdf:gd_discount_token ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:PriceType(pt.product_price_type_id)
a opl:PriceType
as virtrdf:shop_product_price_type;
rdfs:label pt.product_price_type_description as virtrdf:OplLabelPriceType ;
rdfs:description pt.product_price_type_description as virtrdf:OplPriceTypeExplain ;
opl:PriceTypeDescription
pt.product_price_type_description
as virtrdf:shop_product_price_type_description;
dc:description
pt.product_price_type_long_description
as virtrdf:shop_product_price_type_long_description ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy dc: ;
rdfs:isDefinedBy rdfs:
.
opl:PriceUnitType(
put.product_release_id,
put.product_id,
put.opsys_family_id,
put.dbms_family_id,
put.product_price_type_id,
put.product_price_unit_type_id)
a opl:PriceUnitType
as virtrdf:shop_product_price_unit_type;
rdfs:label put.product_price_unit_description as virtrdf:OplLabelproductpriceunitdescription ;
rdfs:description put.product_price_unit_description as virtrdf:OplproductpriceunitdescriptionExplain ;
gr:hasUnitOfMeasurement
opl:PriceType(put.product_price_type_id)
as virtrdf:put_shop_price_type_grUnitOfMeasurement;
opl:unitValue
put.unit_price
as virtrdf:unit_type_unit_price;
gr:hasValue
put.unit_price
as virtrdf:unit_type_unit_price_grHasValue;
opl:graceUnits
put.unit_grace
as virtrdf:unit_type_unit_grace;
opl:minUnits
put.unit_low
as virtrdf:unit_type_unit_low;
opl:maxUnits
put.unit_cap
as virtrdf:unit_type_unit_cap;
opl:unit_type_description
put.product_price_unit_description
as virtrdf:unit_type_description ;
rdfs:isDefinedBy opl: ;
rdfs:isDefinedBy rdfs:
.
opl:PriceUnitType(
put.product_release_id,
put.product_id,
put.opsys_family_id,
put.dbms_family_id,
put.product_price_type_id,
put.product_price_unit_type_id
)
opl:hasIncrementalDiscount
opl:PriceUnitIncrementalDiscount(
put2.product_release_id,
put2.product_id,
put2.opsys_family_id,
put2.dbms_family_id,
put2.product_price_type_id,
put2.product_price_unit_type_id
)
where (
^{put.}^.product_release_id = ^{put2.}^.product_release_id and
^{put.}^.product_id = ^{put2.}^.product_id and
^{put.}^.opsys_family_id = ^{put2.}^.opsys_family_id and
^{put.}^.dbms_family_id = ^{put2.}^.dbms_family_id and
^{put.}^.product_price_type_id = ^{put2.}^.product_price_type_id and
^{put.}^.product_price_unit_type_id = ^{put2.}^.product_price_unit_type_id
)
as virtrdf:OplLicenseModelUnitsIncrementalDiscounts .
opl:PriceUnitIncrementalDiscount(
put.product_release_id,
put.product_id,
put.opsys_family_id,
put.dbms_family_id,
put.product_price_type_id,
put.product_price_unit_type_id)
a opl:PriceUnitIncrementalDiscount
as virtrdf:shop_product_price_unit_type_incremental_discount;
rdfs:label put.product_price_unit_description as virtrdf:OplLabelproductpriceunitIncDisdescription ;
rdfs:description put.product_price_unit_description as virtrdf:OplproductpriceunitIncDisdescriptionExplain ;
opl:percentageOfBase
put.unit_discount
as virtrdf:unit_type_unit_discount;
opl:triggerPoint
put.quantity
as virtrdf:unit_type_unit_discount_quantity
.
opl:LicenseModel(
lm.product_release_id,
lm.product_id,
lm.opsys_family_id,
lm.dbms_family_id,
lm.product_price_type_id
)
opl:hasGeneralDiscounts
opl:Discount(
gd.product_release_id,
gd.opsys_type_id,
gd.product_id,
gd.opsys_family_id,
gd.dbms_family_id,
gd.product_price_type_id
)
where (
^{lm.}^.product_release_id = ^{gd.}^.product_release_id AND
^{lm.}^.product_id = ^{gd.}^.product_id AND
^{lm.}^.opsys_family_id = ^{gd.}^.opsys_family_id AND
^{lm.}^.dbms_family_id = ^{gd.}^.dbms_family_id AND
^{lm.}^.opsys_type_id = ^{gd.}^.opsys_type_id AND
^{lm.}^.product_price_type_id = ^{gd.}^.product_price_type_id
)
as virtrdf:OplLicenseModelGeneralDiscounts .
} .
} .
;
DB.DBA.XML_SET_NS_DECL ('OpenLink', 'http://www.openlinksw.com/schemas/oplweb#', 2);
DB.DBA.XML_SET_NS_DECL ('OplProductCategory', 'http://data.openlinksw.com/oplweb/product_category/', 2);
DB.DBA.XML_SET_NS_DECL ('OplProductFamily', 'http://data.openlinksw.com/oplweb/product_family/', 2);
DB.DBA.XML_SET_NS_DECL ('OplProductFormat', 'http://data.openlinksw.com/oplweb/product_format/', 2);
DB.DBA.XML_SET_NS_DECL ('OplProduct', 'http://data.openlinksw.com/oplweb/product/', 2);
DB.DBA.XML_SET_NS_DECL ('OplProductRelease', 'http://data.openlinksw.com/oplweb/product_release/', 2);
DB.DBA.RDF_AUDIT_METADATA (1, '*');
commit work;
-- Clear the 'cache' for immediate effects
SELECT hs_local_iri, exec ('SPARQL clear graph <'||hs_local_iri||'>')
FROM sys_http_sponge
WHERE hs_local_iri like '%oplweb%';
SELECT id_to_iri(G), exec ('SPARQL clear graph <'||id_to_iri(G)||'>')
FROM rdf_quad
WHERE id_to_iri(G) like '%oplweb%';
SPARQL CLEAR GRAPH <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>;
commit work;
SPARQL CONSTRUCT { <http://data.openlinksw.com/oplweb/product_family/uda#this> ?p ?o }
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { <http://data.openlinksw.com/oplweb/product_family/uda#this> ?p ?o }
;
SPARQL SELECT *
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { <http://data.openlinksw.com/oplweb/product_category/odbc#this> ?p ?o }
limit 100
;
SPARQL define get:soft "soft" SELECT *
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { <http://data.openlinksw.com/oplweb/product_category/odbc#this> ?p ?o }
limit 100
;
SPARQL CONSTRUCT { <http://data.openlinksw.com/oplweb/product_category/jdbc#this> ?p ?o }
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { <http://data.openlinksw.com/oplweb/product_category/jdbc#this> ?p ?o }
limit 100
;
SPARQL CONSTRUCT { <http://data.openlinksw.com/oplweb/product_format/mt#this> ?p ?o }
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { <http://data.openlinksw.com/oplweb/product_format/mt#this> ?p ?o }
limit 1
;
SPARQL SELECT ?p ?o
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { <http://data.openlinksw.com/oplweb/product_family/uda#this> ?p ?o }
limit 1
;
SPARQL
prefix opl: <http://www.openlinksw.com/schemas/oplweb#>
SELECT ?s ?o
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { ?s opl:hasProcessors ?o }
limit 1
;
SPARQL
prefix opl: <http://www.openlinksw.com/schemas/oplweb#>
SELECT distinct ?o
FROM <http://www.openlinksw.com/dataspace/organization/openlink/oplweb/>
WHERE { <http://data.openlinksw.com/oplweb/processor/i686_1#this> opl:hasProductFamily ?o }
limit 10
;
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/price_unit_type/6.1_odbc-sqlserver-st_1_2_1_db_sessions#this"
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/price_unit_type/6.1_odbc-sqlserver-st_1_2_1_cpu#this"
--SELECT top 10 * FROM oplweb2.DBA.license_model_unit_type WHERE product_release_id = '6.1' and product_id = 'odbc-sqlserver-st'
-- and opsys_family_id = 1 and dbms_family_id = 15 and product_price_type_id = 1 and product_price_unit_type_id = 'cpu';
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/rdfbrowser/index.html?uri=http%3A//data.openlinksw.com/oplweb/component_archive/6.1-odbc-oracle-st-i686-generic-win-32-ora10-odbclt-clnt-only_mv.msi"
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/product_family/uda"
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/product_category/odbc"
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/dbms_family/MySQL"
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/product_release/odbc-oracle-mt_6.1_i686-generic-win-32_ora9"
-- curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/license_model/6.1_odbc-sqlserver-st_1_2_1"
curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/rdfbrowser/index.html?uri=http%3A//data.openlinksw.com/oplweb/component_archive/6.1-odbc-oracle-st-i686-generic-win-32-ora10-odbclt-clnt-only_mv.msi"
curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/product_family/uda"
curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/product_release/odbc-oracle-mt_6.1_i686-generic-win-32_ora9"
curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/license_model/6.1_odbc-sqlserver-st_1_2_1"
--
-- XXX: note , the below would work only if www.openlinksw.com has the GRAPH <http://data.openlinksw.com/oplweb/>
-- if experimenting on other box, then www.openlinksw.com should be replaced with [URIQA] DefaultHost INI value
--
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oplweb2_rule2',
1,
'/oplweb(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//data.openlinksw.com/oplweb%U%%23this%%3E+%%3Fp+%%3Fo+}+FROM+%%3Chttp%%3A//www.openlinksw.com/dataspace/organization/openlink/oplweb/%%3E+WHERE+{+%%3Chttp%%3A//data.openlinksw.com/oplweb%U%%23this%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oplweb2_rule1',
1,
'(/oplweb/[^#]*)',
vector('path'),
1,
'/rdfbrowser/index.html?uri=http%%3A//data.openlinksw.com%U%',
-- '/DAV/RDF/rdfqry.vsp?uri=http%%3A//data.openlinksw.com%U%%23this',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oplweb2_rule3',
1,
'(/[^#]*)/\x24',
vector('path'),
1,
'%s',
vector('path'),
null,
null,
0,
null
);
create procedure DB.DBA.REDO_OPLWEB2_RDF_DET()
{
declare colid int;
colid := DAV_SEARCH_ID('/DAV/RDF/oplweb2/', 'C');
if (colid < 0)
return;
update WS.WS.SYS_DAV_COL set COL_DET=null where COL_ID = colid;
}
;
DB.DBA.REDO_OPLWEB2_RDF_DET();
drop procedure DB.DBA.REDO_OPLWEB2_RDF_DET;
DB.DBA."RDFData_MAKE_DET_COL" ('/DAV/RDF/oplweb2/', 'http://data.openlinksw.com/oplweb', NULL);
VHOST_REMOVE (lpath=>'/oplweb/data/rdf');
DB.DBA.VHOST_DEFINE (lpath=>'/oplweb/data/rdf', ppath=>'/DAV/RDF/oplweb2/All/', is_dav=>1, vsp_user=>'dba');
-- procedure to convert path to DET resource name
create procedure DB.DBA.OPLWEB2_DET_REF (in par varchar, in fmt varchar, in val varchar)
{
declare res, iri any;
iri := 'http://data.openlinksw.com/oplweb' || val;
res := sprintf ('iid (%d).rdf', iri_id_num (iri_to_id (iri)));
return sprintf (fmt, res);
}
;
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('oplweb2_rdf', 1,
'/oplweb/(.*)', vector('path'), 1,
'/oplweb/data/rdf/%U', vector('path'),
'DB.DBA.OPLWEB2_DET_REF',
'application/rdf.xml',
2,
303);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'oplweb2_rule_list1',
1,
vector (
'oplweb2_rule1',
'oplweb2_rule2',
'oplweb2_rule3',
'oplweb2_rdf'
));
VHOST_REMOVE (vhost=>'data.openlinksw.com:80', lpath=>'/oplweb');
DB.DBA.VHOST_DEFINE (vhost=>'data.openlinksw.com:80', lpath=>'/oplweb', ppath=>'/DAV/RDF/oplweb2/',
vsp_user=>'dba', is_dav=>1, def_page=>'sfront.vspx', is_brws=>0, opts=>vector ('url_rewrite', 'oplweb2_rule_list1'));
/*
DB.DBA.VHOST_DEFINE (vhost=>'data.openlinksw.com:80', lhost=>':80', lpath=>'/rdf_net', ppath=>'/rdf_net');
DB.DBA.VHOST_DEFINE (vhost=>'data.openlinksw.com:80', lhost=>':80', lpath=>'/sparql/',
ppath => '/!sparql/', is_dav => 1, vsp_user => 'dba', opts => vector('noinherit', 1));
VHOST_REMOVE (vhost=>'data.openlinksw.com', lpath=>'/proxy');
DB.DBA.VHOST_DEFINE (vhost=>'data.openlinksw.com', lhost=>':80', lpath=>'/proxy',
ppath=>'/SOAP/Http/ext_http_proxy', soap_user=>'PROXY');
DB.DBA.VHOST_DEFINE (vhost=>'data.openlinksw.com:80', lhost=>':80', lpath=>'/xml_a',
ppath=>'/SOAP/',soap_user=>'XML_A');
DB.DBA.VHOST_DEFINE (vhost=>'data.openlinksw.com:80', lhost=>':80', lpath=>'/XMLA',
ppath=>'/SOAP/', soap_user=>'XMLA', soap_opts => vector ('ServiceName', 'XMLAnalysis', 'elementFormDefault', 'qualified'))
GRANT EXECUTE ON DB.DBA.RDF_SPONGE_UP TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON DB.DBA.TTLP_EV_NEW_GRAPH TO "SPARQL", "SPARQL_UPDATE";
grant SPARQL_UPDATE to "SPARQL";
curl -H "Accept: application/rdf+xml" "http://data.openlinksw.com/oplweb/product_family/uda#this"
SELECT hs_local_iri, exec ('sparql clear graph <'||hs_local_iri||'>') from sys_http_sponge;
*/
OWL based Ontology
--sparql construct { ?x ?y ?z } from --<http://www.openlinksw.com/dataspace/organization/openlink#this>
-- where { ?x ?y ?z }
DB.DBA.RDF_LOAD_RDFXML_MT (
'<?xml version="1.0"?>
<rdf:RDF
xmlns="http://www.openlinksw.com/dataspace/organization/openlink/oplweb#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:foaf="http://xmlns.com/foaf/0.1/"
xmlns:virtrdf="http://www.openlinksw.com/schemas/virtrdf#"
xml:base="http://www.openlinksw.com/schemas/oplweb#">
<owl:Ontology rdf:about="http://www.openlinksw.com/schemas/oplweb#">
<rdfs:label>ProductPortfolio</rdfs:label>
<rdfs:comment>OpenLink Product Portfolio</rdfs:comment>
<virtrdf:catName>oplweb</virtrdf:catName>
<virtrdf:version>1.00</virtrdf:version>
</owl:Ontology>
<!-- Family / Category / Format -->
<rdfs:Class rdf:ID="ProductFamily">
<rdfs:label>Product Family</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Family
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductCategory">
<rdfs:label>Product Category</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Category
</rdfs:comment>
<rdfs:subPropertyOf rdf:resource="#ProductFamily"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductFormat">
<rdfs:label>Product Format</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Format
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductFormatCategory">
<rdfs:label>Product Format Category</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Format Category
</rdfs:comment>
</rdfs:Class>
<rdf:Property rdf:ID="ProductFamilyDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:label>Product Family Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductFamilyLongDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:label>Product Family Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductFamilyCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:label>Product Family Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductFormatDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:label>Product Format Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductFormatLongDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:label>Product Format Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductFormatCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#ProductFormatCategory"/>
<rdfs:label>Product Format Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductCategoryDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:label>Product Category Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductCategoryLongDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:label>Product Category Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductCategoryCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#ProductFormatCategory"/>
<rdfs:label>Product Category Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasProduct">
<rdfs:range rdf:resource="#Product"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#ProductFormatCategory"/>
<rdfs:label>Product</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasCategory">
<rdfs:range rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:label>Product</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasFormat">
<rdfs:range rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:label>Product</rdfs:label>
</rdf:Property>
<!-- Vendor -->
<rdfs:Class rdf:ID="VendorCategoryFamily">
<rdfs:label>vendor_category_family</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
vendor_category_family
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="VendorCategory">
<rdfs:label>vendor_category</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
vendor_category
</rdfs:comment>
<rdfs:subClassOf rdf:resource="VendorCategoryFamily"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Vendors">
<rdfs:label>vendors</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
vendors
</rdfs:comment>
<rdfs:subClassOf rdf:resource="VendorCategory"/>
</rdfs:Class>
<rdf:Property rdf:ID="VendorName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Vendors"/>
<rdfs:label>vendor name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="VendorCategoryFamilyDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#VendorCategoryFamily"/>
<rdfs:label>vendor_category_family_description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="VendorCategoryDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#VendorCategory"/>
<rdfs:label>vendor_category_description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="isOfVendorCategory">
<rdfs:range rdf:resource="#VendorCategory"/>
<rdfs:domain rdf:resource="#Vendors"/>
<rdfs:label>vendor_category_description</rdfs:label>
</rdf:Property>
<!-- Opsys / DBMS -->
<rdfs:Class rdf:ID="OpsysFamily">
<rdfs:label>Opsys Family</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Opsys Family
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="DbmsFamily">
<rdfs:label>Dbms Family</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Dbms Family
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="DbmsEngine">
<rdfs:label>Dbms Engine</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Dbms Engine
</rdfs:comment>
<rdfs:subClassOf rdf:resource="DbmsFamily"/>
</rdfs:Class>
<rdfs:Class rdf:ID="OpsysType">
<rdfs:label>Opsys Type</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Opsys Type
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ProcessorMode">
<rdfs:label>Processor Mode</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Processor Mode
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="Processor">
<rdfs:label>Processor</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Processor
</rdfs:comment>
<rdfs:subClassOf rdf:resource="ProcessorFamily"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProcessorFamily">
<rdfs:label>Processor Family</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Processor Family
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="Opsys">
<rdfs:label>Dbms Engine</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
opsys
</rdfs:comment>
<rdfs:subClassOf rdf:resource="OpsysFamily"/>
<rdfs:subClassOf rdf:resource="OpsysType"/>
</rdfs:Class>
<rdf:Property rdf:ID="OpsysFamilyName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#OpsysFamily"/>
<rdfs:label>Opsys Family Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysFamilyRating">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#OpsysFamily"/>
<rdfs:label>Opsys Family Rating</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysFamilyLicenseCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#OpsysFamily"/>
<rdfs:label>Opsys Family License Code</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysFamilyVendor">
<rdfs:range rdf:resource="#Vendors"/>
<rdfs:domain rdf:resource="#OpsysFamily"/>
<rdfs:label>Opsys Family Vendor</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsFamilyName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DbmsFamily"/>
<rdfs:label>DBMS Family Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsFamilyVendor">
<rdfs:range rdf:resource="#Vendors"/>
<rdfs:domain rdf:resource="#DbmsFamily"/>
<rdfs:label>DBMS Family Vendor</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DbmsEngine"/>
<rdfs:label>DBMS Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsVersion">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DbmsEngine"/>
<rdfs:label>DBMS Version</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsEngineRating">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DbmsEngine"/>
<rdfs:label>DBMS Engine Rating</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsEngineOldArchiveCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DbmsEngine"/>
<rdfs:label>DBMS Engine old Archive Code</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsUpwardCompatible">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DbmsEngine"/>
<rdfs:label>DBMS Upward Compatible</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DbmsDownwardCompatible">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DbmsEngine"/>
<rdfs:label>DBMS Downward Compatible</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysTypeDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#OpsysType"/>
<rdfs:label>Opsys Type Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysTypeShortDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#OpsysType"/>
<rdfs:label>Opsys Type Short Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysVersion">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys Version</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysUpwardCompatible">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys Compatible</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysDownwardCompatible">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys Downward Compatible</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysLicenseCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys License Code</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysCommercialName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys Commercial Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysProcessor">
<rdfs:range rdf:resource="#Processor"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys Processor</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OpsysEmulation">
<rdfs:range rdf:resource="#ProcessorMode"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:label>Opsys Emulation Mode</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProcessorModeName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProcessorMode"/>
<rdfs:label>Processor Mode Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProcessorName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Processor"/>
<rdfs:label>Processor Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProcessorProcessorMode">
<rdfs:range rdf:resource="#ProcessorMode"/>
<rdfs:domain rdf:resource="#Processor"/>
<rdfs:label>Processor Mode</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProcessorDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Processor"/>
<rdfs:label>Processor Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProcessorFamilyName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProcessorFamily"/>
<rdfs:label>Processor Family Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProcessorFamilyDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProcessorFamily"/>
<rdfs:label>Processor Family Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProcessorFamilyVendor">
<rdfs:range rdf:resource="#Vendors"/>
<rdfs:domain rdf:resource="#ProcessorFamily"/>
<rdfs:label>Processor Family Vendor</rdfs:label>
</rdf:Property>
<!-- Product / Product Release -->
<rdfs:Class rdf:ID="Product">
<rdfs:label>Product</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product
</rdfs:comment>
<rdfs:subPropertyOf rdf:resource="#ProductFormat"/>
<rdfs:subPropertyOf rdf:resource="#ProductCategory"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductRelease">
<rdfs:label>Product Release</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Release
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#Product"/>
</rdfs:Class>
<rdf:Property rdf:ID="ProductId">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:label>Product ID</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="isOfCategory">
<rdfs:range rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:label>Product Category</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="isOfFormat">
<rdfs:range rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:label>Product Category</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductDescription">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:label>Product Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductLongDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:label>Product Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductReleaseId">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Product Release ID</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductReleaseOpsys">
<rdfs:range rdf:resource="#Opsys"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Product Release Opsys</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductReleaseDbms">
<rdfs:range rdf:resource="#DbmsEngine"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Product Release DBMS</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductReleaseUpwardCompatible">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Product Release upward compatible</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductReleaseDownwardCompatible">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Product Release downward compatible</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductReleaseSupported">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Product Release Supported</rdfs:label>
</rdf:Property>
<!-- Components -->
<rdfs:Class rdf:ID="Component">
<rdfs:label>Components</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Components
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ComponentMode">
<rdfs:label>Component Mode</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Component
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ComponentType">
<rdfs:label>Component</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Component Type
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ComponentCategory">
<rdfs:label>Component Category</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Component
</rdfs:comment>
</rdfs:Class>
<rdf:Property rdf:ID="ComponentModeDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentMode"/>
<rdfs:label>Component Mode Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentModeShortDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentMode"/>
<rdfs:label>Component Mode Short Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentTypeDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentType"/>
<rdfs:label>Component Type Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentTypeShortDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentType"/>
<rdfs:label>Component Type Short Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentCategoryDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentCategory"/>
<rdfs:label>Component Category Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentCategoryLongDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentCategory"/>
<rdfs:label>Component Category Long Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentCategoryShortDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentCategory"/>
<rdfs:label>Component Category Short Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentCvsid">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components CVSID</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentBuildDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Build Date</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Notes">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Notes</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="BuildComments">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Build Comments</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Filesize">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentComponentCategory">
<rdfs:range rdf:resource="#ComponentCategory"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Component Category</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentComponentType">
<rdfs:range rdf:resource="#ComponentType"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Component Type</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentComponentMode">
<rdfs:range rdf:resource="#ComponentMode"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Component Mode</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentOpsys">
<rdfs:range rdf:resource="#Opsys"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components Opsys</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentDbmsEngine">
<rdfs:range rdf:resource="#DbmsEngine"/>
<rdfs:domain rdf:resource="#Component"/>
<rdfs:label>Components DBMS</rdfs:label>
</rdf:Property>
<!-- Component Archives -->
<rdfs:Class rdf:ID="ComponentArchive">
<rdfs:label>Component Archive</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Component Archives
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ProductRelease"/>
<rdfs:subClassOf rdf:resource="#Component"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ComponentArchiveType">
<rdfs:label>Component Archive Type</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Component Archives Type
</rdfs:comment>
</rdfs:Class>
<rdf:Property rdf:ID="ComponentArchiveTypeName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchiveType"/>
<rdfs:label>Component Archive Type Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveTypeShortName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchiveType"/>
<rdfs:label>Component Archive Type Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveTypeExtension">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchiveType"/>
<rdfs:label>Component Archive Type Extension</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveComponentArchiveType">
<rdfs:range rdf:resource="#ComponentArchiveType"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive Component Archive Type</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveName">
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveAssemblyDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive Assembly Date</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveFileUri">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive File URI</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveLicenseCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive License Code</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveResName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive DAV Resource Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveResFullPath">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive DAV Full Path</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ComponentArchiveResFileSize">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:label>Component Archive File Size in DAV</rdfs:label>
</rdf:Property>
<!-- Download locations -->
<rdfs:Class rdf:ID="DownloadLocation">
<rdfs:label>Download Location</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Download Location
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ComponentArchive"/>
<rdfs:subClassOf rdf:resource="#DownloadPartner"/>
<rdfs:subClassOf rdf:resource="#DownloadProtocol"/>
</rdfs:Class>
<rdfs:Class rdf:ID="DownloadProtocol">
<rdfs:label>Download Protocol</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Download Protocol
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="DownloadPartner">
<rdfs:label>Download Partner</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Download Partner
</rdfs:comment>
</rdfs:Class>
<rdf:Property rdf:ID="ProtocolName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadProtocol"/>
<rdfs:label>Protocol Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProtocolDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadProtocol"/>
<rdfs:label>Protocol Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProtocolActive">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadProtocol"/>
<rdfs:label>Protocol Active</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="PartnerName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadPartner"/>
<rdfs:label>Download Partner Partner Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="HostName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadPartner"/>
<rdfs:label>Download Partner Hostname</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DomainName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadPartner"/>
<rdfs:label>Download Partner Domain Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="PortNumber">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadPartner"/>
<rdfs:label>Download Partner Port Number</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Uri">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadLocation"/>
<rdfs:label>Download Location URI</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="UriOld">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#DownloadLocation"/>
<rdfs:label>Download Location URI Old</rdfs:label>
</rdf:Property>
<!-- Features and Benefits -->
<rdfs:Class rdf:ID="ProductBenefit">
<rdfs:label>Product Benefit</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Benefit
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ProductBenefitCategory"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductBenefitCategory">
<rdfs:label>Product Benefit</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Benefit
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductFeatureCategory">
<rdfs:label>Product Feature Category</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Feature Category
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductFeature">
<rdfs:label>Product Features</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Features
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ProductFeatureCategory"/>
<rdfs:subClassOf rdf:resource="#ProductBenefit"/>
<rdfs:subClassOf rdf:resource="#Product"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductFamilyFeature">
<rdfs:label>Product Family Features</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Family Features
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ProductFeatureCategory"/>
<rdfs:subClassOf rdf:resource="#ProductBenefit"/>
<rdfs:subClassOf rdf:resource="#ProductFamily"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductFormatFeature">
<rdfs:label>Product Format Features</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Format Features
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ProductFeatureCategory"/>
<rdfs:subClassOf rdf:resource="#ProductBenefit"/>
<rdfs:subClassOf rdf:resource="#ProductFormat"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductCategoryFeature">
<rdfs:label>Product Category Features</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Category Features
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ProductFeatureCategory"/>
<rdfs:subClassOf rdf:resource="#ProductBenefit"/>
<rdfs:subClassOf rdf:resource="#ProductCategory"/>
</rdfs:Class>
<rdfs:Class rdf:ID="ProductReleaseFeature">
<rdfs:label>Product Benefit</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Product Benefit
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#ProductFeatureCategory"/>
<rdfs:subClassOf rdf:resource="#ProductBenefit"/>
<rdfs:subClassOf rdf:resource="#ProductRelease"/>
</rdfs:Class>
<rdf:Property rdf:ID="ProductBenefitsCategoryDescription">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductBenefitsCategory"/>
<rdfs:label>product Benefits Category</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Description">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductBenefit"/>
<rdfs:domain rdf:resource="#ProductBenefitCategory"/>
<rdfs:domain rdf:resource="#ProductFeatureCategory"/>
<rdfs:domain rdf:resource="#ProductFeature"/>
<rdfs:domain rdf:resource="#ProductFamilyFeature"/>
<rdfs:domain rdf:resource="#ProductFormatFeature"/>
<rdfs:domain rdf:resource="#ProductCategoryFeature"/>
<rdfs:domain rdf:resource="#ProductReleaseFeature"/>
<rdfs:label>Product Benefits Description</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Details">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductFeature"/>
<rdfs:domain rdf:resource="#ProductFamilyFeature"/>
<rdfs:domain rdf:resource="#ProductFormatFeature"/>
<rdfs:domain rdf:resource="#ProductCategoryFeature"/>
<rdfs:domain rdf:resource="#ProductReleaseFeature"/>
<rdfs:label>Product Benefits Description Details</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductBenefitsAcronym">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductBenefit"/>
<rdfs:label>Product Benefits Acronym</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductBenefitsExplanation">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductBenefit"/>
<rdfs:label>Product Benefits Explanation</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="DemoUrl">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductCategoryFeature"/>
<rdfs:domain rdf:resource="#ProductFormatFeature"/>
<rdfs:domain rdf:resource="#ProductFamilyFeature"/>
<rdfs:domain rdf:resource="#ProductReleaseFeature"/>
<rdfs:label>The Features Demo URL</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="HypesPerSecond">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
<rdfs:domain rdf:resource="#ProductCategoryFeature"/>
<rdfs:domain rdf:resource="#ProductFormatFeature"/>
<rdfs:domain rdf:resource="#ProductFamilyFeature"/>
<rdfs:domain rdf:resource="#ProductreleaseFeature"/>
<rdfs:label>The Features Number of Hypes per second</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Implemented">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#ProductCategoryFeature"/>
<rdfs:domain rdf:resource="#ProductFormatFeature"/>
<rdfs:domain rdf:resource="#ProductFamilyFeature"/>
<rdfs:domain rdf:resource="#ProductReleaseFeature"/>
<rdfs:label>The Features Short Description</rdfs:label>
</rdf:Property>
<!-- shop / pricing stuff -->
<rdfs:Class rdf:ID="LicenseType">
<rdfs:label>License Type</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
License Type
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="UnitType">
<rdfs:label>Unit Type</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Unit Type
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="GeneralDiscount">
<rdfs:label>General Discount</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
General Discount
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="IncrementalDiscount">
<rdfs:label>Incremental Discount</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
Incremental Discount
</rdfs:comment>
</rdfs:Class>
<rdfs:Class rdf:ID="License">
<rdfs:label>License</rdfs:label>
<rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string">
License
</rdfs:comment>
<rdfs:subClassOf rdf:resource="#LicenseType"/>
<rdfs:subClassOf rdf:resource="#ProductRelease"/>
</rdfs:Class>
<rdf:Property rdf:ID="BaseCostUnit">
<rdfs:range rdf:resource="#UnitType"/>
<rdfs:domain rdf:resource="#License"/>
<rdfs:label>Base Unit Cost</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="PriceUnit">
<rdfs:range rdf:resource="#UnitType"/>
<rdfs:domain rdf:resource="#License"/>
<rdfs:label>Price Unit Cost</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasDiscount">
<rdfs:range rdf:resource="#IncrementalDiscount"/>
<rdfs:domain rdf:resource="#UnitType"/>
<rdfs:label>Base Unit Cost</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="hasGeneralDiscount">
<rdfs:range rdf:resource="#GeneralDiscount"/>
<rdfs:domain rdf:resource="#License"/>
<rdfs:label>General Discount</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="unitValue">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#UnitType"/>
<rdfs:label>Unit Value</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="graceUnit">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#UnitType"/>
<rdfs:label>Grace Unit</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="minUnits">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#UnitType"/>
<rdfs:label>Minimum Units</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="maxUnits">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#UnitType"/>
<rdfs:label>Maximum Units</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="codeWord">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#GeneralDiscount"/>
<rdfs:label>Code Word needed to activate this discount</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="startDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#GeneralDiscount"/>
<rdfs:label>Discount Start Date</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="endDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#GeneralDiscount"/>
<rdfs:label>Discount End Date</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="percentageOfCost">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#GeneralDiscount"/>
<rdfs:label>Percentage of cost attributing as discount</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="triggerPoint">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#IncrementalDiscount"/>
<rdfs:label>Discount Trigger Point</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="percentageOfBase">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#IncrementalDiscount"/>
<rdfs:label>Percentage of base cost attributing as discount</rdfs:label>
</rdf:Property>
<!-- common properties -->
<rdf:Property rdf:ID="label">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://www.w3.org/2001/XMLSchema#label"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:domain rdf:resource="#VendorCategory"/>
<rdfs:domain rdf:resource="#Vendor"/>
<rdfs:domain rdf:resource="#OpsysFamily"/>
<rdfs:domain rdf:resource="#DbmsFamily"/>
<rdfs:domain rdf:resource="#DbmsEngine"/>
<rdfs:domain rdf:resource="#OpsysType"/>
<rdfs:domain rdf:resource="#Processor"/>
<rdfs:domain rdf:resource="#ProcessorFamily"/>
<rdfs:domain rdf:resource="#Opsys"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:domain rdf:resource="#ComponentMode"/>
<rdfs:domain rdf:resource="#ComponentType"/>
<rdfs:domain rdf:resource="#ComponentCategory"/>
<rdfs:domain rdf:resource="#ComponentArchive"/>
<rdfs:domain rdf:resource="#ComponentArchiveType"/>
<rdfs:domain rdf:resource="#DownloadLocation"/>
<rdfs:domain rdf:resource="#ProductBenefit"/>
<rdfs:domain rdf:resource="#ProductBenefitCategory"/>
<rdfs:domain rdf:resource="#ProductFeatureCategory"/>
<rdfs:domain rdf:resource="#ProductFeature"/>
<rdfs:domain rdf:resource="#ProductFamilyFeature"/>
<rdfs:domain rdf:resource="#ProductFormatFeature"/>
<rdfs:domain rdf:resource="#ProductCategoryFeature"/>
<rdfs:domain rdf:resource="#ProductReleaseFeature"/>
<rdfs:domain rdf:resource="#LicenseModel"/>
<rdfs:domain rdf:resource="#Discount"/>
<rdfs:domain rdf:resource="#PriceType"/>
<rdfs:domain rdf:resource="#PriceUnitType"/>
<rdfs:label>Label</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="name">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="logo">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/logo"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:label>logo</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="homepage">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/homepage"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:domain rdf:resource="#ProcessorFamily"/>
<rdfs:domain rdf:resource="#OpsysFamily"/>
<rdfs:domain rdf:resource="#DbmsFamily"/>
<rdfs:label>homepage</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="maker">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/maker"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:label>Maker</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="sameAs">
<rdfs:range rdf:resource="owl#sameAs"/>
<rdfs:domain rdf:resource="#ProductCategory"/>
<rdfs:domain rdf:resource="#ProductFormat"/>
<rdfs:domain rdf:resource="#ProductFamily"/>
<rdfs:domain rdf:resource="#ProductRelease"/>
<rdfs:domain rdf:resource="#ProductFormatCategory"/>
<rdfs:label>Name</rdfs:label>
</rdf:Property>
</rdf:RDF>
',
'http://www.openlinksw.com/schemas/oplweb#',
'http://www.openlinksw.com/schemas/oplweb#')
--'http://www.openlinksw.com/dataspace/organization/openlink/ProductPortfolioOntology/1.0/')
;
rdfs_rule_set ('oplweb2_owlset', 'http://www.openlinksw.com/schemas/oplweb#', 1);
DB.DBA.XML_SET_NS_DECL ('opl', 'http://www.openlinksw.com/schemas/oplweb#', 2);
-- Setup script for RDF views of Sybase 15 PUBS2 Sample Database --
DB..vd_remote_data_source ('syb15ma-pubs2', '', '<uid>','<pwd>');
ATTACH TABLE "pubs2.dbo.au_pix" PRIMARY KEY ("au_id") AS "pubs2"."syb"."au_pix" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.authors" PRIMARY KEY ("au_id") AS "pubs2"."syb"."authors" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.discounts" PRIMARY KEY ("stor_id") AS "pubs2"."syb"."discounts" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.publishers" PRIMARY KEY ("pub_id") AS "pubs2"."syb"."publishers" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.roysched" PRIMARY KEY ("title_id") AS "pubs2"."syb"."roysched" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.sales" PRIMARY KEY ("stor_id", "ord_num") AS "pubs2"."syb"."sales" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.salesdetail" PRIMARY KEY ("stor_id", "ord_num", "title_id") AS "pubs2"."syb"."salesdetail" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.stores" PRIMARY KEY ("stor_id") AS "pubs2"."syb"."stores" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.titleauthor" PRIMARY KEY ("au_id", "title_id") AS "pubs2"."syb"."titleauthor" FROM 'syb15ma-pubs2';
ATTACH TABLE "pubs2.dbo.titles" PRIMARY KEY ("title_id", "pub_id") AS "pubs2"."syb"."titles" FROM 'syb15ma-pubs2';
COMMIT WORK;
GRANT SELECT ON pubs2.syb.au_pix TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.authors TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.discounts TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.publishers TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.roysched TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.sales TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.salesdetail TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.stores TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.titleauthor TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON pubs2.syb.titles TO "SPARQL", "SPARQL_UPDATE";
-------------------------------------------------------------------
-------- Create rdfs:Class definitions ----------------------------
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix syb: <http://localhost:8890/schemas/sybasepubs2/> .
syb:titles a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "titles" ;
rdfs:comment "Sybase Pubs2 titles table" .
syb:title_id a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:string ;
rdfs:label "title id" .
syb:title a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:string ;
rdfs:label "title" .
syb:type a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:string ;
rdfs:label "type" .
syb:pub_id a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range syb:publishers ;
rdfs:label "pub_id" .
syb:advance a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:decimal ;
rdfs:label "advance" .
syb:price a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:decimal ;
rdfs:label "price" .
syb:total_sales a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:integer ;
rdfs:label "total_sales" .
syb:notes a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:string ;
rdfs:label "notes" .
syb:contract a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:integer ;
rdfs:label "contract" .
syb:pubdate a rdf:Property ;
rdfs:domain syb:titles ;
rdfs:range xsd:dateTime ;
rdfs:label "publish date" .
syb:authors a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "authors" ;
rdfs:comment "Sybase Pubs2 authors table" .
syb:au_id a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "author id" .
syb:au_lname a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "author last name" .
syb:au_fname a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "author first name" .
syb:phone a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "phone number" .
syb:address a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "address" .
syb:city a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "city" .
syb:state a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "state" .
syb:country a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "country" .
syb:postalcode a rdf:Property ;
rdfs:domain syb:authors ;
rdfs:range xsd:string ;
rdfs:label "postalcode" .
syb:stores a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "stores" ;
rdfs:comment "Sybase Pubs2 stores table" .
syb:stor_id a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "store id" .
syb:stor_name a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "store name" .
syb:stor_address a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "store address" .
syb:city a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "city" .
syb:state a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "state" .
syb:country a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "country" .
syb:postalcode a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "postal code" .
syb:payterms a rdf:Property ;
rdfs:domain syb:stores ;
rdfs:range xsd:string ;
rdfs:label "payment terms" .
syb:au_pix a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "authors pictures" ;
rdfs:comment "Sybase Pubs2 au_pix table" .
syb:au_id a rdf:Property ;
rdfs:domain syb:au_pix ;
rdfs:range syb:authors ;
rdfs:label "author id" .
syb:format_type a rdf:Property ;
rdfs:domain syb:au_pix ;
rdfs:range xsd:string ;
rdfs:label "format type" .
syb:bytesize a rdf:Property ;
rdfs:domain syb:au_pix ;
rdfs:range xsd:integer ;
rdfs:label "byte size" .
syb:pixwidth_hor a rdf:Property ;
rdfs:domain syb:au_pix ;
rdfs:range xsd:string ;
rdfs:label "picture horizontal width" .
syb:pixwidth_vert a rdf:Property ;
rdfs:domain syb:au_pix ;
rdfs:range xsd:string ;
rdfs:label "picture vertical width" .
syb:discounts a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "discounts" ;
rdfs:comment "Sybase Pubs2 discount table" .
syb:discounttype a rdf:Property ;
rdfs:domain syb:discounts ;
rdfs:range xsd:string ;
rdfs:label "discounttype" .
syb:stor_id a rdf:Property ;
rdfs:domain syb:discounts ;
rdfs:range syb:stores ;
rdfs:label "store id" .
syb:lowqty a rdf:Property ;
rdfs:domain syb:discounts ;
rdfs:range xsd:integer ;
rdfs:label "min quantity" .
syb:highqty a rdf:Property ;
rdfs:domain syb:discounts ;
rdfs:range xsd:integer ;
rdfs:label "max quantity" .
syb:discount a rdf:Property ;
rdfs:domain syb:discounts ;
rdfs:range xsd:decimal ;
rdfs:label "min quantity" .
syb:salesdetail a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "sales details" ;
rdfs:comment "Sybase Pubs2 sales detail table" .
syb:store_id a rdf:Property ;
rdfs:domain syb:salesdetail ;
rdfs:range syb:stores ;
rdfs:label "store id" .
syb:ord_num a rdf:Property ;
rdfs:domain syb:salesdetail ;
rdfs:range syb:sales ;
rdfs:label "order number" .
syb:title_id a rdf:Property ;
rdfs:domain syb:salesdetail ;
rdfs:range syb:titles ;
rdfs:label "title id" .
syb:qty a rdf:Property ;
rdfs:domain syb:salesdetail ;
rdfs:range xsd:integer ;
rdfs:label "quantity" .
syb:discount a rdf:Property ;
rdfs:domain syb:salesdetail ;
rdfs:range xsd:decimal ;
rdfs:label "discount" .
syb:publishers a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "Publishers" ;
rdfs:comment "Sybase Pubs2 publishers table" .
syb:pub_id a rdf:Property ;
rdfs:domain syb:publishers ;
rdfs:range xsd:string ;
rdfs:label "publisher id" .
syb:pub_name a rdf:Property ;
rdfs:domain syb:publishers ;
rdfs:range xsd:string ;
rdfs:label "publisher name" .
syb:city a rdf:Property ;
rdfs:domain syb:publishers ;
rdfs:range xsd:string ;
rdfs:label "city" .
syb:state a rdf:Property ;
rdfs:domain syb:publishers ;
rdfs:range xsd:string ;
rdfs:label "state" .
syb:titleauthor a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "title author" ;
rdfs:comment "Sybase Pubs2 titleauthor table" .
syb:au_id a rdf:Property ;
rdfs:domain syb:titleauthor ;
rdfs:range syb:authors ;
rdfs:label "author id" .
syb:title_id a rdf:Property ;
rdfs:domain syb:titleauthor ;
rdfs:range syb:titles ;
rdfs:label "title id" .
syb:au_ord a rdf:Property ;
rdfs:domain syb:titleauthor ;
rdfs:range xsd:integer ;
rdfs:label "author order" .
syb:royaltyper a rdf:Property ;
rdfs:domain syb:titleauthor ;
rdfs:range xsd:integer ;
rdfs:label "royalty per book" .
syb:roysched a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "Royalty Schedule" ;
rdfs:comment "Sybase Pubs2 roysched table" .
syb:title_id a rdf:Property ;
rdfs:domain syb:roysched ;
rdfs:range syb:titles ;
rdfs:label "title id" .
syb:lorange a rdf:Property ;
rdfs:domain syb:roysched ;
rdfs:range xsd:integer ;
rdfs:label "low range" .
syb:hirange a rdf:Property ;
rdfs:domain syb:roysched ;
rdfs:range xsd:integer ;
rdfs:label "high range" .
syb:royalty a rdf:Property ;
rdfs:domain syb:roysched ;
rdfs:range xsd:integer ;
rdfs:label "royalty" .
syb:sales a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/sybasepubs2> ;
rdfs:label "Sales" ;
rdfs:comment "Sybase Pubs2 sales table" .
syb:stor_id a rdf:Property ;
rdfs:domain syb:sales ;
rdfs:range xsd:string ;
rdfs:label "store id" .
syb:ord_num a rdf:Property ;
rdfs:domain syb:sales ;
rdfs:range xsd:string ;
rdfs:label "order number" .
syb:date a rdf:Property ;
rdfs:domain syb:sales ;
rdfs:range xsd:dateTime ;
rdfs:label "date" .
', '', 'http://localhost:8890/schemas/sybasepubs2', 0);
---------------------------------------------------------------
----------- Create IRI Classes -------------
SPARQL
create iri class <http://localhost:8890/schemas/sybasepubs2/titles_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/titles/%s_%s#this"
(in title_id varchar not null, in title varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/authors_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/authors/%s#this"
(in au_id varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/stores_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/stores/%s#this"
(in stor_id varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/au_pix_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/au_pix/%s#this"
(in au_id varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/discounts_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/discounts/%s#this"
(in discounttype varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/salesdetail_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/salesdetail/%s_%s_%s#this"
(in stor_id varchar not null, in ord_num varchar not null, in title_id varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/publishers_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/publishers/%s#this"
(in pub_id varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/titleauthor_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/titleauthor/%s_%s#this"
(in au_id varchar not null, in title_id varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/roysched_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/roysched/%s#this"
(in title_id varchar not null) .
create iri class <http://localhost:8890/schemas/sybasepubs2/sales_iri>
"http://^{URIQADefaultHost}^/sybasepubs2/sales/%s_%s#this"
(in stor_id varchar not null, in ord_num varchar not null) .
;
--------------------------------------------------------------------
------------- Create Quad Store ------------------------------------
SPARQL
prefix syb: <http://localhost:8890/schemas/sybasepubs2/>
alter quad storage virtrdf:DefaultQuadStorage
from pubs2.syb.au_pix as au_pix_tbl
from pubs2.syb.authors as authors_tbl
from pubs2.syb.discounts as discounts_tbl
from pubs2.syb.publishers as publishers_tbl
from pubs2.syb.roysched as roysched_tbl
from pubs2.syb.sales as sales_tbl
from pubs2.syb.salesdetail as salesdetail_tbl
from pubs2.syb.stores as stores_tbl
from pubs2.syb.titleauthor as titleauthor_tbl
from pubs2.syb.titles as titles_tbl
{
create virtrdf:sybasepubs2 as
graph <http://localhost:8890/sybasepubs2>
{
syb:au_pix_iri (au_pix_tbl.au_id) a syb:au_pix as virtrdf:au_pix_id;
syb:au_id au_pix_tbl.au_id as virtrdf:au_pix_au_id;
syb:format_type au_pix_tbl.format_type as virtrdf:au_pix_format_type;
syb:bytesize au_pix_tbl.bytesize as virtrdf:au_pix_bytesize;
syb:pixwidth_hor au_pix_tbl.pixwidth_hor as virtrdf:au_pix_pixwidth_hor;
syb:pixwidth_vert au_pix_tbl.pixwidth_vert as virtrdf:au_pix_pixwidth_vert ;
syb:has_author syb:authors_iri(authors_tbl.au_id) where (^{authors_tbl.}^.au_id = ^{au_pix_tbl.}^.au_id) as virtrdf:au_pix_has_author .
syb:authors_iri (authors_tbl.au_id) a syb:authors as virtrdf:authors_pk ;
syb:au_id authors_tbl.au_id as virtrdf:authors_au_id;
syb:au_lname authors_tbl.au_lname as virtrdf:authors_au_lname;
syb:au_fname authors_tbl.au_fname as virtrdf:authors_au_fname;
syb:phone authors_tbl.phone as virtrdf:authors_phone;
syb:address authors_tbl.address as virtrdf:authors_address;
syb:city authors_tbl.city as virtrdf:authors_city;
syb:state authors_tbl.state as virtrdf:authors_state;
syb:country authors_tbl.country as virtrdf:authors_country;
syb:postalcode authors_tbl.postalcode as virtrdf:authors_postalcode;
syb:has_title syb:titleauthor_iri(titleauthor_tbl.au_id, titleauthor_tbl.title_id) where (^{titleauthor_tbl.}^.au_id = ^{authors_tbl.}^.au_id) as virtrdf:authors_has_title;
syb:has_pix syb:au_pix_iri(au_pix_tbl.au_id) where (^{au_pix_tbl.}^.au_id = ^{authors_tbl.}^.au_id) as virtrdf:authors_has_pix .
syb:discounts_iri (discounts_tbl.stor_id) a syb:discounts as virtrdf:discounts_pk;
syb:discounttype discounts_tbl.discounttype as virtrdf:discounts_discounttype;
syb:stor_id syb:stores_iri(stores_tbl.stor_id) where (^{stores_tbl.}^.stor_id = ^{stores_tbl.}^.stor_id) as virtrdf:discounts_stor_id;
syb:lowqty discounts_tbl.lowqty as virtrdf:discounts_lowqty;
syb:highqty discounts_tbl.highqty as virtrdf:discounts_highqty;
syb:discount discounts_tbl.discount as virtrdf:discounts_discount .
syb:publishers_iri (publishers_tbl.pub_id) a syb:publishers as virtrdf:publishers_pk;
syb:pub_id syb:titles_iri(titles_tbl.title_id, titles_tbl.pub_id) where (^{titles_tbl.}^.pub_id = ^{titles_tbl.}^.pub_id) as virtrdf:publisherss_pub_id;
syb:pub_name publishers_tbl.pub_name as virtrdf:publisherss_pub_name;
syb:city publishers_tbl.city as virtrdf:publisherss_city;
syb:state publishers_tbl.state as virtrdf:publisherss_state .
syb:roysched_iri (roysched_tbl.title_id) a syb:roysched as virtrdf:roysched_pk;
syb:title_id syb:titleauthor_iri(titleauthor_tbl.au_id, titleauthor_tbl.title_id) where (^{titleauthor_tbl.}^.title_id = ^{roysched_tbl.}^.title_id) as virtrdf:roysched_title_id;
syb:lorange roysched_tbl.lorange as virtrdf:roysched_lorange;
syb:hirange roysched_tbl.hirange as virtrdf:roysched_hirange;
syb:royalty roysched_tbl.royalty as virtrdf:roysched_royalty .
syb:sales_iri (sales_tbl.stor_id, sales_tbl.ord_num) a syb:sales as virtrdf:sales_pk;
syb:stor_id sales_tbl.stor_id as virtrdf:sales_stor_id;
syb:ord_num sales_tbl.ord_num as virtrdf:sales_ord_num;
syb:date sales_tbl.date as virtrdf:sales_date;
syb:has_salesdetail syb:salesdetail_iri(salesdetail_tbl.stor_id, salesdetail_tbl.ord_num, salesdetail_tbl.title_id) where (^{salesdetail_tbl.}^.stor_id = ^{sales_tbl.}^.stor_id and ^{salesdetail_tbl.}^.ord_num = ^{sales_tbl.}^.ord_num) as virtrdf:sales_has_salesdetail;
syb:has_stores syb:stores_iri(stores_tbl.stor_id) where (^{stores_tbl.}^.stor_id = ^{sales_tbl.}^.stor_id) as virtrdf:sales_has_stores .
syb:salesdetail_iri (salesdetail_tbl.stor_id, salesdetail_tbl.ord_num, salesdetail_tbl.title_id) a syb:salesdetail as virtrdf:salesdetail_pk;
syb:stor_id salesdetail_tbl.stor_id as virtrdf:salesdetail_stor_id;
syb:ord_num salesdetail_tbl.ord_num as virtrdf:salesdetail_ord_num;
syb:title_id salesdetail_tbl.title_id as virtrdf:salesdetail_title_id;
syb:qty salesdetail_tbl.qty as virtrdf:salesdeail_qty;
syb:discount salesdetail_tbl.discount as virtrdf:salesdetail_discount;
syb:has_title syb:titles_iri (titles_tbl.title_id, titles_tbl.pub_id) where (^{titles_tbl.}^.title_id = ^{salesdetail_tbl.}^.title_id) as virtrdf:salesdetail_has_title;
syb:has_sales syb:sales_iri(sales_tbl.stor_id, sales_tbl.ord_num) where (^{salesdetail_tbl.}^.stor_id = ^{sales_tbl.}^.stor_id and ^{salesdetail_tbl.}^.ord_num = ^{sales_tbl.}^.ord_num ) as virtrdf:salesdetail_has_sales .
syb:stores_iri (stores_tbl.stor_id) a syb:stores as virtrdf:stores_pk;
syb:stor_id stores_tbl.stor_id as virtrdf:stores_stor_id;
syb:stor_name stores_tbl.stor_name as virtrdf:stores_stor_name;
syb:stor_address stores_tbl.stor_address as virtrdf:stores_stor_address;
syb:city stores_tbl.city as virtrdf:stores_city;
syb:state stores_tbl.state as virtrdf:stores_state;
syb:country stores_tbl.country as virtrdf:stores_country;
syb:postalcode stores_tbl.postalcode as virtrdf:stores_postalcode;
syb:payterms stores_tbl.payterms as virtrdf:stores_payterms;
syb:has_sales syb:sales_iri(sales_tbl.stor_id, sales_tbl.ord_num) where (^{sales_tbl.}^.stor_id = ^{stores_tbl.}^.stor_id) as virtrdf:stores_has_sales .
syb:titleauthor_iri (titleauthor_tbl.au_id, titleauthor_tbl.title_id) a syb:titleauthor as virtrdf:titleauthor_pk;
syb:au_id titleauthor_tbl.au_id as virtrdf:titleauthor_au_id;
syb:title_id titleauthor_tbl.title_id as virtrdf:titleauthor_title_id;
syb:au_ord titleauthor_tbl.au_ord as virtrdf:titleauthor_au_ord;
syb:royaltyper titleauthor_tbl.royaltyper as virtrdf:titleauthor_royaltyper;
syb:has_author syb:authors_iri(authors_tbl.au_id) where (^{authors_tbl.}^.au_id = ^{titleauthor_tbl.}^.au_id) as virtrdf:titleauthor_has_author;
syb:has_titles syb:titles_iri(titles_tbl.title_id, titles_tbl.pub_id) where (^{titles_tbl.}^.title_id = ^{titleauthor_tbl.}^.title_id) as virtrdf:titleauthor_has_titles .
syb:titles_iri (titles_tbl.title_id, titles_tbl.pub_id) a syb:titles as virtrdf:titles_pk;
syb:title_id titles_tbl.title_id as virtrdf:titles_title_idd;
syb:title titles_tbl.title as virtrdf:titles_title;
syb:type titles_tbl.type as virtrdf:titles_type;
syb:pub_id titles_tbl.pub_id as virtrdf:titles_pub_id;
syb:price titles_tbl.price as virtrdf:titles_price;
syb:advance titles_tbl.advance as virtrdf:titles_advance;
syb:total_sales titles_tbl.total_sales as virtrdf:titles_total_sales;
syb:notes titles_tbl.notes as virtrdf:titles_notes;
syb:pubdate titles_tbl.pubdate as virtrdf:titles_pubdate;
syb:contract titles_tbl.contract as virtrdf:titles_contract;
syb:has_titleauthor syb:titleauthor_iri(titleauthor_tbl.au_id, titleauthor_tbl.title_id) where (^{titleauthor_tbl.}^.title_id = ^{titles_tbl.}^.title_id) as virtrdf:titles_has_titleauthor;
syb:has_salesdetail syb:salesdetail_iri (salesdetail_tbl.stor_id, salesdetail_tbl.ord_num, salesdetail_tbl.title_id) where (^{salesdetail_tbl.}^.title_id = ^{titles_tbl.}^.title_id) as virtrdf:titles_has_salesdetail .
} .
} .
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'sybasepubs2_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'sybasepubs2_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'sybasepubs2_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'sybasepubs2_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/sybasepubs2%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'sybasepubs2_rule_list1',
1,
vector (
'sybasepubs2_rule1',
'sybasepubs2_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/sybasepubs2');
VHOST_DEFINE (
lpath=>'/sybasepubs2',
ppath=>'/DAV/sybasepubs2/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'sybasepubs2_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'sybase_schemas_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'sybase_schemas_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'sybase_schemas_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'sybase_schemas_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/sybasepubs2%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'sybase_schemas_rule_list1',
1,
vector (
'sybase_schemas_rule1',
'sybase_schemas_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schema/sybasepubs2');
VHOST_DEFINE (
lpath=>'/schemas/sybasepubs2',
ppath=>'/DAV/schemas/sybasepubs2/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'sybase_schemas_rule_list1')
);
DB.DBA.XML_SET_NS_DECL ('hr', 'http://^{URIQADefaultHost}^/schemas/sybasepubs2', 2);
use DB;
DB.DBA.exec_no_error('UPDATE WS.WS.SYS_DAV_RES set RES_TYPE=\'image/jpeg\' where RES_FULL_PATH like \'/DAV/VAD/demo/sql/CAT%\'')
;
DB.DBA.exec_no_error('UPDATE WS.WS.SYS_DAV_RES set RES_TYPE=\'image/jpeg\' where RES_FULL_PATH like \'/DAV/VAD/demo/sql/EMP%\'')
;
GRANT SELECT ON "Demo"."demo"."Products" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Suppliers" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Shippers" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Categories" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Customers" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Employees" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Orders" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Order_Details" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Countries" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Provinces" TO "SPARQL";
SPARQL
prefix tut_northwind: <http://demo.openlinksw.com/schemas/tutorial/northwind#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
drop quad map graph iri("http://^{URIQADefaultHost}^/tutorial/Northwind") .
;
SPARQL
prefix tut_northwind: <http://demo.openlinksw.com/schemas/tutorial/northwind#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
drop quad map virtrdf:TutorialNorthwindDemo .
;
create function DB.DBA.TUT_NORTHWIND_ID_TO_IRI(in _prefix varchar,in _id varchar)
{
declare iri, uriqa_host any;
uriqa_host := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
iri := 'http://' || uriqa_host || '/tutorial/Northwind/' || _prefix || '/' || _id || '#this';
return sprintf ('http://%s/DAV/VAD/tutorial/rdfview/rd_v_1/RDFData/All/iid%%20(%d).rdf', uriqa_host, iri_id_num (iri_to_id (iri)));
}
;
create function DB.DBA.TUT_NORTHWIND_IRI_TO_ID(in _iri varchar)
{
declare parts any;
parts := sprintf_inverse (_iri, 'http://%s/DAV/VAD/tutorial/rdfview/rd_v_1/RDFData/All/iid (%d).rdf', 1 );
if (parts is not null)
{
declare uriqa_host, iri any;
uriqa_host := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
if (parts[0] = uriqa_host)
{
iri := id_to_iri(iri_id_from_num(parts[1]));
parts := sprintf_inverse (iri, 'http://%s/tutorial/Northwind/%s/%s#this', 1 );
if (parts[0] = uriqa_host)
{
return parts[2];
}
}
}
return NULL;
}
;
create function DB.DBA.TUT_CATEGORY_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Category', cast(_id as varchar));
}
;
create function DB.DBA.TUT_CATEGORY_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_SHIPPER_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Shipper', cast(_id as varchar));
}
;
create function DB.DBA.TUT_SHIPPER_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_SUPPLIER_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Supplier', cast(_id as varchar));
}
;
create function DB.DBA.TUT_SUPPLIER_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_PRODUCT_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Product', cast(_id as varchar));
}
;
create function DB.DBA.TUT_PRODUCT_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_CUSTOMER_IRI (in _id varchar) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Customer', _id);
}
;
create function DB.DBA.TUT_CUSTOMER_IRI_INVERSE (in _iri varchar) returns varchar
{
return DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri);
};
create function DB.DBA.TUT_EMPLOYEE_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Employee', cast(_id as varchar));
}
;
create function DB.DBA.TUT_EMPLOYEE_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_ORDER_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Order', cast(_id as varchar));
}
;
create function DB.DBA.TUT_ORDER_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_CUSTOMERCONTACT_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('CustomerContact', cast(_id as varchar));
}
;
create function DB.DBA.TUT_CUSTOMERCONTACT_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_ORDERLINE_IRI (in _id1 integer, in _id2 integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('OrderLine', sprintf('%d/%d', _id1, _id2));
}
;
create function DB.DBA.TUT_ORDERLINE_IRI_INV_1 (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_ORDERLINE_IRI_INV_2 (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_PROVINCE_IRI (in _id1 varchar, in _id2 varchar) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Province', sprintf('%s/%s', _id1, _id2));
}
;
create function DB.DBA.TUT_PROVINCE_IRI_INV_1 (in _iri varchar) returns varchar
{
return DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri);
};
create function DB.DBA.TUT_PROVINCE_IRI_INV_2 (in _iri varchar) returns varchar
{
return DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri);
};
create function DB.DBA.TUT_COUNTRY_IRI (in _id varchar) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Country', _id);
}
;
create function DB.DBA.TUT_COUNTRY_IRI_INVERSE (in _iri varchar) returns varchar
{
return DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri);
};
create function DB.DBA.TUT_FLAG_IRI (in _id varchar) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('Flag', _id);
}
;
create function DB.DBA.TUT_FLAG_IRI_INVERSE (in _iri varchar) returns varchar
{
return DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri);
};
create function DB.DBA.TUT_EMPLOYEEPHOTO_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('EmployeePhoto', cast(_id as varchar));
}
;
create function DB.DBA.TUT_EMPLOYEEPHOTO_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
create function DB.DBA.TUT_CATEGORYPHOTO_IRI (in _id integer) returns varchar
{
return TUT_NORTHWIND_ID_TO_IRI('CategoryPhoto', cast(_id as varchar));
}
;
create function DB.DBA.TUT_CATEGORYPHOTO_IRI_INVERSE (in _iri varchar) returns integer
{
return atoi(DB.DBA.TUT_NORTHWIND_IRI_TO_ID(_iri));
};
grant execute on DB.DBA.TUT_CATEGORY_IRI to "SPARQL";
grant execute on DB.DBA.TUT_CATEGORY_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_SHIPPER_IRI to "SPARQL";
grant execute on DB.DBA.TUT_SHIPPER_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_SUPPLIER_IRI to "SPARQL";
grant execute on DB.DBA.TUT_SUPPLIER_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_PRODUCT_IRI to "SPARQL";
grant execute on DB.DBA.TUT_PRODUCT_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_CUSTOMER_IRI to "SPARQL";
grant execute on DB.DBA.TUT_CUSTOMER_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_EMPLOYEE_IRI to "SPARQL";
grant execute on DB.DBA.TUT_EMPLOYEE_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_ORDER_IRI to "SPARQL";
grant execute on DB.DBA.TUT_ORDER_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_CUSTOMERCONTACT_IRI to "SPARQL";
grant execute on DB.DBA.TUT_CUSTOMERCONTACT_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_ORDERLINE_IRI to "SPARQL";
grant execute on DB.DBA.TUT_ORDERLINE_IRI_INV_1 to "SPARQL";
grant execute on DB.DBA.TUT_ORDERLINE_IRI_INV_2 to "SPARQL";
grant execute on DB.DBA.TUT_PROVINCE_IRI to "SPARQL";
grant execute on DB.DBA.TUT_PROVINCE_IRI_INV_1 to "SPARQL";
grant execute on DB.DBA.TUT_PROVINCE_IRI_INV_2 to "SPARQL";
grant execute on DB.DBA.TUT_COUNTRY_IRI to "SPARQL";
grant execute on DB.DBA.TUT_COUNTRY_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_FLAG_IRI to "SPARQL";
grant execute on DB.DBA.TUT_FLAG_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_EMPLOYEEPHOTO_IRI to "SPARQL";
grant execute on DB.DBA.TUT_EMPLOYEEPHOTO_IRI_INVERSE to "SPARQL";
grant execute on DB.DBA.TUT_CATEGORYPHOTO_IRI to "SPARQL";
grant execute on DB.DBA.TUT_CATEGORYPHOTO_IRI_INVERSE to "SPARQL";
SPARQL
prefix tut_northwind: <http://demo.openlinksw.com/schemas/tutorial/northwind#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
create iri class tut_northwind:Category "http://^{URIQADefaultHost}^/tutorial/Northwind/Category/%d#this" (in category_id integer not null) .
create iri class tut_northwind:Shipper "http://^{URIQADefaultHost}^/tutorial/Northwind/Shipper/%d#this" (in shipper_id integer not null) .
create iri class tut_northwind:Supplier "http://^{URIQADefaultHost}^/tutorial/Northwind/Supplier/%d#this" (in supplier_id integer not null) .
create iri class tut_northwind:Product "http://^{URIQADefaultHost}^/tutorial/Northwind/Product/%d#this" (in product_id integer not null) .
create iri class tut_northwind:Customer "http://^{URIQADefaultHost}^/tutorial/Northwind/Customer/%U#this" (in customer_id varchar not null) .
create iri class tut_northwind:Employee "http://^{URIQADefaultHost}^/tutorial/Northwind/Employee/%U%U%d#this" (in employee_firstname varchar not null, in employee_lastname varchar not null, in employee_id integer not null) .
create iri class tut_northwind:Order "http://^{URIQADefaultHost}^/tutorial/Northwind/Order/%d#this" (in order_id integer not null) .
create iri class tut_northwind:CustomerContact "http://^{URIQADefaultHost}^/tutorial/Northwind/CustomerContact/%U#this" (in customer_id varchar not null) .
create iri class tut_northwind:OrderLine "http://^{URIQADefaultHost}^/tutorial/Northwind/OrderLine/%d/%d#this" (in order_id integer not null, in product_id integer not null) .
create iri class tut_northwind:Province "http://^{URIQADefaultHost}^/tutorial/Northwind/Province/%U/%U#this" (in country_name varchar not null, in province_name varchar not null) .
create iri class tut_northwind:Country "http://^{URIQADefaultHost}^/tutorial/Northwind/Country/%U#this" (in country_name varchar not null) .
create iri class tut_northwind:Flag "http://^{URIQADefaultHost}^%U#this" (in flag_path varchar not null) .
create iri class tut_northwind:dbpedia_iri "http://dbpedia.org/resource/%U" (in uname varchar not null) .
create iri class tut_northwind:EmployeePhoto "http://^{URIQADefaultHost}^/DAV/VAD/demo/sql/EMP%d#this" (in emp_id varchar not null) .
create iri class tut_northwind:CategoryPhoto "http://^{URIQADefaultHost}^/DAV/VAD/demo/sql/CAT%d#this" (in category_id varchar not null) .
;
SPARQL
prefix tut_northwind: <http://demo.openlinksw.com/schemas/tutorial/northwind#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
create iri class tut_northwind:customercontact_iri using
function DB.DBA.TUT_CUSTOMERCONTACT_IRI (in customer_id varchar) returns varchar,
function DB.DBA.TUT_CUSTOMERCONTACT_IRI_INVERSE (in customer_iri varchar) returns varchar.
create iri class tut_northwind:category_iri using
function DB.DBA.TUT_CATEGORY_IRI (in customer_id integer) returns varchar,
function DB.DBA.TUT_CATEGORY_IRI_INVERSE (in customer_iri varchar) returns integer.
create iri class tut_northwind:shipper_iri using
function DB.DBA.TUT_SHIPPER_IRI (in customer_id integer) returns varchar,
function DB.DBA.TUT_SHIPPER_IRI_INVERSE (in customer_iri varchar) returns integer.
create iri class tut_northwind:supplier_iri using
function DB.DBA.TUT_SUPPLIER_IRI (in customer_id varchar) returns varchar,
function DB.DBA.TUT_SUPPLIER_IRI_INVERSE (in customer_iri varchar) returns varchar.
create iri class tut_northwind:product_iri using
function DB.DBA.TUT_PRODUCT_IRI (in customer_id integer) returns varchar,
function DB.DBA.TUT_PRODUCT_IRI_INVERSE (in customer_iri varchar) returns integer.
create iri class tut_northwind:customer_iri using
function DB.DBA.TUT_CUSTOMER_IRI (in customer_id varchar) returns varchar,
function DB.DBA.TUT_CUSTOMER_IRI_INVERSE (in customer_iri varchar) returns varchar.
create iri class tut_northwind:employee_iri using
function DB.DBA.TUT_EMPLOYEE_IRI (in customer_id integer) returns varchar,
function DB.DBA.TUT_EMPLOYEE_IRI_INVERSE (in customer_iri varchar) returns integer.
create iri class tut_northwind:order_iri using
function DB.DBA.TUT_ORDER_IRI (in customer_id integer) returns varchar,
function DB.DBA.TUT_ORDER_IRI_INVERSE (in customer_iri varchar) returns integer.
create iri class tut_northwind:orderline_iri using
function DB.DBA.TUT_ORDERLINE_IRI (in customer_id integer, in customer_id2 integer) returns varchar,
function DB.DBA.TUT_ORDERLINE_IRI_INV_1 (in customer_iri varchar) returns integer,
function DB.DBA.TUT_ORDERLINE_IRI_INV_2 (in customer_iri varchar) returns integer.
create iri class tut_northwind:province_iri using
function DB.DBA.TUT_PROVINCE_IRI (in customer_id varchar, in customer_id2 varchar) returns varchar,
function DB.DBA.TUT_PROVINCE_IRI_INV_1 (in customer_iri varchar) returns varchar,
function DB.DBA.TUT_PROVINCE_IRI_INV_2 (in customer_iri varchar) returns varchar.
create iri class tut_northwind:country_iri using
function DB.DBA.TUT_COUNTRY_IRI (in customer_id varchar) returns varchar,
function DB.DBA.TUT_COUNTRY_IRI_INVERSE (in customer_iri varchar) returns varchar.
create iri class tut_northwind:employeephoto_iri using
function DB.DBA.TUT_EMPLOYEEPHOTO_IRI (in customer_id integer) returns varchar,
function DB.DBA.TUT_EMPLOYEEPHOTO_IRI_INVERSE (in customer_iri varchar) returns integer.
create iri class tut_northwind:categoryphoto_iri using
function DB.DBA.TUT_CATEGORYPHOTO_IRI (in customer_id integer) returns varchar,
function DB.DBA.TUT_CATEGORYPHOTO_IRI_INVERSE (in customer_iri varchar) returns integer.
create iri class tut_northwind:flag_iri using
function DB.DBA.TUT_FLAG_IRI (in customer_id varchar) returns varchar,
function DB.DBA.TUT_FLAG_IRI_INVERSE (in customer_iri varchar) returns varchar.
;
SPARQL
prefix tut_northwind: <http://demo.openlinksw.com/schemas/tutorial/northwind#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
alter quad storage virtrdf:DefaultQuadStorage
from Demo.demo.Products as products
from Demo.demo.Suppliers as suppliers
from Demo.demo.Shippers as shippers
from Demo.demo.Categories as categories
from Demo.demo.Customers as customers
from Demo.demo.Employees as employees
from Demo.demo.Orders as orders
from Demo.demo.Order_Details as order_lines
from Demo.demo.Countries as countries
from Demo.demo.Provinces as provinces
where (^{suppliers.}^.Country = ^{countries.}^.Name)
where (^{customers.}^.Country = ^{countries.}^.Name)
where (^{employees.}^.Country = ^{countries.}^.Name)
where (^{orders.}^.ShipCountry = ^{countries.}^.Name)
{
create virtrdf:TutorialNorthwindDemo as graph iri ("http://^{URIQADefaultHost}^/tutorial/Northwind") option (exclusive)
{
tut_northwind:CustomerContact (customers.CustomerID)
a foaf:Person
as virtrdf:tutCustomerContact-foaf_Person .
tut_northwind:CustomerContact (customers.CustomerID)
a tut_northwind:CustomerContact
as virtrdf:tutCustomerContact-CustomerContact;
foaf:name customers.ContactName
as virtrdf:tutCustomerContact-contact_name ;
foaf:phone customers.Phone
as virtrdf:tutCustomerContact-foaf_phone ;
tut_northwind:is_contact_at tut_northwind:Customer (customers.CustomerID)
as virtrdf:tutCustomerContact-is_contact_at ;
tut_northwind:country tut_northwind:Country (customers.Country)
as virtrdf:tutCustomerContact-country ;
rdfs:isDefinedBy tut_northwind:customercontact_iri (customers.CustomerID) ;
rdfs:isDefinedBy tut_northwind:CustomerContact (customers.CustomerID) .
tut_northwind:Country (customers.Country)
tut_northwind:is_country_of
tut_northwind:CustomerContact (customers.CustomerID) as virtrdf:tutCustomerContact-is_country_of .
tut_northwind:Product (products.ProductID)
a tut_northwind:Product
as virtrdf:tutProduct-ProductID ;
tut_northwind:has_category tut_northwind:Category (products.CategoryID)
as virtrdf:tutProduct-product_has_category ;
tut_northwind:has_supplier tut_northwind:Supplier (products.SupplierID)
as virtrdf:tutProduct-product_has_supplier ;
tut_northwind:productName products.ProductName
as virtrdf:tutProduct-name_of_product ;
tut_northwind:quantityPerUnit products.QuantityPerUnit
as virtrdf:tutProduct-quantity_per_unit ;
tut_northwind:unitPrice products.UnitPrice
as virtrdf:tutProduct-unit_price ;
tut_northwind:unitsInStock products.UnitsInStock
as virtrdf:tutProduct-units_in_stock ;
tut_northwind:unitsOnOrder products.UnitsOnOrder
as virtrdf:tutProduct-units_on_order ;
tut_northwind:reorderLevel products.ReorderLevel
as virtrdf:tutProduct-reorder_level ;
tut_northwind:discontinued products.Discontinued
as virtrdf:tutProduct-discontinued ;
rdfs:isDefinedBy tut_northwind:product_iri (products.ProductID) ;
rdfs:isDefinedBy tut_northwind:Product (products.ProductID).
tut_northwind:Category (products.CategoryID)
tut_northwind:category_of tut_northwind:Product (products.ProductID) as virtrdf:tutProduct-category_of .
tut_northwind:Supplier (products.SupplierID)
tut_northwind:supplier_of tut_northwind:Product (products.ProductID) as virtrdf:tutProduct-supplier_of .
tut_northwind:Supplier (suppliers.SupplierID)
a tut_northwind:Supplier
as virtrdf:tutSupplier-SupplierID ;
tut_northwind:companyName suppliers.CompanyName
as virtrdf:tutSupplier-company_name ;
tut_northwind:contactName suppliers.ContactName
as virtrdf:tutSupplier-contact_name ;
tut_northwind:contactTitle suppliers.ContactTitle
as virtrdf:tutSupplier-contact_title ;
tut_northwind:address suppliers.Address
as virtrdf:tutSupplier-address ;
tut_northwind:city suppliers.City
as virtrdf:tutSupplier-city ;
tut_northwind:dbpedia_city tut_northwind:dbpedia_iri(suppliers.City)
as virtrdf:tutSupplier-dbpedia_city ;
tut_northwind:region suppliers.Region
as virtrdf:tutSupplier-region ;
tut_northwind:postalCode suppliers.PostalCode
as virtrdf:tutSupplier-postal_code ;
tut_northwind:country tut_northwind:Country(suppliers.Country)
as virtrdf:tutSupplier-country ;
tut_northwind:phone suppliers.Phone
as virtrdf:tutSupplier-phone ;
tut_northwind:fax suppliers.Fax
as virtrdf:tutSupplier-fax ;
tut_northwind:homePage suppliers.HomePage
as virtrdf:tutSupplier-home_page ;
rdfs:isDefinedBy tut_northwind:supplier_iri (suppliers.SupplierID) ;
rdfs:isDefinedBy tut_northwind:Supplier (suppliers.SupplierID).
tut_northwind:Country (suppliers.Country)
tut_northwind:is_country_of
tut_northwind:Supplier (suppliers.SupplierID) as virtrdf:tutSupplier-is_country_of .
tut_northwind:Category (categories.CategoryID)
a tut_northwind:Category
as virtrdf:tutCategory-CategoryID ;
tut_northwind:categoryName categories.CategoryName
as virtrdf:tutCategory-home_page ;
tut_northwind:description categories.Description
as virtrdf:tutCategory-description ;
foaf:img tut_northwind:CategoryPhoto(categories.CategoryID)
as virtrdf:tutCategory-categories.CategoryPhoto ;
rdfs:isDefinedBy tut_northwind:category_iri (categories.CategoryID) ;
rdfs:isDefinedBy tut_northwind:Category (categories.CategoryID).
tut_northwind:CategoryPhoto(categories.CategoryID)
a tut_northwind:CategoryPhoto
as virtrdf:tutCategory-categories.CategoryPhotoID ;
rdfs:isDefinedBy tut_northwind:categoryphoto_iri (categories.CategoryID) ;
rdfs:isDefinedBy tut_northwind:CategoryPhoto(categories.CategoryID).
tut_northwind:Shipper (shippers.ShipperID)
a tut_northwind:Shipper
as virtrdf:tutShipper-ShipperID ;
tut_northwind:companyName shippers.CompanyName
as virtrdf:tutShipper-company_name ;
tut_northwind:phone shippers.Phone
as virtrdf:tutShipper-phone ;
rdfs:isDefinedBy tut_northwind:shipper_iri (shippers.ShipperID) ;
rdfs:isDefinedBy tut_northwind:Shipper (shippers.ShipperID).
tut_northwind:Customer (customers.CustomerID)
a tut_northwind:Customer
as virtrdf:tutCustomer-CustomerID2 ;
a foaf:Organization
as virtrdf:tutCustomer-CustomerID ;
foaf:name customers.CompanyName
as virtrdf:tutCustomer-foaf_name ;
tut_northwind:companyName customers.CompanyName
as virtrdf:tutCustomer-company_name ;
tut_northwind:has_contact tut_northwind:CustomerContact (customers.CustomerID)
as virtrdf:tutCustomer-contact ;
tut_northwind:country tut_northwind:Country (customers.Country)
as virtrdf:tutCustomer-country ;
tut_northwind:contactName customers.ContactName
as virtrdf:tutCustomer-contact_name ;
tut_northwind:contactTitle customers.ContactTitle
as virtrdf:tutCustomer-contact_title ;
tut_northwind:address customers.Address
as virtrdf:tutCustomer-address ;
tut_northwind:city customers.City
as virtrdf:tutCustomer-city ;
tut_northwind:dbpedia_city tut_northwind:dbpedia_iri(customers.City)
as virtrdf:tutCustomer-dbpedia_city ;
tut_northwind:region customers.Region
as virtrdf:tutCustomer-region ;
tut_northwind:PostalCode customers.PostalCode
as virtrdf:tutCustomer-postal_code ;
foaf:phone customers.Phone
as virtrdf:tutCustomer-foaf_phone ;
tut_northwind:phone customers.Phone
as virtrdf:tutCustomer-phone ;
tut_northwind:fax customers.Fax
as virtrdf:tutCustomer-fax ;
rdfs:isDefinedBy tut_northwind:customer_iri (customers.CustomerID) ;
rdfs:isDefinedBy tut_northwind:Customer (customers.CustomerID).
tut_northwind:Country (customers.Country)
tut_northwind:is_country_of
tut_northwind:Customer (customers.CustomerID) as virtrdf:tutCustomer-is_country_of .
tut_northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID)
a tut_northwind:Employee
as virtrdf:tutEmployee-EmployeeID2 ;
a foaf:Person
as virtrdf:tutEmployee-EmployeeID ;
foaf:surname employees.LastName
as virtrdf:tutEmployee-foaf_last_name ;
tut_northwind:lastName employees.LastName
as virtrdf:tutEmployee-last_name ;
foaf:firstName employees.FirstName
as virtrdf:tutEmployee-foaf_first_name ;
tut_northwind:firstName employees.FirstName
as virtrdf:tutEmployee-first_name ;
foaf:title employees.Title
as virtrdf:tutEmployee-title ;
tut_northwind:titleOfCourtesy employees.TitleOfCourtesy
as virtrdf:tutEmployee-title_of_courtesy ;
foaf:birthday employees.BirthDate
as virtrdf:tutEmployee-foaf_birth_date ;
tut_northwind:birthday employees.BirthDate
as virtrdf:tutEmployee-birth_date ;
tut_northwind:hireDate employees.HireDate
as virtrdf:tutEmployee-hire_date ;
tut_northwind:address employees.Address
as virtrdf:tutEmployee-address ;
tut_northwind:city employees.City
as virtrdf:tutEmployee-city ;
tut_northwind:dbpedia_city tut_northwind:dbpedia_iri(employees.City)
as virtrdf:tutEmployee-dbpedia_city ;
tut_northwind:region employees.Region
as virtrdf:tutEmployee-region ;
tut_northwind:postalCode employees.PostalCode
as virtrdf:tutEmployee-postal_code ;
tut_northwind:country tut_northwind:Country (employees.Country)
as virtrdf:tutEmployee-country ;
foaf:phone employees.HomePhone
as virtrdf:tutEmployee-home_phone ;
tut_northwind:extension employees.Extension
as virtrdf:tutEmployee-extension ;
tut_northwind:notes employees.Notes
as virtrdf:tutEmployee-notes ;
tut_northwind:reportsTo tut_northwind:Employee(employees.FirstName, employees.LastName, employees.ReportsTo) where (^{employees.}^.ReportsTo = ^{employees.}^.EmployeeID)
as virtrdf:tutEmployee-reports_to ;
foaf:img tut_northwind:EmployeePhoto(employees.EmployeeID)
as virtrdf:tutEmployee-employees.EmployeePhoto ;
rdfs:isDefinedBy tut_northwind:employee_iri (employees.EmployeeID) ;
rdfs:isDefinedBy tut_northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID).
tut_northwind:EmployeePhoto(employees.EmployeeID)
a tut_northwind:EmployeePhoto
as virtrdf:tut_Employee-employees.EmployeePhotoId ;
rdfs:isDefinedBy tut_northwind:employeephoto_iri (employees.EmployeeID) ;
rdfs:isDefinedBy tut_northwind:EmployeePhoto (employees.EmployeeID).
tut_northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID)
tut_northwind:is_salesrep_of
tut_northwind:Order (orders.OrderID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID) as virtrdf:tutOrder-is_salesrep_of .
tut_northwind:Country (employees.Country)
tut_northwind:is_country_of
tut_northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID) as virtrdf:tutEmployee-is_country_of .
tut_northwind:Order (orders.OrderID)
a tut_northwind:Order
as virtrdf:tutOrder-Order ;
tut_northwind:has_customer tut_northwind:Customer (orders.CustomerID)
as virtrdf:tutOrder-order_has_customer ;
tut_northwind:has_salesrep tut_northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID)
as virtrdf:tutCustomer-has_salesrep ;
tut_northwind:has_employee tut_northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID)
as virtrdf:tutOrder-order_has_employee ;
tut_northwind:orderDate orders.OrderDate
as virtrdf:tutOrder-order_date ;
tut_northwind:requiredDate orders.RequiredDate
as virtrdf:tutOrder-required_date ;
tut_northwind:shippedDate orders.ShippedDate
as virtrdf:tutOrder-shipped_date ;
tut_northwind:order_ship_via tut_northwind:Shipper (orders.ShipVia)
as virtrdf:tutOrder-order_ship_via ;
tut_northwind:freight orders.Freight
as virtrdf:tutOrder-freight ;
tut_northwind:shipName orders.ShipName
as virtrdf:tutOrder-ship_name ;
tut_northwind:shipAddress orders.ShipAddress
as virtrdf:tutOrder-ship_address ;
tut_northwind:shipCity orders.ShipCity
as virtrdf:tutOrder-ship_city ;
tut_northwind:dbpedia_shipCity tut_northwind:dbpedia_iri(orders.ShipCity)
as virtrdf:tutOrder-ship_dbpedia_city ;
tut_northwind:shipRegion orders.ShipRegion
as virtrdf:tutOrder-ship_region ;
tut_northwind:shipPostal_code orders.ShipPostalCode
as virtrdf:tutOrder-ship_postal_code ;
tut_northwind:shipCountry tut_northwind:Country(orders.ShipCountry)
as virtrdf:tutship_country ;
rdfs:isDefinedBy tut_northwind:order_iri (orders.OrderID) ;
rdfs:isDefinedBy tut_northwind:Order (orders.OrderID).
tut_northwind:Country (orders.ShipCountry)
tut_northwind:is_ship_country_of
tut_northwind:Order (orders.OrderID) as virtrdf:tutOrder-is_country_of .
tut_northwind:Customer (orders.CustomerID)
tut_northwind:has_order tut_northwind:Order (orders.OrderID) as virtrdf:tutOrder-has_order .
tut_northwind:Shipper (orders.ShipVia)
tut_northwind:ship_order tut_northwind:Order (orders.OrderID) as virtrdf:tutOrder-ship_order .
tut_northwind:OrderLine (order_lines.OrderID, order_lines.ProductID)
a tut_northwind:OrderLine
as virtrdf:tutOrderLine-OrderLines ;
tut_northwind:has_order_id tut_northwind:Order (order_lines.OrderID)
as virtrdf:tutorder_lines_has_order_id ;
tut_northwind:has_product_id tut_northwind:Product (order_lines.ProductID)
as virtrdf:tutorder_lines_has_product_id ;
tut_northwind:unitPrice order_lines.UnitPrice
as virtrdf:tutOrderLine-unit_price ;
tut_northwind:quantity order_lines.Quantity
as virtrdf:tutOrderLine-quantity ;
tut_northwind:discount order_lines.Discount
as virtrdf:tutOrderLine-discount ;
rdfs:isDefinedBy tut_northwind:orderline_iri (order_lines.OrderID, order_lines.ProductID) ;
rdfs:isDefinedBy tut_northwind:OrderLine (order_lines.OrderID, order_lines.ProductID).
tut_northwind:Order (orders.OrderID)
tut_northwind:is_order_of
tut_northwind:OrderLine (order_lines.OrderID, order_lines.ProductID) where (^{orders.}^.OrderID = ^{order_lines.}^.OrderID) as virtrdf:tutOrder-is_order_of .
tut_northwind:Product (products.ProductID)
tut_northwind:is_product_of
tut_northwind:OrderLine (order_lines.OrderID, order_lines.ProductID) where (^{products.}^.ProductID = ^{order_lines.}^.ProductID) as virtrdf:tutProduct-is_product_of .
tut_northwind:Country (countries.Name)
a tut_northwind:Country
as virtrdf:tutCountry-Type2 ;
a wgs:SpatialThing
as virtrdf:tutCountry-Type ;
owl:sameAs tut_northwind:dbpedia_iri (countries.Name) ;
tut_northwind:name countries.Name
as virtrdf:tutCountry-Name ;
tut_northwind:code countries.Code
as virtrdf:tutCountry-Code ;
tut_northwind:smallFlagDAVResourceName countries.SmallFlagDAVResourceName
as virtrdf:tutCountry-SmallFlagDAVResourceName ;
tut_northwind:largeFlagDAVResourceName countries.LargeFlagDAVResourceName
as virtrdf:tutCountry-LargeFlagDAVResourceName ;
tut_northwind:smallFlagDAVResourceURI tut_northwind:Flag(countries.SmallFlagDAVResourceURI)
as virtrdf:tutCountry-SmallFlagDAVResourceURI ;
tut_northwind:largeFlagDAVResourceURI tut_northwind:Flag(countries.LargeFlagDAVResourceURI)
as virtrdf:tutCountry-LargeFlagDAVResourceURI ;
wgs:lat countries.Lat
as virtrdf:tutCountry-Lat ;
wgs:long countries.Lng
as virtrdf:tutCountry-Lng ;
rdfs:isDefinedBy tut_northwind:country_iri (countries.Name) ;
rdfs:isDefinedBy tut_northwind:Country (countries.Name).
tut_northwind:Country (countries.Name)
tut_northwind:has_province
tut_northwind:Province (provinces.CountryCode, provinces.Province) where (^{provinces.}^.CountryCode = ^{countries.}^.Code) as virtrdf:tutCountry-has_province .
tut_northwind:Province (provinces.CountryCode, provinces.Province)
a tut_northwind:Province
as virtrdf:tutProvince-Provinces ;
tut_northwind:has_country_code provinces.CountryCode
as virtrdf:tuthas_country_code ;
tut_northwind:provinceName provinces.Province
as virtrdf:tutProvince-ProvinceName ;
rdfs:isDefinedBy tut_northwind:province_iri (provinces.CountryCode, provinces.Province) ;
rdfs:isDefinedBy tut_northwind:Province (provinces.CountryCode, provinces.Province).
tut_northwind:Province (provinces.CountryCode, provinces.Province)
tut_northwind:is_province_of
tut_northwind:Country (countries.Name) where (^{countries.}^.Code = ^{provinces.}^.CountryCode) as virtrdf:tutProvince-country_of .
} .
} .
;
DELETE FROM db.dba.url_rewrite_rule_list where urrl_list like 'tut_nw%';
DELETE FROM db.dba.url_rewrite_rule where urr_rule like 'tut_nw%';
create procedure DB.DBA.install_run ()
{
declare file_text, uriqa varchar;
uriqa := registry_get('URIQADefaultHost');
file_text := (SELECT blob_to_string (RES_CONTENT) FROM WS.WS.SYS_DAV_RES where RES_FULL_PATH='/DAV/VAD/tutorial/rdfview/rd_v_1/rd_v_1.isparql');
file_text := replace(file_text, 'URIQA_MACRO', concat('http://', uriqa, '/tutorial/Northwind'));
update WS.WS.SYS_DAV_RES set RES_CONTENT=file_text where RES_FULL_PATH='/DAV/VAD/tutorial/rdfview/rd_v_1/rd_v_1.isparql';
}
;
DB.DBA.install_run()
;
drop procedure DB.DBA.install_run
;
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tut_nw_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/tutorial/Northwind%%3E+WHERE+{+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tut_nw_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/rdfbrowser/index.html?uri=http%%3A//^{URIQADefaultHost}^%U%%23this',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'tut_nw_rule3',
1,
'(/[^#]*)/\x24',
vector('path'),
1,
'%s',
vector('path'),
null,
null,
0,
null
);
create procedure DB.DBA.REMOVE_TUT_DEMO_RDF_DET()
{
declare colid int;
colid := DAV_SEARCH_ID('/DAV/VAD/tutorial/rdfview/rd_v_1/', 'C');
if (colid < 0)
return;
update WS.WS.SYS_DAV_COL set COL_DET=null where COL_ID = colid;
}
;
DB.DBA.REMOVE_TUT_DEMO_RDF_DET();
drop procedure DB.DBA.REMOVE_TUT_DEMO_RDF_DET;
create procedure DB.DBA.TUT_NORTHWIND_MAKE_RDF_DET()
{
declare uriqa_str varchar;
uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
uriqa_str := 'http://' || uriqa_str || '/tutorial/Northwind';
DB.DBA."RDFData_MAKE_DET_COL" ('/DAV/VAD/tutorial/rdfview/rd_v_1/RDFData/', uriqa_str, NULL);
VHOST_REMOVE (lpath=>'/tutorial/Northwind/data/rdf');
DB.DBA.VHOST_DEFINE (lpath=>'/tutorial/Northwind/data/rdf', ppath=>'/DAV/VAD/tutorial/rdfview/rd_v_1/RDFData/All/', is_dav=>1, vsp_user=>'dba');
}
;
DB.DBA.TUT_NORTHWIND_MAKE_RDF_DET();
drop procedure DB.DBA.TUT_NORTHWIND_MAKE_RDF_DET;
-- procedure to convert path to DET resource name
create procedure DB.DBA.TUT_NORTHWIND_DET_REF (in par varchar, in fmt varchar, in val varchar)
{
declare res, iri any;
declare uriqa_str varchar;
uriqa_str := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
uriqa_str := 'http://' || uriqa_str || '/tutorial/Northwind';
iri := uriqa_str || val;
res := sprintf ('iid (%d).rdf', iri_id_num (iri_to_id (iri)));
return sprintf (fmt, res);
}
;
DB.DBA.URLREWRITE_CREATE_REGEX_RULE ('tut_nw_rdf', 1,
'/tutorial/Northwind/(.*)', vector('path'), 1,
'/tutorial/Northwind/data/rdf/%U', vector('path'),
'DB.DBA.TUT_NORTHWIND_DET_REF',
'application/rdf.xml',
2,
303);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'tut_nw_rule_list1',
1,
vector (
'tut_nw_rule1',
'tut_nw_rule2',
'tut_nw_rule3',
'tut_nw_rdf'
));
VHOST_REMOVE (lpath=>'/tutorial/Northwind');
DB.DBA.VHOST_DEFINE (lpath=>'/tutorial/Northwind', ppath=>'/DAV/VAD/tutorial/rdfview/rd_v_1/', vsp_user=>'dba', is_dav=>1, def_page=>'sfront.vspx',
is_brws=>0, opts=>vector ('url_rewrite', 'tut_nw_rule_list1'));
create procedure DB.DBA.LOAD_TUTNW_ONTOLOGY_FROM_DAV()
{
declare content, urihost varchar;
whenever not found goto endpoint;
SELECT cast (RES_CONTENT as varchar) into content FROM WS.WS.SYS_DAV_RES where RES_FULL_PATH = '/DAV/VAD/tutorial/rdfview/rd_v_1/rd_v_1.owl';
if (content is null or content = '')
goto endpoint;
DB.DBA.RDF_LOAD_RDFXML (content, 'http://demo.openlinksw.com/schemas/tutorial/northwind#', 'http://demo.openlinksw.com/schemas/TutorialNorthwindOntology/1.0/');
if (urihost = 'demo.openlinksw.com')
{
DB.DBA.VHOST_REMOVE (lpath=>'/schemas/tutorial/northwind#');
DB.DBA.VHOST_DEFINE (lpath=>'/schemas/tutorial/northwind#', ppath=>'/DAV/VAD/tutorial/rdfview/rd_v_1/rd_v_1.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
DB.DBA.VHOST_REMOVE (lpath=>'/schemas/tutorial/northwind');
DB.DBA.VHOST_DEFINE (lpath=>'/schemas/tutorial/northwind', ppath=>'/DAV/VAD/tutorial/rdfview/rd_v_1/rd_v_1.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
}
endpoint:
;
}
;
DB.DBA.LOAD_TUTNW_ONTOLOGY_FROM_DAV()
;
drop procedure DB.DBA.LOAD_TUTNW_ONTOLOGY_FROM_DAV
;
create procedure DB.DBA.LOAD_TUTNW_ONTOLOGY_FROM_DAV2()
{
declare urihost varchar;
sparql base <http://demo.openlinksw.com/schemas/tutorial/northwind#> load bif:concat ("http://", bif:registry_get("URIQADefaultHost"), "/DAV/VAD/tutorial/rdfview/rd_v_1/rd_v_1.owl")
into graph <http://demo.openlinksw.com/schemas/TutorialNorthwindOntology/1.0/>;
urihost := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
if (urihost = 'demo.openlinksw.com')
{
DB.DBA.VHOST_REMOVE (lpath=>'/tutorial/northwind#');
DB.DBA.VHOST_DEFINE (lpath=>'/tutorial/northwind#', ppath=>'/DAV/VAD/tutorial/rdfview/rd_v_1/rd_v_1.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
}
}
;
--DB.DBA.LOAD_TUTNW_ONTOLOGY_FROM_DAV2();
drop procedure DB.DBA.LOAD_TUTNW_ONTOLOGY_FROM_DAV2
;
DB.DBA.XML_SET_NS_DECL ('tut_northwind', 'http://demo.openlinksw.com/schemas/tutorial/northwind#', 2);
use DB;
DB.DBA.exec_stmt ('UPDATE WS.WS.SYS_DAV_RES set RES_TYPE=\'image/jpeg\' where RES_FULL_PATH like \'/DAV/VAD/demo/sql/CAT%\'', 0)
;
DB.DBA.exec_stmt ('UPDATE WS.WS.SYS_DAV_RES set RES_TYPE=\'image/jpeg\' where RES_FULL_PATH like \'/DAV/VAD/demo/sql/EMP%\'', 0)
;
GRANT SELECT ON "Demo"."demo"."Products" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Suppliers" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Shippers" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Categories" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Customers" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Employees" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Orders" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Order_Details" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Countries" TO "SPARQL";
GRANT SELECT ON "Demo"."demo"."Provinces" TO "SPARQL";
SPARQL drop quad map graph iri("http://^{URIQADefaultHost}^/Northwind") .
;
SPARQL drop quad map virtrdf:NorthwindDemo .
;
SPARQL
prefix northwind: <http://demo.openlinksw.com/schemas/northwind#>
drop iri class northwind:Category .
drop iri class northwind:CategoryDoc .
drop iri class northwind:Shipper .
drop iri class northwind:ShipperDoc .
drop iri class northwind:Supplier .
drop iri class northwind:SupplierDoc .
drop iri class northwind:Product .
drop iri class northwind:ProductDoc .
drop iri class northwind:Customer .
drop iri class northwind:CustomerDoc .
drop iri class northwind:Employee .
drop iri class northwind:EmployeeDoc .
drop iri class northwind:Order .
drop iri class northwind:OrderDoc .
drop iri class northwind:CustomerContact .
drop iri class northwind:CustomerContactDoc .
drop iri class northwind:OrderLine .
drop iri class northwind:OrderLineDoc .
drop iri class northwind:Province .
drop iri class northwind:ProvinceDoc .
drop iri class northwind:Country .
drop iri class northwind:CountryDoc .
drop iri class northwind:Flag .
drop iri class northwind:FlagDoc .
drop iri class northwind:dbpedia_iri2 .
drop iri class northwind:EmployeePhoto .
drop iri class northwind:CategoryPhoto .
drop iri class northwind:category_iri .
drop iri class northwind:categorydoc_iri .
drop iri class northwind:shipper_iri .
drop iri class northwind:shipperdoc_iri .
drop iri class northwind:supplier_iri .
drop iri class northwind:supplierdoc_iri .
drop iri class northwind:product_iri .
drop iri class northwind:productdoc_iri .
drop iri class northwind:customer_iri .
drop iri class northwind:customerdoc_iri .
drop iri class northwind:employee_iri .
drop iri class northwind:employeedoc_iri .
drop iri class northwind:order_iri .
drop iri class northwind:orderdoc_iri .
drop iri class northwind:customercontact_iri .
drop iri class northwind:customercontactdoc_iri .
drop iri class northwind:orderline_iri .
drop iri class northwind:orderlinedoc_iri .
drop iri class northwind:province_iri .
drop iri class northwind:provincedoc_iri .
drop iri class northwind:country_iri .
drop iri class northwind:countrydoc_iri .
drop iri class northwind:employeephoto_iri .
drop iri class northwind:categoryphoto_iri .
drop iri class northwind:flag_iri .
drop iri class northwind:flagdoc_iri .
;
SPARQL
prefix northwind: <http://demo.openlinksw.com/schemas/northwind#>
create iri class northwind:Category "http://^{URIQADefaultHost}^/Northwind/Category/%d#this" (in category_id integer not null) .
create iri class northwind:CategoryDoc "http://^{URIQADefaultHost}^/Northwind/Category/%d" (in category_id integer not null) .
create iri class northwind:Shipper "http://^{URIQADefaultHost}^/Northwind/Shipper/%d#this" (in shipper_id integer not null) .
create iri class northwind:ShipperDoc "http://^{URIQADefaultHost}^/Northwind/Shipper/%d" (in shipper_id integer not null) .
create iri class northwind:Supplier "http://^{URIQADefaultHost}^/Northwind/Supplier/%d#this" (in supplier_id integer not null) .
create iri class northwind:SupplierDoc "http://^{URIQADefaultHost}^/Northwind/Supplier/%d" (in supplier_id integer not null) .
create iri class northwind:Product "http://^{URIQADefaultHost}^/Northwind/Product/%d#this" (in product_id integer not null) .
create iri class northwind:ProductDoc "http://^{URIQADefaultHost}^/Northwind/Product/%d" (in product_id integer not null) .
create iri class northwind:Customer "http://^{URIQADefaultHost}^/Northwind/Customer/%U#this" (in customer_id varchar not null) .
create iri class northwind:CustomerDoc "http://^{URIQADefaultHost}^/Northwind/Customer/%U" (in customer_id varchar not null) .
create iri class northwind:Employee "http://^{URIQADefaultHost}^/Northwind/Employee/%U_%U_%d#this" (in employee_firstname varchar not null, in employee_lastname varchar not null, in employee_id integer not null) .
create iri class northwind:EmployeeDoc "http://^{URIQADefaultHost}^/Northwind/Employee/%U_%U_%d" (in employee_firstname varchar not null, in employee_lastname varchar not null, in employee_id integer not null) .
create iri class northwind:Order "http://^{URIQADefaultHost}^/Northwind/Order/%d#this" (in order_id integer not null) .
create iri class northwind:OrderDoc "http://^{URIQADefaultHost}^/Northwind/Order/%d" (in order_id integer not null) .
create iri class northwind:CustomerContact "http://^{URIQADefaultHost}^/Northwind/CustomerContact/%U#this" (in customer_id varchar not null) .
create iri class northwind:CustomerContactDoc "http://^{URIQADefaultHost}^/Northwind/CustomerContact/%U" (in customer_id varchar not null) .
create iri class northwind:OrderLine "http://^{URIQADefaultHost}^/Northwind/OrderLine/%d/%d#this" (in order_id integer not null, in product_id integer not null) .
create iri class northwind:OrderLineDoc "http://^{URIQADefaultHost}^/Northwind/OrderLine/%d/%d" (in order_id integer not null, in product_id integer not null) .
create iri class northwind:Province "http://^{URIQADefaultHost}^/Northwind/Province/%U/%U#this" (in country_name varchar not null, in province_name varchar not null) .
create iri class northwind:ProvinceDoc "http://^{URIQADefaultHost}^/Northwind/Province/%U/%U" (in country_name varchar not null, in province_name varchar not null) .
create iri class northwind:Country "http://^{URIQADefaultHost}^/Northwind/Country/%U#this" (in country_name varchar not null) .
create iri class northwind:CountryDoc "http://^{URIQADefaultHost}^/Northwind/Country/%U" (in country_name varchar not null) .
create iri class northwind:Flag "http://^{URIQADefaultHost}^%U#this" (in flag_path varchar not null) .
create iri class northwind:FlagDoc "http://^{URIQADefaultHost}^%U" (in flag_path varchar not null) .
create iri class northwind:dbpedia_iri2 "http://dbpedia.org/resource/%U" (in uname varchar not null) .
create iri class northwind:EmployeePhoto "http://^{URIQADefaultHost}^/DAV/VAD/demo/sql/EMP%d#this" (in emp_id varchar not null) .
create iri class northwind:CategoryPhoto "http://^{URIQADefaultHost}^/DAV/VAD/demo/sql/CAT%d#this" (in category_id varchar not null) .
create iri class northwind:Phone "tel:%s" (in phone_number varchar) .
create iri class northwind:Fax "fax:%s" (in fax_number varchar) .
;
SPARQL
prefix northwind: <http://demo.openlinksw.com/schemas/northwind#>
prefix oplsioc: <http://www.openlinksw.com/schemas/oplsioc#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix sioc: <http://rdfs.org/sioc/ns#>
prefix foaf: <http://xmlns.com/foaf/0.1/>
prefix owl: <http://www.w3.org/2002/07/owl#>
prefix wgs: <http://www.w3.org/2003/01/geo/wgs84_pos#>
alter quad storage virtrdf:DefaultQuadStorage
FROM Demo.demo.Products as products
FROM Demo.demo.Suppliers as suppliers
FROM Demo.demo.Shippers as shippers
FROM Demo.demo.Categories as categories
FROM Demo.demo.Customers as customers
FROM Demo.demo.Employees as employees
FROM Demo.demo.Orders as orders
FROM Demo.demo.Order_Details as order_lines
FROM Demo.demo.Countries as countries
FROM Demo.demo.Provinces as provinces
where (^{suppliers.}^.Country = ^{countries.}^.Name)
where (^{customers.}^.Country = ^{countries.}^.Name)
where (^{employees.}^.Country = ^{countries.}^.Name)
where (^{orders.}^.ShipCountry = ^{countries.}^.Name)
{
create virtrdf:NorthwindDemo as graph iri ("http://^{URIQADefaultHost}^/Northwind") option (exclusive)
{
northwind:CustomerContact (customers.CustomerID)
a foaf:Person
as virtrdf:CustomerContact-foaf_Person .
northwind:CustomerContact (customers.CustomerID)
a northwind:CustomerContact
as virtrdf:CustomerContact-CustomerContact;
foaf:name customers.ContactName
as virtrdf:CustomerContact-contact_name ;
foaf:phone northwind:Phone (customers.Phone)
as virtrdf:CustomerContact-foaf_phone ;
northwind:is_contact_at northwind:Customer (customers.CustomerID)
as virtrdf:CustomerContact-is_contact_at ;
northwind:country northwind:Country (customers.Country)
as virtrdf:CustomerContact-country ;
rdfs:isDefinedBy northwind: .
northwind:CustomerContactDoc (customers.CustomerID)
a northwind:CustomerContactDoc
as virtrdf:CustomerContactDoc-CustomerID ;
a foaf:Document
as virtrdf:CustomerContactDoc-foaf_DocCustomerID ;
foaf:primaryTopic northwind:CustomerContact (customers.CustomerID)
as virtrdf:CustomerContactDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Country (customers.Country)
northwind:is_country_of
northwind:CustomerContact (customers.CustomerID) as virtrdf:CustomerContact-is_country_of .
northwind:Product (products.ProductID)
a northwind:Product
as virtrdf:Product-ProductID ;
northwind:has_category northwind:Category (products.CategoryID)
as virtrdf:Product-product_has_category ;
northwind:has_supplier northwind:Supplier (products.SupplierID)
as virtrdf:Product-product_has_supplier ;
northwind:productName products.ProductName
as virtrdf:Product-name_of_product ;
northwind:quantityPerUnit products.QuantityPerUnit
as virtrdf:Product-quantity_per_unit ;
northwind:unitPrice products.UnitPrice
as virtrdf:Product-unit_price ;
northwind:unitsInStock products.UnitsInStock
as virtrdf:Product-units_in_stock ;
northwind:unitsOnOrder products.UnitsOnOrder
as virtrdf:Product-units_on_order ;
northwind:reorderLevel products.ReorderLevel
as virtrdf:Product-reorder_level ;
northwind:discontinued products.Discontinued
as virtrdf:Product-discontinued ;
rdfs:isDefinedBy northwind: .
northwind:ProductDoc (products.ProductID)
a northwind:ProductDoc
as virtrdf:ProductDoc-ProductID ;
a foaf:Document
as virtrdf:ProductDoc-foaf_DocProductID ;
foaf:primaryTopic northwind:Product (products.ProductID)
as virtrdf:ProductDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Category (products.CategoryID)
northwind:category_of northwind:Product (products.ProductID) as virtrdf:Product-category_of .
northwind:Supplier (products.SupplierID)
northwind:supplier_of northwind:Product (products.ProductID) as virtrdf:Product-supplier_of .
northwind:Supplier (suppliers.SupplierID)
a northwind:Supplier
as virtrdf:Supplier-SupplierID ;
northwind:companyName suppliers.CompanyName
as virtrdf:Supplier-company_name ;
northwind:contactName suppliers.ContactName
as virtrdf:Supplier-contact_name ;
northwind:contactTitle suppliers.ContactTitle
as virtrdf:Supplier-contact_title ;
northwind:address suppliers.Address
as virtrdf:Supplier-address ;
northwind:city northwind:dbpedia_iri2(suppliers.City)
as virtrdf:Supplier-dbpediacity ;
northwind:region suppliers.Region
as virtrdf:Supplier-region ;
northwind:postalCode suppliers.PostalCode
as virtrdf:Supplier-postal_code ;
northwind:country northwind:Country(suppliers.Country)
as virtrdf:Supplier-country ;
northwind:phone northwind:Phone (suppliers.Phone)
as virtrdf:Supplier-phone ;
northwind:fax northwind:Fax (suppliers.Fax)
as virtrdf:Supplier-fax ;
northwind:homePage suppliers.HomePage
as virtrdf:Supplier-home_page ;
rdfs:isDefinedBy northwind: .
northwind:SupplierDoc (suppliers.SupplierID)
a northwind:SupplierDoc
as virtrdf:SupplierDoc-SupplierID ;
a foaf:Document
as virtrdf:SupplierDoc-foaf_DocSupplierID ;
foaf:primaryTopic northwind:Supplier (suppliers.SupplierID)
as virtrdf:SupplierDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Country (suppliers.Country)
northwind:is_country_of
northwind:Supplier (suppliers.SupplierID) as virtrdf:Supplier-is_country_of .
northwind:Category (categories.CategoryID)
a northwind:Category
as virtrdf:Category-CategoryID ;
northwind:categoryName categories.CategoryName
as virtrdf:Category-home_page ;
northwind:description categories.Description
as virtrdf:Category-description ;
foaf:img northwind:CategoryPhoto(categories.CategoryID)
as virtrdf:Category-categories.CategoryPhoto ;
rdfs:isDefinedBy northwind: .
northwind:CategoryDoc (categories.CategoryID)
a northwind:CategoryDoc
as virtrdf:CategoryDoc-CategoryID ;
a foaf:Document
as virtrdf:CategoryDoc-foaf_DocCategoryID ;
foaf:primaryTopic northwind:Category (categories.CategoryID)
as virtrdf:CategoryDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:CategoryPhoto(categories.CategoryID)
a northwind:CategoryPhoto
as virtrdf:Category-categories.CategoryPhotoID ;
rdfs:isDefinedBy northwind: .
northwind:Shipper (shippers.ShipperID)
a northwind:Shipper
as virtrdf:Shipper-ShipperID ;
northwind:companyName shippers.CompanyName
as virtrdf:Shipper-company_name ;
northwind:phone northwind:Phone (shippers.Phone)
as virtrdf:Shipper-phone ;
rdfs:isDefinedBy northwind: .
northwind:ShipperDoc (shippers.ShipperID)
a northwind:ShipperDoc
as virtrdf:ShipperDoc-ShipperID ;
a foaf:Document
as virtrdf:ShipperDoc-foaf_DocShipperID ;
foaf:primaryTopic northwind:Shipper (shippers.ShipperID)
as virtrdf:ShipperDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Customer (customers.CustomerID)
a northwind:Customer
as virtrdf:Customer-CustomerID2 ;
a foaf:Organization
as virtrdf:Customer-CustomerID ;
foaf:name customers.CompanyName
as virtrdf:Customer-foaf_name ;
northwind:companyName customers.CompanyName
as virtrdf:Customer-company_name ;
northwind:has_contact northwind:CustomerContact (customers.CustomerID)
as virtrdf:Customer-contact ;
northwind:country northwind:Country (customers.Country)
as virtrdf:Customer-country ;
northwind:contactName customers.ContactName
as virtrdf:Customer-contact_name ;
northwind:contactTitle customers.ContactTitle
as virtrdf:Customer-contact_title ;
northwind:address customers.Address
as virtrdf:Customer-address ;
northwind:city northwind:dbpedia_iri2(customers.City)
as virtrdf:Customer-dbpediacity ;
northwind:region customers.Region
as virtrdf:Customer-region ;
northwind:PostalCode customers.PostalCode
as virtrdf:Customer-postal_code ;
foaf:phone northwind:Phone (customers.Phone)
as virtrdf:Customer-foaf_phone ;
northwind:phone northwind:Phone (customers.Phone)
as virtrdf:Customer-phone ;
northwind:fax northwind:Fax (customers.Fax)
as virtrdf:Customer-fax ;
rdfs:isDefinedBy northwind: .
northwind:CustomerDoc (customers.CustomerID)
a northwind:CustomerDoc
as virtrdf:CustomerDoc-CustomerID2 ;
a foaf:Document
as virtrdf:CustomerDoc-CustomerID3 ;
foaf:primaryTopic northwind:Customer (customers.CustomerID)
as virtrdf:CustomerDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Country (customers.Country)
northwind:is_country_of
northwind:Customer (customers.CustomerID) as virtrdf:Customer-is_country_of .
northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID)
a northwind:Employee
as virtrdf:Employee-EmployeeID2 ;
a foaf:Person
as virtrdf:Employee-EmployeeID ;
foaf:surname employees.LastName
as virtrdf:Employee-foaf_last_name ;
northwind:lastName employees.LastName
as virtrdf:Employee-last_name ;
foaf:firstName employees.FirstName
as virtrdf:Employee-foaf_first_name ;
northwind:firstName employees.FirstName
as virtrdf:Employee-first_name ;
foaf:title employees.Title
as virtrdf:Employee-title ;
northwind:titleOfCourtesy employees.TitleOfCourtesy
as virtrdf:Employee-title_of_courtesy ;
foaf:birthday employees.BirthDate
as virtrdf:Employee-foaf_birth_date ;
northwind:birthday employees.BirthDate
as virtrdf:Employee-birth_date ;
northwind:hireDate employees.HireDate
as virtrdf:Employee-hire_date ;
northwind:address employees.Address
as virtrdf:Employee-address ;
northwind:city northwind:dbpedia_iri2(employees.City)
as virtrdf:Employee-dbpediacity ;
northwind:region employees.Region
as virtrdf:Employee-region ;
northwind:postalCode employees.PostalCode
as virtrdf:Employee-postal_code ;
northwind:country northwind:Country(employees.Country)
as virtrdf:Employee-country ;
foaf:phone employees.HomePhone
as virtrdf:Employee-home_phone ;
northwind:extension employees.Extension
as virtrdf:Employee-extension ;
northwind:notes employees.Notes
as virtrdf:Employee-notes ;
northwind:reportsTo northwind:Employee(employees.FirstName, employees.LastName, employees.ReportsTo) where (^{employees.}^.ReportsTo = ^{employees.}^.EmployeeID)
as virtrdf:Employee-reports_to ;
foaf:img northwind:EmployeePhoto(employees.EmployeeID)
as virtrdf:Employee-employees.EmployeePhoto ;
rdfs:isDefinedBy northwind: .
northwind:EmployeeDoc (employees.FirstName, employees.LastName, employees.EmployeeID)
a northwind:EmployeeDoc
as virtrdf:EmployeeDoc-EmployeeID2 ;
a foaf:Document
as virtrdf:EmployeeDoc-EmployeeID3 ;
foaf:primaryTopic northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID)
as virtrdf:EmployeeDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:EmployeePhoto(employees.EmployeeID)
a northwind:EmployeePhoto
as virtrdf:Employee-employees.EmployeePhotoId ;
rdfs:isDefinedBy northwind: .
northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID)
northwind:is_salesrep_of
northwind:Order (orders.OrderID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID) as virtrdf:Order-is_salesrep_of .
northwind:Country (employees.Country)
northwind:is_country_of
northwind:Employee (employees.FirstName, employees.LastName, employees.EmployeeID) as virtrdf:Employee-is_country_of .
northwind:Order (orders.OrderID)
a northwind:Order
as virtrdf:Order-Order ;
northwind:has_customer northwind:Customer (orders.CustomerID)
as virtrdf:Order-order_has_customer ;
northwind:has_salesrep northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID)
as virtrdf:Customer-has_salesrep ;
northwind:has_employee northwind:Employee (employees.FirstName, employees.LastName, orders.EmployeeID) where (^{orders.}^.EmployeeID = ^{employees.}^.EmployeeID)
as virtrdf:Order-order_has_employee ;
northwind:orderDate orders.OrderDate
as virtrdf:Order-order_date ;
northwind:requiredDate orders.RequiredDate
as virtrdf:Order-required_date ;
northwind:shippedDate orders.ShippedDate
as virtrdf:Order-shipped_date ;
northwind:order_ship_via northwind:Shipper (orders.ShipVia)
as virtrdf:Order-order_ship_via ;
northwind:freight orders.Freight
as virtrdf:Order-freight ;
northwind:shipName orders.ShipName
as virtrdf:Order-ship_name ;
northwind:shipAddress orders.ShipAddress
as virtrdf:Order-ship_address ;
northwind:shipCity northwind:dbpedia_iri2(orders.ShipCity)
as virtrdf:Order-dbpediaship_city ;
northwind:shipRegion orders.ShipRegion
as virtrdf:Order-ship_region ;
northwind:shipPostal_code orders.ShipPostalCode
as virtrdf:Order-ship_postal_code ;
northwind:shipCountry northwind:Country(orders.ShipCountry)
as virtrdf:ship_country ;
rdfs:isDefinedBy northwind: .
northwind:OrderDoc (orders.OrderID)
a northwind:OrderDoc
as virtrdf:OrderDoc-OrderID2 ;
a foaf:Document
as virtrdf:OrderDoc-OrderID3 ;
foaf:primaryTopic northwind:Order (orders.OrderID)
as virtrdf:OrderDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Country (orders.ShipCountry)
northwind:is_ship_country_of
northwind:Order (orders.OrderID) as virtrdf:Order-is_country_of .
northwind:Customer (orders.CustomerID)
northwind:has_order northwind:Order (orders.OrderID) as virtrdf:Order-has_order .
northwind:Shipper (orders.ShipVia)
northwind:ship_order northwind:Order (orders.OrderID) as virtrdf:Order-ship_order .
northwind:OrderLine (order_lines.OrderID, order_lines.ProductID)
a northwind:OrderLine
as virtrdf:OrderLine-OrderLines ;
northwind:has_order_id northwind:Order (order_lines.OrderID)
as virtrdf:order_lines_has_order_id ;
northwind:has_product_id northwind:Product (order_lines.ProductID)
as virtrdf:order_lines_has_product_id ;
northwind:unitPrice order_lines.UnitPrice
as virtrdf:OrderLine-unit_price ;
northwind:quantity order_lines.Quantity
as virtrdf:OrderLine-quantity ;
northwind:discount order_lines.Discount
as virtrdf:OrderLine-discount ;
rdfs:isDefinedBy northwind: .
northwind:OrderLineDoc (order_lines.OrderID, order_lines.ProductID)
a northwind:OrderLineDoc
as virtrdf:OrderLineDoc-OrderLineID2 ;
a foaf:Document
as virtrdf:OrderLineDoc-OrderLineID3 ;
foaf:primaryTopic northwind:OrderLine (order_lines.OrderID, order_lines.ProductID)
as virtrdf:OrderLineDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Order (orders.OrderID)
northwind:is_order_of
northwind:OrderLine (order_lines.OrderID, order_lines.ProductID) where (^{orders.}^.OrderID = ^{order_lines.}^.OrderID) as virtrdf:Order-is_order_of .
northwind:Product (products.ProductID)
northwind:is_product_of
northwind:OrderLine (order_lines.OrderID, order_lines.ProductID) where (^{products.}^.ProductID = ^{order_lines.}^.ProductID) as virtrdf:Product-is_product_of .
northwind:Country (countries.Name)
a northwind:Country
as virtrdf:Country-Type2 ;
a wgs:SpatialThing
as virtrdf:Country-Type ;
owl:sameAs northwind:dbpedia_iri2 (countries.Name) ;
northwind:name countries.Name
as virtrdf:Country-Name ;
northwind:code countries.Code
as virtrdf:Country-Code ;
northwind:smallFlagDAVResourceName countries.SmallFlagDAVResourceName
as virtrdf:Country-SmallFlagDAVResourceName ;
northwind:largeFlagDAVResourceName countries.LargeFlagDAVResourceName
as virtrdf:Country-LargeFlagDAVResourceName ;
northwind:smallFlagDAVResourceURI northwind:Flag(countries.SmallFlagDAVResourceURI)
as virtrdf:Country-SmallFlagDAVResourceURI ;
northwind:largeFlagDAVResourceURI northwind:Flag(countries.LargeFlagDAVResourceURI)
as virtrdf:Country-LargeFlagDAVResourceURI ;
wgs:lat countries.Lat
as virtrdf:Country-Lat ;
wgs:long countries.Lng
as virtrdf:Country-Lng ;
rdfs:isDefinedBy northwind: .
northwind:CountryDoc (countries.Name)
a northwind:CountryDoc
as virtrdf:CountryDoc-CountryID2 ;
a foaf:Document
as virtrdf:CountryDoc-CountryID3 ;
foaf:primaryTopic northwind:Country (countries.Name)
as virtrdf:CountryDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Country (countries.Name)
northwind:has_province
northwind:Province (provinces.CountryCode, provinces.Province) where (^{provinces.}^.CountryCode = ^{countries.}^.Code) as virtrdf:Country-has_province .
northwind:Province (provinces.CountryCode, provinces.Province)
a northwind:Province
as virtrdf:Province-Provinces ;
owl:sameAs northwind:dbpedia_iri2 (provinces.Province) ;
northwind:has_country_code provinces.CountryCode
as virtrdf:has_country_code ;
northwind:provinceName provinces.Province
as virtrdf:Province-ProvinceName ;
rdfs:isDefinedBy northwind: .
northwind:ProvinceDoc (provinces.CountryCode, provinces.Province)
a northwind:ProvinceDoc
as virtrdf:ProvinceDoc-ProvinceID2 ;
a foaf:Document
as virtrdf:ProvinceDoc-ProvinceID3 ;
foaf:primaryTopic northwind:Province (provinces.CountryCode, provinces.Province)
as virtrdf:ProvinceDoc-foaf_primarytopic ;
rdfs:isDefinedBy northwind: .
northwind:Province (provinces.CountryCode, provinces.Province)
northwind:is_province_of
northwind:Country (countries.Name) where (^{countries.}^.Code = ^{provinces.}^.CountryCode) as virtrdf:Province-country_of .
}.
}.
;
delete FROM DB.DBA.URL_REWRITE_RULE_LIST where urrl_list like 'demo_nw%';
delete FROM DB.DBA.URL_REWRITE_RULE where urr_rule like 'demo_nw%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'demo_nw_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%23this%%3E+%%3Chttp%%3A//^{URIQADefaultHost}^%U%%3E+FROM+%%3Chttp%%3A//^{URIQADefaultHost}^/Northwind%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'demo_nw_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'demo_nw_rule_list1',
1,
vector (
'demo_nw_rule1',
'demo_nw_rule2'
));
VHOST_REMOVE (lpath=>'/Northwind');
DB.DBA.VHOST_DEFINE (lpath=>'/Northwind', ppath=>'/DAV/home/demo/', vsp_user=>'dba', is_dav=>1,
is_brws=>0, opts=>vector ('url_rewrite', 'demo_nw_rule_list1'));
create procedure DB.DBA.LOAD_NW_ONTOLOGY_FROM_DAV()
{
declare content1, urihost varchar;
SELECT cast (RES_CONTENT as varchar) into content1 FROM WS.WS.SYS_DAV_RES where RES_FULL_PATH = '/DAV/VAD/demo/sql/nw.owl';
DB.DBA.RDF_LOAD_RDFXML (content1, 'http://demo.openlinksw.com/schemas/northwind#', 'http://demo.openlinksw.com/schemas/NorthwindOntology/1.0/');
urihost := cfg_item_value(virtuoso_ini_path(), 'URIQA','DefaultHost');
if (urihost = 'demo.openlinksw.com')
{
DB.DBA.VHOST_REMOVE (lpath=>'/schemas/northwind');
DB.DBA.VHOST_DEFINE (lpath=>'/schemas/northwind', ppath=>'/DAV/VAD/demo/sql/nw.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
DB.DBA.VHOST_REMOVE (lpath=>'/schemas/northwind#');
DB.DBA.VHOST_DEFINE (lpath=>'/schemas/northwind#', ppath=>'/DAV/VAD/demo/sql/nw.owl', vsp_user=>'dba', is_dav=>1, is_brws=>0);
}
};
DB.DBA.LOAD_NW_ONTOLOGY_FROM_DAV();
drop procedure DB.DBA.LOAD_NW_ONTOLOGY_FROM_DAV;
DB.DBA.XML_SET_NS_DECL ('northwind', 'http://demo.openlinksw.com/schemas/northwind#', 2);
Basic Northwind Ontology
<?xml version="1.0" encoding="utf-8"?>
<!--
-
-
- This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
- project.
-
- Copyright (C) 1998-2007 OpenLink Software
-
- This project is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; only version 2 of the License, dated June 1991.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-->
<rdf:RDF xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl ="http://www.w3.org/2002/07/owl#"
xmlns:virtrdf="http://www.openlinksw.com/schemas/virtrdf#"
xml:base="http://demo.openlinksw.com/schemas/northwind#">
<owl:Ontology rdf:about="http://demo.openlinksw.com/schemas/northwind#">
<rdfs:label>Northwind</rdfs:label>
<rdfs:comment>Northwind database classes and properties</rdfs:comment>
<virtrdf:catName>Northwind</virtrdf:catName>
<virtrdf:version>1.00</virtrdf:version>
</owl:Ontology>
<rdfs:Class rdf:ID="Product">
<rdfs:label>Product</rdfs:label>
</rdfs:Class>
<rdf:Property rdf:ID="has_category">
<rdfs:range rdf:resource="#Category"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Category</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="has_supplier">
<rdfs:range rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Supplier</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProductName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ProductName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="QuantityPerUnit">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>QuantityPerUnit</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="UnitPrice">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#double"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:domain rdf:resource="#OrderLine"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>UnitPrice</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="UnitsInStock">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>UnitsInStock</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="UnitsOnOrder">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>UnitsOnOrder</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ReorderLevel">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ReorderLevel</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Discontinued">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
<rdfs:domain rdf:resource="#Product"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Discontinued</rdfs:label>
</rdf:Property>
<rdfs:Class rdf:ID="Supplier">
<rdfs:label>Supplier</rdfs:label>
</rdfs:Class>
<rdf:Property rdf:ID="CompanyName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Shipper"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>CompanyName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ContactName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/name"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#CustomerContact"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ContactName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ContactTitle">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/title"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ContactTitle</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Address">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Address</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="City">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>City</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Region">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Region</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="PostalCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>PostalCode</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="CountryName">
<rdfs:range rdf:resource="#Country"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#CustomerContact"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Country</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Phone">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/phone"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Shipper"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#CustomerContact"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Phone</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Fax">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:domain rdf:resource="#Customer"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Fax</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="HomePage">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Supplier"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>HomePage</rdfs:label>
</rdf:Property>
<rdfs:Class rdf:ID="Category">
<rdfs:label>Category</rdfs:label>
</rdfs:Class>
<rdf:Property rdf:ID="CategoryName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Category"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>CategoryName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Description">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Category"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Description</rdfs:label>
</rdf:Property>
<rdfs:Class rdf:ID="Shipper">
<rdfs:label>Shipper</rdfs:label>
</rdfs:Class>
<rdfs:Class rdf:ID="CustomerContact">
<rdfs:label>CustomerContact</rdfs:label>
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Customer">
<rdfs:label>Customer</rdfs:label>
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Organization"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Employee">
<rdfs:label>Employee</rdfs:label>
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
</rdfs:Class>
<rdf:Property rdf:ID="LastName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/surname"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>LastName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="FirstName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/firstName"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>FirstName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Title">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/title"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Title</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="TitleOfCourtesy">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>TitleOfCourtesy</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="BirthDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:subPropertyOf rdf:resource="http://xmlns.com/foaf/0.1/birthday"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>BirthDate</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="HireDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>HireDate</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Extension">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Extension</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Notes">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Notes</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ReportsTo">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
<rdfs:domain rdf:resource="#Employee"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ReportsTo</rdfs:label>
</rdf:Property>
<rdfs:Class rdf:ID="Order">
<rdfs:label>Order</rdfs:label>
</rdfs:Class>
<rdf:Property rdf:ID="has_customer">
<rdfs:range rdf:resource="#Customer"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Customer</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="has_employee">
<rdfs:range rdf:resource="#Employee"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Employee</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="OrderDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>OrderDate</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="RequiredDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>RequiredDate</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ShippedDate">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ShippedDate</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="order_ship_via">
<rdfs:range rdf:resource="#Shipper"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Shipper</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Freight">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#double"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Freight</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ShipName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ShipName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ShipAddress">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ShipAddress</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ShipCity">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ShipCity</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ShipRegion">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ShipRegion</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ShipPostalCode">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ShipPostalCode</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ShipCountry">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Order"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ShipCountry</rdfs:label>
</rdf:Property>
<rdfs:Class rdf:ID="OrderLine">
<rdfs:label>OrderLine</rdfs:label>
</rdfs:Class>
<rdf:Property rdf:ID="has_order_id">
<rdfs:range rdf:resource="#Order"/>
<rdfs:domain rdf:resource="#OrderLine"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Order</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="has_product_id">
<rdfs:range rdf:resource="#Product"/>
<rdfs:domain rdf:resource="#OrderLine"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Product</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Quantity">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/>
<rdfs:domain rdf:resource="#OrderLine"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Quantity</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Discount">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#double"/>
<rdfs:domain rdf:resource="#OrderLine"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Discount</rdfs:label>
</rdf:Property>
<rdfs:Class rdf:ID="Country">
<rdfs:label>Country</rdfs:label>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing"/>
</rdfs:Class>
<rdf:Property rdf:ID="Name">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Name</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Code">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Code</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="SmallFlagDAVResourceName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>SmallFlagDAVResourceName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="LargeFlagDAVResourceName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>LargeFlagDAVResourceName</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="SmallFlagDAVResourceURI">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>SmallFlagDAVResourceURI</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="LargeFlagDAVResourceURI">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>LargeFlagDAVResourceURI</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Lat">
<rdfs:range rdf:resource="ttp://www.w3.org/2003/01/geo/wgs84_pos#lat"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Lat</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="Lng">
<rdfs:range rdf:resource="ttp://www.w3.org/2003/01/geo/wgs84_pos#lng"/>
<rdfs:domain rdf:resource="#Country"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Lng</rdfs:label>
</rdf:Property>
<rdfs:Class rdf:ID="Province">
<rdfs:label>Province</rdfs:label>
</rdfs:Class>
<rdf:Property rdf:ID="has_country_code">
<rdfs:range rdf:resource="#Country"/>
<rdfs:domain rdf:resource="#Provinces"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>Country Code</rdfs:label>
</rdf:Property>
<rdf:Property rdf:ID="ProvinceName">
<rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
<rdfs:domain rdf:resource="#Province"/>
<rdfs:cardinality>1</rdfs:cardinality>
<rdfs:label>ProvinceName</rdfs:label>
</rdf:Property>
</rdf:RDF>
Live links to a sample instance
Script to set up your own instance
-- Setup script for RDF views of Oracle 10 Human Resources Sample Database --
GRANT SELECT ON HR.orama.COUNTRIES TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.REGIONS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.DEPARTMENTS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.LOCATIONS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.EMPLOYEES TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.JOBS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.JOB_HISTORY TO "SPARQL", "SPARQL_UPDATE";
-------------------------------------------------------------------
-------- Create rdfs:Class definitions ----------------------------
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix hr: <http://localhost:8890/schemas/oraclehr/> .
hr:countries a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "COUNTRIES" ;
rdfs:comment "Oracle HR COUNTRIES table" .
hr:country_id a rdf:Property ;
rdfs:domain hr:countries ;
rdfs:range xsd:string ;
rdfs:label "COUNTRY ID" .
hr:country_name a rdf:Property ;
rdfs:domain hr:countries ;
rdfs:range xsd:string ;
rdfs:label "COUNTRY NAME" .
hr:region_id a rdf:Property ;
rdfs:domain hr:countries ;
rdfs:range hr:regions ;
rdfs:label "REGION ID" .
hr:regions a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "REGIONS" ;
rdfs:comment "Oracle HR REGIONS table" .
hr:region_id a rdf:Property ;
rdfs:domain hr:regions ;
rdfs:range xsd:integer ;
rdfs:label "REGION ID" .
hr:region_name a rdf:Property ;
rdfs:domain hr:regions ;
rdfs:range xsd:string ;
rdfs:label "REGION NAME" .
hr:departments a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "DEPARTMENTS" ;
rdfs:comment "Oracle HR DEPARTMENT table" .
hr:department_id a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range xsd:integer ;
rdfs:label "DEPARTMENT ID" .
hr:department_name a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range xsd:string ;
rdfs:comment "DEPARTMENT NAME" .
hr:manager_id a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range hr:employees ;
rdfs:comment "MANAGER ID" .
hr:location_id a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range hr:locations ;
rdfs:comment "LOCATION ID" .
hr:employees a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "employees" ;
rdfs:comment "Oracle HR EMPLOYEES table" .
hr:employee_id a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range xsd:integer ;
rdfs:label "EMPLOYEE ID" .
hr:first_name a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range xsd:string ;
rdfs:label "FIRST NAME" .
hr:last_name a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:string ;
rdfs:label "LAST NAME" .
hr:email a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range xsd:string ;
rdfs:label "EMAIL" .
hr:phone_number a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:string ;
rdfs:label "PHONE NUMBER" .
hr:hire_date a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:date ;
rdfs:label "HIRE DATE" .
hr:job_id a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range hr:jobs ;
rdfs:label "JOB ID" .
hr:salary a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:integer ;
rdfs:label "SALARY" .
hr:commission_pct a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:integer ;
rdfs:label "COMMISSION PCT" .
hr:manager_id a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:string ;
rdfs:label "MANAGER ID" .
hr:department_id a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range hr:departments ;
rdfs:label "DEPARTMENT ID" .
hr:jobs a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "JOBS" ;
rdfs:comment "Oracle HR JOBS table" .
hr:job_id a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:string ;
rdfs:label "JOB ID" .
hr:job_title a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:string ;
rdfs:label "JOB TITLE" .
hr:min_salary a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:number;
rdfs:label "MIN SALARY" .
hr:max_salary a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:number;
rdfs:label "MAXSALARY" .
hr:job_history a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "JOB HISTORY" ;
rdfs:comment "Oracle HR JOB HISTORY table" .
hr:employee_id a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range hr:employees ;
rdfs:label "EMPLOYEE ID" .
hr:start_date a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range xsd:date ;
rdfs:label "START DATE" .
hr:end_date a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range xsd:date ;
rdfs:label "END DATE" .
hr:job_id a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range hr:jobs ;
rdfs:label "JOB ID" .
hr:department_id a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range hr:departments ;
rdfs:label "DEPARTMENT ID" .
hr:locations a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "LOCATIONS" ;
rdfs:comment "Oracle HR JOB LOCATIONS table" .
hr:location_id a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:number ;
rdfs:label "LOCATION ID" .
hr:street_address a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "STREET ADDRESS" .
hr:postal_code a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "POSTAL CODE" .
hr:city a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "CITY" .
hr:state_province a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "STATE PROVINCE" .
hr:country_id a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range hr:countries ;
rdfs:label "COUNTRY" .
', '', 'http://localhost:8890/schemas/oraclehr', 0);
---------------------------------------------------------------
----------- Create IRI Classes -------------
create function DB.DBA.JOB_HISTORY (in EMPLOYEE_ID integer, in
START_DATE date) returns varchar
{
return sprintf_or_null
('http://localhost:8890/oraclehr/job_history/%d_%s#this',
EMPLOYEE_ID, cast (START_DATE as varchar) );
}
;
create function DB.DBA.JOB_HISTORY_INV_1 (in id varchar) returns integer
{
return sprintf_inverse (id,
'http://localhost:8890/oraclehr/job_history/%d_%s#this',
2)[0];
}
;
create function DB.DBA.JOB_HISTORY_INV_2 (in id varchar) returns date
{
declare exit handler for sqlstate '*' { return NULL; };
return cast (sprintf_inverse (id,
'http://localhost:8890/oraclehr/job_history/%d_%s#this',
2)[1] as date);
}
;
GRANT EXECUTE ON DB.DBA.JOB_HISTORY TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON DB.DBA.JOB_HISTORY_URI_INV_1 TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON DB.DBA.JOB_HISTORY_URI_INV_2 TO "SPARQL", "SPARQL_UPDATE";
SPARQL
create iri class <http://localhost:8890/schemas/oraclehr/countries_iri>
"http://^{URIQADefaultHost}^/oraclehr/countries/%s#this"
(in COUNTRY_ID varchar not null) .
create iri class <http://localhost:8890/schemas/oraclehr/regions_iri>
"http://^{URIQADefaultHost}^/oraclehr/regions/%d#this"
(in REGION_ID integer not null) .
create iri class <http://localhost:8890/schemas/oraclehr/departments_iri>
"http://^{URIQADefaultHost}^/oraclehr/departments/%d#this"
(in DEPARTMENT_ID integer not null) .
create iri class <http://localhost:8890/schemas/oraclehr/employees_iri>
"http://^{URIQADefaultHost}^/oraclehr/employees/%d#this"
(in EMPLOYEE_ID integer not null) .
create iri class <http://localhost:8890/schemas/oraclehr/jobs_iri>
"http://^{URIQADefaultHost}^/oraclehr/jobs/%s#this"
(in JOB_ID varchar not null) .
create iri class <http://localhost:8890/schemas/oraclehr/job_history_iri>
using function DB.DBA.JOB_HISTORY (in EMPLOYEE_ID integer not null, in
START_DATE date not null) returns varchar not null,
function DB.DBA.JOB_HISTORY_INV_1 (in id varchar) returns integer,
function DB.DBA.JOB_HISTORY_INV_2 (in id varchar) returns date
option (bijection, returns
"http://localhost:8890/oraclehr/job_history/%d_%s#this") .
create iri class <http://localhost:8890/schemas/oraclehr/locations_iri>
"http://^{URIQADefaultHost}^/oraclehr/locations/%d#this"
(in LOCATION_ID integer not null) .
;
--------------------------------------------------------------------
------------- Create Quad Store ------------------------------------
SPARQL
prefix hr: <http://localhost:8890/schemas/oraclehr/>
alter quad storage virtrdf:DefaultQuadStorage
FROM HR.orama.COUNTRIES as countries_tbl
FROM HR.orama.REGIONS as regions_tbl
FROM HR.orama.DEPARTMENTS as departments_tbl
FROM HR.orama.EMPLOYEES as employees_tbl
FROM HR.orama.EMPLOYEES as employees_tbl_1 ### alias required to represent recursive FK relationship (hr: has_manager ) below.
FROM HR.orama.JOBS as jobs_tbl
FROM HR.orama.JOB_HISTORY as job_history_tbl
FROM HR.orama.LOCATIONS as locations_tbl
{
create virtrdf:oraclehr as
graph <http://localhost:8890/oraclehr>
{
hr:countries_iri(countries_tbl.COUNTRY_ID) a hr:countries as virtrdf:countires_country_id ;
hr:country_name countries_tbl.COUNTRY_NAME as virtrdf:countries_country_name ;
hr:region_id hr:regions_iri(regions_tbl.REGION_ID) where (^{countries_tbl.}^.REGION_ID = ^{regions_tbl.}^.REGION_ID) as virtrdf:countries_region_id .
hr:regions_iri(regions_tbl.REGION_ID) a hr:regions as virtrdf:regions_region_id ;
hr:region_name regions_tbl.REGION_NAME as virtrdf:regions_region_name .
hr:departments_iri(departments_tbl.DEPARTMENT_ID) a hr:departments as virtrdf:departments_department_id ;
hr:department_name departments_tbl.DEPARTMENT_NAME as virtrdf:departments_department_name ;
hr:location_id hr:locations_iri(locations_tbl.LOCATION_ID) where (^{departments_tbl.}^.LOCATION_ID = ^{locations_tbl.}^.LOCATION_ID) as virtrdf:departments_location_id ;
hr:manager_id hr:employees_iri(employees_tbl.EMPLOYEE_ID) where (^{departments_tbl.}^.MANAGER_ID = ^{employees_tbl.}^.EMPLOYEE_ID) as virtrdf:departments_manager_id .
hr:employees_iri(employees_tbl.EMPLOYEE_ID) a hr:employees as virtrdf:employees_employee_id ;
hr:department_id hr:departments_iri(departments_tbl.DEPARTMENT_ID) where (^{employees_tbl.}^.DEPARTMENT_ID = ^{departments_tbl.}^.DEPARTMENT_ID) as virtrdf:employees_department_id ;
hr:job_id hr:jobs_iri(jobs_tbl.JOB_ID) where (^{employees_tbl.}^.JOB_ID = ^{jobs_tbl.}^.JOB_ID) as virtrdf:employees_job_id ;
hr:manager_id employees_tbl.MANAGER_ID as virtrdf:employees_manager_id ;
hr:commissin_pct employees_tbl.COMMISSION_PCT as virtrdf:employees_commission_pct ;
hr:email employees_tbl.EMAIL as virtrdf:employees_email ;
hr:first_name employees_tbl.FIRST_NAME as virtrdf:employees_first_name ;
hr:hire_date employees_tbl.HIRE_DATE as virtrdf:employees_hire_date ;
hr:last_name employees_tbl.LAST_NAME as virtrdf:employees_last_name ;
hr:phone_number employees_tbl.PHONE_NUMBER as virtrdf:employees_phone_number ;
hr:salary employees_tbl.SALARY as virtrdf:employees_salary ;
hr:has_job_history hr:job_history_iri(job_history_tbl.EMPLOYEE_ID, job_history_tbl.START_DATE) where (^{employees_tbl.}^.EMPLOYEE_ID = ^{job_history_tbl.}^.EMPLOYEE_ID) as virtrdf:employees_has_job_history;
hr:has_manager hr:employees_iri(employees_tbl_1.EMPLOYEE_ID) where (^{employees_tbl.}^.MANAGER_ID = ^{employees_tbl_1.}^.EMPLOYEE_ID) as virtrdf:employees_has_manager.
hr:locations_iri(locations_tbl.LOCATION_ID) a hr:locations as virtrdf:locations_location_id ;
hr:country_id hr:countries_iri(countries_tbl.COUNTRY_ID) where (^{locations_tbl.}^.COUNTRY_ID = ^{countries_tbl.}^.COUNTRY_ID) as virtrdf:locations_country_id ;
hr:city locations_tbl.CITY as virtrdf:locations_city ;
hr:postal_code locations_tbl.POSTAL_CODE as virtrdf:locations_postal_code ;
hr:state_province locations_tbl.STATE_PROVINCE as virtrdf:locations_state_province ;
hr:street_address locations_tbl.STREET_ADDRESS as virtrdf:locations_street_address .
hr:jobs_iri(jobs_tbl.JOB_ID) a hr:jobs as virtrdf:jobs_job_id ;
hr:job_title jobs_tbl.JOB_TITLE as virtrdf:jobs_job_title ;
hr:max_salary jobs_tbl.MAX_SALARY as virtrdf:jobs_max_salary ;
hr:min_salary jobs_tbl.MIN_SALARY as virtrdf:jobs_min_salary .
hr:job_history_iri(job_history_tbl.EMPLOYEE_ID, job_history_tbl.START_DATE) a hr:job_history as virtrdf:job_history_pk ;
hr:employee_id hr:employees_iri(employees_tbl.EMPLOYEE_ID) where (^{job_history_tbl.}^.EMPLOYEE_ID = ^{employees_tbl.}^.EMPLOYEE_ID) as virtrdf:job_history_employee_id ;
hr:department_id hr:departments_iri(departments_tbl.DEPARTMENT_ID) where (^{job_history_tbl.}^.DEPARTMENT_ID = ^{departments_tbl.}^.DEPARTMENT_ID) as virtrdf:job_history_department_id ;
hr:job_id hr:jobs_iri(jobs_tbl.JOB_ID) where (^{job_history_tbl.}^.JOB_ID = ^{jobs_tbl.}^.JOB_ID) as virtrdf:job_history_job_id ;
hr:start_date job_history_tbl.START_DATE as virtrdf:job_history_start_date ;
hr:end_date job_history_tbl.END_DATE as virtrdf:job_history_end_date .
} .
} .
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'oraclehr_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'oraclehr_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oraclehr_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oraclehr_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/oraclehr%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'oraclehr_rule_list1',
1,
vector (
'oraclehr_rule1',
'oraclehr_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/oraclehr');
VHOST_DEFINE (
lpath=>'/oraclehr',
ppath=>'/DAV/oraclehr/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'oraclehr_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'oracle_schemas_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'oracle_schemas_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oracle_schemas_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oracle_schemas_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/oraclehr%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'oracle_schemas_rule_list1',
1,
vector (
'oracle_schemas_rule1',
'oracle_schemas_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schema/oraclehr');
VHOST_DEFINE (
lpath=>'/schemas/oraclehr',
ppath=>'/DAV/schemas/oraclehr/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'oracle_schemas_rule_list1')
);
DB.DBA.XML_SET_NS_DECL ('hr', 'http://^{URIQADefaultHost}^/schemas/oraclehr/', 2);
Live links to a sample instance
Script to set up your own instance
-- Setup script for RDF views of Oracle 10 Human Resources Sample Database --
GRANT SELECT ON HR.orama.COUNTRIES TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.REGIONS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.DEPARTMENTS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.LOCATIONS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.EMPLOYEES TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.JOBS TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON HR.orama.JOB_HISTORY TO "SPARQL", "SPARQL_UPDATE";
-------------------------------------------------------------------
-------- Create rdfs:Class definitions ----------------------------
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix hr: <http://localhost:8890/schemas/oraclehr/> .
hr:countries a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "COUNTRIES" ;
rdfs:comment "Oracle HR COUNTRIES table" .
hr:country_id a rdf:Property ;
rdfs:domain hr:countries ;
rdfs:range xsd:string ;
rdfs:label "COUNTRY ID" .
hr:country_name a rdf:Property ;
rdfs:domain hr:countries ;
rdfs:range xsd:string ;
rdfs:label "COUNTRY NAME" .
hr:region_id a rdf:Property ;
rdfs:domain hr:countries ;
rdfs:range hr:regions ;
rdfs:label "REGION ID" .
hr:regions a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "REGIONS" ;
rdfs:comment "Oracle HR REGIONS table" .
hr:region_id a rdf:Property ;
rdfs:domain hr:regions ;
rdfs:range xsd:integer ;
rdfs:label "REGION ID" .
hr:region_name a rdf:Property ;
rdfs:domain hr:regions ;
rdfs:range xsd:string ;
rdfs:label "REGION NAME" .
hr:departments a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "DEPARTMENTS" ;
rdfs:comment "Oracle HR DEPARTMENT table" .
hr:department_id a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range xsd:integer ;
rdfs:label "DEPARTMENT ID" .
hr:department_name a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range xsd:string ;
rdfs:comment "DEPARTMENT NAME" .
hr:manager_id a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range hr:employees ;
rdfs:comment "MANAGER ID" .
hr:location_id a rdf:Property ;
rdfs:domain hr:departments ;
rdfs:range hr:locations ;
rdfs:comment "LOCATION ID" .
hr:employees a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "employees" ;
rdfs:comment "Oracle HR EMPLOYEES table" .
hr:employee_id a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range xsd:integer ;
rdfs:label "EMPLOYEE ID" .
hr:first_name a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range xsd:string ;
rdfs:label "FIRST NAME" .
hr:last_name a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:string ;
rdfs:label "LAST NAME" .
hr:email a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range xsd:string ;
rdfs:label "EMAIL" .
hr:phone_number a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:string ;
rdfs:label "PHONE NUMBER" .
hr:hire_date a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:date ;
rdfs:label "HIRE DATE" .
hr:job_id a rdf:Property ;
rdfs:domain hr:employees;
rdfs:range hr:jobs ;
rdfs:label "JOB ID" .
hr:salary a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:integer ;
rdfs:label "SALARY" .
hr:commission_pct a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:integer ;
rdfs:label "COMMISSION PCT" .
hr:manager_id a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range xsd:string ;
rdfs:label "MANAGER ID" .
hr:department_id a rdf:Property ;
rdfs:domain hr:employees ;
rdfs:range hr:departments ;
rdfs:label "DEPARTMENT ID" .
hr:jobs a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "JOBS" ;
rdfs:comment "Oracle HR JOBS table" .
hr:job_id a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:string ;
rdfs:label "JOB ID" .
hr:job_title a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:string ;
rdfs:label "JOB TITLE" .
hr:min_salary a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:number;
rdfs:label "MIN SALARY" .
hr:max_salary a rdf:Property ;
rdfs:domain hr:jobs ;
rdfs:range xsd:number;
rdfs:label "MAXSALARY" .
hr:job_history a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "JOB HISTORY" ;
rdfs:comment "Oracle HR JOB HISTORY table" .
hr:employee_id a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range hr:employees ;
rdfs:label "EMPLOYEE ID" .
hr:start_date a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range xsd:date ;
rdfs:label "START DATE" .
hr:end_date a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range xsd:date ;
rdfs:label "END DATE" .
hr:job_id a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range hr:jobs ;
rdfs:label "JOB ID" .
hr:department_id a rdf:Property ;
rdfs:domain hr:job_history ;
rdfs:range hr:departments ;
rdfs:label "DEPARTMENT ID" .
hr:locations a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/oraclehr> ;
rdfs:label "LOCATIONS" ;
rdfs:comment "Oracle HR JOB LOCATIONS table" .
hr:location_id a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:number ;
rdfs:label "LOCATION ID" .
hr:street_address a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "STREET ADDRESS" .
hr:postal_code a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "POSTAL CODE" .
hr:city a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "CITY" .
hr:state_province a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range xsd:string ;
rdfs:label "STATE PROVINCE" .
hr:country_id a rdf:Property ;
rdfs:domain hr:locations ;
rdfs:range hr:countries ;
rdfs:label "COUNTRY" .
', '', 'http://localhost:8890/schemas/oraclehr', 0);
---------------------------------------------------------------
----------- Create IRI Classes -------------
create function DB.DBA.JOB_HISTORY (in EMPLOYEE_ID integer, in
START_DATE date) returns varchar
{
return sprintf_or_null
('http://localhost:8890/oraclehr/job_history/%d_%s#this',
EMPLOYEE_ID, cast (START_DATE as varchar) );
}
;
create function DB.DBA.JOB_HISTORY_INV_1 (in id varchar) returns integer
{
return sprintf_inverse (id,
'http://localhost:8890/oraclehr/job_history/%d_%s#this',
2)[0];
}
;
create function DB.DBA.JOB_HISTORY_INV_2 (in id varchar) returns date
{
declare exit handler for sqlstate '*' { return NULL; };
return cast (sprintf_inverse (id,
'http://localhost:8890/oraclehr/job_history/%d_%s#this',
2)[1] as date);
}
;
GRANT EXECUTE ON DB.DBA.JOB_HISTORY TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON DB.DBA.JOB_HISTORY_URI_INV_1 TO "SPARQL", "SPARQL_UPDATE";
GRANT EXECUTE ON DB.DBA.JOB_HISTORY_URI_INV_2 TO "SPARQL", "SPARQL_UPDATE";
SPARQL
create iri class <http://localhost:8890/schemas/oraclehr/countries_iri>
"http://^{URIQADefaultHost}^/oraclehr/countries/%s#this"
(in COUNTRY_ID varchar not null) .
create iri class <http://localhost:8890/schemas/oraclehr/regions_iri>
"http://^{URIQADefaultHost}^/oraclehr/regions/%d#this"
(in REGION_ID integer not null) .
create iri class <http://localhost:8890/schemas/oraclehr/departments_iri>
"http://^{URIQADefaultHost}^/oraclehr/departments/%d#this"
(in DEPARTMENT_ID integer not null) .
create iri class <http://localhost:8890/schemas/oraclehr/employees_iri>
"http://^{URIQADefaultHost}^/oraclehr/employees/%d#this"
(in EMPLOYEE_ID integer not null) .
create iri class <http://localhost:8890/schemas/oraclehr/jobs_iri>
"http://^{URIQADefaultHost}^/oraclehr/jobs/%s#this"
(in JOB_ID varchar not null) .
create iri class <http://localhost:8890/schemas/oraclehr/job_history_iri>
using function DB.DBA.JOB_HISTORY (in EMPLOYEE_ID integer not null, in
START_DATE date not null) returns varchar not null,
function DB.DBA.JOB_HISTORY_INV_1 (in id varchar) returns integer,
function DB.DBA.JOB_HISTORY_INV_2 (in id varchar) returns date
option (bijection, returns
"http://localhost:8890/oraclehr/job_history/%d_%s#this") .
create iri class <http://localhost:8890/schemas/oraclehr/locations_iri>
"http://^{URIQADefaultHost}^/oraclehr/locations/%d#this"
(in LOCATION_ID integer not null) .
;
--------------------------------------------------------------------
------------- Create Quad Store ------------------------------------
SPARQL
prefix hr: <http://localhost:8890/schemas/oraclehr/>
alter quad storage virtrdf:DefaultQuadStorage
from HR.orama.COUNTRIES as countries_tbl
from HR.orama.REGIONS as regions_tbl
from HR.orama.DEPARTMENTS as departments_tbl
from HR.orama.EMPLOYEES as employees_tbl
from HR.orama.EMPLOYEES as employees_tbl_1 ### alias required to represent recursive FK relationship (hr: has_manager ) below.
from HR.orama.JOBS as jobs_tbl
from HR.orama.JOB_HISTORY as job_history_tbl
from HR.orama.LOCATIONS as locations_tbl
{
create virtrdf:oraclehr as
graph <http://localhost:8890/oraclehr>
{
hr:countries_iri(countries_tbl.COUNTRY_ID) a hr:countries as virtrdf:countires_country_id ;
hr:country_name countries_tbl.COUNTRY_NAME as virtrdf:countries_country_name ;
hr:region_id hr:regions_iri(regions_tbl.REGION_ID) where (^{countries_tbl.}^.REGION_ID = ^{regions_tbl.}^.REGION_ID) as virtrdf:countries_region_id .
hr:regions_iri(regions_tbl.REGION_ID) a hr:regions as virtrdf:regions_region_id ;
hr:region_name regions_tbl.REGION_NAME as virtrdf:regions_region_name .
hr:departments_iri(departments_tbl.DEPARTMENT_ID) a hr:departments as virtrdf:departments_department_id ;
hr:department_name departments_tbl.DEPARTMENT_NAME as virtrdf:departments_department_name ;
hr:location_id hr:locations_iri(locations_tbl.LOCATION_ID) where (^{departments_tbl.}^.LOCATION_ID = ^{locations_tbl.}^.LOCATION_ID) as virtrdf:departments_location_id ;
hr:manager_id hr:employees_iri(employees_tbl.EMPLOYEE_ID) where (^{departments_tbl.}^.MANAGER_ID = ^{employees_tbl.}^.EMPLOYEE_ID) as virtrdf:departments_manager_id .
hr:employees_iri(employees_tbl.EMPLOYEE_ID) a hr:employees as virtrdf:employees_employee_id ;
hr:department_id hr:departments_iri(departments_tbl.DEPARTMENT_ID) where (^{employees_tbl.}^.DEPARTMENT_ID = ^{departments_tbl.}^.DEPARTMENT_ID) as virtrdf:employees_department_id ;
hr:job_id hr:jobs_iri(jobs_tbl.JOB_ID) where (^{employees_tbl.}^.JOB_ID = ^{jobs_tbl.}^.JOB_ID) as virtrdf:employees_job_id ;
hr:manager_id employees_tbl.MANAGER_ID as virtrdf:employees_manager_id ;
hr:commissin_pct employees_tbl.COMMISSION_PCT as virtrdf:employees_commission_pct ;
hr:email employees_tbl.EMAIL as virtrdf:employees_email ;
hr:first_name employees_tbl.FIRST_NAME as virtrdf:employees_first_name ;
hr:hire_date employees_tbl.HIRE_DATE as virtrdf:employees_hire_date ;
hr:last_name employees_tbl.LAST_NAME as virtrdf:employees_last_name ;
hr:phone_number employees_tbl.PHONE_NUMBER as virtrdf:employees_phone_number ;
hr:salary employees_tbl.SALARY as virtrdf:employees_salary ;
hr:has_job_history hr:job_history_iri(job_history_tbl.EMPLOYEE_ID, job_history_tbl.START_DATE) where (^{employees_tbl.}^.EMPLOYEE_ID = ^{job_history_tbl.}^.EMPLOYEE_ID) as virtrdf:employees_has_job_history;
hr:has_manager hr:employees_iri(employees_tbl_1.EMPLOYEE_ID) where (^{employees_tbl.}^.MANAGER_ID = ^{employees_tbl_1.}^.EMPLOYEE_ID) as virtrdf:employees_has_manager.
hr:locations_iri(locations_tbl.LOCATION_ID) a hr:locations as virtrdf:locations_location_id ;
hr:country_id hr:countries_iri(countries_tbl.COUNTRY_ID) where (^{locations_tbl.}^.COUNTRY_ID = ^{countries_tbl.}^.COUNTRY_ID) as virtrdf:locations_country_id ;
hr:city locations_tbl.CITY as virtrdf:locations_city ;
hr:postal_code locations_tbl.POSTAL_CODE as virtrdf:locations_postal_code ;
hr:state_province locations_tbl.STATE_PROVINCE as virtrdf:locations_state_province ;
hr:street_address locations_tbl.STREET_ADDRESS as virtrdf:locations_street_address .
hr:jobs_iri(jobs_tbl.JOB_ID) a hr:jobs as virtrdf:jobs_job_id ;
hr:job_title jobs_tbl.JOB_TITLE as virtrdf:jobs_job_title ;
hr:max_salary jobs_tbl.MAX_SALARY as virtrdf:jobs_max_salary ;
hr:min_salary jobs_tbl.MIN_SALARY as virtrdf:jobs_min_salary .
hr:job_history_iri(job_history_tbl.EMPLOYEE_ID, job_history_tbl.START_DATE) a hr:job_history as virtrdf:job_history_pk ;
hr:employee_id hr:employees_iri(employees_tbl.EMPLOYEE_ID) where (^{job_history_tbl.}^.EMPLOYEE_ID = ^{employees_tbl.}^.EMPLOYEE_ID) as virtrdf:job_history_employee_id ;
hr:department_id hr:departments_iri(departments_tbl.DEPARTMENT_ID) where (^{job_history_tbl.}^.DEPARTMENT_ID = ^{departments_tbl.}^.DEPARTMENT_ID) as virtrdf:job_history_department_id ;
hr:job_id hr:jobs_iri(jobs_tbl.JOB_ID) where (^{job_history_tbl.}^.JOB_ID = ^{jobs_tbl.}^.JOB_ID) as virtrdf:job_history_job_id ;
hr:start_date job_history_tbl.START_DATE as virtrdf:job_history_start_date ;
hr:end_date job_history_tbl.END_DATE as virtrdf:job_history_end_date .
} .
} .
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'oraclehr_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'oraclehr_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oraclehr_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oraclehr_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/oraclehr%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'oraclehr_rule_list1',
1,
vector (
'oraclehr_rule1',
'oraclehr_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/oraclehr');
VHOST_DEFINE (
lpath=>'/oraclehr',
ppath=>'/DAV/oraclehr/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'oraclehr_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'oracle_schemas_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'oracle_schemas_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oracle_schemas_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'oracle_schemas_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/oraclehr%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'oracle_schemas_rule_list1',
1,
vector (
'oracle_schemas_rule1',
'oracle_schemas_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schema/oraclehr');
VHOST_DEFINE (
lpath=>'/schemas/oraclehr',
ppath=>'/DAV/schemas/oraclehr/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'oracle_schemas_rule_list1')
);
DB.DBA.XML_SET_NS_DECL ('hr', 'http://^{URIQADefaultHost}^/schemas/oraclehr/', 2);
Version defined using explicit host - localhost:8890
-- $Id: rdfviewssamples.xml,v 1.1.2.1 2010/10/07 12:45:00 source Exp $
-- Setup script for RDF view of portions of DB2 SAMPLE database included
-- in DB2 Express Edition v9.5
--
-- The script assumes external DB2 tables are linked into Virtuoso using
-- local schema name db2sample.
DB..vd_remote_data_source ('db2ma-smpl', '', '<uid>','<pwd>);
ATTACH TABLE "DB2ADMIN"."ACT" PRIMARY KEY ("ACTNO") AS "DB"."db2sample"."ACT" FROM 'db2ma-smpl';
ATTACH TABLE "DB2ADMIN"."DEPARTMENT" PRIMARY KEY ("DEPTNO") AS "DB"."db2sample"."DEPARTMENT" FROM 'db2ma-smpl';
ATTACH TABLE "DB2ADMIN"."EMPLOYEE" PRIMARY KEY ("EMPNO") AS "DB"."db2sample"."EMPLOYEE" FROM 'db2ma-smpl';
ATTACH TABLE "DB2ADMIN"."EMPPROJACT" PRIMARY KEY ("EMPNO", "PROJNO", "ACTNO", "EMSTDATE") AS "DB"."db2sample"."EMPPROJACT" FROM 'db2ma-smpl';
ATTACH TABLE "DB2ADMIN"."EMP_RESUME" PRIMARY KEY ("EMPNO", "RESUME_FORMAT) AS "DB"."db2sample"."EMP_RESUME" FROM 'db2ma-smpl';
ATTACH TABLE "DB2ADMIN"."PROJACT" PRIMARY KEY ("PROJNO", "ACTNO", "ACSTDATE") AS "DB"."db2sample"."PROJACT" FROM 'db2ma-smpl';
ATTACH TABLE "DB2ADMIN"."PROJECT" PRIMARY KEY ("PROJNO") AS "DB"."db2sample"."PROJECT" FROM 'db2ma-smpl';
COMMIT WORK;
GRANT SELECT ON DB.db2sample.ACT TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON DB.db2sample.DEPARTMENT TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON DB.db2sample.EMPLOYEE TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON DB.db2sample.EMPPROJACT TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON DB.db2sample.EMP_RESUME TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON DB.db2sample.PROJACT TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON DB.db2sample.PROJECT TO "SPARQL", "SPARQL_UPDATE";
create function DB.DBA.PROJ_ACT_IRI (
in proj_no varchar,
in act_no integer,
in ac_st_date date
) returns varchar
{
declare _act_no, _datetime, _date any;
_act_no := cast(act_no as varchar);
_datetime := cast(ac_st_date as varchar);
_date := left(_datetime, 10);
return sprintf('http://localhost:8890/db2sample/proj_act/%s_%s_%s#this',
proj_no, _act_no, _date);
};
create function
DB.DBA.PROJ_ACT_IRI_INV_1 (in proj_act_iri varchar) returns varchar
{
declare exit handler for sqlstate '*' { return NULL; };
declare parts any;
parts := sprintf_inverse (proj_act_iri,
'http://localhost:8890/db2sample/proj_act/%s_%s_%s#this', 1);
if (parts is not null)
{
return parts[0];
}
return NULL;
};
create function
DB.DBA.PROJ_ACT_IRI_INV_2 (in proj_act_iri varchar) returns integer
{
declare exit handler for sqlstate '*' { return NULL; };
declare parts any;
parts := sprintf_inverse (proj_act_iri,
'http://localhost:8890/db2sample/proj_act/%s_%s_%s#this', 1);
if (parts is not null)
{
return cast(parts[1] as integer);
}
return NULL;
};
create function
DB.DBA.PROJ_ACT_IRI_INV_3 (in proj_act_iri varchar) returns date
{
declare exit handler for sqlstate '*' { return NULL; };
declare parts any;
parts := sprintf_inverse (proj_act_iri,
'http://localhost:8890/db2sample/proj_act/%s_%s_%s#this', 1);
if (parts is not null)
{
return cast(parts[2] as date);
}
return NULL;
};
create function DB.DBA.EMP_PROJ_ACT_IRI (
in emp_no varchar,
in proj_no varchar,
in act_no integer,
in emp_start_date date
) returns varchar
{
declare _act_no, _datetime, _date any;
_act_no := cast(act_no as varchar);
_datetime := cast(emp_start_date as varchar);
_date := left(_datetime, 10);
return sprintf(
'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this',
emp_no, proj_no, _act_no, _date);
};
create function
DB.DBA.EMP_PROJ_ACT_IRI_INV_1 (in emp_proj_act_iri varchar) returns varchar
{
declare exit handler for sqlstate '*' { return NULL; };
declare parts any;
parts := sprintf_inverse (emp_proj_act_iri,
'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1);
if (parts is not null)
{
return parts[0];
}
return NULL;
};
create function
DB.DBA.EMP_PROJ_ACT_IRI_INV_2 (in emp_proj_act_iri varchar) returns varchar
{
declare exit handler for sqlstate '*' { return NULL; };
declare parts any;
parts := sprintf_inverse (emp_proj_act_iri,
'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1);
if (parts is not null)
{
return parts[1];
}
return NULL;
};
create function
DB.DBA.EMP_PROJ_ACT_IRI_INV_3 (in emp_proj_act_iri varchar) returns integer
{
declare exit handler for sqlstate '*' { return NULL; };
declare parts any;
parts := sprintf_inverse (emp_proj_act_iri,
'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1);
if (parts is not null)
{
return cast(parts[2] as integer);
}
return NULL;
};
create function
DB.DBA.EMP_PROJ_ACT_IRI_INV_4 (in emp_proj_act_iri varchar) returns date
{
declare exit handler for sqlstate '*' { return NULL; };
declare parts any;
parts := sprintf_inverse (emp_proj_act_iri,
'http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this', 1);
if (parts is not null)
{
return cast(parts[3] as date);
}
return NULL;
};
grant execute on DB.DBA.PROJ_ACT_IRI to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.PROJ_ACT_IRI_INV_1 to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.PROJ_ACT_IRI_INV_2 to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.PROJ_ACT_IRI_INV_3 to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.EMP_PROJ_ACT_IRI to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_1 to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_2 to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_3 to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.EMP_PROJ_ACT_IRI_INV_4 to "SPARQL", "SPARQL_UPDATE";
SPARQL drop graph <http://localhost:8890/schemas/db2sample> ;
SPARQL drop graph <http://localhost:8890/db2sample> ;
SPARQL drop quad map virtrdf:db2sample ;
--------------------------
-- RDFS class definitions
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix opl: <http://localhost:8890/schemas/db2sample/> .
opl:Act a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/db2sample> ;
rdfs:label "Act" ;
rdfs:comment "Activity" .
# ACTNO SMALLINT PRIMARY KEY
opl:act_no a rdf:Property ;
rdfs:domain opl:Act ;
rdfs:range xsd:integer ;
rdfs:label "Activity number" .
# ACTKWD VARCHAR(6)
opl:act_kwd a rdf:Property ;
rdfs:domain opl:Act ;
rdfs:range xsd:string ;
rdfs:label "Activity keyword" .
# ACTDESC VARCHAR(20)
opl:act_desc a rdf:Property ;
rdfs:domain opl:Act ;
rdfs:range xsd:string ;
rdfs:label "Activity description" .
#####
opl:Department a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/db2sample> ;
rdfs:label "Department" ;
rdfs:comment "Department" .
# DEPTNO VARCHAR(3) PRIMARY KEY
opl:dept_no a rdf:Property ;
rdfs:domain opl:Department ;
rdfs:range xsd:string ;
rdfs:label "Department number" .
# DEPTNAME VARCHAR(36)
opl:dept_name a rdf:Property ;
rdfs:domain opl:Department ;
rdfs:range xsd:string ;
rdfs:label "Department name" .
# MGRNO CHAR(6)
opl:dept_manager a rdf:Property ;
rdfs:domain opl:Department ;
rdfs:range xsd:Employee ;
rdfs:label "Department manager" .
# ADMRDEPT CHAR(3)
opl:supervising_dept a rdf:Property ;
rdfs:domain opl:Department ;
rdfs:range opl:Department ;
rdfs:label "Department reported to" .
# LOCATION CHAR(6)
opl:location a rdf:Property ;
rdfs:domain opl:Department ;
rdfs:range xsd:string ;
rdfs:label "Location" .
opl:employee_collection a rdf:Property ;
rdfs:domain opl:Department ;
rdfs:range opl:Employee ;
rdfs:label "Department employees" .
opl:dept_project_collection a rdf:Property ;
rdfs:domain opl:Department ;
rdfs:range opl:Project ;
rdfs:label "Department projects" .
#####
opl:Employee a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/db2sample> ;
rdfs:label "Employee" ;
rdfs:comment "Employee" .
# EMPNO VARCHAR(6) PRIMARY KEY
opl:emp_no a rdf:Property ;
rdfs:domain opl:Employee;
rdfs:range xsd:string ;
rdfs:label "Employee number" .
# FIRSTNME VARCHAR(12)
opl:first_name a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:string ;
rdfs:label "First name" .
# MIDINIT VARCHAR(1)
opl:middle_initial a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:string ;
rdfs:label "Middle initial" .
# LASTNAME VARCHAR(15)
opl:last_name a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:string ;
rdfs:label "Last name" .
# WORKDEPT VARCHAR(3)
opl:work_dept a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range opl:Department ;
rdfs:label "Work department" .
# PHONENO VARCHAR(4)
opl:phone_no a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:string ;
rdfs:label "Phone number" .
# HIREDATE DATE
opl:hire_date a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:date;
rdfs:label "Hire date" .
# JOB VARCHAR(8)
opl:job a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:string ;
rdfs:label "Job" .
# EDLEVEL SMALLINT
opl:education_level a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:integer ;
rdfs:label "Education level" .
# SEX VARCHAR(1)
opl:gender a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:string ;
rdfs:label "Gender" .
# BIRTHDATE DATE
opl:date_of_birth a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:date ;
rdfs:label "Date of birth" .
# SALARY DECIMAL(9,2)
opl:salary a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:decimal ;
rdfs:label "Salary" .
# BONUS DECIMAL(9,2)
opl:bonus a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:decimal ;
rdfs:label "Bonus" .
# COMM DECIMAL(9,2)
opl:commission a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range xsd:decimal ;
rdfs:label "Commission" .
opl:resume_collection a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range opl:EmployeeResume ;
rdfs:label "Employee resumes" .
opl:projects_responsible_for_collection a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range opl:Project ;
rdfs:label "responsible for project" .
opl:activity_collection a rdf:Property ;
rdfs:domain opl:Employee ;
rdfs:range opl:EmpProjAct ;
rdfs:label "project activities" .
#####
opl:EmpProjAct a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/db2sample> ;
rdfs:label "EmpProjAct" ;
rdfs:comment "Employee project activity" .
# EMPNO VARCHAR(6) PRIMARY KEY
opl:epa_emp_no a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range xsd:string ;
rdfs:label "Employee number" .
# PROJNO VARCHAR(6) PRIMARY KEY
opl:epa_proj_no a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range xsd:string ;
rdfs:label "Project number" .
# ACTNO SMALLINT PRIMARY KEY
opl:epa_act_no a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range xsd:string ;
rdfs:label "Activity number" .
# EMSTDATE DATE PRIMARY KEY
opl:emp_start_date a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range xsd:date ;
rdfs:label "Employee activity start date" .
# EMPTIME DECIMAL(5,2)
opl:emp_time a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range xsd:decimal ;
rdfs:label "Employee time" .
# EMENDATE DATE PRIMARY KEY
opl:emp_end_date a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range xsd:date ;
rdfs:label "Employee activity end date" .
opl:assigned_to a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range opl:Employee ;
rdfs:label "Assigned to" .
opl:project_activity a rdf:Property ;
rdfs:domain opl:EmpProjAct ;
rdfs:range opl:ProjAct ;
rdfs:label "Project activity" .
#####
opl:EmployeeResume a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/db2sample> ;
rdfs:label "EmployeeResume" ;
rdfs:comment "Employee resume" .
# EMPNO VARCHAR(6) PRIMARY KEY
opl:er_emp_no a rdf:Property ;
rdfs:domain opl:EmployeeResume ;
rdfs:range xsd:string ;
rdfs:label "Employee number" .
# RESUME_FORMAT VARCHAR(10) PRIMARY KEY
opl:resume_format a rdf:Property ;
rdfs:domain opl:EmployeeResume ;
rdfs:range xsd:string ;
rdfs:label "Resume format" .
# RESUME VARCHAR(5120)
opl:resume a rdf:Property ;
rdfs:domain opl:EmployeeResume ;
rdfs:range xsd:string ;
rdfs:label "Resume" .
opl:resume_of a rdf:Property ;
rdfs:domain opl:EmployeeResume ;
rdfs:range opl:Employee ;
rdfs:label "Resume subject" .
#####
opl:ProjAct a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/db2sample> ;
rdfs:label "ProjAct" ;
rdfs:comment "Project activity" .
# PROJNO VARCHAR(6) PRIMARY KEY
opl:pa_proj_no a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range xsd:string ;
rdfs:label "Project number" .
# ACTNO SMALLINT PRIMARY KEY
opl:pa_act_no a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range xsd:string ;
rdfs:label "Activity number" .
# ACSTDATE DATE PRIMARY KEY
opl:ac_st_date a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range xsd:date ;
rdfs:label "Activity start date" .
# ACSTAFF DECIMAL(5,2)
opl:ac_staff a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range xsd:decimal ;
rdfs:label "Acstaff" .
# ACENDATE DATE
opl:ac_en_date a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range xsd:date ;
rdfs:label "Activity end date" .
opl:project a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range opl:Project ;
rdfs:label "Project" .
opl:activity a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range opl:Act ;
rdfs:label "Activity" .
opl:employee_activity_collection a rdf:Property ;
rdfs:domain opl:ProjAct ;
rdfs:range opl:EmpProjAct ;
rdfs:label "Employee activity collection" .
#####
opl:Project a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/db2sample> ;
rdfs:label "Project" ;
rdfs:comment "Project" .
# PROJNO VARCHAR(6) PRIMARY KEY
opl:proj_no a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range xsd:string ;
rdfs:label "Project number" .
# PROJNAME VARCHAR(24)
opl:proj_name a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range xsd:string ;
rdfs:label "Project name" .
# DEPTNO CHAR(3)
opl:is_project_of_department a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range opl:Department ;
rdfs:label "is project of department" .
# RESPEMP VARCHAR(6)
opl:resp_emp a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range opl:Employee ;
rdfs:label "Employee responsible" .
# PRSTAFF DECIMAL(5,2)
opl:pr_staff a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range xsd:decimal ;
rdfs:label "PrStaff" .
# PRSTDATE DATE
opl:pr_st_date a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range xsd:date ;
rdfs:label "Project start date" .
# PRENDATE DATE
opl:pr_en_date a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range xsd:date ;
rdfs:label "Project end date" .
# MAJPROJ VARCHAR(6)
opl:maj_proj a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range xsd:string ;
rdfs:label "MajProj" .
opl:proj_activity_collection a rdf:Property ;
rdfs:domain opl:Project ;
rdfs:range opl:ProjAct ;
rdfs:label "Project activities" .
', '', 'http://localhost:8890/schemas/db2sample', 0);
--------------------------
SPARQL
prefix opl: <http://localhost:8890/schemas/db2sample/>
create iri class
<http://localhost:8890/schemas/db2sample/act_iri>
"http://localhost:8890/db2sample/act/%d#this"
(
in act_no integer not null
) .
create iri class
<http://localhost:8890/schemas/db2sample/department_iri>
"http://localhost:8890/db2sample/department/%s#this"
(
in dept_no varchar not null
) .
create iri class
<http://localhost:8890/schemas/db2sample/employee_iri>
"http://localhost:8890/db2sample/employee/%s#this"
(
in emp_no varchar not null
) .
create iri class opl:emp_proj_act_iri using
function DB.DBA.EMP_PROJ_ACT_IRI (
in emp_no varchar,
in proj_no varchar,
in act_no integer,
in emp_start_date date
) returns varchar,
function DB.DBA.EMP_PROJ_ACT_IRI_INV_1 (in emp_proj_act_iri varchar)
returns varchar ,
function DB.DBA.EMP_PROJ_ACT_IRI_INV_2 (in emp_proj_act_iri varchar)
returns varchar ,
function DB.DBA.EMP_PROJ_ACT_IRI_INV_3 (in emp_proj_act_iri varchar)
returns integer ,
function DB.DBA.EMP_PROJ_ACT_IRI_INV_4 (in emp_proj_act_iri varchar)
returns date
option (bijection, returns
"http://localhost:8890/db2sample/emp_proj_act/%s_%s_%s_%s#this")
.
create iri class
<http://localhost:8890/schemas/db2sample/employee_resume_iri>
"http://localhost:8890/db2sample/employee_resume/%s_%s#this"
(
in emp_no varchar not null,
in resume_format varchar not null
) .
create iri class opl:proj_act_iri using
function DB.DBA.PROJ_ACT_IRI (
in proj_no varchar,
in act_no integer,
in ac_st_date date
) returns varchar,
function DB.DBA.PROJ_ACT_IRI_INV_1 (in proj_act_iri varchar)
returns varchar ,
function DB.DBA.PROJ_ACT_IRI_INV_2 (in proj_act_iri varchar)
returns integer ,
function DB.DBA.PROJ_ACT_IRI_INV_3 (in proj_act_iri varchar)
returns date
option (bijection, returns
"http://localhost:8890/db2sample/proj_act/%s_%s_%s#this")
.
create iri class
<http://localhost:8890/schemas/db2sample/project_iri>
"http://localhost:8890/db2sample/project/%s#this"
(
in proj_no varchar not null
) .
;
SPARQL
prefix opl: <http://localhost:8890/schemas/db2sample/>
alter quad storage virtrdf:DefaultQuadStorage
from DB.db2sample.ACT as act_tbl
from DB.db2sample.DEPARTMENT as dept_tbl
from DB.db2sample.EMPLOYEE as emp_tbl
from DB.db2sample.EMPPROJACT as emp_proj_act_tbl
from DB.db2sample.EMP_RESUME as emp_resume_tbl
from DB.db2sample.PROJACT as proj_act_tbl
from DB.db2sample.PROJECT as project_tbl
{
create virtrdf:db2sample as
graph <http://localhost:8890/db2sample>
{
opl:act_iri(act_tbl.ACTNO) a opl:Act
as virtrdf:act_id ;
opl:act_no act_tbl.ACTNO
as virtrdf:act_act_no ;
opl:act_kwd act_tbl.ACTKWD
as virtrdf:act_act_kwd ;
opl:act_desc act_tbl.ACTDESC
as virtrdf:act_act_desc .
opl:department_iri(dept_tbl.DEPTNO) a opl:Department
as virtrdf:dept_id ;
opl:dept_no dept_tbl.DEPTNO
as virtrdf:dept_dept_no ;
opl:dept_name dept_tbl.DEPTNAME
as virtrdf:dept_dept_name ;
opl:dept_manager opl:employee_iri(dept_tbl.MGRNO)
as virtrdf:dept_mgr_no ;
opl:supervising_dept opl:department_iri(dept_tbl.ADMRDEPT)
as virtrdf:dept_supervising_dept ;
opl:location dept_tbl.LOCATION
as virtrdf:dept_location ;
opl:employee_collection opl:employee_iri(emp_tbl.EMPNO)
where (^{emp_tbl.}^.WORKDEPT = ^{dept_tbl.}^.DEPTNO)
as virtrdf:dept_employee_collection ;
opl:dept_project_collection opl:project_iri(project_tbl.PROJNO)
where (^{project_tbl.}^.DEPTNO = ^{dept_tbl.}^.DEPTNO)
as virtrdf:dept_project_collection .
opl:employee_iri(emp_tbl.EMPNO) a opl:Employee
as virtrdf:employee_id ;
opl:emp_no emp_tbl.EMPNO
as virtrdf:employee_emp_no ;
opl:first_name emp_tbl.FIRSTNME
as virtrdf:employee_first_name ;
opl:middle_initial emp_tbl.MIDINIT
as virtrdf:employee_middle_initial ;
opl:last_name emp_tbl.LASTNAME
as virtrdf:employee_last_name ;
opl:work_dept opl:department_iri(emp_tbl.WORKDEPT)
as virtrdf:employee_work_dept ;
opl:phone_no emp_tbl.PHONENO
as virtrdf:employee_phone_no ;
opl:hire_date emp_tbl.HIREDATE
as virtrdf:employee_hire_date ;
opl:job emp_tbl.JOB
as virtrdf:employee_job ;
opl:education_level emp_tbl.EDLEVEL
as virtrdf:employee_education_level ;
opl:gender emp_tbl.SEX
as virtrdf:employee_gender ;
opl:date_of_birth emp_tbl.BIRTHDATE
as virtrdf:employee_date_of_birth ;
opl:salary emp_tbl.SALARY
as virtrdf:employee_salary ;
opl:bonus emp_tbl.BONUS
as virtrdf:employee_bonus ;
opl:commission emp_tbl.COMM
as virtrdf:employee_commission ;
opl:resume_collection opl:employee_resume_iri(
emp_resume_tbl.EMPNO,
emp_resume_tbl.RESUME_FORMAT
)
where (^{emp_tbl.}^.EMPNO = ^{emp_resume_tbl.}^.EMPNO)
as virtrdf:employee_resume_collection ;
opl:projects_responsible_for_collection
opl:project_iri(project_tbl.PROJNO)
where (^{project_tbl.}^.RESPEMP = ^{emp_tbl.}^.EMPNO)
as virtrdf:employee_projects_responsible_for_collection ;
opl:activity_collection opl:emp_proj_act_iri(
emp_proj_act_tbl.EMPNO,
emp_proj_act_tbl.PROJNO,
emp_proj_act_tbl.ACTNO,
emp_proj_act_tbl.EMSTDATE
)
where (^{emp_tbl.}^.EMPNO = ^{emp_proj_act_tbl.}^.EMPNO)
as virtrdf:employee_activity_collection .
opl:emp_proj_act_iri(
emp_proj_act_tbl.EMPNO,
emp_proj_act_tbl.PROJNO,
emp_proj_act_tbl.ACTNO,
emp_proj_act_tbl.EMSTDATE
) a opl:EmpProjAct
as virtrdf:empprojact_id ;
opl:epa_emp_no emp_proj_act_tbl.EMPNO
as virtrdf:empprojact_emp_no ;
opl:epa_proj_no emp_proj_act_tbl.PROJNO
as virtrdf:empprojact_proj_no ;
opl:epa_act_no emp_proj_act_tbl.ACTNO
as virtrdf:empprojact_act_no ;
opl:emp_start_date emp_proj_act_tbl.EMSTDATE
as virtrdf:empprojact_emp_start_date ;
opl:emp_time emp_proj_act_tbl.EMPTIME
as virtrdf:empprojact_emp_time ;
opl:emp_end_date emp_proj_act_tbl.EMENDATE
as virtrdf:empprojact_emp_end_date ;
opl:assigned_to opl:employee_iri(emp_proj_act_tbl.EMPNO)
as virtrdf:empprojact_assigned_to ;
opl:project_activity opl:proj_act_iri(
emp_proj_act_tbl.PROJNO,
emp_proj_act_tbl.ACTNO,
emp_proj_act_tbl.EMSTDATE
)
as virtrdf:empprojact_project_activity .
opl:employee_resume_iri(
emp_resume_tbl.EMPNO,
emp_resume_tbl.RESUME_FORMAT
) a opl:EmployeeResume
as virtrdf:employee_resume_id ;
opl:er_emp_no emp_resume_tbl.EMPNO
as virtrdf:employee_resume_emp_no ;
opl:resume_format emp_resume_tbl.RESUME_FORMAT
as virtrdf:employee_resume_resume_format ;
opl:resume emp_resume_tbl.RESUME
as virtrdf:employee_resume_resume ;
opl:resume_of opl:employee_iri(emp_resume_tbl.EMPNO)
as virtrdf:employee_resume_resume_of .
opl:proj_act_iri(
proj_act_tbl.PROJNO,
proj_act_tbl.ACTNO,
proj_act_tbl.ACSTDATE
) a opl:ProjAct
as virtrdf:projact_id;
opl:pa_proj_no proj_act_tbl.PROJNO
as virtrdf:projact_proj_no ;
opl:pa_act_no proj_act_tbl.ACTNO
as virtrdf:projact_act_no ;
opl:ac_st_date proj_act_tbl.ACSTDATE
as virtrdf:projact_ac_st_date ;
opl:ac_staff proj_act_tbl.ACSTAFF
as virtrdf:projact_ac_staff ;
opl:ac_en_date proj_act_tbl.ACENDATE
as virtrdf:projact_ac_en_date ;
opl:project opl:project_iri(proj_act_tbl.PROJNO)
as virtrdf:projact_project ;
opl:activity opl:act_iri(proj_act_tbl.ACTNO)
as virtrdf:projact_activity ;
opl:employee_activity_collection opl:emp_proj_act_iri(
emp_proj_act_tbl.EMPNO,
emp_proj_act_tbl.PROJNO,
emp_proj_act_tbl.ACTNO,
emp_proj_act_tbl.EMSTDATE
)
where (
^{proj_act_tbl.}^.PROJNO = ^{emp_proj_act_tbl.}^.PROJNO AND
^{proj_act_tbl.}^.ACTNO = ^{emp_proj_act_tbl.}^.ACTNO AND
^{proj_act_tbl.}^.ACSTDATE = ^{emp_proj_act_tbl.}^.EMSTDATE
)
as virtrdf:project_employee_activity_collection .
opl:project_iri(project_tbl.PROJNO) a opl:Project
as virtrdf:project_id ;
opl:proj_no project_tbl.PROJNO
as virtrdf:project_proj_no ;
opl:proj_name project_tbl.PROJNAME
as virtrdf:project_proj_name ;
opl:is_project_of_department opl:department_iri(project_tbl.DEPTNO)
as virtrdf:project_is_project_of_department ;
opl:resp_emp opl:employee_iri(project_tbl.RESPEMP)
as virtrdf:project_resp_emp ;
opl:pr_staff project_tbl.PRSTAFF
as virtrdf:project_pr_staff ;
opl:pr_st_date project_tbl.PRSTDATE
as virtrdf:project_pr_st_date ;
opl:pr_en_date project_tbl.PRENDATE
as virtrdf:project_pr_en_date ;
opl:maj_proj project_tbl.MAJPROJ
as virtrdf:project_maj_proj ;
opl:proj_activity_collection opl:proj_act_iri(
proj_act_tbl.PROJNO,
proj_act_tbl.ACTNO,
proj_act_tbl.ACSTDATE
)
where (^{project_tbl.}^.PROJNO = ^{proj_act_tbl.}^.PROJNO)
as virtrdf:project_activity_collection .
} .
} .
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'db2sample_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'db2sample_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'db2sample_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/localhost:8890%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'db2sample_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/db2sample%%3E&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'db2sample_rule_list1',
1,
vector (
'db2sample_rule1',
'db2sample_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/db2sample');
VHOST_DEFINE (
lpath=>'/db2sample',
ppath=>'/DAV/db2sample/',
vsp_user=>'dba',
is_dav=>1,
is_brws=>0,
opts=>vector ('url_rewrite', 'db2sample_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'db2sample_schema_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'db2sample_schema_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'db2sample_schema_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/localhost:8890%U',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'db2sample_schema_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/db2sample%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'db2sample_schema_rule_list1',
1,
vector (
'db2sample_schema_rule1',
'db2sample_schema_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schemas/db2sample');
VHOST_DEFINE (
lpath=>'/schemas/db2sample',
ppath=>'/DAV/schemas_db2sample/',
vsp_user=>'dba',
is_dav=>1,
is_brws=>0,
opts=>vector ('url_rewrite', 'db2sample_schema_rule_list1')
);
DB..vd_remote_data_source ('inf10_stores_demo_rdf', '', '<uid>','<pwd>');
ATTACH TABLE "informix"."call_type" PRIMARY KEY ("call_code") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."call_type" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."catalog" PRIMARY KEY ("catalog_num") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."catalog" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."cust_calls" PRIMARY KEY ("customer_num", "call_dtime") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."cust_calls" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."customer" PRIMARY KEY ("customer_num") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."customer" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."items" PRIMARY KEY ("item_num", "order_num") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."items" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."manufact" PRIMARY KEY ("manu_code") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."manufact" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."msgs" PRIMARY KEY ("lang", "number", "message") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."msgs" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."orders" PRIMARY KEY ("order_num") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."orders" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."state" PRIMARY KEY ("code", "sname") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."state" FROM 'inf10_stores_demo_rdf';
ATTACH TABLE "informix"."stock" PRIMARY KEY ("stock_num", "manu_code") AS "stores_demo_rdf"."inf10_stores_demo_rdf"."stock" FROM 'inf10_stores_demo_rdf';
COMMIT WORK;
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.items TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.catalog TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.msgs TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.state TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.orders TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.stock TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.customer TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.call_type TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.manufact TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON stores_demo_rdf.inf10_stores_demo_rdf.cust_calls TO "SPARQL", "SPARQL_UPDATE";
GRANT SPARQL_UPDATE to "SPARQL";
create function DB.DBA.CUST_CALLS_IRI (in customer_num integer, in call_dtime datetime) returns varchar
{
declare _call_dtime any;
_call_dtime := cast(call_dtime as varchar);
return sprintf('http://localhost:8890/informix/stores_demo/cust_calls/%d_%U#this', customer_num, _call_dtime);
};
create function DB.DBA.CUST_CALLS_IRI_INV_1 (in cust_calls_iri varchar) returns integer
{
declare parts any;
parts := sprintf_inverse(cust_calls_iri, 'http://localhost:8890/informix/stores_demo/cust_calls/%d_%U#this', 1);
if(parts is not null)
{
return parts[0];
}
return NULL;
};
create function DB.DBA.CUST_CALLS_IRI_INV_2 (in cust_calls_iri varchar) returns datetime
{
declare parts any;
parts := sprintf_inverse(cust_calls_iri, 'http://localhost:8890/informix/stores_demo/cust_calls/%d_%U#this', 1);
if(parts is not null)
{
return parts[1];
}
return NULL;
};
grant execute on DB.DBA.CUST_CALLS_IRI to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.CUST_CALLS_IRI_INV_1 to "SPARQL", "SPARQL_UPDATE";
grant execute on DB.DBA.CUST_CALLS_IRI_INV_2 to "SPARQL", "SPARQL_UPDATE";
-------- Create rdfs:Class definitions ----------------------------
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix items: <http://localhost:8890/schemas/informix/stores_demo/items/> .
@prefix catalog: <http://localhost:8890/schemas/informix/stores_demo/catalog/> .
@prefix stock: <http://localhost:8890/schemas/informix/stores_demo/stock/> .
@prefix msgs: <http://localhost:8890/schemas/informix/stores_demo/msgs/> .
@prefix state: <http://localhost:8890/schemas/informix/stores_demo/state/> .
@prefix orders: <http://localhost:8890/schemas/informix/stores_demo/orders/> .
@prefix manuf: <http://localhost:8890/schemas/informix/stores_demo/manufact/> .
@prefix cust: <http://localhost:8890/schemas/informix/stores_demo/customer/> .
@prefix callt: <http://localhost:8890/schemas/informix/stores_demo/call_type/> .
@prefix custc: <http://localhost:8890/schemas/informix/stores_demo/cust_calls/> .
items:Items a rdfs:Class ;
rdfs:label "Items" ;
rdfs:comment "Informix SD items table" .
items:item_num a rdf:Property ;
rdfs:domain items:Items ;
rdfs:range xsd:integer ;
rdfs:label "ITEM NUMBER" .
items:quantity a rdf:Property ;
rdfs:domain items:Items ;
rdfs:range xsd:integer ;
rdfs:label "QUANTITY" .
items:total_price a rdf:Property ;
rdfs:domain items:Items ;
rdfs:range xsd:decimal ;
rdfs:label "TOTAL PRICE" .
items:order_num_fk a rdf:Property ;
rdfs:domain items:Items ;
rdfs:range orders:Orders ;
rdfs:label "ORDER NUMBER" .
items:stock_num_fk a rdf:Property ;
rdfs:domain items:Items ;
rdfs:range stock:Stock ;
rdfs:label "STOCK NUMBER" .
items:manu_code_fk a rdf:Property ;
rdfs:domain items:Items ;
rdfs:range stock:Stock ;
rdfs:label "MANUAL CODE" .
catalog:Catalog a rdfs:Class ;
rdfs:label "Catalog" ;
rdfs:comment "Informix SD catalog table" .
catalog:manu_code a rdf:Property ;
rdfs:domain catalog:Catalog ;
rdfs:range xsd:integer ;
rdfs:label "MANUAL CODE" .
catalog:cat_descr a rdf:Property ;
rdfs:domain catalog:Catalog ;
rdfs:range xsd:string ;
rdfs:label "CATALOG DESCRIPTION" .
catalog:cat_picture a rdf:Property ;
rdfs:domain catalog:Catalog ;
rdfs:range xsd:byte ;
rdfs:label "CATALOG PICTURE" .
catalog:cat_advert a rdf:Property ;
rdfs:domain catalog:Catalog ;
rdfs:range xsd:string ;
rdfs:label "CATALOG ADVERT" .
catalog:catalog_num_fk a rdf:Property ;
rdfs:domain catalog:Catalog ;
rdfs:range stock:Stock ;
rdfs:label "CATALOG NUMBER" .
catalog:stock_num_fk a rdf:Property ;
rdfs:domain catalog:Catalog ;
rdfs:range stock:Stock ;
rdfs:label "STOCK NUMBER" .
msgs:Msgs a rdfs:Class ;
rdfs:label "Msgs" ;
rdfs:comment "Informix SD msgs table" .
msgs:lang a rdf:Property ;
rdfs:domain msgs:Msgs ;
rdfs:range xsd:string ;
rdfs:label "LANGUAGE" .
msgs:number a rdf:Property ;
rdfs:domain msgs:Msgs ;
rdfs:range xsd:integer ;
rdfs:label "NUMBER" .
msgs:message a rdf:Property ;
rdfs:domain msgs:Msgs ;
rdfs:range xsd:string ;
rdfs:label "MESSAGE" .
state:State a rdfs:Class ;
rdfs:label "State" ;
rdfs:comment "Informix SD state table" .
state:code a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "STATE CODE" .
state:sname a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "STATE NAME" .
orders:Orders a rdfs:Class ;
rdfs:label "Orders" ;
rdfs:comment "Informix SD orders table" .
orders:order_num a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:integer ;
rdfs:label "ORDER NUMBER" .
orders:order_date a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:date ;
rdfs:label "ORDER DATE" .
orders:ship_instruct a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:string ;
rdfs:label "SHIPPING INSTRUCTION" .
orders:backlog a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:string ;
rdfs:label "BACKLOG" .
orders:po_num a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:string ;
rdfs:label "PURCHASE ORDER NUMBER" .
orders:ship_date a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:date ;
rdfs:label "SHIPPING DATE" .
orders:ship_weight a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:decimal ;
rdfs:label "SHIPPING WEIGHT" .
orders:ship_charge a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:decimal ;
rdfs:label "SHIPPING CHARGE" .
orders:paid_date a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range xsd:date ;
rdfs:label "PAID DATE" .
orders:customer_num_fk a rdf:Property ;
rdfs:domain orders:Orders ;
rdfs:range cust:Customer ;
rdfs:label "CUSTOMER NUMBER" .
stock:Stock a rdfs:Class ;
rdfs:label "Stock" ;
rdfs:comment "Informix SD stock table" .
stock:stock_num a rdf:Property ;
rdfs:domain stock:Stock ;
rdfs:range xsd:integer ;
rdfs:label "STOCK NUMBER" .
stock:description a rdf:Property ;
rdfs:domain stock:Stock ;
rdfs:range xsd:string ;
rdfs:label "DESCRIPTION" .
stock:unit_price a rdf:Property ;
rdfs:domain stock:Stock ;
rdfs:range xsd:decimal ;
rdfs:label "UNIT PRICE" .
stock:unit a rdf:Property ;
rdfs:domain stock:Stock ;
rdfs:range xsd:string ;
rdfs:label "UNIT" .
stock:unit_descr a rdf:Property ;
rdfs:domain stock:Stock ;
rdfs:range xsd:decimal ;
rdfs:label "UNIT DESCRIPTION" .
stock:manu_code_fk a rdf:Property ;
rdfs:domain stock:Stock ;
rdfs:range manuf:Manufact ;
rdfs:label "MANUAL CODE" .
cust:Customer a rdfs:Class ;
rdfs:label "Customer" ;
rdfs:comment "Informix SD customer table" .
cust:customer_num a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:integer ;
rdfs:label "CUSTOMER NUMBER" .
cust:fname a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "FIRST NAME" .
cust:lname a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "LAST NAME" .
cust:company a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "COMPANY" .
cust:address1 a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "ADDRESS1" .
cust:address2 a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "ADDRESS2" .
cust:city a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "CITY" .
cust:state a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "STATE" .
cust:zipcode a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "ZIP CODE" .
cust:phone a rdf:Property ;
rdfs:domain cust:Customer ;
rdfs:range xsd:string ;
rdfs:label "PHONE NUMBER" .
callt:Call_type a rdfs:Class ;
rdfs:label "Call_type" ;
rdfs:comment "Informix SD call_type table" .
callt:call_code a rdf:Property ;
rdfs:domain callt:Call_type ;
rdfs:range xsd:string ;
rdfs:label "CALL CODE" .
callt:code_descr a rdf:Property ;
rdfs:domain callt:Call_type ;
rdfs:range xsd:string ;
rdfs:label "CODE DESCRIPTION" .
manuf:Manufact a rdfs:Class ;
rdfs:label "Manufact" ;
rdfs:comment "Informix SD manufact table" .
manuf:manu_code a rdf:Property ;
rdfs:domain manuf:Manufact ;
rdfs:range xsd:string ;
rdfs:label "MANUFACTURE CODE" .
manuf:manu_name a rdf:Property ;
rdfs:domain manuf:Manufact ;
rdfs:range xsd:string ;
rdfs:label "MANUFACTURE NAME" .
manuf:lead_time a rdf:Property ;
rdfs:domain manuf:Manufact ;
rdfs:range xsd:integer ;
rdfs:label "LEAD TIME" .
custc:Cust_calls a rdfs:Class ;
rdfs:label "Cust_calls" ;
rdfs:comment "Informix SD cust_calls table" .
custc:call_dtime a rdf:Property ;
rdfs:domain manuf:Cust_calls ;
rdfs:range xsd:datetime ;
rdfs:label "CALL TIME" .
custc:user_id a rdf:Property ;
rdfs:domain manuf:Cust_calls ;
rdfs:range xsd:string ;
rdfs:label "USER ID" .
custc:call_descr a rdf:Property ;
rdfs:domain manuf:Cust_calls ;
rdfs:range xsd:string ;
rdfs:label "CALL DESCRIPTION" .
custc:res_dtime a rdf:Property ;
rdfs:domain manuf:Cust_calls ;
rdfs:range xsd:datetime ;
rdfs:label "RES TIME" .
custc:res_descr a rdf:Property ;
rdfs:domain manuf:Cust_calls ;
rdfs:range xsd:string ;
rdfs:label "RES DESCRIPTION" .
custc:customer_num_fk a rdf:Property ;
rdfs:domain manuf:Cust_calls ;
rdfs:range cust:Customer ;
rdfs:label "CUSTOMER NUM" .
custc:call_code_fk a rdf:Property ;
rdfs:domain manuf:Cust_calls ;
rdfs:range callt:Call_type ;
rdfs:label "CALL CODE" .
', '', 'http://localhost:8890/schemas/informix/stores_demo', 0);
----------- Create IRI Classes -------------
SPARQL
prefix items: <http://localhost:8890/schemas/informix/stores_demo/items/>
prefix catalog: <http://localhost:8890/schemas/informix/stores_demo/catalog/>
prefix stock: <http://localhost:8890/schemas/informix/stores_demo/stock/>
prefix msgs: <http://localhost:8890/schemas/informix/stores_demo/msgs/>
prefix state: <http://localhost:8890/schemas/informix/stores_demo/state/>
prefix orders: <http://localhost:8890/schemas/informix/stores_demo/orders/>
prefix manuf: <http://localhost:8890/schemas/informix/stores_demo/manufact/>
prefix cust: <http://localhost:8890/schemas/informix/stores_demo/customer/>
prefix callt: <http://localhost:8890/schemas/informix/stores_demo/call_type/>
prefix custc: <http://localhost:8890/schemas/informix/stores_demo/cust_calls/>
create iri class items:items_iri
"http://localhost:8890/informix/stores_demo/items/%d_%d#this"
(in item_num integer not null, in order_num integer not null) .
create iri class catalog:catalog_iri
"http://localhost:8890/informix/stores_demo/catalog/%d#this"
(in catalog_num integer not null) .
create iri class msgs:msgs_iri
"http://localhost:8890/informix/stores_demo/msgs/%U_%d_%U#this"
(in _lang varchar not null, in number integer not null, in message varchar not null) .
create iri class state:state_iri
"http://localhost:8890/informix/stores_demo/state/%U#this"
(in code varchar not null) .
create iri class orders:orders_iri
"http://localhost:8890/informix/stores_demo/orders/%d#this"
(in order_num integer not null) .
create iri class stock:stock_iri
"http://localhost:8890/informix/stores_demo/stock/%d_%U#this"
(in stock_num integer not null, in manu_code varchar not null) .
create iri class cust:customer_iri
"http://localhost:8890/informix/stores_demo/customer/%d#this"
(in customer_num integer not null) .
create iri class callt:call_type_iri
"http://localhost:8890/informix/stores_demo/call_type/%U#this"
(in call_code varchar not null) .
create iri class manuf:manufact_iri
"http://localhost:8890/informix/stores_demo/manufact/%U#this"
(in manu_code varchar not null) .
create iri class custc:cust_calls_iri using
function DB.DBA.CUST_CALLS_IRI (in customer_num integer, in call_dtime datetime) returns varchar,
function DB.DBA.CUST_CALLS_IRI_INV_1 (in cust_calls_iri varchar) returns integer,
function DB.DBA.CUST_CALLS_IRI_INV_2 (in cust_calls_iri varchar) returns datetime .
;
------------- Create Quad Store ------------------------------------
SPARQL
prefix items: <http://localhost:8890/schemas/informix/stores_demo/items/>
prefix catalog: <http://localhost:8890/schemas/informix/stores_demo/catalog/>
prefix stock: <http://localhost:8890/schemas/informix/stores_demo/stock/>
prefix msgs: <http://localhost:8890/schemas/informix/stores_demo/msgs/>
prefix state: <http://localhost:8890/schemas/informix/stores_demo/state/>
prefix orders: <http://localhost:8890/schemas/informix/stores_demo/orders/>
prefix manuf: <http://localhost:8890/schemas/informix/stores_demo/manufact/>
prefix cust: <http://localhost:8890/schemas/informix/stores_demo/customer/>
prefix callt: <http://localhost:8890/schemas/informix/stores_demo/call_type/>
prefix custc: <http://localhost:8890/schemas/informix/stores_demo/cust_calls/>
alter quad storage virtrdf:DefaultQuadStorage
from stores_demo_rdf.inf10_stores_demo_rdf.items as items_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.catalog as catalog_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.msgs as msgs_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.state as state_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.orders as orders_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.stock as stock_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.customer as customer_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.call_type as call_type_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.manufact as manufact_tbl
from stores_demo_rdf.inf10_stores_demo_rdf.cust_calls as cust_calls_tbl
{
create virtrdf:informix_stores_demo as graph <http://localhost:8890/informix/stores_demo>
{
items:items_iri (items_tbl.item_num, items_tbl.order_num) a items:Items as virtrdf:items_pk ;
items:item_num items_tbl.item_num as virtrdf:items_item_num ;
items:order_num items_tbl.order_num as virtrdf:items_order_num ;
items:stock_num items_tbl.stock_num as virtrdf:items_stock_num ;
items:manu_code items_tbl.manu_code as virtrdf:items_manu_code ;
items:quantity items_tbl.quantity as virtrdf:items_quantity ;
items:total_price items_tbl.total_price as virtrdf:items_total_price ;
items:from_order orders:orders_iri (orders_tbl.order_num) where (^{items_tbl.}^.order_num = ^{orders_tbl.}^.order_num) as virtrdf:Items-from_order ;
items:has_stock stock:stock_iri (stock_tbl.stock_num, stock_tbl.manu_code) where (^{items_tbl.}^.stock_num = ^{stock_tbl.}^.stock_num and ^{items_tbl.}^.manu_code = ^{stock_tbl.}^.manu_code) as virtrdf:Item-has_stock .
catalog:catalog_iri (catalog_tbl.catalog_num) a catalog:Catalog as virtrdf:catalog_num;
catalog:stock_num catalog_tbl.stock_num as virtrdf:catalog_stock_num ;
catalog:manu_code catalog_tbl.manu_code as virtrdf:catalog_manu_code ;
catalog:cat_descr catalog_tbl.cat_descr as virtrdf:catalog_cat_descr ;
catalog:cat_picture catalog_tbl.cat_picture as virtrdf:catalog_cat_picture ;
catalog:cat_advert catalog_tbl.cat_advert as virtrdf:catalog_cat_advert ;
catalog:has_stock stock:stock_iri (stock_tbl.stock_num, stock_tbl.manu_code) where (^{catalog_tbl.}^.stock_num = ^{stock_tbl.}^.stock_num and ^{catalog_tbl.}^.manu_code = ^{stock_tbl.}^.manu_code) as virtrdf:Catalog-has_stock .
msgs:msgs_iri (msgs_tbl.lang, msgs_tbl.number, msgs_tbl.message) a msgs:Msgs as virtrdf:msgs_pk ;
msgs:lang msgs_tbl.lang as virtrdf:msgs_lang ;
msgs:number msgs_tbl.number as virtrdf:msgs_number ;
msgs:message msgs_tbl.message as virtrdf:msgs_message .
state:state_iri (state_tbl.code) a state:State as virtrdf:code ;
state:code state_tbl.code as virtrdf:state_code ;
state:sname state_tbl.sname as virtrdf:state_sname .
orders:orders_iri (orders_tbl.order_num) a orders:Orders as virtrdf:order_num ;
orders:order_num orders_tbl.order_num as virtrdf:orders_order_num ;
orders:order_date orders_tbl.order_date as virtrdf:orders_order_date ;
orders:customer_num orders_tbl.customer_num as virtrdf:orders_customer_num ;
orders:ship_instruct orders_tbl.ship_instruct as virtrdf:orders_ship_instruct ;
orders:backlog orders_tbl.backlog as virtrdf:orders_backlog ;
orders:po_num orders_tbl.po_num as virtrdf:orders_po_num ;
orders:ship_date orders_tbl.ship_date as virtrdf:orders_ship_date ;
orders:ship_weight orders_tbl.ship_weight as virtrdf:orders_ship_weight ;
orders:ship_charge orders_tbl.ship_charge as virtrdf:orders_ship_charge ;
orders:paid_date orders_tbl.paid_date as virtrdf:orders_paid_date ;
orders:has_customer cust:customer_iri (customer_tbl.customer_num) where (^{orders_tbl.}^.customer_num = ^{customer_tbl.}^.customer_num) as virtrdf:Orders-has_customer ;
orders:has_item items:items_iri (items_tbl.item_num, items_tbl.order_num) where (^{orders_tbl.}^.order_num = ^{items_tbl.}^.order_num) as virtrdf:Orders-has_item .
stock:stock_iri (stock_tbl.stock_num, stock_tbl.manu_code) a stock:Stock as virtrdf:stock_pk ;
stock:stock_num stock_tbl.stock_num as virtrdf:stock_stock_num ;
stock:manu_code stock_tbl.manu_code as virtrdf:stock_manu_code ;
stock:description stock_tbl.description as virtrdf:stock_description ;
stock:unit_price stock_tbl.unit_price as virtrdf:stock_unit_price ;
stock:unit stock_tbl.unit as virtrdf:stock_unit ;
stock:unit_descr stock_tbl.unit_descr as virtrdf:stock_unit_descr ;
stock:manufactured_by manuf:manufact_iri (manufact_tbl.manu_code) where (^{stock_tbl.}^.manu_code = ^{manufact_tbl.}^.manu_code) as virtrdf:Stock-manufactured_by ;
stock:in_catalog catalog:catalog_iri (catalog_tbl.catalog_num) where (^{stock_tbl.}^.stock_num = ^{catalog_tbl.}^.stock_num and ^{stock_tbl.}^.manu_code = ^{catalog_tbl.}^.manu_code) as virtrdf:Stock-in_catalog ;
stock:in_item items:items_iri (items_tbl.item_num, items_tbl.order_num) where (^{stock_tbl.}^.stock_num = ^{items_tbl.}^.stock_num and ^{stock_tbl.}^.manu_code = ^{items_tbl.}^.manu_code) as virtrdf:Stock-in_items .
cust:customer_iri (customer_tbl.customer_num) a cust:Customer as virtrdf:customer_num ;
cust:customer_num customer_tbl.customer_num as virtrdf:customer_customer_num ;
cust:fname customer_tbl.fname as virtrdf:customer_fname ;
cust:lname customer_tbl.lname as virtrdf:customer_lname ;
cust:company customer_tbl.company as virtrdf:customer_company ;
cust:address1 customer_tbl.address1 as virtrdf:customer_address1 ;
cust:address2 customer_tbl.address2 as virtrdf:customer_address2 ;
cust:city customer_tbl.city as virtrdf:customer_city ;
cust:state customer_tbl.state as virtrdf:customer_state ;
cust:zipcode customer_tbl.zipcode as virtrdf:customer_zipcode ;
cust:phone customer_tbl.phone as virtrdf:customer_phone ;
cust:placed_order orders:orders_iri (orders_tbl.order_num) where (^{customer_tbl.}^.customer_num = ^{orders_tbl.}^.customer_num) as virtrdf:Customer-placed_order ;
cust:made_call custc:cust_calls_iri (cust_calls_tbl.customer_num, cust_calls_tbl.call_dtime ) where (^{customer_tbl.}^.customer_num = ^{cust_calls_tbl.}^.customer_num) as virtrdf:Cust_calls-made_call .
callt:call_type_iri (call_type_tbl.call_code) a callt:Call_type as virtrdf:call_code ;
callt:call_code call_type_tbl.call_code as virtrdf:call_type_call_code ;
callt:code_descr call_type_tbl.code_descr as virtrdf:call_type_code_descr ;
callt:call_is_type custc:cust_calls_iri (cust_calls_tbl.customer_num, cust_calls_tbl.call_dtime) where (^{call_type_tbl.}^.call_code = ^{cust_calls_tbl.}^.call_code) as virtrdf:Call_type-call_is_type .
manuf:manufact_iri (manufact_tbl.manu_code) a manuf:Manufact as virtrdf:manu_code ;
manuf:manu_code manufact_tbl.manu_code as virtrdf:manufact_tbl_manu_code ;
manuf:manu_name manufact_tbl.manu_name as virtrdf:manufact_tbl_manu_name ;
manuf:lead_time manufact_tbl.lead_time as virtrdf:manufact_tbl_lead_time ;
manuf:manufactures stock:stock_iri (stock_tbl.stock_num, stock_tbl.manu_code) where (^{manufact_tbl.}^.manu_code = ^{stock_tbl.}^.manu_code) as virtrdf:Manufact-manufactures .
custc:cust_calls_iri (cust_calls_tbl.customer_num, cust_calls_tbl.call_dtime) a custc:Cust_calls as virtrdf:cust_calls_pk ;
custc:user_id cust_calls_tbl.user_id as virtrdf:cust_calls_user_id ;
custc:call_code cust_calls_tbl.call_code as virtrdf:cust_calls_call_code ;
custc:call_descr cust_calls_tbl.call_descr as virtrdf:cust_calls_call_descr ;
custc:res_dtime cust_calls_tbl.res_dtime as virtrdf:cust_calls_res_dtime ;
custc:res_descr cust_calls_tbl.res_descr as virtrdf:cust_calls_res_descr ;
custc:made_by_customer cust:customer_iri (customer_tbl.customer_num) where (^{cust_calls_tbl.}^.customer_num = ^{customer_tbl.}^.customer_num) as virtrdf:Cust_calls-made_by_customer ;
custc:is_call_type callt:call_type_iri (call_type_tbl.call_code) where (^{cust_calls_tbl.}^.call_code = ^{call_type_tbl.}^.call_code) as virtrdf:Cust_calls-is_call_type .
} .
} .
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'informix_sd_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'informix_sd_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'informix_sd_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'informix_sd_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/informix/stores_demo%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'informix_sd_rule_list1',
1,
vector (
'informix_sd_rule1',
'informix_sd_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/informix/stores_demo');
VHOST_DEFINE (
lpath=>'/informix/stores_demo',
ppath=>'/DAV/informix/stores_demo/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'informix_sd_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'informix_sd_schemas_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'informix_sd_schemas_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'informix_sd_schemas_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'informix_sd_schemas_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/informix/stores_demo%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'informix_sd_schemas_rule_list1',
1,
vector (
'informix_sd_schemas_rule1',
'informix_sd_schemas_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schemas/informix/stores_demo');
VHOST_DEFINE (
lpath=>'/schemas/informix/stores_demo',
ppath=>'/DAV/schemas/informix/stores_demo/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'informix_sd_schemas_rule_list1')
);
DB.DBA.XML_SET_NS_DECL ('items', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/items/', 2);
DB.DBA.XML_SET_NS_DECL ('catalog', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/catalog/', 2);
DB.DBA.XML_SET_NS_DECL ('stock', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/stock/', 2);
DB.DBA.XML_SET_NS_DECL ('msgs', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/msgs/', 2);
DB.DBA.XML_SET_NS_DECL ('state', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/state/', 2);
DB.DBA.XML_SET_NS_DECL ('orders', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/orders/', 2);
DB.DBA.XML_SET_NS_DECL ('manuf', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/manufact/', 2);
DB.DBA.XML_SET_NS_DECL ('cust', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/customer/', 2);
DB.DBA.XML_SET_NS_DECL ('callt', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/call_type/', 2);
DB.DBA.XML_SET_NS_DECL ('custc', 'http://^{URIQADefaultHost}^/schemas/informix/stores_demo/cust_calls/', 2);
-- Setup script for RDF views of Ingres R3 Tutorial Sample Database --
DB..vd_remote_data_source ('ingiima-tut', '', '<uid>','<pwd>');
ATTACH TABLE "ingres"."book_list" PRIMARY KEY ("book_no") AS "TUT"."ingiima"."book_list" FROM 'ingiima-tut';
ATTACH TABLE "ingres"."book_orders" PRIMARY KEY ("order_no") AS "TUT"."ingiima"."book_orders" FROM 'ingiima-tut';
ATTACH TABLE "ingres"."cust_info" PRIMARY KEY ("cust_no") AS "TUT"."ingiima"."cust_info" FROM 'ingiima-tut';
ATTACH TABLE "ingres"."cust_orders" PRIMARY KEY ("order_no") AS "TUT"."ingiima"."cust_orders" FROM 'ingiima-tut';
COMMIT WORK;
GRANT SELECT ON TUT.ingiima.book_list TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON TUT.ingiima.book_orders TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON TUT.ingiima.cust_info TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON TUT.ingiima.cust_orders TO "SPARQL", "SPARQL_UPDATE";
-------------------------------------------------------------------
-------- Create rdfs:Class definitions ----------------------------
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix tut: <http://localhost:8890/schemas/ingrestut/> .
tut:book_list a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/ingrestut> ;
rdfs:label "book_list" ;
rdfs:comment "Ingres Tutorial Database book_list table" .
tut:book_no a rdf:Property ;
rdfs:domain tut:book_list ;
rdfs:range xsd:integer ;
rdfs:label "Book No" .
tut:title a rdf:Property ;
rdfs:domain tut:book_list ;
rdfs:range xsd:string ;
rdfs:label "Title" .
tut:author a rdf:Property ;
rdfs:domain tut:book_list ;
rdfs:range xsd:string ;
rdfs:label "Author" .
tut:price a rdf:Property ;
rdfs:domain tut:book_list ;
rdfs:range xsd:money;
rdfs:label "Price" .
tut:category a rdf:Property ;
rdfs:domain tut:book_list ;
rdfs:range xsd:string ;
rdfs:label "Category" .
tut:stock a rdf:Property ;
rdfs:domain tut:book_list ;
rdfs:range xsd:integer ;
rdfs:label "Stock" .
tut:dist_no a rdf:Property ;
rdfs:domain tut:book_list ;
rdfs:range xsd:integer ;
rdfs:label "Dist No" .
tut:book_orders a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/ingrestut> ;
rdfs:label "Book Orders" ;
rdfs:comment "Ingres Tutorial Database book_orders table" .
tut:order_no a rdf:Property ;
rdfs:domain tut:book_orders ;
rdfs:range xsd:integer ;
rdfs:label "Order No" .
tut:book_no_no a rdf:Property ;
rdfs:domain tut:book_orders ;
rdfs:range tut:book_list ;
rdfs:label "Book No" .
tut:sale_price a rdf:Property ;
rdfs:domain tut:book_orders ;
rdfs:range xsd:money ;
rdfs:label "Sale Price" .
tut:quantity a rdf:Property ;
rdfs:domain tut:book_orders ;
rdfs:range xsd:integer ;
rdfs:label "Quantity" .
tut:extension a rdf:Property ;
rdfs:domain tut:book_orders ;
rdfs:range xsd:money ;
rdfs:label "Extension" .
tut:cust_info a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/ingrestut> ;
rdfs:label "Customer Information" ;
rdfs:comment "Ingres Tutorial Database cust_info table" .
tut:cust_no a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:integer ;
rdfs:label "Customer No" .
tut:name a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string ;
rdfs:label "Name" .
tut:company a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string ;
rdfs:label "Company" .
tut:street a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "Street" .
tut:city a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "City" .
tut:state a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "State" .
tut:city a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "City" .
tut:state a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "State" .
tut:zip a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "Zip Code" .
tut:card_no a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "Card No" .
tut:exp_date a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:date;
rdfs:label "Expire Date" .
tut:ship_to a rdf:Property ;
rdfs:domain tut:cust_info ;
rdfs:range xsd:string;
rdfs:label "Ship To" .
tut:cust_orders a rdfs:Class ;
rdfs:isDefinedBy <http://localhost:8890/schemas/ingrestut> ;
rdfs:label "Customer Orders" ;
rdfs:comment "Ingres Tutorial Database cust_orders table" .
tut:order_no a rdf:Property ;
rdfs:domain tut:cust_orders ;
rdfs:range tut:book_orders ;
rdfs:label "Order No" .
tut:book_no a rdf:Property ;
rdfs:domain tut:cust_orders ;
rdfs:range tut:cust_info ;
rdfs:label "Book No" .
tut:order_date a rdf:Property ;
rdfs:domain tut:cust_orders ;
rdfs:range xsd:date ;
rdfs:label "Order Date" .
tut:status a rdf:Property ;
rdfs:domain tut:cust_orders ;
rdfs:range xsd:string ;
rdfs:label "Status" .
tut:order_total a rdf:Property ;
rdfs:domain tut:cust_orders ;
rdfs:range xsd:money ;
rdfs:label "Order Total" .
', '', 'http://localhost:8890/schemas/ingrestut', 0);
---------------------------------------------------------------
----------- Create IRI Classes -------------
SPARQL
create iri class <http://localhost:8890/schemas/ingrestut/book_list_iri>
"http://^{URIQADefaultHost}^/ingrestut/book_list/%d#this"
(in book_no integer not null) .
create iri class <http://localhost:8890/schemas/ingrestut/book_orders_iri>
"http://^{URIQADefaultHost}^/ingrestut/book_orders/%d_%d#this"
(in order_no integer not null, in book_no integer not null ) .
create iri class <http://localhost:8890/schemas/ingrestut/cust_info_iri>
"http://^{URIQADefaultHost}^/ingrestut/cust_info/%d#this"
(in cust_no integer not null) .
create iri class <http://localhost:8890/schemas/ingrestut/cust_orders_iri>
"http://^{URIQADefaultHost}^/ingrestut/cust_orders/%d#this"
(in order_no integer not null) .
;
--------------------------------------------------------------------
------------- Create Quad Store ------------------------------------
SPARQL
prefix tut: <http://localhost:8890/schemas/ingrestut/>
alter quad storage virtrdf:DefaultQuadStorage
from TUT.ingiima.book_list as book_list_tbl
from TUT.ingiima.book_orders as book_orders_tbl
from TUT.ingiima.cust_info as cust_info_tbl
from TUT.ingiima.cust_orders as cust_orders_tbl
{
create virtrdf:ingrestut as
graph <http://localhost:8890/ingrestut>
{
tut:book_list_iri(book_list_tbl.book_no) a tut:book_list
as virtrdf:book_list_book_no ;
tut:title book_list_tbl.title
as virtrdf:book_list_title;
tut:author book_list_tbl.author
as virtrdf:book_list_author;
tut:price book_list_tbl.price
as virtrdf:book_list_price;
tut:category book_list_tbl.category
as virtrdf:book_list_category;
tut:stock book_list_tbl.stock
as virtrdf:book_list_stock;
tut:dist_no book_list_tbl.dist_no
as virtrdf:book_list_dist_no .
tut:book_orders_iri(book_orders_tbl.order_no, book_orders_tbl.book_no) a tut:book_orders
as virtrdf:book_orders_pk;
tut:order_no book_orders_tbl.order_no
as virtrdf:book_orders_order_no;
tut:book_no tut:book_list_iri(book_list_tbl.book_no)
where(^{book_orders_tbl.}^.book_no = ^{book_list_tbl.}^.book_no)
as virtrdf:book_orders_book_no;
tut:sale_price book_orders_tbl.sale_price
as virtrdf:book_orders_sale_price;
tut:quantity book_orders_tbl.quantity
as virtrdf:book_orders_quantity;
tut:extension book_orders_tbl.extension
as virtrdf:book_orders_extension .
tut:cust_info_iri(cust_info_tbl.cust_no) a tut:cust_info
as virtrdf:cust_info_cust_no;
tut:name cust_info_tbl.name
as virtrdf:cust_info_name;
tut:company cust_info_tbl.company
as virtrdf:cust_info_company;
tut:street cust_info_tbl.street
as virtrdf:cust_info_street;
tut:city cust_info_tbl.city
as virtrdf:cust_info_city;
tut:state cust_info_tbl.state
as virtrdf:cust_info_state;
tut:zip cust_info_tbl.zip
as virtrdf:cust_info_zip;
tut:card_no cust_info_tbl.card_no
as virtrdf:cust_info_card_no;
tut:exp_date cust_info_tbl.exp_date
as virtrdf:cust_info_exp_date;
tut:ship_to cust_info_tbl.ship_to
as virtrdf:cust_info_ship_to .
tut:cust_orders_iri(cust_orders_tbl.order_no) a tut:cust_orders
as virtrdf:cust_orders_order_no;
tut:cust_no tut:cust_info_iri(cust_info_tbl.cust_no)
where (^{cust_orders_tbl.}^.cust_no = ^{cust_info_tbl.}^.cust_no)
as virtrdf:cust_orders_cust_no;
tut:order_date cust_orders_tbl.order_date
as virtrdf:cust_orders_order_date;
tut:status cust_orders_tbl.status
as virtrdf:cust_orders_status;
tut:order_total cust_orders_tbl.order_total
as virtrdf:cust_orders_order_total .
} .
} .
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'ingrestut_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'ingrestut_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ingrestut_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ingrestut_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/ingrestut%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ingrestut_rule_list1',
1,
vector (
'ingrestut_rule1',
'ingrestut_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/ingrestut');
VHOST_DEFINE (
lpath=>'/ingrestut',
ppath=>'/DAV/ingrestut/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'ingrestut_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'ingres_schemas_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'ingres_schemas_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ingres_schemas_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'ingres_schemas_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/ingrestut%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'ingres_schemas_rule_list1',
1,
vector (
'ingres_schemas_rule1',
'ingres_schemas_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schema/ingrestut');
VHOST_DEFINE (
lpath=>'/schemas/ingrestut',
ppath=>'/DAV/schemas/ingrestut/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'ingres_schemas_rule_list1')
);
DB.DBA.XML_SET_NS_DECL ('tut', 'http://^{URIQADefaultHost}^/schemas/ingrestut/', 2);
ATTACH TABLE "ISPORTS_RDF"."Customer" PRIMARY KEY ("Cust-Num")
AS "isports_rdf"."pro91_isports_rdf"."Customer"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."Invoice" PRIMARY KEY ("Invoice-Num")
AS "isports_rdf"."pro91_isports_rdf"."Invoice"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."Item" PRIMARY KEY ("Item-num")
AS "isports_rdf"."pro91_isports_rdf"."Item"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."Local-Default" PRIMARY KEY ("Country")
AS "isports_rdf"."pro91_isports_rdf"."Local-Default"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."Order" PRIMARY KEY ("Order-num")
AS "isports_rdf"."pro91_isports_rdf"."Order"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."Order-Line" PRIMARY KEY ("Order-num", "Line-num")
AS "isports_rdf"."pro91_isports_rdf"."Order-Line"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."Ref-Call" PRIMARY KEY ("Call-Num")
AS "isports_rdf"."pro91_isports_rdf"."Ref-Call"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."Salesrep" PRIMARY KEY ("Sales-Rep")
AS "isports_rdf"."pro91_isports_rdf"."Salesrep"
FROM 'pro91_isports_rdf';
ATTACH TABLE "ISPORTS_RDF"."State" PRIMARY KEY ("State")
AS "isports_rdf"."pro91_isports_rdf"."State"
FROM 'pro91_isports_rdf';
COMMIT WORK;
GRANT SELECT ON isports_rdf.pro91_isports_rdf.Customer TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf."Order" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.Item TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf."Order-Line" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.Invoice TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf."Local-Default" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf."Ref-Call" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.Salesrep TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.State TO "SPARQL", "SPARQL_UPDATE";
GRANT SPARQL_UPDATE to "SPARQL";
CREATE VIEW isports_rdf.pro91_isports_rdf.VCustomer AS SELECT "Cust-Num" AS Cust_Num, Name, Address, Address2, City, State, Country, Phone, Contact, "Sales-Rep" AS Sales_Rep, Comments, "Credit-Limit" AS Credit_Limit, Balance, Terms, Discount, "Postal-Code" AS Postal_Code FROM "isports_rdf"."pro91_isports_rdf"."Customer";
CREATE VIEW isports_rdf.pro91_isports_rdf.VOrder AS SELECT "Order-num" AS Order_num, "Cust-Num" AS Cust_Num, "Order-Date" AS Order_Date, "Ship-Date" AS Ship_Date, "Promise-Date" AS Promise_Date, Carrier, Instructions, PO, Terms, "Sales-Rep" AS Sales_Rep FROM isports_rdf.pro91_isports_rdf."Order";
CREATE VIEW isports_rdf.pro91_isports_rdf.VItem AS SELECT "Item-num" AS Item_num, "Item-Name" AS Item_Name, "Cat-Page" AS Cat_Page, Price, "Cat-Description" AS Cat_Description, "On-hand" AS On_hand, Allocated, "Re-Order" AS Re_Order, "On-Order" AS On_Order FROM isports_rdf.pro91_isports_rdf.Item;
CREATE VIEW isports_rdf.pro91_isports_rdf.VOrder_Line AS SELECT "Order-num" AS Order_num, "Line-num" AS Line_num, "Item-num" AS Item_num, Price, Qty, Discount, "Extended-Price" AS Extended_Price, Backorder FROM isports_rdf.pro91_isports_rdf."Order-Line";
CREATE VIEW isports_rdf.pro91_isports_rdf.VInvoice AS SELECT "Invoice-Num" AS Invoice_Num, "Cust-Num" AS Cust_Num, "Invoice-Date" AS Invoice_Date, Amount, "Total-Paid" AS Total_Paid, Adjustment, "Order-Num" AS Order_Num, "Ship-Charge" AS Ship_Charge FROM isports_rdf.pro91_isports_rdf.Invoice;
CREATE VIEW isports_rdf.pro91_isports_rdf.VLocal_Default AS SELECT Country, "Region1-Label" AS Region1_Label, "Region2-Label" AS Region2_Label, "Postal-Label" AS Postal_Label, "Postal-Format" AS Postal_Format, "Tel-Format" AS Tel_Format, "Date-Format" AS Date_Format, "Currency-Symbol" AS Currency_Symbol FROM isports_rdf.pro91_isports_rdf."Local-Default";
CREATE VIEW isports_rdf.pro91_isports_rdf.VRef_Call AS SELECT "Call-Num" AS Call_Num, "Cust-Num" AS Cust_Num, "Call-Date" AS Call_Date, "Sales-Rep" AS Sales_Rep, Parent, Txt FROM isports_rdf.pro91_isports_rdf."Ref-Call";
CREATE VIEW isports_rdf.pro91_isports_rdf.VSalesrep AS SELECT "Rep-Name" AS Rep_Name, Region, "Sales-Rep" AS Sales_Rep, "Month-Quota@1" AS Month_Quota_1, "Month-Quota@2" AS Month_Quota_2, "Month-Quota@3" AS Month_Quota_3, "Month-Quota@4" AS Month_Quota_4, "Month-Quota@5" AS Month_Quota_5, "Month-Quota@6" AS Month_Quota_6, "Month-Quota@7" AS Month_Quota_7, "Month-Quota@8" AS Month_Quota_8, "Month-Quota@9" AS Month_Quota_9, "Month-Quota@10" AS Month_Quota_10, "Month-Quota@11" AS Month_Quota_11, "Month-Quota@12" AS Month_Quota_12 FROM isports_rdf.pro91_isports_rdf.Salesrep;
CREATE VIEW isports_rdf.pro91_isports_rdf.VState AS SELECT State, "State-Name" AS State_Name, Region FROM isports_rdf.pro91_isports_rdf.State;
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VCustomer TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VOrder TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VItem TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VOrder_Line TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VInvoice TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VLocal_Default TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VRef_Call TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VSalesrep TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.pro91_isports_rdf.VState TO "SPARQL", "SPARQL_UPDATE";
-------- Create rdfs:Class definitions ----------------------------
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix customer: <http://localhost:8890/schemas/progress/isports/customer/> .
@prefix order: <http://localhost:8890/schemas/progress/isports/order/> .
@prefix item: <http://localhost:8890/schemas/progress/isports/item/> .
@prefix orderline: <http://localhost:8890/schemas/progress/isports/order_line/> .
@prefix invoice: <http://localhost:8890/schemas/progress/isports/invoice/> .
@prefix localdefault: <http://localhost:8890/schemas/progress/isports/local_default/> .
@prefix refcall: <http://localhost:8890/schemas/progress/isports/ref_call/> .
@prefix salesrep: <http://localhost:8890/schemas/progress/isports/salesrep/> .
@prefix state: <http://localhost:8890/schemas/progress/isports/state/> .
customer:Customer a rdfs:Class ;
rdfs:label "Customer" ;
rdfs:comment "Progress isports Customer table" .
customer:Cust-Num a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
customer:Name a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Name" .
customer:Address a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Address" .
customer:Address2 a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Address2" .
customer:City a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "City" .
customer:State a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "State" .
customer:Country a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Country" .
customer:Phone a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Phone" .
customer:Contact a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Contact" .
customer:Sales-Rep a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
customer:Comments a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Comments" .
customer:Credit-Limit a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:decimal ;
rdfs:label "Credit-Limit" .
customer:Balance a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:decimal ;
rdfs:label "Balance" .
customer:Terms a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Terms" .
customer:Discount a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:integer ;
rdfs:label "Discount" .
customer:Postal-Code a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Postal-Code" .
order:Order a rdfs:Class ;
rdfs:label "Order" ;
rdfs:comment "Progress isports Order table" .
order:Order-num a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:integer ;
rdfs:label "Order-num" .
order:Cust-Num a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
order:Order-Date a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:date ;
rdfs:label "Order-Date" .
order:Ship-Date a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:date ;
rdfs:label "Ship-Date" .
order:Promise-Date a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:date ;
rdfs:label "Promise-Date" .
order:Carrier a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Carrier" .
order:Instructions a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Instructions" .
order:PO a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "PO" .
order:Terms a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Terms" .
order:Sales-Rep a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
item:Item a rdfs:Class ;
rdfs:label "Item" ;
rdfs:comment "Progress isports Item table" .
item:Item-num a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Item-num" .
item:Item-Name a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:string ;
rdfs:label "Item-Name" .
item:Cat-Page a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Cat-Page" .
item:Price a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:decimal ;
rdfs:label "Price" .
item:Cat-Description a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:string ;
rdfs:label "Cat-Description" .
item:On-hand a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "On-hand" .
item:Allocated a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Allocated" .
item:Re-Order a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Re-Order" .
item:On-Order a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "On-Order" .
orderline:Order-Line a rdfs:Class ;
rdfs:label "Order-Line" ;
rdfs:comment "Progress isports Order-Line table" .
orderline:Order-num a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Order-num" .
orderline:Line-num a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Line-num" .
orderline:Item-num a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Item-num" .
orderline:Price a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:decimal ;
rdfs:label "Price" .
orderline:Qty a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Qty" .
orderline:Discount a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Discount" .
orderline:Extended-Price a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:decimal ;
rdfs:label "Extended-Price" .
orderline:Backorder a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:byte ;
rdfs:label "Backorder" .
invoice:Invoice a rdfs:Class ;
rdfs:label "Invoice" ;
rdfs:comment "Progress isports Invoice table" .
invoice:Invoice-Num a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:integer ;
rdfs:label "Invoice-Num" .
invoice:Cust-Num a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
invoice:Invoice-Date a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:date ;
rdfs:label "Invoice-Date" .
invoice:Amount a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Amount" .
invoice:Total-Paid a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Total-Paid" .
invoice:Adjustment a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Adjustment" .
invoice:Order-Num a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:integer ;
rdfs:label "Order-Num" .
invoice:Ship-Charge a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Ship-Charge" .
localdefault:Local-Default a rdfs:Class ;
rdfs:label "Local-Default" ;
rdfs:comment "Progress isports Local-Default table" .
localdefault:Country a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Country" .
localdefault:Region1-Label a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Region1-Label" .
localdefault:Region2-Label a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Region2-Label" .
localdefault:Postal-Label a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Postal-Label" .
localdefault:Postal-Format a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Postal-Format" .
localdefault:Tel-Format a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Tel-Format" .
localdefault:Date-Format a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Date-Format" .
localdefault:Currency-Symbol a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Currency-Symbol" .
refcall:Ref-Call a rdfs:Class ;
rdfs:label "Ref-Call" ;
rdfs:comment "Progress isports Ref-Call table" .
refcall:Call-Num a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Call-Num" .
refcall:Cust-Num a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
refcall:Call-Date a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:date ;
rdfs:label "Call-Date" .
refcall:Sales-Rep a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
refcall:Parent a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Parent" .
refcall:Txt a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Txt" .
salesrep:Salesrep a rdfs:Class ;
rdfs:label "Salesrep" ;
rdfs:comment "Progress isports Salesrep table" .
salesrep:Sales-Rep a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
salesrep:Rep-Name a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Rep-Name" .
salesrep:Region a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Region" .
salesrep:Month-Quota-1 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@1" .
salesrep:Month-Quota-2 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@2" .
salesrep:Month-Quota-3 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@3" .
salesrep:Month-Quota-4 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@4" .
salesrep:Month-Quota-5 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@5" .
salesrep:Month-Quota-6 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@6" .
salesrep:Month-Quota-7 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@7" .
salesrep:Month-Quota-8 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@8" .
salesrep:Month-Quota-9 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@9" .
salesrep:Month-Quota-10 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@10" .
salesrep:Month-Quota-11 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@11" .
salesrep:Month-Quota-12 a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota@12" .
state:State a rdfs:Class ;
rdfs:label "State" ;
rdfs:comment "Progress isports State table" .
state:State_ a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "State" .
state:State-Name a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "State-Name" .
state:Region a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "Region" .
', '', 'http://localhost:8890/schemas/progress/isports', 0);
----------- Create IRI Classes -------------
SPARQL
prefix customer: <http://localhost:8890/schemas/progress/isports/customer/>
prefix order: <http://localhost:8890/schemas/progress/isports/order/>
prefix item: <http://localhost:8890/schemas/progress/isports/item/>
prefix orderline: <http://localhost:8890/schemas/progress/isports/order_line/>
prefix invoice: <http://localhost:8890/schemas/progress/isports/invoice/>
prefix localdefault: <http://localhost:8890/schemas/progress/isports/local_default/>
prefix refcall: <http://localhost:8890/schemas/progress/isports/ref_call/>
prefix salesrep: <http://localhost:8890/schemas/progress/isports/salesrep/>
prefix state: <http://localhost:8890/schemas/progress/isports/state/>
create iri class customer:customer_iri
"http://localhost:8890/progress/isports/customer/%d#this"
(in Cust_Num integer not null) .
create iri class order:order_iri
"http://localhost:8890/progress/isports/order/%d#this"
(in Order_Num integer not null) .
create iri class item:item_iri
"http://localhost:8890/progress/isports/item/%d#this"
(in Item_num integer not null) .
create iri class orderline:order-line_iri
"http://localhost:8890/progress/isports/order-line/%d_%d#this"
(in Order_num integer not null, in Line_num integer not null) .
create iri class invoice:invoice_iri
"http://localhost:8890/progress/isports/invoice/%d#this"
(in Invoice_Num integer not null) .
create iri class localdefault:local-default_iri
"http://localhost:8890/progress/isports/local-default/%U#this"
(in Country varchar not null) .
create iri class refcall:ref-call_iri
"http://localhost:8890/progress/isports/ref-call/%U#this"
(in Call_Num varchar not null) .
create iri class salesrep:salesrep_iri
"http://localhost:8890/progress/isports/salesrep/%U#this"
(in Sales_Rep varchar not null) .
create iri class state:state_iri
"http://localhost:8890/progress/isports/state/%U#this"
(in State varchar not null) .
;
------------- Create Quad Store ------------------------------------
SPARQL
prefix customer: <http://localhost:8890/schemas/progress/isports/customer/>
prefix order: <http://localhost:8890/schemas/progress/isports/order/>
prefix item: <http://localhost:8890/schemas/progress/isports/item/>
prefix orderline: <http://localhost:8890/schemas/progress/isports/order_line/>
prefix invoice: <http://localhost:8890/schemas/progress/isports/invoice/>
prefix localdefault: <http://localhost:8890/schemas/progress/isports/local_default/>
prefix refcall: <http://localhost:8890/schemas/progress/isports/ref_call/>
prefix salesrep: <http://localhost:8890/schemas/progress/isports/salesrep/>
prefix state: <http://localhost:8890/schemas/progress/isports/state/>
alter quad storage virtrdf:DefaultQuadStorage
from isports_rdf.pro91_isports_rdf.VCustomer as Customer_tbl
from isports_rdf.pro91_isports_rdf.VOrder as Order_tbl
from isports_rdf.pro91_isports_rdf.VItem as Item_tbl
from isports_rdf.pro91_isports_rdf.VOrder_Line as Order_Line_tbl
from isports_rdf.pro91_isports_rdf.VInvoice as Invoice_tbl
from isports_rdf.pro91_isports_rdf.VRef_Call as Ref_Call_tbl
from isports_rdf.pro91_isports_rdf.VRef_Call as Ref_Call_tbl_1
from isports_rdf.pro91_isports_rdf.VLocal_Default as Local_Default_tbl
from isports_rdf.pro91_isports_rdf.VSalesrep as Salesrep_tbl
from isports_rdf.pro91_isports_rdf.VState as State_tbl
{
create virtrdf:progress_isports as graph <http://localhost:8890/progress/isports>
{
customer:customer_iri (Customer_tbl.Cust_Num) a customer:Customer as virtrdf:customer_pk ;
customer:Cust-Num Customer_tbl.Cust_Num as virtrdf:Customer_cust-num ;
customer:Name Customer_tbl.Name as virtrdf:Customer_name ;
customer:Address Customer_tbl.Address as virtrdf:Customer_address ;
customer:Address2 Customer_tbl.Address2 as virtrdf:Customer_address2 ;
customer:City Customer_tbl.City as virtrdf:Customer_city ;
customer:State Customer_tbl.State as virtrdf:Customer_state ;
customer:Country Customer_tbl.Country as virtrdf:Customer_country ;
customer:Phone Customer_tbl.Phone as virtrdf:Customer_phone ;
customer:Contact Customer_tbl.Contact as virtrdf:Customer_contact ;
customer:Sales-Rep Customer_tbl.Sales_Rep as virtrdf:Customer_sales_rep ;
customer:Comments Customer_tbl.Comments as virtrdf:Customer_comments ;
customer:Credit-Limit Customer_tbl.Credit_Limit as virtrdf:Customer_credit-limit ;
customer:Balance Customer_tbl.Balance as virtrdf:Customer_balance ;
customer:Terms Customer_tbl.Terms as virtrdf:Customer_terms ;
customer:Discount Customer_tbl.Discount as virtrdf:Customer_discount ;
customer:Postal-Code Customer_tbl.Postal_Code as virtrdf:Customer_postal-code ;
customer:from_state state:state_iri (State_tbl.State) where ( ^{Customer_tbl.}^.State = ^{State_tbl.}^.State ) as virtrdf:Customer_from_state ;
customer:has_sales_rep salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{Customer_tbl.}^.Sales_Rep = ^{Salesrep_tbl.}^.Sales_Rep ) as virtrdf:Customer_has_sales_rep ;
customer:has_local_default localdefault:local-default_iri (Local_Default_tbl.Country) where ( ^{Customer_tbl.}^.Country = ^{Local_Default_tbl.}^.Country ) as virtrdf:Customer_has_local_default ;
customer:placed_order order:order_iri (Order_tbl.Order_num) where ( ^{Customer_tbl.}^.Cust_Num = ^{Order_tbl.}^.Cust_Num ) as virtrdf:Customer_placed_order ;
customer:has_invoice invoice:invoice_iri (Invoice_tbl.Invoice_Num) where ( ^{Customer_tbl.}^.Cust_Num = ^{Invoice_tbl.}^.Cust_Num ) as virtrdf:Customer_has_invoice ;
customer:ref_call refcall:ref-call_iri (Ref_Call_tbl.Call_Num) where ( ^{Customer_tbl.}^.Cust_Num = ^{Ref_Call_tbl.}^.Cust_Num ) as virtrdf:Customer_ref-call .
order:order_iri (Order_tbl.Order_num) a order:Order as virtrdf:order_pk ;
order:Order-num Order_tbl.Order_num as virtrdf:Order_order-num ;
order:Cust-Num Order_tbl.Cust_Num as virtrdf:Order_cust_num ;
order:Order-Date Order_tbl.Order_Date as virtrdf:Order_order-date ;
order:Ship-Date Order_tbl.Ship_Date as virtrdf:Order_ship-date ;
order:Promise-Date Order_tbl.Promise_Date as virtrdf:Order_promise-date ;
order:Carrier Order_tbl.Carrier as virtrdf:Order_carrier ;
order:Instructions Order_tbl.Instructions as virtrdf:Order_instructions ;
order:PO Order_tbl.PO as virtrdf:Order_po ;
order:Terms Order_tbl.Terms as virtrdf:Order_terms ;
order:placed_by customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Order_tbl.}^.Cust_Num = ^{Customer_tbl.}^.Cust_Num ) as virtrdf:Order_placed_by ;
order:Sales-Rep salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{Order_tbl.}^.Sales_Rep = ^{Salesrep_tbl.}^.Sales_Rep ) as virtrdf:Order_sales_rep ;
order:invoiced_on invoice:invoice_iri (Invoice_tbl.Invoice_Num) where ( ^{Order_tbl.}^.Order_num = ^{Invoice_tbl.}^.Order_Num ) as virtrdf:Order_invoiced_on ;
order:has_lines orderline:order-line_iri (Order_Line_tbl.Order_num, Order_Line_tbl.Line_num) where ( ^{Order_tbl.}^.Order_num = ^{Order_Line_tbl.}^.Order_num ) as virtrdf:Order_has_lines .
item:item_iri (Item_tbl.Item_num) a item:Item as virtrdf:item_pk ;
item:Item-num Item_tbl.Item_num as virtrdf:item_item-num ;
item:Item-Name Item_tbl.Item_Name as virtrdf:Item_item-Name ;
item:Cat-Page Item_tbl.Cat_Page as virtrdf:Item_cat-page ;
item:Price Item_tbl.Price as virtrdf:Item_price ;
item:Cat-Description Item_tbl.Cat_Description as virtrdf:Item_cat-description ;
item:On-hand Item_tbl.On_hand as virtrdf:Item_on-hand ;
item:Allocated Item_tbl.Allocated as virtrdf:Item_allocated ;
item:Re-Order Item_tbl.Re_Order as virtrdf:Item_re-order ;
item:On-Order Item_tbl.On_Order as virtrdf:Item_on-order ;
item:order_line orderline:order-line_iri (Order_Line_tbl.Order_num, Order_Line_tbl.Line_num) where ( ^{Item_tbl.}^.Item_num = ^{Order_Line_tbl.}^.Item_num ) as virtrdf:Item_order_line .
orderline:order-line_iri (Order_Line_tbl.Order_num, Order_Line_tbl.Line_num) a orderline:Order-Line as virtrdf:order-line_pk ;
orderline:Line-num Order_Line_tbl.Line_num as virtrdf:Order-Line_line-num ;
orderline:Price Order_Line_tbl.Price as virtrdf:Order-Line_price ;
orderline:Qty Order_Line_tbl.Qty as virtrdf:Order-Line_qty ;
orderline:Discount Order_Line_tbl.Discount as virtrdf:Order-Line_discount ;
orderline:Extended-Price Order_Line_tbl.Extended_Price as virtrdf:Order-Line_extended-price ;
orderline:Backorder Order_Line_tbl.Backorder as virtrdf:Order-Line_backorder ;
orderline:Order-num order:order_iri (Order_tbl.Order_num) where ( ^{Order_Line_tbl.}^.Order_num = ^{Order_tbl.}^.Order_num ) as virtrdf:Order_Line_order_num ;
orderline:Item-num item:item_iri (Item_tbl.Item_num) where ( ^{Order_Line_tbl.}^.Item_num = ^{Item_tbl.}^.Item_num ) as virtrdf:Order_Line_item_num .
invoice:invoice_iri (Invoice_tbl.Invoice_Num) a invoice:Invoice as virtrdf:invoice_pk ;
invoice:Invoice-Num Invoice_tbl.Invoice_Num as virtrdf:Invoice_invoice-num ;
invoice:Cust-Num Invoice_tbl.Cust_Num as virtrdf:Invoice_cust_num ;
invoice:Invoice-Date Invoice_tbl.Invoice_Date as virtrdf:Invoice_invoice-date ;
invoice:Amount Invoice_tbl.Amount as virtrdf:Invoice_amount ;
invoice:Total-Paid Invoice_tbl.Total_Paid as virtrdf:Invoice_total-paid ;
invoice:Adjustment Invoice_tbl.Adjustment as virtrdf:Invoice_adjustment ;
invoice:Order-Num Invoice_tbl.Order_Num as virtrdf:Invoice_order-num ;
invoice:Ship-Charge Invoice_tbl.Ship_Charge as virtrdf:Invoice_ship-charge ;
invoice:invoiced_to customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Invoice_tbl.}^.Cust_Num = ^{Customer_tbl.}^.Cust_Num ) as virtrdf:Invoice_invoiced_to ;
invoice:Order-Num order:order_iri (Order_tbl.Order_num) where ( ^{Invoice_tbl.}^.Order_Num = ^{Order_tbl.}^.Order_num ) as virtrdf:Invoice_order_num .
localdefault:local-default_iri (Local_Default_tbl.Country) a localdefault:Local-Default as virtrdf:local-default_pk ;
localdefault:Country Local_Default_tbl.Country as virtrdf:local-default_country ;
localdefault:Region1-Label Local_Default_tbl.Region1_Label as virtrdf:Local-Default_region1-label ;
localdefault:Region2-Label Local_Default_tbl.Region2_Label as virtrdf:Local-Default_region2-label ;
localdefault:Postal-Label Local_Default_tbl.Postal_Label as virtrdf:Local-Default_postal-label ;
localdefault:Postal-Format Local_Default_tbl.Postal_Format as virtrdf:Local-Default_postal-format ;
localdefault:Tel-Format Local_Default_tbl.Tel_Format as virtrdf:Local-Default_tel-format ;
localdefault:Date-Format Local_Default_tbl.Date_Format as virtrdf:Local-Default_date-format ;
localdefault:Currency-Symbol Local_Default_tbl.Currency_Symbol as virtrdf:Local-Default_currency-symbol ;
localdefault:has_customer customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Local_Default_tbl.}^.Country = ^{Customer_tbl.}^.Country ) as virtrdf:Local-Default_has_customer .
refcall:ref-call_iri (Ref_Call_tbl.Call_Num) a refcall:Ref-Call as virtrdf:ref-call_pk ;
refcall:Call-Num Ref_Call_tbl.Call_Num as virtrdf:Ref-Call_call-num ;
refcall:Cust-Num Ref_Call_tbl.Cust_Num as virtrdf:Ref-Call_cust-num ;
refcall:Call-Date Ref_Call_tbl.Call_Date as virtrdf:Ref-Call_call-date ;
refcall:Sales-Rep Ref_Call_tbl.Sales_Rep as virtrdf:Ref-sales-rep ;
refcall:Parent Ref_Call_tbl.Parent as virtrdf:Ref-Call_parent ;
refcall:Txt Ref_Call_tbl.Txt as virtrdf:Ref-Call_txt ;
refcall:made_to customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Ref_Call_tbl.}^.Cust_Num = ^{Customer_tbl.}^.Cust_Num ) as virtrdf:Ref-Call_made_to ;
refcall:made_by salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{Ref_Call_tbl.}^.Sales_Rep = ^{Salesrep_tbl.}^.Sales_Rep ) as virtrdf:Ref-Call_made-by ;
refcall:has_parent refcall:ref-call_iri (Ref_Call_tbl_1.Call_Num) where ( ^{Ref_Call_tbl.}^.Parent = ^{Ref_Call_tbl_1.}^.Call_Num ) as virtrdf:Ref-Call_has_parent .
salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) a salesrep:Salesrep as virtrdf:salesrep_pk ;
salesrep:Sales-Rep Salesrep_tbl.Sales_Rep as virtrdf:Salesrep_sales-rep ;
salesrep:Region Salesrep_tbl.Region as virtrdf:Salesrep_region ;
salesrep:Rep-Name Salesrep_tbl.Rep_Name as virtrdf:Salesrep_rep-name ;
salesrep:Month-Quota-1 Salesrep_tbl.Month_Quota_1 as virtrdf:Salesrep_month-quota-1 ;
salesrep:Month-Quota-2 Salesrep_tbl.Month_Quota_2 as virtrdf:Salesrep_month-quota-2 ;
salesrep:Month-Quota-3 Salesrep_tbl.Month_Quota_3 as virtrdf:Salesrep_month-quota-3 ;
salesrep:Month-Quota-4 Salesrep_tbl.Month_Quota_4 as virtrdf:Salesrep_month-quota-4 ;
salesrep:Month-Quota-5 Salesrep_tbl.Month_Quota_5 as virtrdf:Salesrep_month-quota-5 ;
salesrep:Month-Quota-6 Salesrep_tbl.Month_Quota_6 as virtrdf:Salesrep_month-quota-6 ;
salesrep:Month-Quota-7 Salesrep_tbl.Month_Quota_7 as virtrdf:Salesrep_month-quota-7 ;
salesrep:Month-Quota-8 Salesrep_tbl.Month_Quota_8 as virtrdf:Salesrep_month-quota-8 ;
salesrep:Month-Quota-9 Salesrep_tbl.Month_Quota_9 as virtrdf:Salesrep_month-quota-9 ;
salesrep:Month-Quota-10 Salesrep_tbl.Month_Quota_10 as virtrdf:Salesrep_month-quota-10 ;
salesrep:Month-Quota-11 Salesrep_tbl.Month_Quota_11 as virtrdf:Salesrep_month-quota-11 ;
salesrep:Month-Quota-12 Salesrep_tbl.Month_Quota_12 as virtrdf:Salesrep_month-quota-12 ;
salesrep:is_sales_rep_for customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Salesrep_tbl.}^.Sales_Rep = ^{Customer_tbl.}^.Sales_Rep ) as virtrdf:Salesrep_is_sales_rep_for ;
salesrep:has_order order:order_iri (Order_tbl.Order_num) where ( ^{Salesrep_tbl.}^.Sales_Rep = ^{Order_tbl.}^.Sales_Rep ) as virtrdf:Salesrep_has_order ;
salesrep:manages_region state:state_iri (State_tbl.State) where ( ^{Salesrep_tbl.}^.Region = ^{State_tbl.}^.Region ) as virtrdf:Salesrep_manages_region ;
salesrep:made_call refcall:ref-call_iri (Ref_Call_tbl.Call_Num) where ( ^{Salesrep_tbl.}^.Sales_Rep = ^{Ref_Call_tbl.}^.Sales_Rep ) as virtrdf:Ref-Call_made_call .
state:state_iri (State_tbl.State) a state:State as virtrdf:state_pk ;
state:State_ State_tbl.State as virtrdf:State_state ;
state:State-Name State_tbl.State_Name as virtrdf:State_state-name ;
state:Region State_tbl.Region as virtrdf:State_region ;
state:has_customer customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{State_tbl.}^.State = ^{Customer_tbl.}^.State ) as virtrdf:State_has_customer ;
state:has_sales_rep salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{State_tbl.}^.Region = ^{Salesrep_tbl.}^.Region ) as virtrdf:State_has_sales_rep .
} .
} .
;
delete from db.dba.url_rewrite_rule_list where urrl_list like 'progress_isports_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'progress_isports_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/progress/isports%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'progress_isports_rule_list1',
1,
vector (
'progress_isports_rule1',
'progress_isports_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/progress/isports');
VHOST_DEFINE (
lpath=>'/progress/isports',
ppath=>'/DAV/progress/isports/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'progress_isports_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'progress_isports_schemas_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'progress_isports_schemas_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_schemas_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_schemas_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/progress/isports%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'progress_isports_schemas_rule_list1',
1,
vector (
'progress_isports_schemas_rule1',
'progress_isports_schemas_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schemas/progress/isports');
VHOST_DEFINE (
lpath=>'/schemas/progress/isports',
ppath=>'/DAV/schemas/progress/isports/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'progress_isports_schemas_rule_list1')
);
DB.DBA.XML_SET_NS_DECL ('customer', 'http://^{URIQADefaultHost}^/schemas/progress/isports/customer/', 2);
DB.DBA.XML_SET_NS_DECL ('order', 'http://^{URIQADefaultHost}^/schemas/progress/isports/order/', 2);
DB.DBA.XML_SET_NS_DECL ('item', 'http://^{URIQADefaultHost}^/schemas/progress/isports/item/', 2);
DB.DBA.XML_SET_NS_DECL ('orderline', 'http://^{URIQADefaultHost}^/schemas/progress/isports/order_line/', 2);
DB.DBA.XML_SET_NS_DECL ('invoice', 'http://^{URIQADefaultHost}^/schemas/progress/isports/invoice/', 2);
DB.DBA.XML_SET_NS_DECL ('localdefault', 'http://^{URIQADefaultHost}^/schemas/progress/isports/local_default/', 2);
DB.DBA.XML_SET_NS_DECL ('refcall', 'http://^{URIQADefaultHost}^/schemas/progress/isports/ref_call/', 2);
DB.DBA.XML_SET_NS_DECL ('salesrep', 'http://^{URIQADefaultHost}^/schemas/progress/isports/salesrep/', 2);
DB.DBA.XML_SET_NS_DECL ('state', 'http://^{URIQADefaultHost}^/schemas/progress/isports/state/', 2);
ATTACH TABLE "PUB"."Customer" PRIMARY KEY ("Cust-Num") AS "isports_rdf"."prs10_isports_rdf"."Customer" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."Invoice" PRIMARY KEY ("Invoice-Num") AS "isports_rdf"."prs10_isports_rdf"."Invoice" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."Item" PRIMARY KEY ("Item-num") AS "isports_rdf"."prs10_isports_rdf"."Item" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."Local-Default" PRIMARY KEY ("Country") AS "isports_rdf"."prs10_isports_rdf"."Local-Default" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."Order" PRIMARY KEY ("Order-num") AS "isports_rdf"."prs10_isports_rdf"."Order" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."Order-Line" PRIMARY KEY ("Order-num", "Line-num") AS "isports_rdf"."prs10_isports_rdf"."Order-Line" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."Ref-Call" PRIMARY KEY ("Call-Num") AS "isports_rdf"."prs10_isports_rdf"."Ref-Call" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."Salesrep" PRIMARY KEY ("Sales-Rep") AS "isports_rdf"."prs10_isports_rdf"."Salesrep" FROM 'prs10_isports_rdf';
ATTACH TABLE "PUB"."State" PRIMARY KEY ("State") AS "isports_rdf"."prs10_isports_rdf"."State" FROM 'prs10_isports_rdf';
COMMIT WORK;
GRANT SELECT ON isports_rdf.prs10_isports_rdf.Customer TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf."Order" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.Item TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf."Order-Line" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.Invoice TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf."Local-Default" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf."Ref-Call" TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.Salesrep TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.State TO "SPARQL", "SPARQL_UPDATE";
GRANT SPARQL_UPDATE to "SPARQL";
CREATE VIEW isports_rdf.prs10_isports_rdf.VCustomer AS SELECT "Cust-Num" AS Cust_Num, Name, Address, Address2, City, State, Country, Phone, Contact, "Sales-Rep" AS Sales_Rep, Comments, "Credit-Limit" AS Credit_Limit, Balance, Terms, Discount, "Postal-Code" AS Postal_Code FROM isports_rdf.prs10_isports_rdf.Customer;
CREATE VIEW isports_rdf.prs10_isports_rdf.VOrder AS SELECT "Order-num" AS Order_num, "Cust-Num" AS Cust_Num, "Order-Date" AS Order_Date, "Ship-Date" AS Ship_Date, "Promise-Date" AS Promise_Date, Carrier, Instructions, PO, Terms, "Sales-Rep" AS Sales_Rep FROM isports_rdf.prs10_isports_rdf."Order";
CREATE VIEW isports_rdf.prs10_isports_rdf.VItem AS SELECT "Item-num" AS Item_num, "Item-Name" AS Item_Name, "Cat-Page" AS Cat_Page, Price, "Cat-Description" AS Cat_Description, "On-hand" AS On_hand, Allocated, "Re-Order" AS Re_Order, "On-Order" AS On_Order FROM isports_rdf.prs10_isports_rdf.Item;
CREATE VIEW isports_rdf.prs10_isports_rdf.VOrder_Line AS SELECT "Order-num" AS Order_num, "Line-num" AS Line_num, "Item-num" AS Item_num, Price, Qty, Discount, "Extended-Price" AS Extended_Price, Backorder FROM isports_rdf.prs10_isports_rdf."Order-Line";
CREATE VIEW isports_rdf.prs10_isports_rdf.VInvoice AS SELECT "Invoice-Num" AS Invoice_Num, "Cust-Num" AS Cust_Num, "Invoice-Date" AS Invoice_Date, Amount, "Total-Paid" AS Total_Paid, Adjustment, "Order-Num" AS Order_Num, "Ship-Charge" AS Ship_Charge FROM isports_rdf.prs10_isports_rdf.Invoice;
CREATE VIEW isports_rdf.prs10_isports_rdf.VLocal_Default AS SELECT Country, "Region1-Label" AS Region1_Label, "Region2-Label" AS Region2_Label, "Postal-Label" AS Postal_Label, "Postal-Format" AS Postal_Format, "Tel-Format" AS Tel_Format, "Date-Format" AS Date_Format, "Currency-Symbol" AS Currency_Symbol FROM isports_rdf.prs10_isports_rdf."Local-Default";
CREATE VIEW isports_rdf.prs10_isports_rdf.VRef_Call AS SELECT "Call-Num" AS Call_Num, "Cust-Num" AS Cust_Num, "Call-Date" AS Call_Date, "Sales-Rep" AS Sales_Rep, Parent, Txt FROM isports_rdf.prs10_isports_rdf."Ref-Call";
CREATE VIEW isports_rdf.prs10_isports_rdf.VSalesrep AS SELECT "Rep-Name" AS Rep_Name, Region, "Sales-Rep" AS Sales_Rep, "Month-Quota" AS Month_Quota FROM isports_rdf.prs10_isports_rdf.Salesrep;
CREATE VIEW isports_rdf.prs10_isports_rdf.VState AS SELECT State, "State-Name" AS State_Name, Region FROM isports_rdf.prs10_isports_rdf.State;
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VCustomer TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VOrder TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VItem TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VOrder_Line TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VInvoice TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VLocal_Default TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VRef_Call TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VSalesrep TO "SPARQL", "SPARQL_UPDATE";
GRANT SELECT ON isports_rdf.prs10_isports_rdf.VState TO "SPARQL", "SPARQL_UPDATE";
-------- Create rdfs:Class definitions ----------------------------
ttlp (
'
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix customer: <http://localhost:8890/schemas/progress/isports/customer/> .
@prefix order: <http://localhost:8890/schemas/progress/isports/order/> .
@prefix item: <http://localhost:8890/schemas/progress/isports/item/> .
@prefix orderline: <http://localhost:8890/schemas/progress/isports/order_line/> .
@prefix invoice: <http://localhost:8890/schemas/progress/isports/invoice/> .
@prefix localdefault: <http://localhost:8890/schemas/progress/isports/local_default/> .
@prefix refcall: <http://localhost:8890/schemas/progress/isports/ref_call/> .
@prefix salesrep: <http://localhost:8890/schemas/progress/isports/salesrep/> .
@prefix state: <http://localhost:8890/schemas/progress/isports/state/> .
customer:Customer a rdfs:Class ;
rdfs:label "Customer" ;
rdfs:comment "Progress isports Customer table" .
customer:Cust-Num a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
customer:Name a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Name" .
customer:Address a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Address" .
customer:Address2 a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Address2" .
customer:City a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "City" .
customer:State a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "State" .
customer:Country a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Country" .
customer:Phone a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Phone" .
customer:Contact a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Contact" .
customer:Sales-Rep a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
customer:Comments a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Comments" .
customer:Credit-Limit a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:decimal ;
rdfs:label "Credit-Limit" .
customer:Balance a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:decimal ;
rdfs:label "Balance" .
customer:Terms a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Terms" .
customer:Discount a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:integer ;
rdfs:label "Discount" .
customer:Postal-Code a rdf:Property ;
rdfs:domain customer:Customer ;
rdfs:range xsd:string ;
rdfs:label "Postal-Code" .
order:Order a rdfs:Class ;
rdfs:label "Order" ;
rdfs:comment "Progress isports Order table" .
order:Order-num a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:integer ;
rdfs:label "Order-num" .
order:Cust-Num a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
order:Order-Date a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:date ;
rdfs:label "Order-Date" .
order:Ship-Date a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:date ;
rdfs:label "Ship-Date" .
order:Promise-Date a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:date ;
rdfs:label "Promise-Date" .
order:Carrier a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Carrier" .
order:Instructions a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Instructions" .
order:PO a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "PO" .
order:Terms a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Terms" .
order:Sales-Rep a rdf:Property ;
rdfs:domain order:Order ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
item:Item a rdfs:Class ;
rdfs:label "Item" ;
rdfs:comment "Progress isports Item table" .
item:Item-num a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Item-num" .
item:Item-Name a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:string ;
rdfs:label "Item-Name" .
item:Cat-Page a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Cat-Page" .
item:Price a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:decimal ;
rdfs:label "Price" .
item:Cat-Description a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:string ;
rdfs:label "Cat-Description" .
item:On-hand a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "On-hand" .
item:Allocated a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Allocated" .
item:Re-Order a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "Re-Order" .
item:On-Order a rdf:Property ;
rdfs:domain item:Item ;
rdfs:range xsd:integer ;
rdfs:label "On-Order" .
orderline:Order-Line a rdfs:Class ;
rdfs:label "Order-Line" ;
rdfs:comment "Progress isports Order-Line table" .
orderline:Order-num a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Order-num" .
orderline:Line-num a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Line-num" .
orderline:Item-num a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Item-num" .
orderline:Price a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:decimal ;
rdfs:label "Price" .
orderline:Qty a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Qty" .
orderline:Discount a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:integer ;
rdfs:label "Discount" .
orderline:Extended-Price a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:decimal ;
rdfs:label "Extended-Price" .
orderline:Backorder a rdf:Property ;
rdfs:domain orderline:Order-Line ;
rdfs:range xsd:byte ;
rdfs:label "Backorder" .
invoice:Invoice a rdfs:Class ;
rdfs:label "Invoice" ;
rdfs:comment "Progress isports Invoice table" .
invoice:Invoice-Num a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:integer ;
rdfs:label "Invoice-Num" .
invoice:Cust-Num a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
invoice:Invoice-Date a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:date ;
rdfs:label "Invoice-Date" .
invoice:Amount a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Amount" .
invoice:Total-Paid a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Total-Paid" .
invoice:Adjustment a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Adjustment" .
invoice:Order-Num a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:integer ;
rdfs:label "Order-Num" .
invoice:Ship-Charge a rdf:Property ;
rdfs:domain invoice:Invoice ;
rdfs:range xsd:decimal ;
rdfs:label "Ship-Charge" .
localdefault:Local-Default a rdfs:Class ;
rdfs:label "Local-Default" ;
rdfs:comment "Progress isports Local-Default table" .
localdefault:Country a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Country" .
localdefault:Region1-Label a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Region1-Label" .
localdefault:Region2-Label a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Region2-Label" .
localdefault:Postal-Label a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Postal-Label" .
localdefault:Postal-Format a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Postal-Format" .
localdefault:Tel-Format a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Tel-Format" .
localdefault:Date-Format a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Date-Format" .
localdefault:Currency-Symbol a rdf:Property ;
rdfs:domain localdefault:Local-Default ;
rdfs:range xsd:string ;
rdfs:label "Currency-Symbol" .
refcall:Ref-Call a rdfs:Class ;
rdfs:label "Ref-Call" ;
rdfs:comment "Progress isports Ref-Call table" .
refcall:Call-Num a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Call-Num" .
refcall:Cust-Num a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:integer ;
rdfs:label "Cust-Num" .
refcall:Call-Date a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:date ;
rdfs:label "Call-Date" .
refcall:Sales-Rep a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
refcall:Parent a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Parent" .
refcall:Txt a rdf:Property ;
rdfs:domain refcall:Ref-Call ;
rdfs:range xsd:string ;
rdfs:label "Txt" .
salesrep:Salesrep a rdfs:Class ;
rdfs:label "Salesrep" ;
rdfs:comment "Progress isports Salesrep table" .
salesrep:Sales-Rep a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Sales-Rep" .
salesrep:Rep-Name a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Rep-Name" .
salesrep:Region a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Region" .
salesrep:Month-Quota a rdf:Property ;
rdfs:domain salesrep:Salesrep ;
rdfs:range xsd:string ;
rdfs:label "Month-Quota" .
state:State a rdfs:Class ;
rdfs:label "State" ;
rdfs:comment "Progress isports State table" .
state:State_ a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "State" .
state:State-Name a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "State-Name" .
state:Region a rdf:Property ;
rdfs:domain state:State ;
rdfs:range xsd:string ;
rdfs:label "Region" .
', '', 'http://localhost:8890/schemas/progress/isports', 0);
----------- Create IRI Classes -------------
SPARQL
prefix customer: <http://localhost:8890/schemas/progress/isports/customer/>
prefix order: <http://localhost:8890/schemas/progress/isports/order/>
prefix item: <http://localhost:8890/schemas/progress/isports/item/>
prefix orderline: <http://localhost:8890/schemas/progress/isports/order_line/>
prefix invoice: <http://localhost:8890/schemas/progress/isports/invoice/>
prefix localdefault: <http://localhost:8890/schemas/progress/isports/local_default/>
prefix refcall: <http://localhost:8890/schemas/progress/isports/ref_call/>
prefix salesrep: <http://localhost:8890/schemas/progress/isports/salesrep/>
prefix state: <http://localhost:8890/schemas/progress/isports/state/>
create iri class customer:customer_iri
"http://localhost:8890/progress/isports/customer/%d#this"
(in Cust_Num integer not null) .
create iri class order:order_iri
"http://localhost:8890/progress/isports/order/%d#this"
(in Order_Num integer not null) .
create iri class item:item_iri
"http://localhost:8890/progress/isports/item/%d#this"
(in Item_num integer not null) .
create iri class orderline:order-line_iri
"http://localhost:8890/progress/isports/order-line/%d_%d#this"
(in Order_num integer not null, in Line_num integer not null) .
create iri class invoice:invoice_iri
"http://localhost:8890/progress/isports/invoice/%d#this"
(in Invoice_Num integer not null) .
create iri class localdefault:local-default_iri
"http://localhost:8890/progress/isports/local-default/%U#this"
(in Country varchar not null) .
create iri class refcall:ref-call_iri
"http://localhost:8890/progress/isports/ref-call/%U#this"
(in Call_Num varchar not null) .
create iri class salesrep:salesrep_iri
"http://localhost:8890/progress/isports/salesrep/%U#this"
(in Sales_Rep varchar not null) .
create iri class state:state_iri
"http://localhost:8890/progress/isports/state/%U#this"
(in State varchar not null) .
;
------------- Create Quad Store ------------------------------------
SPARQL
prefix customer: <http://localhost:8890/schemas/progress/isports/customer/>
prefix order: <http://localhost:8890/schemas/progress/isports/order/>
prefix item: <http://localhost:8890/schemas/progress/isports/item/>
prefix orderline: <http://localhost:8890/schemas/progress/isports/order_line/>
prefix invoice: <http://localhost:8890/schemas/progress/isports/invoice/>
prefix localdefault: <http://localhost:8890/schemas/progress/isports/local_default/>
prefix refcall: <http://localhost:8890/schemas/progress/isports/ref_call/>
prefix salesrep: <http://localhost:8890/schemas/progress/isports/salesrep/>
prefix state: <http://localhost:8890/schemas/progress/isports/state/>
alter quad storage virtrdf:DefaultQuadStorage
from isports_rdf.prs10_isports_rdf.VCustomer as Customer_tbl
from isports_rdf.prs10_isports_rdf.VOrder as Order_tbl
from isports_rdf.prs10_isports_rdf.VItem as Item_tbl
from isports_rdf.prs10_isports_rdf.VOrder_Line as Order_Line_tbl
from isports_rdf.prs10_isports_rdf.VInvoice as Invoice_tbl
from isports_rdf.prs10_isports_rdf.VRef_Call as Ref_Call_tbl
from isports_rdf.prs10_isports_rdf.VRef_Call as Ref_Call_tbl_1 -- Additional Ref_Call_tbl_1 alias required to represent recursive FK relationship (refcall:has_parent) below.
from isports_rdf.prs10_isports_rdf.VLocal_Default as Local_Default_tbl
from isports_rdf.prs10_isports_rdf.VSalesrep as Salesrep_tbl
from isports_rdf.prs10_isports_rdf.VState as State_tbl
{
create virtrdf:progress_isports as graph <http://localhost:8890/progress/isports>
{
customer:customer_iri (Customer_tbl.Cust_Num) a customer:Customer as virtrdf:customer_pk ;
customer:Cust-Num Customer_tbl.Cust_Num as virtrdf:Customer_cust-num ;
customer:Name Customer_tbl.Name as virtrdf:Customer_name ;
customer:Address Customer_tbl.Address as virtrdf:Customer_address ;
customer:Address2 Customer_tbl.Address2 as virtrdf:Customer_address2 ;
customer:City Customer_tbl.City as virtrdf:Customer_city ;
customer:State Customer_tbl.State as virtrdf:Customer_state ;
customer:Country Customer_tbl.Country as virtrdf:Customer_country ;
customer:Phone Customer_tbl.Phone as virtrdf:Customer_phone ;
customer:Contact Customer_tbl.Contact as virtrdf:Customer_contact ;
customer:Sales-Rep Customer_tbl.Sales_Rep as virtrdf:Customer_sales_rep ;
customer:Comments Customer_tbl.Comments as virtrdf:Customer_comments ;
customer:Credit-Limit Customer_tbl.Credit_Limit as virtrdf:Customer_credit-limit ;
customer:Balance Customer_tbl.Balance as virtrdf:Customer_balance ;
customer:Terms Customer_tbl.Terms as virtrdf:Customer_terms ;
customer:Discount Customer_tbl.Discount as virtrdf:Customer_discount ;
customer:Postal-Code Customer_tbl.Postal_Code as virtrdf:Customer_postal-code ;
customer:from_state state:state_iri (State_tbl.State) where ( ^{Customer_tbl.}^.State = ^{State_tbl.}^.State ) as virtrdf:Customer_from_state ;
customer:has_sales_rep salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{Customer_tbl.}^.Sales_Rep = ^{Salesrep_tbl.}^.Sales_Rep ) as virtrdf:Customer_has_sales_rep ;
customer:has_local_default localdefault:local-default_iri (Local_Default_tbl.Country) where ( ^{Customer_tbl.}^.Country = ^{Local_Default_tbl.}^.Country ) as virtrdf:Customer_has_local_default ;
customer:placed_order order:order_iri (Order_tbl.Order_num) where ( ^{Customer_tbl.}^.Cust_Num = ^{Order_tbl.}^.Cust_Num ) as virtrdf:Customer_placed_order ;
customer:has_invoice invoice:invoice_iri (Invoice_tbl.Invoice_Num) where ( ^{Customer_tbl.}^.Cust_Num = ^{Invoice_tbl.}^.Cust_Num ) as virtrdf:Customer_has_invoice ;
customer:ref_call refcall:ref-call_iri (Ref_Call_tbl.Call_Num) where ( ^{Customer_tbl.}^.Cust_Num = ^{Ref_Call_tbl.}^.Cust_Num ) as virtrdf:Customer_ref-call .
order:order_iri (Order_tbl.Order_num) a order:Order as virtrdf:order_pk ;
order:Order-num Order_tbl.Order_num as virtrdf:Order_order-num ;
order:Cust-Num Order_tbl.Cust_Num as virtrdf:Order_cust_num ;
order:Order-Date Order_tbl.Order_Date as virtrdf:Order_order-date ;
order:Ship-Date Order_tbl.Ship_Date as virtrdf:Order_ship-date ;
order:Promise-Date Order_tbl.Promise_Date as virtrdf:Order_promise-date ;
order:Carrier Order_tbl.Carrier as virtrdf:Order_carrier ;
order:Instructions Order_tbl.Instructions as virtrdf:Order_instructions ;
order:PO Order_tbl.PO as virtrdf:Order_po ;
order:Terms Order_tbl.Terms as virtrdf:Order_terms ;
order:placed_by customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Order_tbl.}^.Cust_Num = ^{Customer_tbl.}^.Cust_Num ) as virtrdf:Order_placed_by ;
order:Sales-Rep salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{Order_tbl.}^.Sales_Rep = ^{Salesrep_tbl.}^.Sales_Rep ) as virtrdf:Order_sales_rep ;
order:invoiced_on invoice:invoice_iri (Invoice_tbl.Invoice_Num) where ( ^{Order_tbl.}^.Order_num = ^{Invoice_tbl.}^.Order_Num ) as virtrdf:Order_invoiced_on ;
order:has_lines orderline:order-line_iri (Order_Line_tbl.Order_num, Order_Line_tbl.Line_num) where ( ^{Order_tbl.}^.Order_num = ^{Order_Line_tbl.}^.Order_num ) as virtrdf:Order_has_lines .
item:item_iri (Item_tbl.Item_num) a item:Item as virtrdf:item_pk ;
item:Item-num Item_tbl.Item_num as virtrdf:item_item-num ;
item:Item-Name Item_tbl.Item_Name as virtrdf:Item_item-Name ;
item:Cat-Page Item_tbl.Cat_Page as virtrdf:Item_cat-page ;
item:Price Item_tbl.Price as virtrdf:Item_price ;
item:Cat-Description Item_tbl.Cat_Description as virtrdf:Item_cat-description ;
item:On-hand Item_tbl.On_hand as virtrdf:Item_on-hand ;
item:Allocated Item_tbl.Allocated as virtrdf:Item_allocated ;
item:Re-Order Item_tbl.Re_Order as virtrdf:Item_re-order ;
item:On-Order Item_tbl.On_Order as virtrdf:Item_on-order ;
item:order_line orderline:order-line_iri (Order_Line_tbl.Order_num, Order_Line_tbl.Line_num) where ( ^{Item_tbl.}^.Item_num = ^{Order_Line_tbl.}^.Item_num ) as virtrdf:Item_order_line .
orderline:order-line_iri (Order_Line_tbl.Order_num, Order_Line_tbl.Line_num) a orderline:Order-Line as virtrdf:order-line_pk ;
orderline:Line-num Order_Line_tbl.Line_num as virtrdf:Order-Line_line-num ;
orderline:Price Order_Line_tbl.Price as virtrdf:Order-Line_price ;
orderline:Qty Order_Line_tbl.Qty as virtrdf:Order-Line_qty ;
orderline:Discount Order_Line_tbl.Discount as virtrdf:Order-Line_discount ;
orderline:Extended-Price Order_Line_tbl.Extended_Price as virtrdf:Order-Line_extended-price ;
orderline:Backorder Order_Line_tbl.Backorder as virtrdf:Order-Line_backorder ;
orderline:Order-num order:order_iri (Order_tbl.Order_num) where ( ^{Order_Line_tbl.}^.Order_num = ^{Order_tbl.}^.Order_num ) as virtrdf:Order_Line_order_num ;
orderline:Item-num item:item_iri (Item_tbl.Item_num) where ( ^{Order_Line_tbl.}^.Item_num = ^{Item_tbl.}^.Item_num ) as virtrdf:Order_Line_item_num .
invoice:invoice_iri (Invoice_tbl.Invoice_Num) a invoice:Invoice as virtrdf:invoice_pk ;
invoice:Invoice-Num Invoice_tbl.Invoice_Num as virtrdf:Invoice_invoice-num ;
invoice:Cust-Num Invoice_tbl.Cust_Num as virtrdf:Invoice_cust_num ;
invoice:Invoice-Date Invoice_tbl.Invoice_Date as virtrdf:Invoice_invoice-date ;
invoice:Amount Invoice_tbl.Amount as virtrdf:Invoice_amount ;
invoice:Total-Paid Invoice_tbl.Total_Paid as virtrdf:Invoice_total-paid ;
invoice:Adjustment Invoice_tbl.Adjustment as virtrdf:Invoice_adjustment ;
invoice:Order-Num Invoice_tbl.Order_Num as virtrdf:Invoice_order-num ;
invoice:Ship-Charge Invoice_tbl.Ship_Charge as virtrdf:Invoice_ship-charge ;
invoice:invoiced_to customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Invoice_tbl.}^.Cust_Num = ^{Customer_tbl.}^.Cust_Num ) as virtrdf:Invoice_invoiced_to ;
invoice:Order-Num order:order_iri (Order_tbl.Order_num) where ( ^{Invoice_tbl.}^.Order_Num = ^{Order_tbl.}^.Order_num ) as virtrdf:Invoice_order_num .
localdefault:local-default_iri (Local_Default_tbl.Country) a localdefault:Local-Default as virtrdf:local-default_pk ;
localdefault:Country Local_Default_tbl.Country as virtrdf:local-default_country ;
localdefault:Region1-Label Local_Default_tbl.Region1_Label as virtrdf:Local-Default_region1-label ;
localdefault:Region2-Label Local_Default_tbl.Region2_Label as virtrdf:Local-Default_region2-label ;
localdefault:Postal-Label Local_Default_tbl.Postal_Label as virtrdf:Local-Default_postal-label ;
localdefault:Postal-Format Local_Default_tbl.Postal_Format as virtrdf:Local-Default_postal-format ;
localdefault:Tel-Format Local_Default_tbl.Tel_Format as virtrdf:Local-Default_tel-format ;
localdefault:Date-Format Local_Default_tbl.Date_Format as virtrdf:Local-Default_date-format ;
localdefault:Currency-Symbol Local_Default_tbl.Currency_Symbol as virtrdf:Local-Default_currency-symbol ;
localdefault:has_customer customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Local_Default_tbl.}^.Country = ^{Customer_tbl.}^.Country ) as virtrdf:Local-Default_has_customer .
refcall:ref-call_iri (Ref_Call_tbl.Call_Num) a refcall:Ref-Call as virtrdf:ref-call_pk ;
refcall:Call-Num Ref_Call_tbl.Call_Num as virtrdf:Ref-Call_call-num ;
refcall:Cust-Num Ref_Call_tbl.Cust_Num as virtrdf:Ref-Call_cust-num ;
refcall:Call-Date Ref_Call_tbl.Call_Date as virtrdf:Ref-Call_call-date ;
refcall:Sales-Rep Ref_Call_tbl.Sales_Rep as virtrdf:Ref-sales-rep ;
refcall:Parent Ref_Call_tbl.Parent as virtrdf:Ref-Call_parent ;
refcall:Txt Ref_Call_tbl.Txt as virtrdf:Ref-Call_txt ;
refcall:made_to customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Ref_Call_tbl.}^.Cust_Num = ^{Customer_tbl.}^.Cust_Num ) as virtrdf:Ref-Call_made_to ;
refcall:made_by salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{Ref_Call_tbl.}^.Sales_Rep = ^{Salesrep_tbl.}^.Sales_Rep ) as virtrdf:Ref-Call_made-by ;
refcall:has_parent refcall:ref-call_iri (Ref_Call_tbl_1.Call_Num) where ( ^{Ref_Call_tbl.}^.Parent = ^{Ref_Call_tbl_1.}^.Call_Num ) as virtrdf:Ref-Call_has_parent .
salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) a salesrep:Salesrep as virtrdf:salesrep_pk ;
salesrep:Sales-Rep Salesrep_tbl.Sales_Rep as virtrdf:Salesrep_sales-rep ;
salesrep:Region Salesrep_tbl.Region as virtrdf:Salesrep_region ;
salesrep:Rep-Name Salesrep_tbl.Rep_Name as virtrdf:Salesrep_rep-name ;
salesrep:Month-Quota Salesrep_tbl.Month_Quota as virtrdf:Salesrep_month-quota ;
salesrep:is_sales_rep_for customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{Salesrep_tbl.}^.Sales_Rep = ^{Customer_tbl.}^.Sales_Rep ) as virtrdf:Salesrep_is_sales_rep_for ;
salesrep:has_order order:order_iri (Order_tbl.Order_num) where ( ^{Salesrep_tbl.}^.Sales_Rep = ^{Order_tbl.}^.Sales_Rep ) as virtrdf:Salesrep_has_order ;
salesrep:manages_region state:state_iri (State_tbl.State) where ( ^{Salesrep_tbl.}^.Region = ^{State_tbl.}^.Region ) as virtrdf:Salesrep_manages_region ;
salesrep:made_call refcall:ref-call_iri (Ref_Call_tbl.Call_Num) where ( ^{Salesrep_tbl.}^.Sales_Rep = ^{Ref_Call_tbl.}^.Sales_Rep ) as virtrdf:Ref-Call_made_call .
state:state_iri (State_tbl.State) a state:State as virtrdf:state_pk ;
state:State_ State_tbl.State as virtrdf:State_state ;
state:State-Name State_tbl.State_Name as virtrdf:State_state-name ;
state:Region State_tbl.Region as virtrdf:State_region ;
state:has_customer customer:customer_iri (Customer_tbl.Cust_Num) where ( ^{State_tbl.}^.State = ^{Customer_tbl.}^.State ) as virtrdf:State_has_customer ;
state:has_sales_rep salesrep:salesrep_iri (Salesrep_tbl.Sales_Rep) where ( ^{State_tbl.}^.Region = ^{Salesrep_tbl.}^.Region ) as virtrdf:State_has_sales_rep .
} .
} .
;
-- Setup re-write rules that enable de-referencing of RDF based descriptions of
-- iSports Entities
-- Cleanup old rules
delete from db.dba.url_rewrite_rule_list where urrl_list like 'progress_isports_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'progress_isports_rule%';
-- Create rules for handling HTML representation of Entity (resource) description requests
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
-- Create rules for handling RDF based representations (N3 or RDF/XML) of Entity (resource) descriptions
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=DESCRIBE+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+%%3Chttp%%3A//localhost%%3A8890%U%%23this%%3E+FROM+%%3Chttp%%3A//localhost%%3A8890/progress/isports%%3E&format=%U',
vector('path', 'path', '*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'progress_isports_rule_list1',
1,
vector (
'progress_isports_rule1',
'progress_isports_rule2'
));
-- Setup OWL ontology data space that describes iSports entities
-- Create Virtual Directory access point
VHOST_REMOVE (lpath=>'/progress/isports');
VHOST_DEFINE (
lpath=>'/progress/isports',
ppath=>'/DAV/progress/isports/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'progress_isports_rule_list1')
);
delete from db.dba.url_rewrite_rule_list where urrl_list like 'progress_isports_schemas_rule%';
delete from db.dba.url_rewrite_rule where urr_rule like 'progress_isports_schemas_rule%';
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_schemas_rule1',
1,
'(/[^#]*)',
vector('path'),
1,
'/about/html/http/^{URIQADefaultHost}^%s',
vector('path'),
null,
'(text/html)|(\\*/\\*)',
0,
303
);
DB.DBA.URLREWRITE_CREATE_REGEX_RULE (
'progress_isports_schemas_rule2',
1,
'(/[^#]*)',
vector('path'),
1,
'/sparql?query=CONSTRUCT+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}%%0D%%0AFROM+%%3Chttp%%3A//localhost%%3A8890/schemas/progress/isports%%3E+%%0D%%0AWHERE+{+%%3Chttp%%3A//localhost%%3A8890%U%%3E+%%3Fp+%%3Fo+}&format=%U',
vector('path','path','*accept*'),
null,
'(text/rdf.n3)|(application/rdf.xml)',
0,
null
);
DB.DBA.URLREWRITE_CREATE_RULELIST (
'progress_isports_schemas_rule_list1',
1,
vector (
'progress_isports_schemas_rule1',
'progress_isports_schemas_rule2'
));
-- ensure a VD for the IRIs which begins with /
VHOST_REMOVE (lpath=>'/schemas/progress/isports');
VHOST_DEFINE (
lpath=>'/schemas/progress/isports',
ppath=>'/DAV/schemas/progress/isports/',
is_dav=>1,
vsp_user=>'dba',
is_brws=>0,
opts=>vector ('url_rewrite', 'progress_isports_schemas_rule_list1')
);
DB.DBA.XML_SET_NS_DECL ('customer', 'http://^{URIQADefaultHost}^/schemas/progress/isports/customer/', 2);
DB.DBA.XML_SET_NS_DECL ('order', 'http://^{URIQADefaultHost}^/schemas/progress/isports/order/', 2);
DB.DBA.XML_SET_NS_DECL ('item', 'http://^{URIQADefaultHost}^/schemas/progress/isports/item/', 2);
DB.DBA.XML_SET_NS_DECL ('orderline', 'http://^{URIQADefaultHost}^/schemas/progress/isports/order_line/', 2);
DB.DBA.XML_SET_NS_DECL ('invoice', 'http://^{URIQADefaultHost}^/schemas/progress/isports/invoice/', 2);
DB.DBA.XML_SET_NS_DECL ('localdefault', 'http://^{URIQADefaultHost}^/schemas/progress/isports/local_default/', 2);
DB.DBA.XML_SET_NS_DECL ('refcall', 'http://^{URIQADefaultHost}^/schemas/progress/isports/ref_call/', 2);
DB.DBA.XML_SET_NS_DECL ('salesrep', 'http://^{URIQADefaultHost}^/schemas/progress/isports/salesrep/', 2);
DB.DBA.XML_SET_NS_DECL ('state', 'http://^{URIQADefaultHost}^/schemas/progress/isports/state/', 2);
|
Previous
Automated Generation of RDF Views over Relational Data Sources |
Chapter Contents |
Next
RDF Insert Methods in Virtuoso |