Projects/Bibliographica/Requirements
From Open Knowledge Foundation
Bibliographica Requirements
- Ability to run a specific instance: e.g. folktales.org
- Ability to pull (and push) data to from other (esp. central) instance
- Ability for users to curate, add and annotate metadata
- content assertions ( work x is about/response to y )
- Ability to do rich searches (and, long-term, do basic data-mining)
- Ability to have curated lists (or plugin to systems that do this)
Predicates and Schema
The use cases below imply the ability to state relationships between things (authors, works, expressions, etc). This needs to be formalised and can be easily supported when this has been done. There are already some defined predicates for some of these, however for ease of querying we should define the relationships in our own namespace and then use inferencing rules to fill in equivalents in other vocabularies.
Draft Schema
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix frbr: <http://purl.org/vocab/frbr/core#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rel: <http://purl.org/vocab/relationship/> .
@prefix : <http://bibliographica.org/schema/relation#> .
:aboutWork a owl:ObjectProperty ;
rdfs:label "Expresses topic, Work A is about Work B" ;
rdfs:domain frbr:Work ;
rdfs:range frbr:Work .
:aboutPerson a owl:ObjectProperty ;
rdfs:label "Expresses topic: Work A is about Person X" ;
rdfs:domain frbr:Work ;
rdfs:range frbr:Person .
:responseTo a owl:Property ;
rdfs:label "Expresses response in discourse: Work A is a response to Work B" ;
rdfs:domain frbr:Work ;
rdfs:range frbr:Work .
:cites a owl:ObjectProperty ;
rdfs:label "Expresses citation: Work A cites Work B" ;
rdfs:domain frbr:Work ;
rdfs:range frbr:Work .
:read a owl:ObjectProperty ;
rdfs:label "Expresses knowledge of a work: Person X read Work A" ;
rdfs:domain frbr:Person ;
rdfs:range frbr:Work .
:met a owl:ObjectProperty ;
rdfs:label "Expresses having met a person: Person X met Person Y" ;
rdfs:subPropertyOf rel:hasMet ;
rdfs:domain frbr:Person ;
rdfs:range frbr:Person .
:allusionPerson a owl:ObjectProperty ;
rdfs:label "Expresses allusion: Person X alludes to Person Y" ;
rdfs:domain frbr:Person ;
rdfs:range frbr:Person .
:allusionWork a owl:ObjectProperty ;
rdfs:label "Expresses allusion: Work A alludes to Person X" ;
rdfs:domain frbr:Work ;
rdfs:range frbr:Person .
n.b. do we need separate allusionWork, allusionPerson, or do we just relax the domain and range to owl:Thing? Can we have works alluding to other works rather than authors? Can we have people alluding to works? Similarly can we relax the range of aboutWork and aboutPerson and have simply about
Some inferencing rules
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix frbr: <http://purl.org/vocab/frbr/core#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix rel: <http://purl.org/vocab/relationship/> .
@prefix brel: <http://bibliographica.org/schema/relation#> .
{ ?a brel:cites ?b .
?x frbr:creatorOf ?b } => { ?a brel:allusionWork ?x } .
{ ?x frbr:creatorOf ?a .
?a brel:allusionWork ?y } => { ?x brel:allusionPerson ?y } .
{ ?x brel:allusionPerson ?y } => { ?x rel:knowsOf ?y } .
{ ?x frbr:creatorOf ?a .
?y frbr:creatorOf ?a .
?x owl:differentFrom ?y } => { ?x rel:collaboratesWith ?y } .
{ ?x brel:met ?y } => { ?y brel:met ?x } .
{ ?x brel:met ?y } => { ?x foaf:knows ?y } .
{ ?x brel:met ?y } => { ?x rel:hasMet ?y } .
{ ?x a frbr:Person } => { ?x a foaf:Person } .
Use Cases
Qu 1: "show me all items which are published between X and Y and are about Z in language A"
MACHINE
-> Machine query
CORE/EXISTING METADATA
Metadata may exist in some cases but not always complete/accurate Researchers can add/improve this.
Qu 2: "What was published on Nietschze in English between 1950 and 1975?"
MACHINE
Query Results -> articles and books (anything catalogued) List -> ....
Current example of such a search: Nietsche in title (free text search)
Fails because of inadequate metadata. Need additional metadata.
Adding Additional Metadata for Rich Queries
Information about a work which can not usually be found from other existing catalogues. Information which there will be consensus about 99% of the time (not e.g. evaluation or general comments). Some ideas for the kind of thing this might be below.
E.g. relations between works and authors
Add Relation between works
- work x IS ABOUT work y
- IS ABOUT is a predicate. need to define these relations that we are interested in
[contains research or commentary about a given work, citation/allusion is not sufficient]
e.g. the Routledge Philosophy Guidebook to Heidegger by Stephen Mulhall IS ABOUT Being and Time by Heidegger
Add Citation: work x CITES work y
[all the works mentioned in footnotes and bibliographies of a given publication]
e.g.
the Routledge Philosophy Guidebook to Heidegger by Stephen Mulhall CITES Wittgenstein's Tractatus [but is not primarily about it]
Also as above re: defining predicates
Add relation between works and authors
work x is about author a (about person a who is not necessarily an author?)
Isaiah Berlin's The Magus of the North IS ABOUT Johann Georg Hamann
-- author a IS AN AUTHOR OF work x
Add relation between author
e.g.
-- author a READ WORKS BY author b -- author a MET author b
Inference Regarding Authors
USING METADATA ABOVE CAN INFER THINGS ABOUT AUTHORS
e.g.
-- author a ALLUDES TO author b
can be inferred from
-- author a IS AN AUTHOR OF work x -- work x CITES work y -- author b IS AN AUTHOR OF work y
Qu 3: "What was the influence of Edward Young in Germany between 18th and 19th century"
HUMAN
-> Curated List
Can create list Can edit list Can allow other users to edit list Can allow anyone to edit list Can copy list Can add items to a list Can delete items from a list Can annotate an item in a list
e.g.
- Reading list for a taught undergraduate course (by multiple lecturers)
- Reading list for a taught undergraduate course (by one lecturer)
- Private research for a book (e.g. draft bibliography)
Shared up to date list about work on a given domain (literature changes -
[done] UC 4: Add simple metadata (e.g. death date
I come across a record (via a search) and I know information about it which is missing, for example: death date of author, subject of the work (e.g. it is about Nietszche).
[done] UC 5: Data import from bibliographica central into local instance
I do a search on a large catalogue and then import results into my bibliographica instance.