"

\n\t\t\tSmart Content Binding (SCB) is an open source framework developed by \n\t\t\tclerezza.org aiming primarily at providing a java implementation of the \n\t\t\tgraph data model specified by W3C RDF [1] and \n\t\t\tfunctionalities to operate on that data model. SCB offers a service \n\t\t\tinterface to access multiple named graphs and it can use various \n\t\t\tproviders to manage RDF graphs in a technology specific manner, e.g., \n\t\t\tusing Jena [2] (TBD) or Sesame [3]. \n\t\t\tIt also provides fa\u00E7ades that allow an application to use Jena or Sesame (TBD) \n\t\t\tAPIs to process RDF graphs (note that the choice of a fa\u00E7ade is independent of\n the chosen backend; you can for example use the Jena fa\u00E7ade to write\n your code against the Jena API while using the Sesame provider to store\n your data in a Sesame store). \n\t\t\tFurthermore, SCB offers a serialization and a parsing service to convert \n\t\t\ta graph into a certain representation (format) and vice versa. In order \n\t\t\tto support ontologies usage, SCB provides a tool to convert ontologies \n\t\t\tdefined in various formats including RDF/XML into Java classes.\n\t\t

\n"^^ . . "Introduction"^^ . . "Introduction"^^ . . "

\n\t\t\tSCB comprises the following architectural components as depicted in Fig. 1:\n\t\t

\n\t\t
    \n\t\t\t
  • Core
  • \n\t\t\t
  • Facades
  • \n\t\t\t
  • Utilities
  • \n\t\t\t
  • Storage Providers
  • \n\t\t\t
  • Parsing Providers
  • \n\t\t\t
  • Serializing Providers
  • \n\t\t\t
  • Ontologies Tool
  • \n\t\t
\n\n\t\t

\n\t\t\t\"SCB\n\t\t\t

Figure 1: SCB Architecture\n\t\t

\n\t\t

\n\t\t\tThe Core contains interface definitions of the RDF graph data model and its \n\t\t\timplementation. The three main classes are Graph, MGraph, \n\t\t\tand TripleCollection. The class Graph represents an \n\t\t\timmutable RDF Graph, as such its identity criterion is defined in terms of \n\t\t\tgraph-isomorphism. The class MGraph represents a mutable RDF Graph, \n\t\t\twhich enables triples to be added to or removed from a graph. The class \n\t\t\tTripleCollection is the super class of both the class Graph \n\t\t\tand MGraph. \n\t\t\tSCB Core provides three services: TcManager [4] allows access to \n\t\t\tthe various TripleCollections, Parser [5] and \n\t\t\tSerializer [6] to allow reading and writing graphs from and to \n\t\t\tvarious formats. In an OSGi environment these services are accessed using the \n\t\t\tservice registry or injected using OSGi Declarative Services. In a non OSGi environment \n\t\t\tstatic factory methods are used to return an instance. \n\t\t\tThe TcManager delegates actual processing tasks to a specific Storage Provider \n\t\t\tchosen from a set of Storage Providers based on their priority number (weight). \n\t\t\tStorage Providers can be dynamically bound to or unbound from the Core. \n\t\t\tThe functionality required by the Parser and Serializer is delegated to registered \n\t\t\tParsing and Serializing Providers respectively, according to their capability \n\t\t\t(supported formats). Later registered providers shadow previous ones for the same format.\n\t\t

\n\n\t\t

\n\t\t\tThe current implementation of SCB includes a Jena Fa\u00E7ade. The Jena Fa\u00E7ade allows an \n\t\t\tapplication to use Jena API to manipulate a TC. \n\t\t

\n\t\t

\n\t\t\tIn order to ease operations on a resource in a TC, the Utilities component provides \n\t\t\ta class with a set of useful methods, e.g., to delete all triples (statements) with \n\t\t\tthe resource as subject and a specified predicate. \n\t\t

\n\t\t

\n\t\t\tFinally, the Ontologies Tool contains a standalone application called SchemaGen to \n\t\t\tgenerate the Java source code with constants from an ontology description.\n\t\t

\n"^^ . . "Architecture"^^ . . _:6743c073a950bff61f67984d65c7ab521 . _:abb823c3fd5a90d56aac8ef66bbc27a71 . . "

\n\t\t\tIf you want to build SCB from its sources, you need JDK version 1.6 to compile. \n\t\t\tMaven version 2.0.9 has been used to build SCB.\n\t\t

\n"^^ . . "Building SCB"^^ . . _:217ceb83017ea96671846d12e5d5c0b51 . _:2bbf09528c25da145225e8b0980bf2d41 . . "

