Пример #1
0
class PositiveParserTestCase(RDFTestCase):
    def setUp(self):
        super().setUp()
        self.input_graph = Graph()
        for document in self.test.input_documents:
            self.input_graph.update(document.read(self.opener))
        self.output_graph = Graph(self.test.output_document.read(self.opener))

    def runTest(self):
        self.assertEqual(self.input_graph, self.output_graph)
Пример #2
0
class PositiveParserTestCase(RDFTestCase):
    def setUp(self):
        super().setUp()
        self.input_graph = Graph()
        for document in self.test.input_documents:
            self.input_graph.update(document.read(self.opener))
        self.output_graph = Graph(self.test.output_document.read(self.opener))

    def runTest(self):
        self.assertEqual(self.input_graph, self.output_graph)
Пример #3
0
class EntailmentTestCase(RDFTestCase):
    ENTAILMENT_RULES = {
        TEST.simpleEntailment: SIMPLE_ENTAILMENT_LG,
        RDF: RDF_ENTAILMENT,
        RDFS: RDFS_ENTAILMENT,
        TESTS['datatypes#']: DATATYPE_ENTAILMENT
    }

    def setUp(self):
        super().setUp()
        self.premise = Graph()
        for premise_document in self.test.premise_documents:
            if premise_document.type != TEST['False-Document']:
                self.premise.update(premise_document.read(self.opener))
            else:
                self.premise = False

        self.entailments = []
        for rules_uri in self.test.entailment_rules:
            entailment = self.ENTAILMENT_RULES[rules_uri]
            self.entailments.append(entailment)
        if (SIMPLE_ENTAILMENT not in self.entailments
                and SIMPLE_ENTAILMENT_LG not in self.entailments):
            self.entailments.append(SIMPLE_ENTAILMENT_LG)

        self.merged_entailment = Entailment()
        for entailment in self.entailments:
            self.merged_entailment.conditions += entailment.conditions
            self.merged_entailment.axioms |= entailment.axioms
            self.merged_entailment.rules += entailment.rules

        self.merged_entailment.axioms |= {
            (datatype, RDF.type, RDFS.Datatype)
            for datatype in self.test.datatype_support
        }

        if self.test.conclusion_document.type != TEST['False-Document']:
            self.conclusion = Graph(
                self.test.conclusion_document.read(self.opener))
        else:
            self.conclusion = False
Пример #4
0
 def entails(self, s, e):
     if s >= e:
         return True
     entailed = Graph(s | self.axioms)
     context = Context()
     num_triples = -1
     while len(entailed) != num_triples:
         num_triples = len(entailed)
         for rule in self.rules:
             entailed.update(rule.apply(entailed, context))
             if len(entailed) != num_triples:
                 if e <= entailed:
                     return True
     for triple in e:
         if triple not in entailed:
             for entailed_triple in entailed:
                 pattern = Pattern(entailed_triple)
                 if pattern.matches(triple):
                     break
             else:
                 return False
     return True
Пример #5
0
 def entails(self, s, e):
     if s >= e:
         return True
     entailed = Graph(s | self.axioms)
     context = Context()
     num_triples = -1
     while len(entailed) != num_triples:
         num_triples = len(entailed)
         for rule in self.rules:
             entailed.update(rule.apply(entailed, context))
             if len(entailed) != num_triples:
                 if e <= entailed:
                     return True
     for triple in e:
         if triple not in entailed:
             for entailed_triple in entailed:
                 pattern = Pattern(entailed_triple)
                 if pattern.matches(triple):
                     break
             else:
                 return False
     return True
Пример #6
0
class EntailmentTestCase(RDFTestCase):
    ENTAILMENT_RULES = {TEST.simpleEntailment: SIMPLE_ENTAILMENT_LG,
                        RDF: RDF_ENTAILMENT,
                        RDFS: RDFS_ENTAILMENT,
                        TESTS['datatypes#']: DATATYPE_ENTAILMENT}

    def setUp(self):
        super().setUp()
        self.premise = Graph()
        for premise_document in self.test.premise_documents:
            if premise_document.type != TEST['False-Document']:
                self.premise.update(premise_document.read(self.opener))
            else:
                self.premise = False

        self.entailments = []
        for rules_uri in self.test.entailment_rules:
            entailment = self.ENTAILMENT_RULES[rules_uri]
            self.entailments.append(entailment)
        if (SIMPLE_ENTAILMENT not in self.entailments and
            SIMPLE_ENTAILMENT_LG not in self.entailments):
            self.entailments.append(SIMPLE_ENTAILMENT_LG)

        self.merged_entailment = Entailment()
        for entailment in self.entailments:
            self.merged_entailment.conditions += entailment.conditions
            self.merged_entailment.axioms |= entailment.axioms
            self.merged_entailment.rules += entailment.rules

        self.merged_entailment.axioms |= {
            (datatype, RDF.type, RDFS.Datatype) for datatype in
            self.test.datatype_support}

        if self.test.conclusion_document.type != TEST['False-Document']:
            self.conclusion = Graph(
                self.test.conclusion_document.read(self.opener))
        else:
            self.conclusion = False