S3B/MBB/SOA
From Corrib Clan Wiki
Author: Sebastian Ryszard Kruk
Services Specification for MultiBeeBrowse
Abstract
This document describes all features delivered by the MultiBeeBrowsecomponent(part of the Social Semantic Search and Browsing framework). Each feature is defined in natural language, set of logic expressions, RDF Query (SeRQL), and with definition of the REST service (as a part of MBB-SOA). Each REST service is graphically represented as a part of the MBB-SOA graph; service is defined using BNF.
Introduction
MultiBeeBrowseis a set of services realizing vision of facted navigation on unstructured data sets, such as RDF repositories; the idea is to deliver a set of simple operations a user could invoke with GUI. The complete implementation of MultiBeeBrowseconsists of an RDF storage, a services middleware and a graphical user interface. GUI should implement zoomable interface paradigm, using hexagons to represent information and operations; in case client’s engine is incapable of rendering this GUI, it should be rendered using simpler graphical concepts, but still implementating underlying operations.
Overview
Notations
REST definition (BNF):
<Not> ::= ’!’
<And> ::= ’+’
<Or> ::= ’|’
<Anything> ::= ’*’
<Space> ::= ’’
<SpaceSubst> ::= ’+’
<SimpleValue> ::= [^/!+|]+
<Inverse> ::= ’-’
<EncodedURI> ::= [^#/:$&+,;=?@ "<>]+
<ServiceGetParams> ::= 'actionInContextPath' '=' <AnyActionPath>
RAW Metadata-access Conventions
REST definition (BNF):
<RawMetadata> ::= <MBBService> ’/rdf/’ <RdfSerializeType>
<FeedMetadata> ::= <MBBService> ’/feed/’ <FeedSerializeType>
<ChainDescribeMetadata> ::= <MBBService> '/chain/' <ChainSerializeType>
<MBBService> ::= <AccessResource> | <SearchService> |
<FilterService> | <BrowseService> |
<CombineService> | <ServiceCallID>
<RdfSerializeType> ::= (’rdfxml’ | ’n3’ | 'ntriples' | ’turtle’ | 'json')
<FeedSerializeType> ::= (’rss’ | ’rss2’ | ’atom’)
<ChainSerializeType> ::= ('xml' | 'html' | 'form')
Statistics Metadata-access Services
REST definition (BNF):
<StatisticsMetadata> ::= <MBBService> '/stats/' <StatsActionType> '/' <StatsActionDefinition>
'/' <StatsSerializeType> ('/' <GetFullStats>)
<MBBService> ::= <AccessResource> | <SearchService> |
<FilterService> | <BrowseService> |
<CombineService> | <ServiceCallID>
<StatsActionDefinition> ::= (<Not>)? <StatsAllProps> | <StatsValues>
<GetFullStats> ::= 'full'
<StatsActionType> ::= 'filter' | 'similar' | 'browse'
<StatsAllProps> ::= 'props'
<StatsValues> ::= ('values' | 'tokens') ('=' <StatsPropDef>)?
<StatsPropDef> ::= (<Inverse>)? (<NamespaceAbbr> ’:’ <SimpleValue> | <PredefinedProperty>)
<StatsSerializeType> ::= ('plain' | 'cloud' | 'ttm')
Optional request parameters
<CloudStatsSerializeTypeParams> ::= <SizeDef> | <FilterDef>
<SizeDef> ::= 'sizes' '=' [0-9]+
<FilterDef> ::= 'filter '=' [0-9a-zA-Z]+
Naming services
Description:
MultiBeeBrowse allows to assign an identifier which will repre- sent given service call. Given ID is treated by MultiBeeBrowseas the full path of REST call.
Each new service ID is described in the RDF with following tripple:
<ServiceCallURI> <mbb:serviceId> "serviceId".
RDF Query:
SELECT DISTINCT serviceid
FROM {serviceURI} <mbb:serviceId> {serviceid}
USING NAMESPACE mbb = <http://s3b.corrib.org/mbb#>
REST definition (BNF):
<NamingService> ::= <MBBService> ’/getid/’
<ServiceCallID> ::= ’$ServID’ [0-9a-zA-Z]+
MMB Context
[update the TeX version of the specification with this service]
Description:
SOA for MBB should support not only access to search and browsing services and meta service; context and history of invoked services is also very important. Each context consists of a series of search and browsing actions (calls to services). Since MBB expects non-linear history of actions (expressed with HexBrowser on the UI level) supports more flexible access to actions in the history than just a "back" action.
Please note that meta services are valid for this service as well.
Use Cases
- GET
- get first action from the context
- get an action following given path
- get an action, in given context, for given call
- get other contexts where given call was executed
- PUT
- add new context // new context will not contain any actions, and will be set up in the session
- add action to the context //you can either add new action at specific point on the path OR when no point on the path is set the action should be put on the end of the 0/0/0/0 path
- DELETE
- remove action from the context
- remove context
REST definition (BNF):
- GET:
<MBBContext> ::= <ServiceURI> '/context/' <ContextID>
<ContextID> ::= [a-zA-Z0-9]+
<MBBContextFirstAction> ::= <MBBContext> '/action'
<MBBContextAnyAction> ::= <MBBContext> '/action/' <AnyActionPath>
<AnyActionPath> ::= <PathAxis> | <AnyActionPath> '/' <PathAxis>
<PathAxis> ::= [0-5]
<MBBContextActionByCall> ::= <MBBContext> '/action/find/' '$$' <ServiceCallID> '$$'
<MBBOtherContexts> ::= <ServiceURI> '/context/list/' <ServiceCallID>
'/user/' <ContextUsersFilter>
<ContextUsersFilter> ::= 'all' | 'current' | <UserID>
<UserID> ::= 'mailto:' [a-z0-9A-Z]+ ( [.] [a-z0-9A-Z]+ )*
[@] [a-z0-9A-Z]+ ( [.] [a-z0-9A-Z]+ )+
- PUT:
<CreateNewContext-URI> ::= <ServiceURI> '/context/'
<AddNewAction-URI> ::= <MBBContext> '/action/' <NewActionPath>
<NewActionPath> ::= <PathAxis> | <AnyActionPath> '>' <PathAxis>
<AddNewAction-Send> ::= 'action=' <ServiceShortCallID>
/*registered user and date information are
generated from the server context*/
<ServiceShortCallID> ::= [a-z0-9A-Z]+
- DELETE
<RemoveAction-URI> ::= <MBBContext> '/action/' <RemoveActionPath> /*last action on the list will be removed*/
<RemoveContext-URI> ::= <ServiceURI> '/context/' <ContextID>
MMB Operation Type: Access Resource
Description:
Renders accessible a resource with given uri. Access to resources is defined outside of the MultiBeeBrowse system; it is however, one of the most important features of MultiBeeBrowse.
Logical definition:
Raccess resource (uri) = {r : r ∈ Rdatabase ∧ U RI(r) = uri} (2.1)
Example RDF Query:
CONSTRUCT DISTINCT *
FROM {s} a {b};
[ c {d} [e {f} [g {h}]]],
[{ib} ia {s}]
WHERE s = <http://library.deri.ie/resource/5e68d6a6>
AND (isBNode(f) OR isLiteral(f))
UNION
CONSTRUCT * FROM {{s} a {b}} x {y}
WHERE s = <http://library.deri.ie/resource/5e68d6a6>
UNION
CONSTRUCT * FROM {{b} a {s}} x {y}
WHERE s = <http://library.deri.ie/resource/5e68d6a6>
REST definition (BNF):
<AccessResource> ::= <URI>
<URI> ::= (<ServiceURI> ’/resource/’ <ResourceID>) |
(<ServiceURI> ’/resource/’ '$' <ResourceURI> '$' )
<ResourceID> ::= [a-zA-Z0-9]+
<ResourceURI> ::= [^$]+
MMB Operation Type: Search
MMB Operation: A Generic Search Service
Description:
Search services in MultiBeeBrowse allow users to encode their search query in a form of a REST call. There are three main types of search services:
- keyword-based queries (KQ)
- direct RDF queries (RDFQ)
- natural language query templates (NLQ)
These services are defined outside of the scope of MultiBeeBrowse, but for the sake of consistant calls their definition is provided in this report.
Logical definition:
Rsearch results (query, type) = {r : r ∈ Rdatabase ∧ r ∈ Servicetype (query)}
(3.1)
REST definition (BNF):
<SearchService> ::= <ServiceURI> ’/search/’ <QueryType> ’:’
<QueryDef>
<QueryType> ::= (’KQ’ | ’RDFQ’ | ’NLQ’)
<QueryDef> ::= [^/ ]+ /*to be detailed by specific
services, cannot contain /
or spaces [substituted by + sign]*/
MMB Operation: Keyword-based Search
Description:
Keyword-based search allows users to specifie their queries in google-like fashion without prior knowledge of the underlying metadata schema. Implementation of this services delivered by Social Semantic Search and Browsing (S3B) (where MultiBeeBrowse will be first deployed at) users can provide additional constrains like types of keywords, e.g., author:, title:. The service provided by S3B performs also query refinement [ KK04 ] based on user’s profile and community interactions [ KGG+ 06, KDG+ 06 ].
REST definition (BNF):
<SearchService> ::= <ServiceURI> ’/search/KQ:’ <QueryDef>
<QueryDef> ::= (<KeywordType> ’:’)? <Keyword>
| <QueryDef> <SpaceSubst> <QueryDef>
<KeywordType> ::= <SimpleValue>
<Keyword> ::= <SimpleKeyword> | <ComplexKeyword>
<SimpleKeyword> ::= <SimpleValue>
<ComplexKeyword> ::= ’"’ (<SimpleKeyword> <SpaceSubst>)+
<SimpleKeyword> ’"’
MMB Operation: Direct RDF Query
Description:
Direct RDF query allows users to define their own RDF queries to be executed on the RDF database. Given RDF query is perfomed without any modification, directly by the RDF storage engine; therefore a set of RDF query languages supported by this services is directly related to a set of RDF query languages supported by the underlying RDF storage engine [ KDZ05 ].
REST definition (BNF):
<SearchService> ::= <ServiceURI> ’/search/RDFQ:’ <QueryDef>
<QueryDef> ::= <RdfQueryType> ’:’ <RdfQuery>
<RdfQueryType> ::= ’RDQL’ | ’RQL’ | ’SeRQL’ | ’SPARQL’
<RdfQuery> ::= [^/ ]+ /*depends on the RDF query
language specification*/
MMB Operation: NLQ Templates
Description:
Since using direct RDF queries might be very crumblesome for most of users, search services delivered by S3B allow to define a set of templates which match user queries in natural language to prefefined RDF queries [ KSO+ 06 ]. Query templates can be defined in different languages; providing language identifier together with query can speed up the template matching process. The same way a unique id number of query template can be provided to speed up the template matching process.
REST definition (BNF):
<SearchService> ::= <ServiceURI> ’/search/NLQ:’ <QueryDef>
<QueryDef> ::= (<QueryLang> ’:’)? (<TemplateId> ’:’)?
<NLQuery>
<QueryLang> ::= ’en’ | ’pl’ | ’pt_BR’ | ...
<TemplateId> ::= [0-9]+
<QueryDef> ::= ’"’ [^/ ]+ (’.’ | ’?’) ’"’
MMB Operation Type: Filter
MMB Operation: A Generic Filter Service
Description:
Filtering services are one of the three, apart from browsing (see Sec. "MMB Operation Type: Browse") and combining (see Sec. "MMB Operation Type: Combine"), types of core services delivered by MultiBeeBrowse. They produce a set of resources, which is a subset of given one and each resource conforms give filtering rules. If invoked as the first service in the pipeline they filter complete RDF database according to given rules. If invoked after some other service they filter part of RDF returned by previous service in the pipeline. This service filters a set of resources returned by previous services, or all resources in the database, according to given property-value. Value provided for each property can be either a literal value or asterix (* ) denoting any value. This service can also operate in inverse mode, indicated by esclamation mark (! ), which returns a set of those resource which does not match given property-value rule, or which do not contain given property when value is indicated by asterix. Property-value rules defined for each call have to either match all values, when seperated by plus sign (+), or any of given values, when seperated by pipe sign (—). This service can also filter based on inverse property, which means that it can select all resources in the given set that are objects of RDF statements with given property and value. In such case, definition of filter is preceeded by minus sign (-).
Logical definition:
Rf iltered (RDF, filter, rules) = {r : r ∈ RDF ∧ r ∈ f ilter(RDF, rules)} (4.1)
REST definition (BNF):
<FilterService> ::= (<MBBService>)? ’/filter/’ (<Not>)?
(<Filter> | <InverseFilter>)
<Filter> ::= <PropertyDef> ’/’ <ValueDef>
<InverseFilter> ::= <Inverse> <Filter>
<PropertyDef> ::= <SimpleValue> | <EncodedURI>
<ValueDef> ::= (<Not>)? <SimpleValue> |
<ValueDef> (<And> | <Or>) <ValueDef> |
<Anything> | <EncodedURI>
MMB Operation: Predefined properties
Description:
A set of predefined properties can be defined to allow users to easily select each property them with only short names, without namespaces definition. There are for predefined properties in MultiBeeBrowse-Filters implementation delivered by S3B in JeromeDL:
- rdf:type of resource (type)
- marcont:hasCreator of resource (creator)
- marcont:hasKeyword annotating resource (keyword)
- marcont:hasTopic categorizing resource (topic)
- jeromedl:bookType categorizing resource (book-type)
Other can be easily added through config files or directly in the RDF storage.
In case of RDF storage the triple should look like:
<PropertyCompleteURI> <mbb:hasShortName> "propertyShortName".
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://s3b.corrib.org/mbb#hasShortName> "type". <http://www.marcont.org/ontology#hasCreator> <http://s3b.corrib.org/mbb#hasShortName> "creator". <http://www.marcont.org/ontology#hasKeyword> <http://s3b.corrib.org/mbb#hasShortName> "keyword". <http://www.marcont.org/ontology#hasDomain> <http://s3b.corrib.org/mbb#hasShortName> "domain". <http://www.jeromedl.org/structure#bookType> <http://s3b.corrib.org/mbb#hasShortName> "book-type".
Logical definition:
Example RDF Query:
(all books that are of type inproceedings)
SELECT prop FROM {prop} mbb:hasShortName {shortName} WHERE shortName = "book-type"
CONSTRUCT DISTINCT *
FROM {s} <prop> {b};
[ c {d} [e {f} [g {h}]]],
[{ib} ia {s}]
WHERE b LIKE "*inproceedings*"
AND (isBNode(f) OR isLiteral(f))
UNION
CONSTRUCT * FROM {{s} <prop> {b}} x {y}
WHERE b LIKE "*inproceedings*"
UNION
CONSTRUCT * FROM {{b} <prop> {s}} x {y}
WHERE b LIKE "*inproceedings*"
USING NAMESPACE mbb = <http://s3b.corrib.org/mbb#>
(all books that are NOT of type book)
SELECT prop FROM {prop} mbb:hasShortName {shortName} WHERE shortName = "book-type"
CONSTRUCT DISTINCT *
FROM {s} <prop> {b};
[ c {d} [e {f} [g {h}]]],
[{ib} ia {s}]
WHERE NOT b LIKE "*book*"
AND (isBNode(f) OR isLiteral(f))
UNION
CONSTRUCT * FROM {{s} <prop> {b}} x {y}
WHERE NOT b LIKE "*book*"
UNION
CONSTRUCT * FROM {{b} <prop> {s}} x {y}
WHERE NOT b LIKE "*book*"
USING NAMESPACE mbb = <http://s3b.corrib.org/mbb#>
(all people that wrote books on JeromeDL)
SELECT prop FROM {prop} mbb:hasShortName {shortName} WHERE shortName = "creator"
CONSTRUCT DISTINCT {b} a {d};
c {d};
e {f};
g {h},
{ib} ia {b}
FROM {b} a {d} [ c {d} [e {f} [g {h}]]], [{ib} ia {b}],
{s} <http://www.marcont.org/ontology#hasCreator> {b},
{s} anyprop {v}
WHERE isLiteral(v) AND v LIKE "*JeromeDL*"
AND (isBNode(f) OR isLiteral(f))
UNION
CONSTRUCT * FROM {{s} a {b}} x {y},
{s} <http://www.marcont.org/ontology#hasCreator> {bv},
{s} anyprop {v}
WHERE isLiteral(v) AND v LIKE "*JeromeDL*"
USING NAMESPACE mbb = <http://s3b.corrib.org/mbb#>
REST definition (BNF):
<FilterService> ::= (<MBBService>)? ’/filter/’ (<Not>)?
(<Filter> | <InverseFilter>)
<Filter> ::= <PropertyDef> ’/’ <ValueDef>
<InverseFilter> ::= <Inverse> <Filter>
<PropertyDef> ::= <PredefinedProperty>
<PredefinedProperty> ::= ’type’ | ’creator’ | ’keyword’ | ’topic’ | ...
<ValueDef> ::= (<Not>)? <FilterValue> |
<ValueDef> (<And> | <Or>) <FilterValue>
<FilterValue> ::= <PredefinedValue> | <SimpleValue> |
<Anything>
<PredefinedValue> ::= '$' (’inproceedings’ | ’article’ | ’book’ | ... ) '$'
MMB Operation: Custom Filter
Description:
This service allows to specify custom property using namespace abbreviation and short name (or asterix), and literal value, namespace/short name pair, or asterix for value. Abbreviated namespaces should be either read from RDF storage defaults, or defined in a form of RDF statements like:
<FullNamespaceURI> <mbb:namespaceAbbr> "abbreviatedNamespace".
Logical definition:
Example RDF Query:
(all books that are of digital type pdf)
SELECT prop FROM {prop} mbb:namespaceAbbr {nameSpace} WHERE nameSpace = "jeromedl"
CONSTRUCT DISTINCT *
FROM {s} a {b};
[ c {d} [e {f} [g {h}]]], [{ib} ia {s}]
WHERE namespace(a) = property: AND localName(a) LIKE "*digitaltype*" IGNORE CASE
AND b LIKE "*pdf*"
AND (isBNode(f) OR isLiteral(f))
UNION
CONSTRUCT * FROM {{s} a {b}} x {y}
WHERE namespace(a) = property: AND localName(a) LIKE "*digitaltype*" IGNORE CASE
AND b LIKE "*pdf*"
USING NAMESPACE
mbb = <http://s3b.corrib.org/mbb#>,
property = <prop>
REST definition (BNF):
<FilterService> ::= (<MBBService>)? ’/filter/’ (<Not>)?
(<Filter> | <InverseFilter>)
<Filter> ::= <PropertyDef> ’/’ <ValueDef>
<InverseFilter> ::= <Inverse> <Filter>
<PropertyDef> ::= ( (<NamespaceAbbr> | <Anything>) ’:’
(<SimpleValue> | <Anything>) ) | <EncodedURI>
<ValueDef> ::= (<Not>)? <FilterValue> |
<ValueDef> (<And> | <Or>) <FilterValue> |
<Anything> | <EncodedURI>
<FilterValue> ::= <SimpleValue>
MMB Operation Type: Browse
MMB Operation: A Genering Browse Service
Description:
Browsing services generate a new set of resources related to the initial one by given rules. They are one of the three, apart from filtering (see Sec. "MMB Operation Type: Filter") and combining (see Sec. "MMB Operation Type: Combine"), types of core services delivered by MultiBeeBrowse. If invoked as the first service in the pipeline they start browsing from a complete RDF database according to given rules. If invoked after some other service they browse to a new set of RDF related to the one returned by previous service in the pipeline.
Logical definition:
RDF Query:
REST definition (BNF):
<BrowseService> ::= (<MBBService>)? ’/browse/’ (<Not>)?
<BrowseDef>
<BrowseDef> ::= <Filter> | <InverseFilter> |
<PropertyDef>
<Filter> ::= <PropertyDef> ’/’ <ValueDef>
<InverseFilter> ::= <Inverse> <Filter>
<PropertyDef> ::= ( (<NamespaceAbbr> | <Anything>) ’:’
(<SimpleValue> | <Anything>) )
| <PredefinedProperty> | <EncodedURI>
<ValueDef> ::= (<Not>)? <FilterValue> |
<ValueDef> (<And> | <Or>) <FilterValue> |
<Anything> | <EncodedURI>
<FilterValue> ::= <SimpleValue>
MMB Operation: Similar
Description:
This browsing service generates a set of resources with features similar to those in the given set; provided rules define similarity matching with given properties and values, defined as in filtering services (see Sec. "MMB Operation Type: Filter").
- If the rule defines a property all resources in result set must have values of a given property matching one of values of this property from the initial set.
- If the rule defines a value, then the result set contains all resources with properties from a set of properties, which have values matching given filter in the initial set.
Please note that resources in the result set might not exist in the set on which the browsing was initiated (unless this is the whole RDF graph), as given constrains are computed against the whole RDF Graph. Question: maybe browsing services should be also notified about the "scope" RDF?
Some operation has less meaning (common sense?):
- value-based browsing (?)
Example for inverted property-based browsing: Take a group of people, their contributions will have statements saying <Book> <hasCreator> <Person>. So we will be looking for all the creators of books written by this guys.
Example for inverted value-based browsing: show me all other people that given person is related to the same way as is related to us.
Logical definition:
Example RDF Query:
(browse to all books that have at least one of the creators that current books have)
0) get the property definition [example for predefined, for namespace/value parts - see previous examples]
SELECT prop
FROM {prop} mbb:hasShortName {shortName}
WHERE shortName = "creator"
USING NAMESPACE
mbb = <http://s3b.corrib.org/mbb#>,
1) get list of creators [from the current set]
SELECT DISTINCT creator FROM {s} <http://www.marcont.org/ontology#hasCreator> {creator}
2) get list of all matching books [from the global set] - execute many queries and union results
CONSTRUCT DISTINCT *
FROM {s} <http://www.marcont.org/ontology#hasCreator> {v};
[ c {d} [e {f} [g {h}]]], [{ib} ia {s}]
WHERE (isBNode(f) OR isLiteral(f))
AND (v = <VALUE1> OR v = <VALUE2> OR v = <VALUE3> ...)
UNION
CONSTRUCT * FROM {{s} <http://www.marcont.org/ontology#hasCreator> {b}} x {y}
WHERE (v = <VALUE1> OR v = <VALUE2> OR v = <VALUE3> ...)
USING NAMESPACE
mbb = <http://s3b.corrib.org/mbb#>
(browse to all books that has anything to do with one of the authors => I want to get all publications that one of authors edited, wrote, contributed)
1) get list of properties for given filter
SELECT DISTINCT prop
FROM {sub} prop {obj}
WHERE obj LIKE "*decker*" AND NOT (obj LIKE "*kruk*")
AND NOT isBNode(sub)
2) get a graph that will match one of the properties to given filter in the overall graph
CONSTRUCT DISTINCT *
FROM {s} prop {obj} [ c {d} [e {f} [g {h}]]], [{ib} ia {s}]
WHERE (isBNode(f) OR isLiteral(f))
AND (prop = <http://www.marcont.org/ontology#hasCreator> OR prop = <http://www.marcont.org/ontology#hasEditor> OR prop = <http://xmlns.com/foaf/0.1/knows>)
AND obj LIKE "*decker*" AND NOT (obj LIKE "*kruk*")
UNION
CONSTRUCT * FROM {{s} prop {obj}} x {y}
WHERE
(prop = <http://www.marcont.org/ontology#hasCreator> OR prop = <http://www.marcont.org/ontology#hasEditor> OR prop = <http://xmlns.com/foaf/0.1/knows>)
AND obj LIKE "*decker*" AND NOT (obj LIKE "*kruk*")
USING NAMESPACE
mbb = <http://s3b.corrib.org/mbb#>
(browse to a set of people that co-authored books created by people in the primar set)
0) get the property definition [example for predefined, for namespace/value parts - see previous examples]
SELECT prop
FROM {prop} mbb:hasShortName {shortName}
WHERE shortName = "creator"
USING NAMESPACE
mbb = <http://s3b.corrib.org/mbb#>,
1) get list of all publications (current set)
SELECT DISTINCT art
FROM {art} prop {crea}
2) get a graph of all people that created any of <art> publications
CONSTRUCT DISTINCT {b} a {d};
c {d};
e {f};
g {h},
{ib} ia {b}
FROM {b} a {d} [ c {d} [e {f} [g {h}]]], [{ib} ia {b}],
{s} <http://www.marcont.org/ontology#hasCreator> {b},
WHERE (s = ART1 OR s = ART2 OR .... )
AND (isBNode(f) OR isLiteral(f))
UNION
CONSTRUCT * FROM {{s} a {b}} x {y},
{s} <http://www.marcont.org/ontology#hasCreator> {bv},
WHERE (s = ART1 OR s = ART2 OR .... )
USING NAMESPACE mbb = <http://s3b.corrib.org/mbb#>
REST definition (BNF):
<BrowseService> ::= (<MBBService>)? ’/browse/’ (<Not>)?
<BrowseDef>
<BrowseDef> ::= <Filter> | <InverseFilter>
<Filter> ::= <PropertyDef> ’/’ <Anything> |
<Anything> ’/’ <ValueDef>
<InverseFilter> ::= <Inverse> <Filter>
<PropertyDef> ::= <NamespaceAbbr> ’:’ <Anything> |
<Anything> ’:’ <SimpleValue> |
<NamespaceAbbr> ’:’ <SimpleValue>
| <PredefinedProperty> | <EncodedURI>
<ValueDef> ::= (<Not>)? <FilterValue> |
<ValueDef> (<And> | <Or>) <FilterValue>
| <EncodedURI>
<FilterValue> ::= <SimpleValue>
MMB Operation: Related
Description:
This browsing service generates a set of resources related to the initial set with given property. Each resource in the result set must be connected with at least one resource in the intial set with given property. Inverse property relation is also allowed; in which case, each resource in the result set much have at least one resource in the initial set related to it with given property.
Logical definition:
Example RDF Query:
(show me all people who are friends of people in the current set)
0) get property
SELECT foafNs
FROM {foafNs} <mbb:namespaceAbbr> "foaf"
USING NAMESPACE mbb = <http://s3b.corrib.org/mbb#>
1) list all people who are friends of people in this set (local set)
SELECT person
FROM {someone} foafKnows {person}
WHERE namespace{foafKnows} = foafNs: AND localName{foafKnows} = "knows"
USING NAMESPACE foafNs = <foafNs>
2) get full information about given people (global set)
CONSTRUCT DISTINCT *
FROM {s} a {b};
[ c {d} [e {f} [g {h}]]],
[{ib} ia {s}]
WHERE (s = <PERSON1> OR s = <PERSON2> ...)
AND (isBNode(f) OR isLiteral(f))
UNION
CONSTRUCT * FROM {{s} a {b}} x {y}
WHERE (s = <PERSON1> OR s = <PERSON2> ...)
UNION
CONSTRUCT * FROM {{b} a {s}} x {y}
WHERE (s = <PERSON1> OR s = <PERSON2> ...)
REST definition (BNF):
<BrowseService> ::= (<MBBService>)? ’/browse/’ (<Not>)?
<BrowseDef> ’$’
<BrowseDef> ::= <Invers> <PropertyDef> | <Anything> | <EncodedURI>
<PropertyDef> ::= <NamespaceAbbr> ’:’ <Anything> |
<Anything> ’:’ <SimpleValue> |
<NamespaceAbbr> ’:’ <SimpleValue>
| <PredefinedProperty>
MMB Operation Type: Combine
MMB Operation: A Generic Combine Service
Description:
Combine services produce a new set of resources based on two other sets returned by two other services. Apart from set operations like con- junction, sum or substraction these services allow to produce a set which contains resources binding two other.
Logical definition:
RDF Query:
REST definition (BNF):
<CombineService> ::= <ServiceURI> ’/combine/’ <CombineOperation>
’/’ <ServiceCallID> ’,’ <ServiceCallID>
<CombineOperation> ::= ’AND’ | ’OR’ | ’SUB’ | ’BIND’
6.1 MMB Operation: Conjunction (AND)
Description:
Conjunctive service produces a set of resources which exists in both source sets.
Logical definition:
RDF Query:
REST definition (BNF):
<CombineService> ::= <ServiceURI> ’/combine/AND’
’/’ <ServiceCallID> ’,’ <ServiceCallID>
MMB Operation: Disjunction (OR)
Description:
Disjunctive service produces a set of resources which exists in either of source sets.
Logical definition:
RDF Query:
REST definition (BNF):
<CombineService> ::= <ServiceURI> ’/combine/OR’
’/’ <ServiceCallID> ’,’ <ServiceCallID>
MMB Operation: Difference (SUB)
Description:
Difference service produces a set of resources which exists in the first source set but does not exist in the second one.
Logical definition:
RDF Query:
REST definition (BNF):
<CombineService> ::= <ServiceURI> ’/combine/SUB’
’/’ <ServiceCallID> ’,’ <ServiceCallID>
MMB Operation: Binding
Description:
Binding service produces a set of resources which binds two source sets. There are three possible types of situations (see example) which trigger binding service operations to produce result set:
- one of resources in one source set is connected to one resource in the second source set (resources 1 and 2 in our example); in this case, a triple represeting this connection is added to the result set;
- there is a resource, which does not belong to either of source sets, that is connected to one resource in each of source sets (resource 5 in our example); in this case, two tripples representing both connections are added to the result set; please note that directions of these connections can be either way;
- there are two connected resources, which does not belong to either of source sets, one of them is connected to one resource in first source set, the other is connected to one resource in the second source set (resources 6 and 7 in our example); in this case, three triples representing all connections are added to the result set; please note that directions of these connections can be either way; (until the complexity problems are resolved this options is not available)
Logical definition:
Example RDF Query:
construct distinct *
from {s} p1 {o} [p2 {o1}]
where
s = <http://library.deri.ie/resource/6u5JVPec>
and
(o = <mailto:sebastian.kruk@deri.org> OR o1 = <mailto:sebastian.kruk@deri.org>)
UNION
construct distinct *
from {s} p1 {m}, {o} p2 {m}
where
s = <http://library.deri.ie/resource/6u5JVPec> and s != m
and
o = <mailto:sebastian.kruk@deri.org> and o != m
union
construct distinct *
from {o} p1 {s}, [{o1} p2 {o}]
where
s = <http://library.deri.ie/resource/6u5JVPec>
and
(o = <mailto:sebastian.kruk@deri.org> OR o1 = <mailto:sebastian.kruk@deri.org>)
REST definition (BNF):
<CombineService> ::= <ServiceURI> ’/combine/BIND’
’/’ <ServiceCallID> ’,’ <ServiceCallID>
Bibliography
- [KDG+ 06]
- Sebastian Ryszard Kruk, Stefan Decker, Adam Gzella, Sawomir Grzonkowski, and Bill McDaniel.
- Social semantic collaborative filtering for digital libraries.
- Journal of Digital Information, Special Issue on Personalization, 2006.
- [KDZ05]
- Sebastian Ryszard Kruk, Stefan Decker, and Lech Zieborak.
- JeromeDL - Adding Semantic Web Technologies to Digital Libraries.
- In Proceedings of DEXA’2005 Conference, 2005.
- [KGG+ 06]
- Sebastian Ryszard Kruk, Slawomir Grzonkowski, Adam Gzella, Tomasz Woroniecki, and Hee-Chul Choi.
- D-FOAF: Distributed Identity Management with Access Rights Delegation.
- In Proceedings to ASWC’2006, 2006.
- [KK04]
- Sebastian R. Kruk and Henryk Krawczyk.
- Intelligent Resources Search in Virtual Libraries.
- In Trojanowski Klopotek, Wierzchon, editor, Intelligent Information Processing and Web Mining, page 439444.
- Polish Academy of Science, Springer, 2004.
- Proceedings of the International IIS: IIPWM’04 Conference held in Zakopane, Poland, May 17-20, 2004.
- [KSO+ 06]
- Sebastian Ryszard Kruk, Krystian Samp, Caoimhin O’Nuallain, Brian Davis, Bill McDaniel, and Sawomir Grzonkowski.
- Search interface based on natural language query templates.
- In Proceedings of the poster session of IADIS International Conference WWW/Internet 2006, 2006.