\n\t\t\tTo develop an application on top of SCB, you need to have the Core and optionally \n\t\t\tUtilities and Fa\u00E7ades.\n\t\t

\n"^^ . . "Developing Applications using SCB"^^ . . _:02da6ab7feb6eade48467f3e619fd0901 . _:c30e92dcdbdf63d1674984e7ad74927f1 . . "

\n\t\t\tTo deploy an application which uses SCB, Java(TM) SE Runtime Environment 6 or \n\t\t\thigher is needed. If the application does not use OSGi, then the SCB Core, \n\t\t\tthe jars required for compilation, as well as the needed implementations \n\t\t\t(typically one provider for storage, serialization, and parsing) must be in \n\t\t\tthe classpath. If the application uses OSGi, these jars are loaded as bundles, \n\t\t\tand to run in OSGi, Declarative Services must be enabled (see the documentation \n\t\t\tof your OSGi container). \n\t\t

\n\t\t

\n\n\t\t\tThe use of SCB in an OSGi environment has been tested with Apache Felix [7]\n\t\t\tand Eclipse Equinox [8].\n\t\t

"^^ . . "Deploying an Application Requiring SCB"^^ . . _:49dbfd013a17670491793c2b6b146add1 . _:654813a906187207ad3cc8cb41f681811 . . "

\n\t\t\tSince SCB applies a Service Oriented Architecture approach, following components \n\t\t\tcan be easily extended: Storage Providers, Parsing Providers, and Serializing \n\t\t\tProviders. Using OSGi, new bundles just need to implement the required service \n\t\t\tinterfaces. To be located outside an OSGi environment, they should also provide \n\t\t\tfiles in \"META-INF/services\" for the services they expose. Consult the SCB JavaDoc \n\t\t\tfor more information [9].\n\t\t

\n"^^ . . . "Extending and Customizing SCB"^^ . . _:a19b1dc6a786e1f624246fa77f26064b1 . _:c114892cb40ca25cb7973c1a33bb5efa1 . . "

\n\t\t\tSmart Content Binding (SCB) is an open source framework developed by \n\t\t\tclerezza.org aiming primarily at providing a java implementation of the \n\t\t\tgraph data model specified by W3C RDF and \n\t\t\tfunctionalities to operate on that data model. SCB offers a service \n\t\t\tinterface to access multiple named graphs and it can use various \n\t\t\tproviders to manage RDF graphs in a technology specific manner, e.g., \n\t\t\tusing Jena (TBD) or Sesame . \n\t\t\tIt also provides fa\u00E7ades that allow an application to use Jena or Sesame (TBD) \n\t\t\tAPIs to process RDF graphs (note that the choice of a fa\u00E7ade is independent of\n the chosen backend; you can for example use the Jena fa\u00E7ade to write\n your code against the Jena API while using the Sesame provider to store\n your data in a Sesame store). \n\t\t\tFurthermore, SCB offers a serialization and a parsing service to convert \n\t\t\ta graph into a certain representation (format) and vice versa. In order \n\t\t\tto support ontologies usage, SCB provides a tool to convert ontologies \n\t\t\tdefined in various formats including RDF/XML into Java classes.\n\t\t

