A KG-Based Integrated UAV Approach for Engineering Semantic Trajectories in the Cultural Heritage Documentation Domain
Abstract
:1. Introduction
- (a)
- An updated methodology for the engineering of semantic trajectories as KGs (STaKG);
- (b)
- An implemented toolset for the management of KG-based semantic trajectories;
- (c)
- A refined ontology for the representation of knowledge related to UAVs’ semantic trajectories and to cultural heritage documentation;
- (d)
- The application and evaluation of the proposed methodology, the developed toolset, and the ontology within the domain of UAV-based cultural heritage documentation.
2. Materials and Methods
2.1. STaKG Methodology
- Visualization service: provides visualization of trajectories on geographic maps and timelines of events or phenomena, e.g., providing a geographic map that visualizes, in the form of semantic trajectories shaped by data-recording episodes, different flights of a UAV during a specific cultural heritage documentation mission on a specific flight zone and time interval.
- Querying service: provides a multimodal (template-driven and formal language) querying interface for the retrieval of semantic trajectories based on several criteria-variables that are mapped to the conceptual model/ontology used for their representation as KGs, e.g., retrieving the movement, weather, and recording (e.g., photos) data of all UAV documentation flights on a cultural heritage mission that match a specific geographic area (flight zone) and time period (time interval).
- Analytics service: provides analysis of trajectories based on spatiotemporal semantics, e.g., analyzing the duration and recordings of a specific flight of a UAV in a specific area of interest. Analytics are realized through the following tasks:
- ○
- Comparing semantic trajectories in terms of spatiotemporal criteria, e.g., the semantic trajectories of two recording episodes for the same recording points (POIs) or space (flight zone);
- ○
- Merging semantic trajectories, e.g., merging semantic trajectories that occur in the same recording mission of a specific UAV;
- ○
- Split semantic trajectories to specific episodes, e.g., splitting the trajectory of a UAV flight into episodes related to the camera-shooting position (set at up–shooting–departure for the next shooting position);
- ○
- Discovering the behaviors of moving entities (behavior analytics) where there is no previous knowledge for the behavior, e.g., discovering types of flights of UAVs based on the flight behaviors/patterns followed by their operators, or recognizing the aim of the flight or the mission (surveillance flight/scientific flight) based on the semantic trajectory of a drone and the carried equipment;
- ○
- Evaluating semantic trajectories in terms of spatiotemporal information and its correlation with other contextual data, e.g., evaluating the expected efficiency (e.g., duration, altitude) of a flight or mission based on the environmental conditions of the flight or mission (e.g., high efficiency cannot be expected during bad weather conditions).
2.2. STaKG Knowledge Model
- Which trajectories of a specific mission include records of a specific object?
- Which recording positions include records of a specific object?
- What kind of records are produced during a specific mission?
- Which missions result in photograph records?
- What are the recording positions of a specific flight?
- What kind of records are produced at a specific recording position?
- What are the recording segments of a trajectory?
- What are the weather conditions at a specific point in time for a specific flight?
- Which flights intersect?
- What is the number of drones involved in a specific mission and the number of flights initiated for that mission?
- What recording events occurred at a distance of less than 100 m from a specific recording event?
- Which recording events took place near a specific POI?
- Flight data, derived from flight log files, which are written records of a flight automatically generated by a drone. Flight log files contain flight details concerning flight planning information along with time-stamped movement of the drone and on-board sensor data (e.g., longitude, latitude, altitude, timestamp of different positions). Flight log files are usually stored (usually in CSV format) in the native application of a device (remote control, mobile phone, or tablet) and the drone’s pilot application.
- Equipment data, which are the data reported by the flight operator, describing the characteristics of a drone (e.g., model, serial number, software type). These data are documented after the in situ survey using drone data management software (the drone logbook).
- Mission data, which are the data reported by the flight operator in the context of the mission planning procedure (e.g., the purpose of the mission, the category of the mission, the area of the mission, the equipment to be used). These data are documented by experts right after the mission, using drone data management software.
- Recorded data (aerial and terrestrial), which are data extracted from files (photos, videos, lidar data) acquired during the flight mission (e.g., longitude, latitude, date, time of the recording). These data are provided either by Exif files of the records or directly from the records.
- Geographic names and elements, which are data about the POIs/ROIs at which the objects of interest are located, and where the drone’s mission occurs (e.g., cities, villages, ports, buildings, archaeological sites).
- Weather data, which are data (e.g., temperature, humidity, wind velocity) recorded by weather monitoring devices or systems. These they are dynamically collected from external (web) services or/and in-drone sensors, based on the time and location of the mission that is recorded.
-> dront:RecordingPosition(?b)
dront:RecordingEventShape a sh:NodeShape ; sh:targetClass dront:RecordingEvent ; # Applies to all recording events sh:property [ # 1 sh:path datAcron:occurs ; # constrains the values of datAcron:occurs sh:class dront:RecordingPosition ; sh:maxCount 1 ; ] ; sh:property [ # 2 sh:path dront:records ; # constrains the values of dront:records sh:class dront:EntityOfInterest ; sh:minCount 1 ; ] ; sh:property [ # 3 sh:path dront:produces ; # constrains the values of dront:produces sh:class dront:Record ; sh:minCount 1 ; ] ; sh:property [ # 4 sh:path dront:hasDroneParticipant ; # constrains the values of dront:hasDroneParticipant sh:class dront:Drone ; sh:maxCount 1 ; ] ; sh:closed true ; sh:ignoredProperties (rdf:type owl:topDataProperty owl:topObjectProperty rdfs:label dul:hasParticipant) ; |
SELECT ?trajectory WHERE { ?recordingEvent dront:records dront:petrifiedTrunk. ?recordingEvent datacron:occurs ?recordingPosition. ?trajectorySegment datacron:comprises ?recordingPosition. ?trajectory dront:encloses ?trajectorySegment}. |
2.3. STaKG Toolset
- (a)
- The preprocessing of position/movement data (data cleaning, data compression);
- (b)
- The conversion of raw trajectories to STs via applying semantic annotation based on the semantic trajectory model (onto4drone ontology);
- (c)
- STaKG management and retrieval;
- (d)
- Enrichment of STaKGs (connection to related KGs, utilization of application domain and geographical data);
- (e)
- Analysis of STaKGs to recognize semantic behaviors (classification, clustering, aggregation, comparison of STaKGs).
- (a)
- (b)
- A tool for trajectory data summarization and enrichment with recording metadata, weather data, and structured data of POI/ROI shape files;
- (c)
- A tool for semantic trajectory management (split, merge, combine, analyze);
- (d)
- A web-based tool for semantic trajectory browsing and visualization.
3. Results
3.1. Use Cases and Correspondent Datasets
3.1.1. Petrified Forest
3.1.2. Vrissa Village
3.1.3. University Hill
3.1.4. Geographical Dataset
3.2. Semantic Trajectory Processing
3.2.1. ST Creation
- Keep only the data required for the use case;
- Map CSV columns of the logs produced from different pilot software (DJI, Litchi) in a unified template;
- Reduce the point density of the GPS data.
3.2.2. ST Enrichment
3.2.3. ST Segmentation
3.2.4. ST Intersection
3.3. ST Visualization
3.4. Analytics
- The number of recording points in a trajectory (Appendix B.6).
- POIs in a trajectory (Appendix B.7), e.g., http://semantics.aegean.gr/resources/University_2585.
- Mean temperature recorded during a trajectory (Appendix B.8).
- Number of POIs that are of a specific type in a radius R of a selected point (Appendix B.9).
- POIs that two or more trajectories have in common (Appendix B.10), e.g., http://semantics.aegean.gr/resources/University_2585.
4. Discussion and Future Plans
Author Contributions
Funding
Data Availability Statement
Acknowledgments
Conflicts of Interest
Appendix A. Queries and Sample Responses
Appendix A.1. Cypher Query—ST CreationAppendix
MERGE (tr:Trajectory {name:”Traj1”}) MATCH (c:Class {name:”Trajectory”}) MERGE (tr)-[:rdf__type]->(c) SET tr.name = ’Trajecoty_Name’, tr.label = ‘Traj’+ id(tr), tr.uri = “http://i-lab.aegean.gr/kotis/ontologies/onto4drone#”+’Traj’+ id(tr) LOAD CSV WITH HEADERS FROM ‘log.csv’ AS line WITH line WHERE toInteger(line.pointId)%30 = 0 CREATE (tr)-[hp:hasPart]->(rp:RawPosition) SET rp.name =‘RawP’+ id(rp), rp.label = ‘RawP’+ id(rp), rp.uri = “http://i-lab.aegean.gr/kotis/ontologies/onto4drone#”+’RawP’+ id(rp), rp.speed = line[“speed”] CREATE (p:Point {location:point({longitude:toFloat(line[“GPS:Long”]), latitude:toFloat(line[“GPS:Lat”])}), longitude:line[“Longitude”], latitude:line[“Latitude”],, altitude:line[“Altitude”]}) SET p.label = ‘Point’+ id(p), p.name = ‘Point’+ id(p), p.uri = “http://i-lab.aegean.gr/kotis/ontologies/onto4drone#”+’point’+ id(p) CREATE (t:Time {hasTime:line[“GPS:dateTimeStamp”]}) SET t.label = ‘t’+id(t), t.name = ‘t’+id(t), t.uri = “http://i-lab.aegean.gr/kotis/ontologies/onto4drone#”+’t’+ id(t) create (rp)-[:hasGeometry]->(p) create (rp)-[:hasTemporalFeature]->(t) |
Appendix A.2. Cypher Query—ST Enrichment with Record MetadataAppendix
LOAD CSV WITH HEADERS FROM ‘records.csv’ AS line WITH line CALL { WITH line MATCH (tr:Trajectory {name:”TrajectoryName”}) MATCH (rp:RawPosition) MATCH (p2:Point)<-[:hasGeometry]-(rp) MATCH (rp)-[:hasTemporalFeature]->(t2) WITH rp, p2, point.distance(point({longitude:toFloat(line[“longitude”]), latitude:toFloat(line[“latitude”])}), p2.location) as distance, duration.inSeconds(dateTime(line[“t”]), datetime(t2.hasTime)) as timeDif RETURN rp ORDER BY distance, timeDif asc limit 1 } SET rp:RecordingPosition SET rp.name =‘RecP’+ id(rp), rp.label = ‘RecP’+ id(rp) CREATE (re:RecordingEvent) SET re.name =‘RecEv’+ id(re), re.label = ‘RecEv’+ id(re), re.uri = “http://i-lab.aegean.gr/kotis/ontologies/onto4drone#”+’RecEv’+ id(re) CREATE (re)-[:occurs]->(rp) CREATE (record:Record {label:line.title, name:line.title}) CREATE (re)-[:produces]->(record) |
Appendix A.3. Overpass Query and Sample Response for Fetching Nearby POIs
[out:json]; node(around:50,{longitude},{latitude)-> .poi; node.poi[name]; out geom; Sample Response: { “type”: “FeatureCollection”, “features”: [ { “type”: “Feature”, “properties”: { “@id”: “node/5389966411”, “amenity”: “university”, “name”: “Τμήμα Γεωγραφίας”, “toilets:wheelchair”: “no”, “wheelchair”: “yes” }, “geometry”: { “type”: “Point”, “coordinates”: [ 26.5692066, 39.0848178 ] }, “id”: “node/5389966411” } ] } |
Appendix A.4. GeoSparql Query and Sample Response for Fetching Nearby POIs from UoA SPARQL Endpoint
PREFIX geo: <http://www.opengis.net/ont/geosparql#> PREFIX geof: <http://www.opengis.net/def/function/geosparql/> PREFIX uoa: <http://semantics.aegean.gr/ontology/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX units: <http://www.opengis.net/def/uom/OGC/1.0/> SELECT ?entity ?class ?label ?eLabel WHERE { ?entity a ?class. OPTIONAL{?entity uoa:hasLabel ?eLabel.} ?class rdfs:label ?label. ?entity geo:hasGeometry ?geo . ?geo geo:asWKT ?wkt . bind (geof:distance(“<http://www.opengis.net/def/crs/EPSG/0/4326>POINT (#{lon} #{lat})”^^geo:wktLiteral, ?wkt, units:degree) as ?d) FILTER (?d < 0.0005) FILTER contains(str(?wkt),”POINT”) } |
{“poi”: { “type”: “uri” , “value”: “http://semantics.aegean.gr/resources/PetrifiedTrunk_3b243cdd74c34c2fBb970a80e8038baf” } , “class”: { “type”: “uri” , “value”: “http://semantics.aegean.gr/ontology/PetrifiedTrunk” }, “label”: { “type”: “literal” , “value”: “Petrified Trunk” } } , {“poi”: { “type”: “uri” , “value”: “http://semantics.aegean.gr/resources/PetrifiedTrunk_C26b38420cd0422c900dE3eb91dbe9eb” } , “class”: { “type”: “uri” , “value”: “http://semantics.aegean.gr/ontology/PetrifiedTrunk” }, “label”: { “type”: “literal” , “value”: “Petrified Trunk” } } , ] } } |
Appendix B. Visualization and Analytics Queries
Appendix B.1. Trajectory Visualization Query
MATCH (tr:Trajectory {name:”UoA1”}) MATCH (tr)-[:hasPart]-(rawp:RawPosition)-[:hasGeometry]-(point:Point) RETURN point |
Appendix B.2. Trajectory and the Recording Positions Query
MATCH (tr:Trajectory {name:$neodash_trajectory_name})-[:hasPart]-(rp:RecordingPosition)-[:hasGeometry]-(p:Point) WITH collect({id: rp.name, label:”Rec”, point: p.location, explore: p.label }) AS rec_points, tr MATCH (tr)-[:hasPart]-(rawp:RawPosition)-[:hasGeometry]-(n:Point) WITH collect({id: rawp.name, label:”Raw”, point: n.location}) as raw_points, rec_points RETURN raw_points, rec_points |
Appendix B.3. Recording Event Relations
MATCH (rec_position:RecordingPosition)-[has_geom:hasGeometry]-(rp:Point) MATCH (tr:Trajectory)-[hp:hasPart]-(recp) MATCH (rec_position)<-[oc:occurs]-(rev:RecordingEvent) MATCH (rev)-[prod:produces]-(record:Record)-[recs:records]-> (poi:PointOfInterest) WHERE rp.label = $neodash_point_label RETURN tr,hp, rec_position, has_geom, rp, rev, record, prod, oc, recs, poi |
Appendix B.4. Recording Segments of Trajectory
MATCH(tr:Trajectory{name:$neodash_trajectory_name})-[:hasPart]-(rp:RawPosition)- [:hasGeometry]-(p:Point) WHERE (rp)-[:comprises]-(:RecordingSegment) WITH collect({id: rp.name, label:”Rec”, point: p.location, explore: p.label}) AS rec_points, tr MATCH (tr)-[:hasPart]-(rawp:RawPosition)-[:hasGeometry]-(n:Point) WITH collect({id: rawp.name, label:”Raw”, point: n.location}) as raw_points, rec_points RETURN raw_points, rec_points |
Appendix B.5. Intersecting Trajectories
MATCH (tr:Trajectory {name:”UoA1”})-[:intersects]-(tr2:Trajectory) MATCH (tr)-[:hasPart]-(rawp:RawPosition)-[:hasGeometry]-(n:Point) MATCH (tr2)-[:hasPart]-(rawp2:RawPosition)-[:hasGeometry]-(n2:Point) RETURN {id: rawp.name, label:”traj1”, point: n.location}, {id: rawp2.name, label:”traj2”, point: n2.location} |
Appendix B.6. Number of Recording Points of a Trajectory
MATCH (tr:Trajectory {name:”SigriTraj”}) - [:hasPart]->(:RecordingPosition)-[:hasGeometry]-(p:Point) RETURN count(p) as number_of_recording_points |
number_of_recording_points 58 |
Appendix B.7. POIs in a Trajectory
MATCH (tr:Trajectory {uri:”http://i-lab.aegean.gr/kotis/ontologies/onto4drone#Traj755”}) MATCH (tr)-[:hasPart]-(:RecordingPosition)-[:occurs]-(:RecordingEvent)-[:produces]-(:Record)-[:records]-(poi:PointOfInterest) RETURN distinct poi.name as name, poi.uri as uri |
Name | Uri |
“University of the Aegean” | “http://semantics.aegean.gr/resources/University_2585” |
“Τμήμα Γεωγραφίας” (Dept. of Geography) | “https://www.openstreetmap.org/node/5389966411” |
“Φοιτητική λέσχη” (Students Club) | “https://www.openstreetmap.org/node/5389966410” |
“Τμήμα Ωκεανογραφίας και Θαλασσών Βιοεπιστημών” (Dept. of Marine Sciences) | “https://www.openstreetmap.org/node/5389966409” |
“Λόφος Ξενία” (University Hill) | “https://www.openstreetmap.org/node/2360266377” |
Appendix B.8. Mean Temperature Recorded during a Trajectory
MATCH (tr:Trajectory {uri:”http://i-lab.aegean.gr/kotis/ontologies/onto4drone#Traj755”}) MATCH (tr)-[:hasPart]-(:RecordingPosition)-[:occurs]-(:RecordingEvent)-[:produces]-(:Record)-[:records]-(poi:PointOfInterest) RETURN distinct poi.name as name, poi.uri as uri |
avg_temperature 16.1 |
Appendix B.9. Number of POIs That Are of a Specific Type in a Radius R of a Selected Point
MATCH (point_a:Point {latitude:”39.208266”, longitude:”25.901183”}) MATCH (point_b:PointOfInterest) WITH point_b, point.distance(point_a.location, point_b.location) AS dist WHERE dist < 30 RETURN count(point_b) AS num_of_pois |
num_of_pois 3 |
Appendix B.10. POIs That Two or More Trajectories Have in Common
MATCH (poi:PointOfInterest)- [:records]-(record)<-[:produces]-(:RecordingEvent)-[:occurs]->(:RecordingPosition)<-[:hasPart]-(trajectory:Trajectory) WITH count(distinct trajectory) AS num_of_trajectories, poi WHERE num_of_trajectories > 1 RETURN poi.uri |
Appendix C. Competency Question Queries
Appendix C.1. CQ1
MATCH (poi:PointOfInterest {name:”KormosIstamenos30”}) MATCH (record:Record)-[:records]-(poi) MATCH (record)<-[:produces]-(:RecordingEvent)-[:occurs]-> (:RecordingPosition)<-[:hasPart]-(trajectory:Trajectory) RETURN DISTINCT trajectory.name |
trajectory.name: “SigriTraj” |
Appendix C.2. CQ2
MATCH (poi:PointOfInterest {name:”KormosIstamenos30”}) MATCH (record:Record)-[:records]-(poi) MATCH (record)<-[:produces]-(:RecordingEvent)-[:occurs]->(:RecordingPosition)<-[:hasPart]-(trajectory:Trajectory) MATCH (trajectory)<-[:formsTrajectory]-(:Flight)<-[:includesFlight]-(mission:Mission) WITH mission, poi MATCH (mission)-[:includesFlight]->(:Flight)-[:formsTrajectory]-> (tr:Trajectory)-[:hasPart]-(rec_pos:RecordingPosition) RETURN DISTINCT rec_pos.uri as uris |
Appendix C.3. CQ3
MATCH (mission:Mission {name:”UoAMission1”}) MATCH (mission)-[:includesFlight]->(:Flight)-[:formsTrajectory]->(tr:Trajectory)-[:hasPart]-(rec_pos:RecordingPosition)-[:occurs]-(rec_event:RecordingEvent) MATCH (rec_event)-[:produces]-(record:Record) RETURN DISTINCT record.name as record_names |
Appendix C.4. CQ4
MATCH (m:Mission)-[:includesFlight]-> (fl:Flight)-[:formsTrajectory]->(:Trajectory)-[:hasPart]->(:RecordingPosition)<-[:occurs]-(:RecordingEvent)-[:produces]->(ph:Photograph) RETURN m.name AS mission_name |
Appendix C.5. CQ5
MATCH (fl:Flight {name:”UoAFlight1”})-[:formsTrajectory]->(:Trajectory)-[:hasPart]->(rp:RecordingPosition)-[:hasGeometry]-(p:Point) RETURN p.latitude as latitude, p.longitude as longitude |
Appendix C.6. CQ6
MATCH (rec:Record)-[:produces]-(:RecordingEvent)-[:occurs]-(:RecordingPosition {name: “RecP880”}) RETURN rec.name |
Appendix C.7. CQ7
MATCH (rec:Record {name: “DJI_0051.JPG”})-[:produces]-(:RecordingEvent)- [:occurs]-(:RecordingPosition)<-[:comprises]-(rseg:RecordingSegment) RETURN rseg.uri |
Appendix C.8. CQ8
MATCH (fl:flight {name: “uoaflight1”}) MATCH (p:Point {latitude: “39.0850988”, longitude: “26.569415”}) MATCH (fl)-[:formsTrajectory]->(:Trajectory)-[:hasPart]-(rec_pos)-[:hasGeometry]-(p) MATCH (rec_pos)-[:hasWeatherCondition]-(wc:WeatherCondition) RETURN wc |
{ “identity”: 5370, “labels”: [ “WeatherCondition” ], “properties”: { “windSpeedMax”: 16.3, “reportedPressure”: 993.8, “reportedMaxTemperature”: 13.1 } } |
Appendix C.9. CQ9
MATCH (fl:Flight {name:”UoAFlight1”})-[:formsTrajectory]-(:Trajectory)- [:intersects]->(:Trajectory)-[:formsTrajectory]-(fl2:Flight) RETURN fl2.name AS intersecting_flight |
intersecting_flight “UoAFlight2” |
Appendix C.10. CQ10
MATCH (m:Mission {name:”UoAMission1”})-[:includesFlight]->(fl:Flight) MATCH (dr:UAVDrone)-[:hasFlight]->(fl) RETURN count(fl) as num_of_flights, count(dr) as num_of_drones |
num_of_flights num_of_drones 2 2 |
Appendix C.11. CQ11
MATCH (:RecordingEvent {name: “RecEv5272”})-[:occurs]->(:RecordingPosition)- [:hasGeometry]-(point_a:Point) WITH point_a.location as pointA MATCH (point_b:Point) WITH point_b.location as pointB, pointA WHERE point.distance(pointA, pointB) < 100 MATCH (p:Point {location:pointB})<-[:hasGeometry]-(:RecordingPosition)-[:occurs]-(rec_ev:RecordingEvent) RETURN rec_ev.label |
rec_ev.label “RecEv5261” “RecEv5233” “RecEv5223” “RecEv5237” |
Appendix C.12. CQ12
MATCH (poi:PointOfInterest {name:”KormosIstamenos30”}) WITH poi.location as pointA MATCH (point_b:Point) WITH point_b.location as pointB, pointA WHERE point.distance(pointA, pointB) < 100 MATCH (p:Point {location:pointB})<-[:hasGeometry]-(:RecordingPosition)-[:occurs]-(rec_ev:RecordingEvent) RETURN rec_ev.uri |
References
- Parent, C.; Spaccapietra, S.; Renso, C.; Andrienko, G.; Andrienko, N.; Bogorny, V.; Damiani, M.L.; Gkoulalas-Divanis, A.; Macedo, J.; Pelekis, N.; et al. Semantic trajectories modeling and analysis. ACM Comput. Surv. 2013, 45, 1–32. [Google Scholar] [CrossRef] [Green Version]
- Santipantakis, G.; Vouros, G.; Glenis, A.; Doulkeridis, C.; Vlachou, A. The datAcron Ontology for Semantic Trajectories. In Lecture Notes in Computer Science (including Subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics); Springer International Publishing: Berlin/Heidelberg, Germany, 2017; Volume 10577, pp. 26–30. [Google Scholar] [CrossRef] [Green Version]
- Ehrlinger, L.; Wöß, W. Towards a definition of knowledge graphs. In Proceedings of the 12th International Conference on Semantic Systems (SEMANTICS2016): Posters and Demos Track, CEUR Workshop Proceedings, Leipzig, Germany, 12–15 September 2016; Volume 1695. [Google Scholar]
- Hogan, A.; Blomqvist, E.; Cochez, M.; D’Amato, C.; De Melo, G.; Gutierrez, C.; Kirrane, S.; Gayo, J.E.L.; Navigli, R.; Neumaier, S.; et al. Knowledge Graphs. ACM Comput. Surv. 2021, 54, 1–37. [Google Scholar] [CrossRef]
- Carriero, V.A.; Gangemi, A.; Mancinelli, M.L.; Nuzzolese, A.G.; Presutti, V.; Veninata, C. Pattern-based design applied to cultural heritage knowledge graphs. Semant. Web 2021, 12, 313–357. [Google Scholar] [CrossRef]
- Fensel, D.; Şimşek, U.; Angele, K.; Huaman, E.; Kärle, E.; Panasiuk, O.; Toma, I.; Umbrich, J.; Wahler, A. Introduction: What Is a Knowledge Graph? Knowl. Graphs 2020, 1–10. [Google Scholar] [CrossRef]
- Gao, C.; Zhang, Z.; Huang, C.; Yin, H.; Yang, Q.; Shao, J. Semantic trajectory representation and retrieval via hierarchical embedding. Inf. Sci. 2020, 538, 176–192. [Google Scholar] [CrossRef]
- Moraitou, E.; Angelis, S.; Kotis, K.; Caridakis, G.; Papadopoulou, E.E.; Soulakellis, N. Towards Engineering Drones Semantic Trajectories as Knowledge graphs. In Proceedings of the 5th International Workshop on Geospatial Linked Data (GeoLD 2022), Co-Located with the 19th European Semantic Web Conference (ESWC 2022), Crete, Greece, 29 May–2 June 2022. [Google Scholar]
- Pinto, H.S.; Staab, S.; Tempich, C. DILIGENT: Towards a fine-grained methodology for DIstributed, Loosely-controlled and evolvInG Engineering of oNTologies. Front. Artif. Intell. Appl. 2004, 110, 393. [Google Scholar]
- Kotis, K.; Vouros, G.A. Human-centered ontology engineering: The HCOME methodology. Knowl. Inf. Syst. 2005, 10, 109–131. [Google Scholar] [CrossRef]
- How-to: Building Knowledge Graphs in 10 Steps|Ontotext Fundamentals. Available online: https://www.ontotext.com/knowledgehub/fundamentals/how-to-building-knowledge-graphs-in-10-steps/ (accessed on 25 November 2022).
- datAcron Ontology. Available online: http://ai-group.ds.unipi.gr/datacron_ontology/ (accessed on 25 November 2022).
- dronetology, the UAV Ontology. Available online: http://www.dronetology.net/ (accessed on 25 November 2022).
- W3C Geospatial Ontologies. Available online: https://www.w3.org/2005/Incubator/geo/XGR-geo-ont-20071023/ (accessed on 25 November 2022).
- Linked Open Vocabularies. Available online: https://lov.linkeddata.es/dataset/lov (accessed on 25 November 2022).
- Ontology Design Patterns. org (ODP)—Odp. Available online: http://ontologydesignpatterns.org/wiki/Main_Page (accessed on 25 November 2022).
- DOLCE+DnS Ultralite Ontology. Available online: http://www.ontologydesignpatterns.org/ont/dul/DUL.owl (accessed on 25 November 2022).
- SKOS Simple Knowledge Organization System Reference. Available online: https://www.w3.org/TR/skos-reference/ (accessed on 25 November 2022).
- Semantic Sensor Network Ontology. Available online: https://www.w3.org/ns/ssn/ (accessed on 25 November 2022).
- Simple Features Geometries. Available online: http://schemas.opengis.net/sf/1.0/simple_features_geometries.rdf (accessed on 25 November 2022).
- Simple Feature Access—Part 1: Common Architecture|OGC. Available online: https://www.ogc.org/standards/sfa (accessed on 25 November 2022).
- GML Geometries. Available online: http://schemas.opengis.net/gml/3.2.1/gml_32_geometries.rdf (accessed on 25 November 2022).
- OGC GeoSPARQL 1.0. Available online: http://schemas.opengis.net/geosparql/1.0/geosparql_vocab_all.rdf (accessed on 25 November 2022).
- UNESCO Thesaurus. Available online: https://vocabularies.unesco.org/browser/thesaurus/en/ (accessed on 25 November 2022).
- EKT-UNESCO Thesaurus. Available online: https://www.semantics.gr/authorities/vocabularies/ekt-unesco/vocabulary-entries (accessed on 25 November 2022).
- GitHub—KotisK/Onto4drone: An Ontology for Representing Knowledge Related to Drones and Their Semantic Trajectories. Available online: https://github.com/KotisK/onto4drone (accessed on 25 November 2022).
- SWRL: A Semantic Web Rule Language Combining OWL and RuleML. Available online: https://www.w3.org/Submission/SWRL/ (accessed on 25 November 2022).
- Shapes Constraint Language (SHACL). Available online: https://www.w3.org/TR/shacl/ (accessed on 25 November 2022).
- SPARQL Query Language for RDF. Available online: https://www.w3.org/TR/rdf-sparql-query/ (accessed on 25 November 2022).
- OpenRefine. Available online: https://openrefine.org/ (accessed on 25 November 2022).
- Karma: A Data Integration Tool. Available online: https://usc-isi-i2.github.io/karma/ (accessed on 25 November 2022).
- RDF Triple Stores vs. Labeled Property Graphs: What’s the Difference? Available online: https://neo4j.com/blog/rdf-triple-store-vs-labeled-property-graph-difference/ (accessed on 25 November 2022).
- Graph Data Platform|Graph Database Management System|Neo4j. Available online: https://neo4j.com/ (accessed on 25 November 2022).
- Kyzirakos, K.; Karpathiotakis, M.; Koubarakis, M. Strabon: A Semantic Geospatial DBMS. Available online: http://www.strabon.di.uoa.gr (accessed on 25 November 2022).
Super Class Reused from Other Ontologies | Class in Onto4Drone |
---|---|
dul:Entity | EntityOfInterest |
dul:Abstract | Swarm |
datAcron:TrajectoryPart | RecordingPosition |
datAcron:Segment | RecordingSegment |
dul:Entity | EventOfInterest |
datAcron:Event | MilitaryEvent |
datAcron:Event | Mission |
datAcron:Event | RecordingEvent |
dul:Object | ObjectOfInterest |
datAcron:Document | ProcessedRecrod |
datAcron:Document | Record |
datAcron:MovingObject | Drone |
datAcron:MovingObject | FlyingObject |
datAcron:MovingObject | MarineObject |
datAcron:Point | PointOfInterest |
datAcron:Region | RegionOfInterest |
Object Property | Domain | Range | Super Object Property |
---|---|---|---|
dront:includesFlight | dront:Mission | sf:Flight | dul:hasConstituent |
dront:clusters | dront:TrajectoryCluster | datAcron:Trajectory | dul:hasPart |
dront:hasPartDrone | dront:SwarmOfDrones | dront:Drone | dul:hasPart |
dront:encloses | datAcron:Trajectory | datAcron:Segment | datAcron:hasPart |
dront:hasDroneParticipant | dront:RecordingEvent or dront:MilitaryEvent | dront:Drone | dul:hasParticipant |
dront:isPartOfSwarm | dront:Drone | dront:SwarmOfDrones | dul:isPartOf |
dront:hasFlight | dront:UAVDrone | sf:Flight | dul:isParticipantIn |
dront:isDroneParticipantIn | dront:Drone | dront:RecordingEvent or dront:MilitaryEvent | dul:isParticipantIn |
dront:originatesFrom | dront:ProcessedRecord | dront:Record | dul:associatedWith |
UAV | Flight Altitude | Overlap | Flight Duration | Software | Log File Data Format |
---|---|---|---|---|---|
Phantom 4 Pro | 25 m | 90% and 60% | 13 min | Litchi mission hub | .csv |
Phantom 4 Pro | 5–12 m | 80% and 70% | 7 min | Litchi mission hub | .csv |
UAV | Flight Altitude | Overlap | Flight Duration | Software | Log File Data Format |
---|---|---|---|---|---|
Phantom 4 Pro | 80 m | 80% and 80% | 21 min | Litchi mission hub | .csv |
Phantom 4 Pro | 80 m | 90% and 60% | 16 min | Litchi mission hub | .csv |
UAV | Flight Altitude | Overlap | Flight Duration | Software | Log File Data Format |
---|---|---|---|---|---|
Phantom 4 Pro | 7–60 m | Manual flight | 3 min | Dji Go 4 | .dat |
Inspire 2 | 5–50 m | Manual flight | 4 min | Dji Go 4 | .dat |
CQ1 (Appendix C.1) | Which trajectories of a specific mission include records of a specific object? |
CQ2 (Appendix C.2) | Which recording positions include records of a specific object? |
CQ3 (Appendix C.3) | Which records are produced during a specific mission? |
CQ4 (Appendix C.4) | Which missions result in photograph records? |
CQ5 (Appendix C.5) | What are the recording positions of a specific flight? |
CQ6 (Appendix C.6) | Which records are produced at a specific recording position? |
CQ7 (Appendix C.7) | What are the recording segments of a trajectory? |
CQ8 (Appendix C.8) | What are the weather conditions at a specific point in time during a specific flight? |
CQ9 (Appendix C.9) | Which flights intersect? |
CQ10 (Appendix C.10) | What is the number of drones involved in a specific mission and the number of flights initiated for that mission? |
CQ11 (Appendix C.11) | What are the recording events that occurred at a distance of less than 100 m from a specific recording event? |
CQ12 (Appendix C.12) | Which recording events took place near a specific POI? |
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content. |
© 2023 by the authors. Licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution (CC BY) license (https://creativecommons.org/licenses/by/4.0/).
Share and Cite
Kotis, K.; Angelis, S.; Moraitou, E.; Kopsachilis, V.; Papadopoulou, E.-E.; Soulakellis, N.; Vaitis, M. A KG-Based Integrated UAV Approach for Engineering Semantic Trajectories in the Cultural Heritage Documentation Domain. Remote Sens. 2023, 15, 821. https://doi.org/10.3390/rs15030821
Kotis K, Angelis S, Moraitou E, Kopsachilis V, Papadopoulou E-E, Soulakellis N, Vaitis M. A KG-Based Integrated UAV Approach for Engineering Semantic Trajectories in the Cultural Heritage Documentation Domain. Remote Sensing. 2023; 15(3):821. https://doi.org/10.3390/rs15030821
Chicago/Turabian StyleKotis, Konstantinos, Sotiris Angelis, Efthymia Moraitou, Vasilis Kopsachilis, Ermioni-Eirini Papadopoulou, Nikolaos Soulakellis, and Michail Vaitis. 2023. "A KG-Based Integrated UAV Approach for Engineering Semantic Trajectories in the Cultural Heritage Documentation Domain" Remote Sensing 15, no. 3: 821. https://doi.org/10.3390/rs15030821
APA StyleKotis, K., Angelis, S., Moraitou, E., Kopsachilis, V., Papadopoulou, E. -E., Soulakellis, N., & Vaitis, M. (2023). A KG-Based Integrated UAV Approach for Engineering Semantic Trajectories in the Cultural Heritage Documentation Domain. Remote Sensing, 15(3), 821. https://doi.org/10.3390/rs15030821