Lab Solutions: Difference between revisions
From info216
(Proposed solution for Lab 10 - RDFS) |
No edit summary |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Here we will present suggested solutions after each lab. ''The page will be updated as the course progresses'' | Here we will present suggested solutions after each lab. ''The page will be updated as the course progresses'' | ||
<!-- | |||
=Getting started (Lab 1)= | =Getting started (Lab 1)= | ||
Line 334: | Line 335: | ||
OPTIONAL{ | OPTIONAL{ | ||
?s ns1:pardoned ?pardon . | ?s ns1:pardoned ?pardon . | ||
FILTER (?pardon = | FILTER (?pardon = true) | ||
} | } | ||
} | } | ||
Line 1,549: | Line 1,550: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=OWL 1 (Lab 11)= | |||
<syntaxhighlight lang="Python"> | |||
from rdflib import Graph, RDFS, Namespace, RDF, FOAF, BNode, OWL, URIRef, Literal, XSD | |||
from rdflib.collection import Collection | |||
import owlrl | |||
g = Graph() | |||
ex = Namespace('http://example.org/') | |||
schema = Namespace('http://schema.org/') | |||
dbr = Namespace('https://dbpedia.org/page/') | |||
g.bind("ex", ex) | |||
# g.bind("schema", schema) | |||
g.bind("foaf", FOAF) | |||
# Donald Trump and Robert Mueller are two different persons. | |||
g.add((ex.Donald_Trump, OWL.differentFrom, ex.Robert_Mueller)) | |||
# Actually, all the names mentioned in connection with the Mueller investigation refer to different people. | |||
b1 = BNode() | |||
b2 = BNode() | |||
Collection(g, b2, [ex.Robert_Mueller, ex.Paul_Manafort, ex.Rick_Gates, ex.George_Papadopoulos, ex.Michael_Flynn, ex.Michael_Cohen, ex.Roger_Stone, ex.Donald_Trump]) | |||
g.add((b1, RDF.type, OWL.AllDifferent)) | |||
g.add((b1, OWL.distinctMembers, b2)) | |||
# All these people are foaf:Persons as well as schema:Persons | |||
g.add((FOAF.Person, OWL.equivalentClass, schema.Person)) | |||
# Tax evation is a kind of bank and tax fraud. | |||
g.add((ex.TaxEvation, RDFS.subClassOf, ex.BankFraud)) | |||
g.add((ex.TaxEvation, RDFS.subClassOf, ex.TaxFraud)) | |||
# The Donald Trump involved in the Mueller investigation is dbpedia:Donald_Trump and not dbpedia:Donald_Trump_Jr. | |||
g.add((ex.Donald_Trump, OWL.sameAs, dbr.Donald_Trump)) | |||
g.add((ex.Donald_Trump, OWL.differentFrom, URIRef(dbr + "Donald_Trump_Jr."))) | |||
# Congress, FBI and the Mueller investigation are foaf:Organizations. | |||
g.add((ex.Congress, RDF.type, FOAF.Organization)) | |||
g.add((ex.FBI, RDF.type, FOAF.Organization)) | |||
g.add((ex.Mueller_Investigation, RDF.type, FOAF.Organization)) | |||
# Nothing can be both a person and an organization. | |||
g.add((FOAF.Person, OWL.disjointWith, FOAF.Organization)) | |||
# Leading an organization is a way of being involved in an organization. | |||
g.add((ex.leading, RDFS.subPropertyOf, ex.involved)) | |||
# Being a campaign manager or an advisor for is a way of supporting someone. | |||
g.add((ex.campaignManagerTo, RDFS.subPropertyOf, ex.supports)) | |||
g.add((ex.advisorTo, RDFS.subPropertyOf, ex.supports)) | |||
# Donald Trump is a politician and a Republican. | |||
g.add((ex.Donald_Trump, RDF.type, ex.Politician)) | |||
g.add((ex.Donald_Trump, RDF.type, ex.Republican)) | |||
# A Republican politician is both a politician and a Republican. | |||
g.add((ex.RepublicanPolitician, RDFS.subClassOf, ex.Politician)) | |||
g.add((ex.RepublicanPolitician, RDFS.subClassOf, ex.Republican)) | |||
#hasBusinessPartner | |||
g.add((ex.Paul_Manafort, ex.hasBusinessPartner, ex.Rick_Gates)) | |||
g.add((ex.hasBusinessPartner, RDF.type, OWL.SymmetricProperty)) | |||
g.add((ex.hasBusinessPartner, RDF.type, OWL.IrreflexiveProperty)) | |||
#adviserTo | |||
g.add((ex.Michael_Flynn, ex.adviserTo, ex.Donald_Trump)) | |||
g.add((ex.adviserTo, RDF.type, OWL.IrreflexiveProperty)) | |||
# Not necessarily asymmetric as it's not a given that they couldn't be advisors to each other | |||
#wasLyingTo | |||
g.add((ex.Rick_Gates_Lying, ex.wasLyingTo, ex.FBI)) | |||
g.add((ex.wasLyingTo, RDF.type, OWL.IrreflexiveProperty)) | |||
# Not asymmetric as the subject and object could lie to each other; also in this context, the FBI can lie to you | |||
#presidentOf | |||
g.add((ex.Donald_Trump, ex.presidentOf, ex.USA)) | |||
g.add((ex.presidentOf, RDF.type, OWL.AsymmetricProperty)) | |||
g.add((ex.presidentOf, RDF.type, OWL.IrreflexiveProperty)) | |||
g.add((ex.presidentOf, RDF.type, OWL.FunctionalProperty)) #can only be president of one country | |||
#not inversefunctionalproperty as Bosnia has 3 presidents https://www.culturalworld.org/do-any-countries-have-more-than-one-president.htm | |||
#hasPresident | |||
g.add((ex.USA, ex.hasPresident, ex.Donald_Trump)) | |||
g.add((ex.hasPresident, RDF.type, OWL.AsymmetricProperty)) | |||
g.add((ex.hasPresident, RDF.type, OWL.IrreflexiveProperty)) | |||
g.add((ex.hasPresident, RDF.type, OWL.InverseFunctionalProperty)) #countries do not share their president with another | |||
#not functionalproperty as a country (Bosnia) can have more than one president | |||
#Closure | |||
owlrl.DeductiveClosure(owlrl.OWLRL_Semantics).expand(g) | |||
#Serialization | |||
print(g.serialize(format="ttl")) | |||
# g.serialize("lab8.xml", format="xml") #serializes to XML file | |||
</syntaxhighlight> | |||
=OWL 2 (Lab 12)= | |||
<syntaxhighlight lang="Python"> | |||
@prefix : <http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#> . | |||
@prefix dc: <http://purl.org/dc/terms#> . | |||
@prefix io: <http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#> . | |||
@prefix dbr: <http://dbpedia.org/resource/> . | |||
@prefix owl: <http://www.w3.org/2002/07/owl#> . | |||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |||
@prefix xml: <http://www.w3.org/XML/1998/namespace> . | |||
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . | |||
@prefix foaf: <http://xmlns.com/foaf/0.1/> . | |||
@prefix prov: <http://www.w3.org/ns/prov#> . | |||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |||
@base <http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#> . | |||
<http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology> rdf:type owl:Ontology . | |||
################################################################# | |||
# Object Properties | |||
################################################################# | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#indictedIn | |||
io:indictedIn rdf:type owl:ObjectProperty ; | |||
rdfs:subPropertyOf io:involvedIn ; | |||
rdfs:domain io:InvestigatedPerson ; | |||
rdfs:range io:Investigation . | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#investigating | |||
io:investigating rdf:type owl:ObjectProperty ; | |||
rdfs:subPropertyOf io:involvedIn ; | |||
rdfs:domain io:Investigator ; | |||
rdfs:range io:Investigation . | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#involvedIn | |||
io:involvedIn rdf:type owl:ObjectProperty ; | |||
rdfs:domain foaf:Person ; | |||
rdfs:range io:Investigation . | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#leading | |||
io:leading rdf:type owl:ObjectProperty ; | |||
rdfs:subPropertyOf io:investigating ; | |||
rdfs:domain io:InvestigationLeader ; | |||
rdfs:range io:Investigation . | |||
################################################################# | |||
# Data properties | |||
################################################################# | |||
### http://purl.org/dc/elements/1.1/description | |||
<http://purl.org/dc/elements/1.1/description> rdf:type owl:DatatypeProperty ; | |||
rdfs:domain io:Investigation ; | |||
rdfs:range xsd:string . | |||
### http://www.w3.org/ns/prov#endedAtTime | |||
prov:endedAtTime rdf:type owl:DatatypeProperty , | |||
owl:FunctionalProperty ; | |||
rdfs:domain io:Investigation ; | |||
rdfs:range xsd:dateTime . | |||
### http://www.w3.org/ns/prov#startedAtTime | |||
prov:startedAtTime rdf:type owl:DatatypeProperty , | |||
owl:FunctionalProperty ; | |||
rdfs:domain io:Investigation ; | |||
rdfs:range xsd:dateTime . | |||
### http://xmlns.com/foaf/0.1/name | |||
foaf:name rdf:type owl:DatatypeProperty ; | |||
rdfs:domain foaf:Person ; | |||
rdfs:range xsd:string . | |||
### http://xmlns.com/foaf/0.1/title | |||
foaf:title rdf:type owl:DatatypeProperty ; | |||
rdfs:domain io:Investigation ; | |||
rdfs:range xsd:string . | |||
################################################################# | |||
# Classes | |||
################################################################# | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#InvestigatedPerson | |||
io:InvestigatedPerson rdf:type owl:Class ; | |||
rdfs:subClassOf io:Person ; | |||
owl:disjointWith io:Investigator . | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#Investigation | |||
io:Investigation rdf:type owl:Class . | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#InvestigationLeader | |||
io:InvestigationLeader rdf:type owl:Class ; | |||
rdfs:subClassOf io:Investigator . | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#Investigator | |||
io:Investigator rdf:type owl:Class ; | |||
rdfs:subClassOf io:Person . | |||
### http://www.semanticweb.org/bruker/ontologies/2023/2/InvestigationOntology#Person | |||
io:Person rdf:type owl:Class ; | |||
rdfs:subClassOf foaf:Person . | |||
### http://xmlns.com/foaf/0.1/Person | |||
foaf:Person rdf:type owl:Class . | |||
################################################################# | |||
# Individuals | |||
################################################################# | |||
### http://dbpedia.org/resource/Donald_Trump | |||
dbr:Donald_Trump rdf:type owl:NamedIndividual ; | |||
foaf:name "Donald Trump" . | |||
### http://dbpedia.org/resource/Elizabeth_Prelogar | |||
dbr:Elizabeth_Prelogar rdf:type owl:NamedIndividual ; | |||
io:investigating <http://dbpedia.org/resource/Special_Counsel_investigation_(2017–2019)> ; | |||
foaf:name "Elizabeth Prelogar" . | |||
### http://dbpedia.org/resource/Michael_Flynn | |||
dbr:Michael_Flynn rdf:type owl:NamedIndividual ; | |||
foaf:name "Michael Flynn" . | |||
### http://dbpedia.org/resource/Paul_Manafort | |||
dbr:Paul_Manafort rdf:type owl:NamedIndividual ; | |||
io:indictedIn <http://dbpedia.org/resource/Special_Counsel_investigation_(2017–2019)> ; | |||
foaf:name "Paul Manafort" . | |||
### http://dbpedia.org/resource/Robert_Mueller | |||
dbr:Robert_Mueller rdf:type owl:NamedIndividual ; | |||
io:leading <http://dbpedia.org/resource/Special_Counsel_investigation_(2017–2019)> ; | |||
foaf:name "Robert Mueller" . | |||
### http://dbpedia.org/resource/Roger_Stone | |||
dbr:Roger_Stone rdf:type owl:NamedIndividual ; | |||
foaf:name "Roger Stone" . | |||
### http://dbpedia.org/resource/Special_Counsel_investigation_(2017–2019) | |||
<http://dbpedia.org/resource/Special_Counsel_investigation_(2017–2019)> rdf:type owl:NamedIndividual ; | |||
foaf:title "Mueller Investigation" . | |||
################################################################# | |||
# General axioms | |||
################################################################# | |||
[ rdf:type owl:AllDifferent ; | |||
owl:distinctMembers ( dbr:Donald_Trump | |||
dbr:Elizabeth_Prelogar | |||
dbr:Michael_Flynn | |||
dbr:Paul_Manafort | |||
dbr:Robert_Mueller | |||
dbr:Roger_Stone | |||
) | |||
] . | |||
### Generated by the OWL API (version 4.5.25.2023-02-15T19:15:49Z) https://github.com/owlcs/owlapi | |||
</syntaxhighlight> | |||
=Using Graph Embeddings (Lab 13)= | |||
https://colab.research.google.com/drive/1WkRJUeUBVF5yVv7o0pOKfsd4pqG6369k | |||
=Training Graph Embeddings (Lab 14)= | |||
https://colab.research.google.com/drive/1jKpzlQ7gYTVzgphJsrK5iuMpFhkrY96q | |||
--> |
Latest revision as of 10:56, 20 January 2025
Here we will present suggested solutions after each lab. The page will be updated as the course progresses