# ****************************************************** # SPARQL Generator for Glycan Search: # Last update: 2015/12/14 # Query Structure: # WURCS=2.0/4,4,3/[u2122h][a2112h-1b_1-5][a2112h-1a_1-5][a2112h-1b_1-5_2*NCC/3=O]/1-2-3-4/a4-b1_b3-c1_c3-d1 # ****************************************************** DEFINE sql:select-option "order" PREFIX glycan: PREFIX wurcs: SELECT DISTINCT ?glycan (COUNT (?glycan) AS ?gcount) (STR (?wurcs) AS ?WURCS) FROM FROM NAMED WHERE { ?glycan glycan:has_glycosequence ?gseq . ?gseq wurcs:count_RES ?rescount . ?gseq wurcs:count_uniqueRES ?urescount . ?gseq wurcs:count_LIN ?lincount . ?gseq glycan:has_sequence ?wurcs . # GLIN1 ## GRES1 ?gseq wurcs:has_GRES ?GRES1 . ?GRES1 wurcs:is_monosaccharide ?MS1 . GRAPH { wurcs:subsumes ?MS1 . } ?GRES1 wurcs:is_acceptor_of ?GLIN1 . ?GLIN1 wurcs:has_donor_position 1 . ?GLIN1 wurcs:has_acceptor_position 4 . ## GRES2 ?gseq wurcs:has_GRES ?GRES2 . ?GRES2 wurcs:is_monosaccharide ?MS2 . GRAPH { wurcs:subsumes ?MS2 . } FILTER ( ?GRES2 != ?GRES1 ) ?GRES2 wurcs:is_donor_of ?GLIN1 . # GLIN2 ?GRES2 wurcs:is_acceptor_of ?GLIN2 . ?GLIN2 wurcs:has_donor_position 1 . ?GLIN2 wurcs:has_acceptor_position 3 . ## GRES3 ?gseq wurcs:has_GRES ?GRES3 . ?GRES3 wurcs:is_monosaccharide ?MS3 . GRAPH { wurcs:subsumes ?MS3 . } FILTER ( ?GRES3 != ?GRES1 && ?GRES3 != ?GRES2 ) ?GRES3 wurcs:is_donor_of ?GLIN2 . # GLIN3 ?GRES3 wurcs:is_acceptor_of ?GLIN3 . ?GLIN3 wurcs:has_donor_position 1 . ?GLIN3 wurcs:has_acceptor_position 3 . ## GRES4 ?gseq wurcs:has_GRES ?GRES4 . ?GRES4 wurcs:is_monosaccharide ?MS4 . GRAPH { wurcs:subsumes ?MS4 . } FILTER ( ?GRES4 != ?GRES1 && ?GRES4 != ?GRES2 && ?GRES4 != ?GRES3 ) ?GRES4 wurcs:is_donor_of ?GLIN3 . # MAP ?GLIN1 wurcs:has_MAP ""^^xsd:string . ?GLIN2 wurcs:has_MAP ""^^xsd:string . ?GLIN3 wurcs:has_MAP ""^^xsd:string . } ORDER BY ?rescount ?urescount ?lincount ?glycan desc (?gcount)