Changes between Version 12 and Version 13 of SadiDayOne
- Timestamp:
- 2010/02/09 21:22:57 (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SadiDayOne
v12 v13 3 3 We are beginning to publish a set of best practices for service providers by codifying the lessons we've learned in the last year of service-building. 4 4 5 For example, say we have a service '[http://sadiframework.org/services/getKEGGParalogsByGene getKEGGParalogsByGene]', which will provide the KEGG ID of the paralogs of any input KEGG gene id. Click on the link to see the full service description - '''note that you do not have to generate this document yourself'''''''!! It is auto-generated for you by the SADI codebase!!5 Since, for most of you, this will be the first time you have "played with" the Semantic Web, and will also be the first time you have seen a Web Service defined using Semantic Web languages, I need to say DON'T BE AFRAID! The discussion below contains many details that are handled for you by the SADI codebase!! As you become more comfortable with OWL ontologies, this is all going to sound very VERY trivial!! 6 6 7 The input class is '''http://purl.oclc.org/SADI/LSRN/KEGG_Record''' and is defined by a third-party ontology - simply "any KEGG Record": 7 Okay, so let's begin... 8 9 Let's say we are creating a service '[http://sadiframework.org/services/getKEGGParalogsByGene getKEGGParalogsByGene]', which will provide the KEGG ID of the paralogs of any input KEGG gene id. Click on the link to see the full service description - '''note that you do not have to generate this document yourself'''''''!! It is auto-generated for you by the SADI codebase!! 10 11 The input class is '''http://purl.oclc.org/SADI/LSRN/KEGG_Record'''. This input class defined by a third-party ontology (hosted at purl.oclc.org), and we are simply saying "we consume THAT kind of data" - a KEGG Record: 8 12 9 13 {{{ … … 19 23 20 24 21 The output class is specific to our service (since our service is creating a new 'kind' of data, based on the input class) and is defined in '''http://sadiframework.org/ontologies/service_objects.owl#getKEGGParalogsByGene_Output''':25 The output class 'getKEGGParalogsByGene_Output' is specific to our service (since our service is creating a new 'kind' of data, based on the input class) and is defined in '''http://sadiframework.org/ontologies/service_objects.owl#getKEGGParalogsByGene_Output''': 22 26 23 27 {{{ … … 77 81 3. our output class includes a restriction indicating that the service returns KEGG_Records related to the input by the 'isParalogOf' predicate (i.e.: KEGG_Records that are paralogs of the input KEGG_Record). The owl:valuesFrom property on the restriction allows us to do reasoning about how to chain services together. It is important that we put this restriction here instead of in the owl definition of the predicate itself, since it allows us to constrain OUR use of the predicate, without constraining its range for anyone else! 78 82 79 4. the " isParalogOf" property is symmetric, meaning that of X is a paralog of Y, then Y is also a paralog of X. Note also that, in this case, I am defining the isParalogOf property in my service ontology; however '''THIS IS NOT ALWAYS NECESSARY''' - if you produce data that represents a relationship that has been adequately defined by someone else, then you are free to use that third-party's predicate and you don't need to define it yourself! Re-use re-use re-use!! That's what the Semantic Web is all about!83 4. the "#isParalogOf" property is symmetric (symmetry is an OWL logical function), meaning that if X is a paralog of Y, then Y is also a paralog of X. Note also that, in this case, I am defining the #isParalogOf property in my service ontology; however '''THIS IS NOT ALWAYS NECESSARY''' - if you produce data that represents a relationship that has been adequately defined by someone else, then you are free to use that third-party's predicate and you don't need to define it yourself! Re-use re-use re-use!! That's what the Semantic Web is all about! ...in fact, the Semantic Web works BETTER if we all look for, and re-use predicates that have been defined by someone else!! 80 84 81 85 The SADI Taverna plugin has been updated to use the information in these restrictions for service discovery.