def write_ship_coordinates_file(ship_iri, coordinates, graph,
                                file_destination):

    (x_coordinate, y_coordinate) = coordinates  # (lon, lat)
    query_string = """
        PREFIX j1: <http://www.theworldavatar.com/ontology/ontocape/upper_level/system.owl#>
        PREFIX j4: <http://www.theworldavatar.com/ontology/ontocape/supporting_concepts/space_and_time/space_and_time_extended.owl#>

        DELETE {{
            ?coordinateX_V j1:numericalValue ?coordinateX_value .
            ?coordinateY_V j1:numericalValue ?coordinateY_value .
        }}
        INSERT
        {{
            ?coordinateX_V j1:numericalValue {1}.
            ?coordinateY_V j1:numericalValue {2} .
        }}
        WHERE
        {{
            <{0}> j4:hasGISCoordinateSystem ?coordinateSystem .
                ?coordinateSystem j4:hasProjectedCoordinate_x ?coordinateX .
                    ?coordinateX j1:hasValue ?coordinateX_V .
                        ?coordinateX_V j1:numericalValue ?coordinateX_value .
                ?coordinateSystem j4:hasProjectedCoordinate_y ?coordinateY .
                    ?coordinateY j1:hasValue ?coordinateY_V .
                        ?coordinateY_V j1:numericalValue ?coordinateY_value .

        }}
    """.format(ship_iri, x_coordinate, y_coordinate)

    processUpdate(graph, query_string)

    graph.serialize(destination=file_destination, format='xml')
    def run_sql(self, query, type, return_type):
        '''
        Args:
            query (str): sparql query
            type (str):  insert/query type

        Returns:
           dict.: query result

        Raises:
            Exceptions on error
        '''
        # set return
        ret_type = 'application/sparql-results+json'
        # query
        if type == "insert":
            # we call this to update, either returns for success
            # or throws an exception (try block in calling code)
            processUpdate(self.g, query)
            ret = json.dumps({"status": "success"})
        else:
            # run query for SELECT, ASK or now CONSTRUCT
            if 'DESCRIBE' in query:
                # get object
                actual_query = query.split('<', 1)[1].split('>')[0]
                print("describe", actual_query)
                node_graph = self.get_graph_with_node(URIRef(actual_query))
                ret_type = 'text/turtle'
                # return info
                return node_graph.serialize(format="turtle",
                                            base=self.my_host_name), ret_type

            # run query
            result = self.g.query(query)

            # check if CONSTRUCT as this returns a graph
            if result.type == 'CONSTRUCT':
                # test type
                if 'text/turtle' in return_type:
                    ret_type = 'text/turtle'
                    # convert graph to turtle
                    ret = result.serialize(format="turtle",
                                           base=self.my_host_name)
                else:
                    # convert graph to JSON
                    ret = self.graph_to_json(result.graph)
            else:
                # convert to JSON
                ret = result.serialize(format="json")

        # print("json",ret)
        # return
        return ret, ret_type
def testCycleDetection():
    qMakeCycle = '''
        PREFIX prov: <http://www.w3.org/ns/prov#>
        PREFIX c: <http://www.few.vu.nl/pgroth/provconstraints#>

        INSERT DATA {
            c:start c:precedes c:two .
            c:two   c:precedes c:three .
            c:three c:strictlyPrecedes c:start .
        }
    '''
    g = rdflib.Graph()
    processUpdate(g, qMakeCycle)
    print(g.serialize(format='turtle'))
    print(checkCycle(g))
Exemplo n.º 4
0
    def do_insert(self, resource_count: int) -> None:
        EGV = Namespace("http://example.org/vocab#")
        EGI = Namespace("http://example.org/instance#")
        prop0, prop1, prop2 = EGV["prop0"], EGV["prop1"], EGV["prop2"]
        g0 = Graph()
        for index in range(resource_count):
            resource = EGI[f"resource{index}"]
            g0.add((resource, prop0, Literal(index)))
            g0.add((resource, prop1, Literal("example resource")))
            g0.add((resource, prop2, Literal(f"resource #{index}")))

        g0ntriples = g0.serialize(format="ntriples")
        g1 = Graph()

        self.assertNotEqual(triple_set(g0), triple_set(g1))

        processUpdate(g1, f"INSERT DATA {{ {g0ntriples!s} }}")

        self.assertEqual(triple_set(g0), triple_set(g1))
def orderingConstraints(g):
    processUpdate(g, start_precedes_end)
    processUpdate(g, start_start_ordering)
    processUpdate(g, end_end_ordering)
    processUpdate(g, usage_within_activity1)
    processUpdate(g, usage_within_activity2)
    processUpdate(g, generation_within_activity1)
    processUpdate(g, generation_within_activity2)
    processUpdate(g, wasInformedBy_ordering)
    processUpdate(g, generation_precedes_invalidation)
    processUpdate(g, generation_precedes_usage)
    processUpdate(g, usage_precedes_invalidation)
    processUpdate(g, generation_generation_ordering)
    processUpdate(g, invalidation_invalidation_ordering)
    processUpdate(g, derivation_usage_generation_ordering)
    processUpdate(g, derivation_generation_generation_ordering)
    processUpdate(g, wasStartedBy_ordering1)
    processUpdate(g, wasStartedBy_ordering2)
    processUpdate(g, wasEndedBy_ordering1)
    processUpdate(g, wasEndedBy_ordering2)
    processUpdate(g, specialization_generation_ordering)
    processUpdate(g, specialization_invalidation_ordering)
    processUpdate(g, wasAssociatedWith_ordering1)
    processUpdate(g, wasAssociatedWith_ordering2)
    processUpdate(g, wasAssociatedWith_ordering3)
    processUpdate(g, wasAssociatedWith_ordering4)
    processUpdate(g, wasAttributedTo_ordering1)
    processUpdate(g, wasAttributedTo_ordering2)
    processUpdate(g, actedOnBehalfOf_ordering1)
    processUpdate(g, actedOnBehalfOf_ordering2)
    return g
Exemplo n.º 6
0
def testCycleDetection():
    g = rdflib.Graph()
    processUpdate(g, qMakeCycle)
    print(g.serialize(format='turtle'))
    print(checkCycle(g))