\n"^^ . . "Introduction"^^ . . _:06de11c8dbffa159dcc8a94c5824221f1 . _:79600405cf779cbb275363842bdc1d601 . . "overview"^^ . . _:09e6c68551c8fa17fa88596d397668df1 . _:fb5472113832d5b923c18b82ba74ae891 . . _:0442d4e015ee629beb8468bc68eaa1d81 . _:3e039903e53ca66562cb0a7cbab3c7a31 . _:4e93a664498f08b22be631968648c7af1 . _:a8795ea2e02fe02590420a4d6fba3a491 . _:e192088cac6ea25495e86e375b508d111 . _:e491014d95c2d6dad89d8af9b607eb6c1 . _:e4e071f0106e6ea3eba559cc5d12c05c1 . . "Smart Content Binding is just the name for the RDFsupport in clerezza."^^ . . "Once you have an overview over SCB the best resource is the javadoc API documentation. The following gives hints and describes best prectices on particular toopics."^^ . . "The MGraphs returned by the TcManager are lockable. A LockableMGraph has a getLock()-Method returning a ReadWriteLock. Write-Locks can be used if the applications logic requires it, i.e. when it wants to ensure that the MGraph isn't modified by another thread while some triples are being added or removed bading on the presence or absence of other triples (note that its a violation of the open world assumption if the absence of some triples causes some actions to be done)."^^ . . "Readlocks must be used when multiple threads access an MGraph and a method returning an Iterator is used. In this case a read-lock must be obtained before calling the method on MGraph and released only after the last usage of the returned iterator. Failing to do so may result in ConcurrentModification when another threads modifies the MGraph while we are iterating over it."^^ . . "Currently (this might change infuture versions), it is also necessary to lock on the MGraphs against which a sparql select queries is directed. The lock on the MGraphs should be kept till iteration over the resultset is compleeted."^^ . . "There is no such thing, if you try to get a write-lock withing a read-locked section you'll have a deadlock."^^ . . "How I create I deadlocksafe Lock?"^^ . "How do I create deadlock-safe locks?"^^ . . _:8ab36b67bdc95792f2115eecc5162cd01 . _:cb3233d321cd250df6fe98812441b5051 . . "The service documentation should be clear about which MGarphs the service might be writing to, so the caller can make sure it holds no read-lock on one of these MGraph."^^ . . "What is the best way to Lock a Graph in a service? (the developers, wich use the service know nothing about the lock and set own locks - so the service needs to check something) "^^ . . _:02b191249bf7687b1462297ecaa885c81 . _:c46179c34632150d8e547e0bfa876b0f1 . . "See the documentation and tutorials for the java.util.concurrent.locks package."^^ . . "Where do I find additional documenation and source-code examples?"^^ . . _:18132129e31939d4cc3e69c31a3c3c1a1 . _:6f4f5466d9cdc098f1d7e39802eb10851 . . _:4e5af087b6558782e485c3ffb9eba0d91 . _:5fd3833c38a90777881461cadbce10111 . _:8396ce895fcfec9de970578cbee48c911 . _:93d47b3987bcd1b86f7d7926e86bd9b71 . _:c6114f4df500bc98732a3ec17c1ad02d1 . _:ee141109a4cf29d666728340f5c4b6d81 . . "When to use locks?"^^ . . _:2295250078eb898f110a82ec86de6cbc1 . _:f0ef4ed5eeefc21737de5dfef0555aed1 . . _:80bdd3e0c8433cee78b26eada35a95ba1 . _:a30340a3f45f8e94a36ad72f90fe25c21 . . "Developing with SCB"^^ . . _:06e52455a4b6e2e77881aae4fe82e4781 . _:f8b936b53d7909d068de07da0bb79fe91 . . "The RDF support in Apache Clerezza"^^ . . _:226e2277b6151cc848d901cbbff6de0e1 . _:354985fd2ca28f9ec33cd306f6ec73c01 . _:65d0078ce0a8051b5757de5c0cf094311 . _:d021e7a7266f4497dca78f93e3d16a6a1 . . . "Overview"^^ . . "\t\t

\n\t\t\tEach architectural component described above comprises one or more artifacts as \n\t\t\tlisted in Table 1.\n\t\t\t



Table 1: Artifacts of each architectural components

\n\t\t

\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
Architectural ComponentArtifactArtifact Type
Coreorg.apache.clerezza.rdf.coreJar and OSGi bundle
org.apache.clerezza.rdf.core.testJar and OSGi bundle
Fa\u00E7adesorg.apache.clerezza.rdf.jena.facadeJar and OSGi bundle
Utilitiesorg.apache.clerezza.rdf.utilsJar and OSGi bundle
Storage Providersorg.apache.clerezza.rdf.sesame.storageJar and OSGi bundle
org.apache.clerezza.rdf.jena.storageJar and OSGi bundle
Parsing Providersorg.apache.clerezza.rdf.jena.parserJar and OSGi bundle
Serializing Providersorg.apache.clerezza.rdf.jena.serializerJar and OSGi bundle
Ontologies Toolorg.apache.clerezza.rdf.tool.schemagenExecutable jar
\n"^^ . . "Artifacts"^^ . . _:14f13331873e2ed9f8fb13631e01816e1 . _:d3214ba35fe284e4752c4523427ca2581 . . _:d71a4a887a9c40161afd887e4129b5401 . _:f72f730abe25ec009ab48cf11f823f161 . . "Smart Content Binding"^^ . . _:94dc8181a1adfa918b21fd3681840b5b1 . _:f8f82fe3319239d3989c0f0c2a86c5551 . . _:02b191249bf7687b1462297ecaa885c81 . _:02b191249bf7687b1462297ecaa885c81 "0" . _:02b191249bf7687b1462297ecaa885c81 . _:02da6ab7feb6eade48467f3e619fd0901 . _:02da6ab7feb6eade48467f3e619fd0901 "1" . _:02da6ab7feb6eade48467f3e619fd0901 . _:0442d4e015ee629beb8468bc68eaa1d81 . _:0442d4e015ee629beb8468bc68eaa1d81 "2" . _:0442d4e015ee629beb8468bc68eaa1d81 . _:06de11c8dbffa159dcc8a94c5824221f1 . _:06de11c8dbffa159dcc8a94c5824221f1 "1" . _:06de11c8dbffa159dcc8a94c5824221f1 . _:06e52455a4b6e2e77881aae4fe82e4781 . _:06e52455a4b6e2e77881aae4fe82e4781 "1" . _:06e52455a4b6e2e77881aae4fe82e4781 . _:09e6c68551c8fa17fa88596d397668df1 . _:09e6c68551c8fa17fa88596d397668df1 "1" . _:09e6c68551c8fa17fa88596d397668df1 . _:14f13331873e2ed9f8fb13631e01816e1 . _:14f13331873e2ed9f8fb13631e01816e1 "0" . _:14f13331873e2ed9f8fb13631e01816e1 . _:18132129e31939d4cc3e69c31a3c3c1a1 . _:18132129e31939d4cc3e69c31a3c3c1a1 "0" . _:18132129e31939d4cc3e69c31a3c3c1a1 . _:217ceb83017ea96671846d12e5d5c0b51 . _:217ceb83017ea96671846d12e5d5c0b51 "0" . _:217ceb83017ea96671846d12e5d5c0b51 . _:226e2277b6151cc848d901cbbff6de0e1 . _:226e2277b6151cc848d901cbbff6de0e1 "0" . _:226e2277b6151cc848d901cbbff6de0e1 . _:2295250078eb898f110a82ec86de6cbc1 . _:2295250078eb898f110a82ec86de6cbc1 "0" . _:2295250078eb898f110a82ec86de6cbc1 . _:2bbf09528c25da145225e8b0980bf2d41 . _:2bbf09528c25da145225e8b0980bf2d41 "1" . _:2bbf09528c25da145225e8b0980bf2d41 . _:354985fd2ca28f9ec33cd306f6ec73c01 . _:354985fd2ca28f9ec33cd306f6ec73c01 "1" . _:354985fd2ca28f9ec33cd306f6ec73c01 . _:3e039903e53ca66562cb0a7cbab3c7a31 . _:3e039903e53ca66562cb0a7cbab3c7a31 "1" . _:3e039903e53ca66562cb0a7cbab3c7a31 . _:49dbfd013a17670491793c2b6b146add1 . _:49dbfd013a17670491793c2b6b146add1 "1" . _:49dbfd013a17670491793c2b6b146add1 . _:4e5af087b6558782e485c3ffb9eba0d91 . _:4e5af087b6558782e485c3ffb9eba0d91 "1" . _:4e5af087b6558782e485c3ffb9eba0d91 . _:4e93a664498f08b22be631968648c7af1 . _:4e93a664498f08b22be631968648c7af1 "0" . _:4e93a664498f08b22be631968648c7af1 . _:5fd3833c38a90777881461cadbce10111 . _:5fd3833c38a90777881461cadbce10111 "4" . _:5fd3833c38a90777881461cadbce10111 . _:654813a906187207ad3cc8cb41f681811 . _:654813a906187207ad3cc8cb41f681811 "0" . _:654813a906187207ad3cc8cb41f681811 . _:65d0078ce0a8051b5757de5c0cf094311 . _:65d0078ce0a8051b5757de5c0cf094311 "2" . _:65d0078ce0a8051b5757de5c0cf094311 . _:6743c073a950bff61f67984d65c7ab521 . _:6743c073a950bff61f67984d65c7ab521 "1" . _:6743c073a950bff61f67984d65c7ab521 . _:6f4f5466d9cdc098f1d7e39802eb10851 . _:6f4f5466d9cdc098f1d7e39802eb10851 "1" . _:6f4f5466d9cdc098f1d7e39802eb10851 . _:79600405cf779cbb275363842bdc1d601 . _:79600405cf779cbb275363842bdc1d601 "0" . _:79600405cf779cbb275363842bdc1d601 . _:80bdd3e0c8433cee78b26eada35a95ba1 . _:80bdd3e0c8433cee78b26eada35a95ba1 "0" . _:80bdd3e0c8433cee78b26eada35a95ba1 . _:8396ce895fcfec9de970578cbee48c911 . _:8396ce895fcfec9de970578cbee48c911 "5" . _:8396ce895fcfec9de970578cbee48c911 . _:8ab36b67bdc95792f2115eecc5162cd01 . _:8ab36b67bdc95792f2115eecc5162cd01 "0" . _:8ab36b67bdc95792f2115eecc5162cd01 . _:93d47b3987bcd1b86f7d7926e86bd9b71 . _:93d47b3987bcd1b86f7d7926e86bd9b71 "3" . _:93d47b3987bcd1b86f7d7926e86bd9b71 . _:94dc8181a1adfa918b21fd3681840b5b1 . _:94dc8181a1adfa918b21fd3681840b5b1 "0" . _:94dc8181a1adfa918b21fd3681840b5b1 . _:a19b1dc6a786e1f624246fa77f26064b1 . _:a19b1dc6a786e1f624246fa77f26064b1 "0" . _:a19b1dc6a786e1f624246fa77f26064b1 . _:a30340a3f45f8e94a36ad72f90fe25c21 . _:a30340a3f45f8e94a36ad72f90fe25c21 "1" . _:a30340a3f45f8e94a36ad72f90fe25c21 . _:a8795ea2e02fe02590420a4d6fba3a491 . _:a8795ea2e02fe02590420a4d6fba3a491 "3" . _:a8795ea2e02fe02590420a4d6fba3a491 . _:abb823c3fd5a90d56aac8ef66bbc27a71 . _:abb823c3fd5a90d56aac8ef66bbc27a71 "0" . _:abb823c3fd5a90d56aac8ef66bbc27a71 . _:c114892cb40ca25cb7973c1a33bb5efa1 . _:c114892cb40ca25cb7973c1a33bb5efa1 "1" . _:c114892cb40ca25cb7973c1a33bb5efa1 . _:c30e92dcdbdf63d1674984e7ad74927f1 . _:c30e92dcdbdf63d1674984e7ad74927f1 "0" . _:c30e92dcdbdf63d1674984e7ad74927f1 . _:c46179c34632150d8e547e0bfa876b0f1 . _:c46179c34632150d8e547e0bfa876b0f1 "1" . _:c46179c34632150d8e547e0bfa876b0f1 . _:c6114f4df500bc98732a3ec17c1ad02d1 . _:c6114f4df500bc98732a3ec17c1ad02d1 "2" . _:c6114f4df500bc98732a3ec17c1ad02d1 . _:cb3233d321cd250df6fe98812441b5051 . _:cb3233d321cd250df6fe98812441b5051 "1" . _:cb3233d321cd250df6fe98812441b5051 . _:d021e7a7266f4497dca78f93e3d16a6a1 . _:d021e7a7266f4497dca78f93e3d16a6a1 "0" . _:d021e7a7266f4497dca78f93e3d16a6a1 . _:d3214ba35fe284e4752c4523427ca2581 . _:d3214ba35fe284e4752c4523427ca2581 "1" . _:d3214ba35fe284e4752c4523427ca2581 . _:d71a4a887a9c40161afd887e4129b5401 . _:d71a4a887a9c40161afd887e4129b5401 "0" . _:d71a4a887a9c40161afd887e4129b5401 . _:e192088cac6ea25495e86e375b508d111 . _:e192088cac6ea25495e86e375b508d111 "5" . _:e192088cac6ea25495e86e375b508d111 . _:e491014d95c2d6dad89d8af9b607eb6c1 . _:e491014d95c2d6dad89d8af9b607eb6c1 "6" . _:e491014d95c2d6dad89d8af9b607eb6c1 . _:e4e071f0106e6ea3eba559cc5d12c05c1 . _:e4e071f0106e6ea3eba559cc5d12c05c1 "4" . _:e4e071f0106e6ea3eba559cc5d12c05c1 . _:ee141109a4cf29d666728340f5c4b6d81 . _:ee141109a4cf29d666728340f5c4b6d81 "0" . _:ee141109a4cf29d666728340f5c4b6d81 . _:f0ef4ed5eeefc21737de5dfef0555aed1 . _:f0ef4ed5eeefc21737de5dfef0555aed1 "1" . _:f0ef4ed5eeefc21737de5dfef0555aed1 . _:f72f730abe25ec009ab48cf11f823f161 . _:f72f730abe25ec009ab48cf11f823f161 "1" . _:f72f730abe25ec009ab48cf11f823f161 . _:f8b936b53d7909d068de07da0bb79fe91 . _:f8b936b53d7909d068de07da0bb79fe91 "0" . _:f8b936b53d7909d068de07da0bb79fe91 . _:f8f82fe3319239d3989c0f0c2a86c5551 . _:f8f82fe3319239d3989c0f0c2a86c5551 "1" . _:f8f82fe3319239d3989c0f0c2a86c5551 . _:fb5472113832d5b923c18b82ba74ae891 . _:fb5472113832d5b923c18b82ba74ae891 "0" . _:fb5472113832d5b923c18b82ba74ae891 .